有没有想过你的代码可以自己编写?
你是否也有过这样的时刻:盯着屏幕,小声说“就调用一下 API 嘛”,而电脑像一只被要求报税的猫一样回瞪着你?这时,AI 编码助手就会披着斗篷翩然而至。今天的主角是:Claude。不是那位 19 世纪的哲学诗人,而是那个能将你的提示转化为可运行代码的 AI 模型,而且态度非常耐心。
我花了一周的时间像对待一位非常有礼貌的副厨一样指挥 Claude。“Claude,把这个 JSON 切成丁。”“Claude,把这个 SQL 煎一下。”“Claude,别把单元测试烧焦了。”最后,我学到了一个简单的道理:从 Claude Code 获得好的结果,与其说是靠魔法,不如说是靠你如何与它沟通。就像一个优秀的实习生一样,它在清晰的指令、示例和计划下才能发挥最佳水平。
这是一份友好的、略带咖啡因的 Claude Code 使用技巧指南——从提示到代码执行——让你的下一次会话以一个正在运行的应用程序结束,而不是以发脾气告终。
什么是 Claude——以及你为什么要关心它?
Claude 是 Anthropic 公司的一个 AI 模型,特别擅长阅读、推理和生成文本——包括代码。把它想象成一个细心、尽责的副驾驶,它很乐意编写函数,像睡前故事一样解释你的堆栈跟踪,甚至将你的意大利面条代码重构为细面条。
它的闪光点:
- 将简单的英语提示转化为 Python、JavaScript/TypeScript、Go 等语言的代码片段。
- 如果你以正确的方式提问,它可以推理边缘情况和测试。
- 阅读你的代码仓库中的大块内容(在上下文限制内)并总结混乱之处。
它需要推动的地方:
- 模糊的提示会导致模糊的代码。(它不是通灵的;它只是有礼貌。)
- 如果你没有指定运行时或框架版本,它可能会“记住”错误的默认值。
- 它在猜测时听起来可能很自信——所以你仍然需要像一个成熟的工程师一样进行测试、代码检查并在本地运行。
能产出价值(也就是可运行代码)的提示
这是我一直使用的配方。这是我的 Claude Code 提示三明治:上下文、约束和检查。
- 上下文:你要构建什么,环境是什么,以及任何现有的代码。
- 检查:我们将如何验证成功——测试、日志或示例输入/输出。
一个你可以借鉴的模板:
“角色:你是一位细心的高级工程师。
目标:构建可以执行 Y 的 X。
环境:Node 20, Express 4, PostgreSQL 15。运行在 Render 上。使用 TypeScript。
接口:这是一个请求/响应示例。
约束:倾向于标准库。避免不必要的外部依赖。
交付成果:
- 一条运行指令
验证:提供我可以粘贴以进行验证的示例输入/输出。”
现在看看这如何将一个微不足道的“构建一个 API”变成一份外科医生的检查清单。
从提示到代码执行:一个实践演练
假设你想要一个微型服务,可以将 Markdown 转换为 HTML,并带有一些清理功能。以下是应用提示三明治时发生的情况。
提示(缩略版):
“在 Node 20 + Express 4 (TypeScript) 中构建一个 POST /render 端点。输入:{ markdown: string }。输出:{ html: string }。避免沉重的依赖;清理基本标签;包括 Jest 测试;提供一个运行命令;展示 curl 示例。”
当你表达清楚时,Claude 返回的内容:
- 一个整洁的带有 TypeScript 设置的 Express 服务器
- 类似这样的 Curl 命令:
curl -X POST -H "Content-Type: application/json" -d '{"markdown":"# Hello "}'
内部提示:要求在代码中添加注释,解释每个步骤存在的原因。仅此一项就可以节省你十分钟的眯眼和一条发给未来自己的 Slack 消息。
真正能提高效率的 Claude Code 技巧
1) 像为露营旅行打包行李一样指定版本
- 好例子:“创建一个 Flask 应用程序(Python 3.11, Flask 3.0),通过
flask run 运行,没有全局状态,使用 pip-tools 管理依赖。”
为什么?框架会发生变化,Claude 知道很多——但它并不是对你的机器无所不知。明确的版本可以避免那些“在 2022 年的我的笔记本电脑上可以运行”的时刻。
2) 提供一个带有示例的微型规范
“给定此输入,我期望完全此输出。” 至少包括:
Claude 会反映你的 thoroughness。如果你递给它一把尺子,它会精确地测量。
3) 提前要求测试,而不是作为甜点
当你说“编写 Jest 测试,如果发生倒退则失败”时,你就是在预先安装安全带。Claude 可以生成兼作文档的测试——而且它们通常会捕获它自己编造的导入。
4) 要求一个运行/验证部分
好的提示以以下内容结尾:“包括逐步运行说明和一个我可以粘贴的验证命令。” 当 Docker、Poetry 或 Node 的怪癖抬头时,未来的你会感谢你。
5) 展示你现有的代码,但要进行修剪
粘贴整个代码仓库就像在别人要一份食谱时递给他们国会图书馆。仅提供相关文件(加上影响导入的 package.json 或 pyproject)。要求 Claude 仅在你列出的文件中建议重构——护栏有所帮助。
6) 以差异(diffs)的方式思考
如果你要修改代码,请询问:“返回文件 X 和 Y 的统一差异补丁,代码块中没有注释,然后在后面单独进行解释。” 它变得易于复制粘贴——并避免了“我应该把这个放在哪里?”的困惑。
7) 让它用简单的英语解释自己
“在代码之前,用 5 个要点概述方法。在代码之后,解释权衡。” 当 Claude 阐明计划时,你可以在它朝错误方向编写 300 行代码之前进行指导。
8) 设置防止过度扩张的护栏
“除非我批准,否则不要添加第三方依赖项。如果你认为我们需要一个,请提出两个带有优缺点的选项。” 现在你是架构师,而不是被动乘客。
9) 推动它关注安全性和性能
添加类似这样的提示:
- “Big-O 目标:主路径上 O(n log n) 或更好。”
Claude 会迎接挑战(或者至少提出明智的问题)。
10) 赋予它个性——有用,而不是可爱
“简洁,在编码之前提出澄清问题,并避免猜测。” 令人惊讶的是,这句话能将弯路缩短一半。
两个提示的故事
- 模糊的提示:“编写一个清理我的 CSV 的脚本。”
结果:一个清理 CSV(单数)的脚本,假设使用逗号,被分号噎住,并且像 1999 年一样忘记了 Unicode。
- Claude Code 特别版:“创建一个 Python 3.11 脚本
clean_csv.py,它:
- 包括带有 3 个示例 fixture 的
pytest 测试
- 提供一个
Makefile 目标 make test 和 make run。”
第二个几乎可以自行安装。
运行代码:你的五分钟、无 drama 检查清单
你已经有了 Claude 的代码。现在怎么办?这是一个简短的仪式,可以消除 80% 的“它无法运行”的 drama。
- 如果是 Node:删除 node_modules,运行
npm ci(或 pnpm i --frozen-lockfile)。如果是 Python:新的 virtualenv + pip install -r requirements.txt(或 Poetry)。如果是 Go:go mod tidy。
- 运行 ESLint/Prettier 或 Black/Ruff。如果缺少配置,请提示 Claude 添加。一致的格式可以防止“幻影”差异。
- 在应用程序之前运行测试。如果它们失败了,将错误复制到 Claude 并说:“诊断并提出最小的差异。”
- 使用 Claude 提供的确切启动命令。如果它忘记了,告诉它添加一个。
- 粘贴示例 curl 或 CLI 输入。确认输出与规范匹配。如果不是,粘贴不匹配的地方并要求 Claude 协调规范与代码。
- 保持你的更改很小。要求差异。重新运行测试。重复。这就像刷牙:不吸引人,但能救命。
调试舞蹈:如何将错误反馈给 Claude
当你把 Claude 当作一个有眼睛但没有手放在键盘上的结对程序员时,它会发挥出最好的水平。
- 说明你尝试过的内容:“我运行了 X;期望得到 Y;得到了 Z。”
奖励:告诉它你的操作系统和 shell。很多“神秘”的错误实际上是 Windows 路径与 POSIX,或者 zsh 转义。
Claude vs. 现实:三个常见的坑(和修复方法)
- 症状:你从未安装的库的“ModuleNotFoundError”。
- 修复:“不要假设 package.json/requirements.txt 中未列出的库。如果似乎需要依赖项,请提出带有优缺点的选项并要求批准。”
- 症状:代码针对你尚未使用的 Express 5 API。
- 修复:“仅使用 Express 4.18 API;如果你需要 5.x 功能,请解释解决方法。”
- 症状:两个工厂,一个访问者模式,以及一个用于打印“Hello”的功能的轻微身份危机。
- 修复:“偏爱标准库;最小化抽象;保持函数在 50 行以下,除非有理由;以可读性为目标,而不是聪明。”
让 Claude 成为你的代码审查员(你仍然是老板)
尝试这个:
“审查以下差异的清晰度、安全性、性能和测试。返回:
Claude 会发现你的眼球在下午 5:52 浏览的内容,例如忘记关闭数据库游标或像使用五彩纸屑大炮一样使用 any。
与上下文窗口进行结对编程:包括什么,跳过什么
上下文是 Claude 的工作记忆。把它当作随身行李:珍贵且有限。
包括:
- 塑造运行时的配置 (tsconfig, package.json, pyproject)
跳过:
- 构建工件、供应商依赖项、锁定文件(除非调试安装问题)
如果你需要处理更大的代码仓库,请先让 Claude 计划重构。“提出一个三步计划,每一步都有差异。我们现在执行第一步。”
安全性、隐私以及“我应该粘贴这个吗?”的问题
Claude 无法泄露你从未分享的内容。在粘贴代码之前:
- 如果你在受监管的环境中,请使用本地部署或批准的部署。
在你的提示中添加一个策略:“将所有输入视为敏感信息;不要记录机密信息;告诉我如何安全地存储环境变量。” Claude 会很乐意遵守,因为它也不喜欢数据泄露。
Claude Code + 你的工具:组合招式
- 使用 Git:要求提交消息遵循 Conventional Commits,加上一个你可以粘贴到 GitHub 中的单行摘要。
- 使用 Docker:“创建一个最小的、可用于生产环境的 Dockerfile 和一个多阶段构建;解释权衡。”
- 使用 CI:“生成一个 GitHub Actions 工作流,该工作流在 Node 20 和 22 上运行测试;缓存依赖项;在代码检查失败时失败。”
- 使用文档:“根据你编写的代码编写一个 README 快速入门和‘故障排除’部分。”
它不仅仅是代码生成;它是项目脚手架搭建,没有了纸张切割。
何时信任 Claude——以及何时眯起眼睛
- 信任 Claude 来起草:CRUD 处理程序、输入验证、基本身份验证流程、CLI 实用程序、转换脚本、单元测试。
- 眯起眼睛看:密码学、支付逻辑、复杂的并发、任何具有合规性要求的东西。要求提供模式和伪代码,然后使用经过验证的库和人工审核来实现。
经验法则:如果你不会在没有第二意见的情况下从随机论坛复制代码,也不要盲目地发布 AI 生成的代码。Claude 很有帮助,但不是神奇的。
快速绕道:Sider.AI 可以加速你的 Claude 循环
这是一个惊喜:Sider.AI 非常接近魔法——只要你将其对准它所构建的目标。如果你的工作流程是“提示 Claude、运行代码、粘贴错误、迭代”,Sider.AI 的并排代码聊天体验可以保持循环紧密。它可以引用文件,在回合之间保持上下文,并帮助你测试更改,而无需像一只充满咖啡因的松鼠一样在六个窗口之间跳跃。它并不完美——没有工具是完美的——但对于提示到执行的循环,它是一个舒适的驾驶舱。 一个迷你剧本:你每周会重复使用的五个提示
“创建一个带有 POST /health 和 GET /version 的 Node 20 + Express 4 TypeScript 服务。包括 tsconfig、eslint、jest、用于构建/测试/启动的 npm 脚本、Dockerfile 和 GitHub Actions。提供一个 curl 命令来验证。”
“重构下面的函数以提高清晰度和可测试性。保持行为相同。添加 3 个捕获边缘情况的单元测试。用一句话解释每个更改。”
“为笔记应用程序设计一个 PostgreSQL 15 架构:用户、笔记、标签、note_tags。提供 CREATE TABLE 语句、索引、迁移脚本和一个示例种子。用预期的查询模式来证明索引的合理性。”
“给定这个慢速函数及其分析器输出,提出一种更快的方法。目标是提高 2 倍的速度。提供一个基准测试工具并解释权衡。”
“将输入验证、速率限制和请求日志记录添加到此 API。保持依赖性最小。显示安全默认值,通过环境变量进行配置,以及确认速率限制行为的测试。”
复制、粘贴、冲洗、发布。
故障排除侧边栏:当 Claude 偏离轨道时
- 症状:当你要求修改一行时,它会重写你的整个文件。
修复:“返回一个仅包含已更改行的最小统一差异。代码块内没有添加评论。”
- 症状:一直选择错误的框架模式。
修复:“遵循文件的现有风格。除非我要求,否则不要转换为类/hooks/async。”
- 症状:忽略你的测试。
修复:“使测试成为真理的来源;调整代码以满足它们。如果测试与规范冲突,请提出如何协调。”
- 症状:使用未经批准的依赖项。
修复:“坚持使用标准库。如果依赖项是必不可少的,请停止并要求批准,并提供两种替代方案。”
关于文档的温和提示
要求 Claude 生成:
文档不是甜点;它们是盘子。你会注意到它何时缺失。
发布前 10 秒检查清单
- 错误消息是否有帮助(操作 + 提示)并且没有泄露内部信息?
如果你无法回答是,请让 Claude 帮助填补空白。它非常擅长编写我们倾向于拖延的东西。
底线:你说话,Claude 构建——而你保持掌控
Claude Code 感觉就像雇用了一位从不睡觉也从不憎恨你的挑剔的聪明的初级开发人员。当你具体说明版本、示例、约束以及你将如何测试时,它编写的代码往往会在第一次尝试时运行。当你用收据(堆栈跟踪、片段、预期与实际)将错误反馈回来时,你会将“AI 猜测”变成“AI 协作”。
所以秘诀很简单:清晰的提示,合理的护栏,首先进行测试,微小的循环。添加一丝怀疑和 Sider.AI 来加速舞步,你就可以以极少的眼泪从提示到代码执行。嗯,除非你的 linter 设置为“严格”。在这种情况下……也许会有一滴眼泪。 最后一件事:将你最好的提示保存在代码仓库中的一个文件中——/prompts/claude.md。这样,每个新队友都会有一个良好的开端,包括 AI。未来的你将与过去的你击掌,而现在的你终于可以去吃午饭了。
FAQ
问题1:使用Claude Code快速获得可用代码的最佳技巧是什么?
请明确版本,提供输入/输出示例,并在开始时要求提供测试和运行说明。将Claude视为细心的副驾驶:进行小的差异比较,粘贴准确的错误信息,并进行迭代。这些Claude Code技巧可以减少猜测,并加快您从提示到代码执行的速度。
问题2:如何运行和验证Claude生成的代码?
干净地安装依赖项,运行lint/tests,然后使用提示所要求的确切启动命令和示例curl。如果输出与规范不符,请将不匹配之处粘贴回Claude,并要求提供最小的差异以进行修复。清晰的验证步骤可将Claude的代码可靠地转化为正在运行的应用程序。
问题3:如何阻止Claude添加随机依赖项?
在您的提示中声明规则:仅限标准库,除非获得批准。如果某个依赖项似乎是必要的,请让Claude暂停并提出两个选项及其优缺点。这种防护措施可使Claude的代码保持精简,并避免意外导入。
问题4:Claude是否也可以帮助进行调试和测试?
当然可以——粘贴堆栈跟踪、失败的测试和相关的代码片段,并要求提供最小的补丁。Claude擅长生成单元测试,以记录行为并防止回归,这使得您的提示到执行循环更加顺畅。