6 个具体 Claude 提示工程技巧(约束明确、标签消歧等),每个配真实 before/after 对比。涵盖 API、Claude Code、web 三场景。
有些开发者把 Claude 当成自动补全工具:粘贴一些代码,拿到一些代码,然后盲目迭代。平庸回答与真正出色回答之间的差距,通常不在模型本身,而在于你如何编写 prompt。下面介绍六种具体技巧,每种都附有真实的前后对比,你可以直接应用于 API、Claude Code 或 claude.ai。
模糊的 prompt 只会得到模糊的代码,因为 Claude 不得不猜测怎样才算“完成”——而且它往往会采取保守的猜测。
之前:“编写一个验证电子邮件地址的函数。”
Write a TypeScript function `validateEmail(input: string): boolean`.
Requirements:
- RFC 5322-compatible, but reject addresses without a TLD
- No external dependencies
- Include 3 unit tests covering valid, invalid, and edge cases (e.g. plus-addressing)
这样得到的函数会真正符合你的约束,而不是一个最终还得由你重写的通用正则表达式。
当一个 prompt 同时包含指令和粘贴进来的源代码时,Claude 可能分不清哪些是指令、哪些是代码——在处理长文件时尤其如此。使用标签可以消除这种歧义。
<file path="auth/session.ts">
[paste file contents]
</file>
<error>
TypeError: Cannot read properties of undefined (reading 'userId')
</error>
Using only the file above, find the line that causes this error and explain why.
多文件上下文也应该采用这种结构:每个文件使用一个 <file> 块,并标注对应的文件路径。
对于任何不止一行代码的任务——例如新功能、重构或棘手的 bug——都应该先让 Claude 推演解决方案,再开始编写代码。这样可以在错误假设被写进 200 行代码之前,提前把它们暴露出来。
之前:“为这个 API endpoint 添加缓存。”
之后:“在编写代码之前,先概述你为这个 endpoint 添加缓存的方法:缓存什么、采用什么失效策略,以及缓存存放在哪里。然后再实现它。”
这样一来,错误假设——例如只有一个字段的计算成本很高,却打算“缓存整个响应”——会在规划阶段被发现,而不是拖到 PR review 阶段。
如果希望 Claude 的输出符合代码库的既有规范,与其用文字描述,不如直接向它展示一个可供遵循的模式。
之前:“为这个 endpoint 编写一个错误处理程序。”
Follow this existing pattern from our codebase:
export const getUser = async (req, res) => {
try {
const user = await db.users.find(req.params.id);
if (!user) return res.status(404).json({ error: 'not_found' });
return res.json(user);
} catch (e) {
return res.status(500).json({ error: 'internal_error' });
}
};
Now write `getOrder` following the exact same structure and error shape.
一个好的示例,可以省去一轮“其实应该使用我们的错误格式”这样的来回沟通。
试图通过一个 prompt 一次完成整项功能,往往只能得到肤浅或前后不一致的结果。将任务拆分为规划、实现、审查和修复等阶段,可以得到更扎实的结果,因为每一步都只有一个明确目标。
之前:“为我们的 API 构建一个限流器。”
“为 Node/Redis 技术栈提出 2~3 种限流策略,并说明各自的权衡。”
“将滑动窗口方案实现为 Express middleware。”
“检查这个 middleware 是否存在 race condition 和 edge case。”
“修复你发现的问题。”
每一步都可以单独轻松验证,而这正是最终结果能够保持完整一致的原因。
当上下文被无关历史信息填满时,长时间运行的 Agent session 效果会逐渐下降——例如你已经开始调试一个毫不相关的 bug B,但修复 bug A 的内容仍然留在上下文里。
解决方法:在 Claude Code 中处理彼此无关的任务时,使用 /clear,而不是继续沿用同一个对话线程。
解决方法:如果你已经针对同一个问题纠正 Claude 两次,而它仍然没有做对,那就使用 /clear,并结合此前了解到的信息编写一个更好的初始 prompt,而不是再纠正第三次。
对于需要应用到每个 session 的指令,例如编码规范、测试命令和目录结构,应当把它们写进 CLAUDE.md 文件,而不是在每个 prompt 中反复说明。
这些技巧并不是什么神奇的 prompt 模板——它们只是让你像对待一位新队友那样对待 Claude:提供清晰的需求、相关的上下文、现有的代码模式,并给它留出行动前充分思考的空间。下次编写 prompt 时,不妨尝试其中一种,看看事后需要做的清理工作能减少多少。
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。