乐于分享
好东西不私藏

Claude 源码泄露后,我连夜读完100多个提示词,发现了15条反直觉的设计规则

Claude 源码泄露后,我连夜读完100多个提示词,发现了15条反直觉的设计规则

Anthropic 官方的 Claude Code 源码被人泄露到了 GitHub 上。一百多个提示词文件,上万行底层指令,逐个读完之后我最大的感受是——

这根本不是一份技术文档,而是一套”AI 员工管理手册”。

Anthropic 怎么给 AI 分配任务?怎么防止它偷懒和自作主张?怎么处理它犯错后的补救?怎么让多个 AI 协同而不打架?

这些问题的答案,藏在这一百多个文件的字里行间。我挑了最反直觉的 15 条,按类别整理出来。做 AI 应用的同学可以直接抄作业。

规则1:身份定义越短越好

Claude Code 的身份只有一句话:”你是 Claude Code,Anthropic 官方的 Claude 命令行工具。”

没有”你精通各种编程语言”这种废话。

身份越短,留给行为规则的空间越大。 因为 system prompt 是有长度限制的,你在”我是谁”上花了一百字,就得在”该做什么不该做什么”上少写一百字。

而且 Anthropic 把安全红线直接放在身份定义后面——安全指令是 AI 看到的第一眼内容。优先级就是这么硬。

规则2:用”否定句”塑造行为

整个提示词体系里,否定句远多于肯定句:

  • 除非绝对必要,否则不要创建文件
  • bug 修复不需要清理周围的代码
  • 不要为一次性操作创建辅助函数
  • 三行相似代码好过早熟的抽象

为什么要这样?因为 AI 天然倾向于”多做”。多写注释、多加抽象、多创建文件——生产级代码需要的是克制。

内部版更狠:默认不写注释,只有”为什么”不明显时才加。不解释代码做了什么(好的变量名已经说了),不引用 issue 号(代码会演进,注释不会)。

注释会腐烂。

规则3:禁止用万能命令,强制用专用工具

Claude Code 对 Bash 工具做了严格限制:能用专用工具的,绝不允许用 Bash。用 Read 工具读文件而不是 cat,用 Edit 工具改文件而不是 sed。

原因很简单:用 cat 读文件,用户只看到一行命令;用 Read 工具,用户直接看到文件内容。

可观测性大于便捷性。 你得让用户知道 AI 到底在干什么。

规则4:连”搜索要用当前年份”都要写进提示词

对,你没看错。Claude Code 的 WebSearch 工具提示词里明确写着:搜索最新信息时,必须使用当前年份。

因为 LLM 经常用旧年数据回答”最新”问题。

每一个”CRITICAL”和”IMPORTANT”标签的背后,都是一个真实的失败案例。AI 搜索 2026 年的最新信息,结果返回了 2024 年的数据——这种事在生产环境里一定发生过,所以才被写进了提示词。

规则5:探索任务用便宜模型,省下的 token 是真金白银

Explore Agent(负责搜索代码库)用的是 Haiku 模型,不是主模型。而且不加载 CLAUDE.md——因为主 Agent 已经有完整上下文了,没必要重复加载。

搜索任务不需要深度推理,快速便宜就够了。每省一个 token 都是成本。

规则6:验证者的任务不是”确认有效”,而是”尝试破坏它”

这是整个体系里最精彩的一条。

验证 Agent 的第一句话就是:”你的工作不是确认实现有效——而是尝试破坏它。”

它甚至写了 AI 自己的”失败模式”:

  • 验证回避
    :阅读代码,叙述你会测试什么,写下”PASS”,然后跳过——根本没跑
  • 被前 80% 诱惑
    :看到精美的 UI 或通过的测试就觉得可以通过,没注意到一半按钮无效

而且验证报告必须附带命令输出。“阅读代码不是验证”——不给输出就给 PASS,报告直接被拒。

规则7:不让 AI 编造 Worker 的结果

Coordinator(协调器)的提示词里有一串负面约束:永远不要感谢 Worker 的结果、绝不要编造或预测 Agent 的结果、不要用一个 Worker 去检查另一个 Worker。

LLM 爱寒暄(”谢谢 Worker”)、爱提前总结(”预计 Worker 会发现……”)、爱调参数”优化”。Claude Code 全部禁掉了。

能自己回答的别浪费 Worker。 这条是精华——精确区分了”决策层”和”执行层”。

规则8:AI 之间不用自然语言交流

Agent 之间从不使用自然语言。Worker 返回结果用 XML 标签,Fork 子 Agent 用纯文本标签(不用 Markdown——在嵌套层级中容易和父 Agent 格式混淆),记忆文件用 frontmatter schema。

格式错误?直接被 parser 拒绝。

这和微服务设计一样——服务间通信靠精确的 API 契约,不靠自然语言。

规则9:记忆系统只存”代码推不出来的知识”

Claude Code 的记忆系统有一个硬性规则:不存代码模式、不存 Git 历史、不存调试方案。代码的真理在代码里,Git 的真理在 Git 里。

记忆库只存”无法从环境查询中推导出的隐式知识”——用户偏好、外部依赖、商业上下文。

把代码逻辑写进记忆库,当代码被人类修改后就变成了脏数据,这是幻觉的来源。

规则10:每条记忆必须带”为什么”

对于反馈和项目类型的记忆,Claude Code 强制要求记录”Why”和”How to apply”:

2026-03-05 开始合并冻结。Why:移动团队发版需要稳定分支。How to apply:审查 PR 时提醒用户当前处于冻结期。

一个月后,”为什么”告诉 AI 这条记忆可能已经过期了——移动团队发版这个约束已经不存在了。

只记结论的记忆注定腐烂,记了动机的记忆才能自我修正。

这个设计赋予了未来 AI 的”抗命权”——通过记录动机而非仅记录结论,让 AI 能判断规则是否仍然有效。

规则11:同时记录成功和失败

如果你只保存纠正,你将避免过去的错误,但会偏离用户已认可的方法,并可能变得过于谨慎。

只记负面反馈的 AI 会越来越保守。用户说”这样做对了”和用户说”别这样做”一样重要。

规则12:记忆提取强制两步走——一读二写

后台运行的记忆提取 Agent 被要求:第一轮并行发出所有 Read 调用,第二轮并行发出所有 Write 调用。

禁止”读一个改一个再读一个”的循环。LLM 很容易陷入这种死循环,每轮都消耗 API 调用和 token。

强制切分为”一读二写”两步走,后台静默运行时的效率直接翻倍。

规则13:连装饰性宠物都有行为规范

Claude Code 有个小动物陪伴功能,提示词写了:当用户和宠物说话时,主 Agent 闭嘴——”用不超过一行回复,或者只回答消息中给你的部分”。

提示词工程覆盖了每一个交互细节。

规则14:根据用户是否在看决定行为

自主模式会检测用户终端是否聚焦:

  • 用户不在:大力自主行动——做决策、探索、提交
  • 用户在看:更加协作——展示选择、大型更改之前询问

好的 AI 应该像好的同事一样,知道什么时候该自己干、什么时候该问一下。

规则15:提示词是代码,要 A/B 测试

Plan Mode 的最终计划有 4 个 A/B 测试变体,逐步压缩计划的允许长度——从允许 Context 段,到压缩为一行,到直接删除,到硬性限制 40 行。

每个变体都是前一个变体失效后的应对。

Anthropic 把提示词当产品功能来迭代。不是一版定稿,而是持续实验。

写在最后

读完这一百多个文件,最大的收获不是具体的话术,而是设计思路:

约束比授权更有力量。 整个体系里否定句远超肯定句,告诉 AI “不能做什么”比”应该做什么”有效得多。

分层组装,而非一坨大 prompt。 一百多个文件,每个模块独立维护,改一个不影响其他。

不信任任何单一防线。 “先读后改”既写在提示词里,又在工具层面做参数校验。提示词是第一道,代码是第二道。

为每个已知故障写防御规则。 “不要声称测试通过如果输出显示失败”、”搜索时用当前年份”、”不要编造 Worker 结果”——每一条背后都是一个真实翻车案例。

如果你在做 AI 应用,建议从这三步开始:

  1. 列出你的 AI 不应该做的所有事(你会发现比想象的长得多)
  2. 为每个工具和角色写独立提示词,而不是一个大而全的 system prompt
  3. 设计”当 AI 做错时”的恢复机制

好的 AI 体验不是靠更强的模型,而是靠更精细的行为设计。 Claude Code 用的就是大家都能调到的 API,没有什么秘密武器。区别只在于,他们把提示词当成了真正的代码来写。

你觉得哪条规则最反直觉?评论区聊聊。