设计思想深度解读

不是代码层面的分析,而是工程思路的解读。基于源码拆解提炼的设计原则。
来源:@tvytlx

源码泄露了什么秘密?

大多数人对 Claude Code 的分析聚焦在两件事:system prompt 写了什么、它调了哪些工具。这两件事确实重要,但它们只是这个系统的皮肤

真正差在哪?差在 prompt 背后有一整套编排机制,工具背后有一整条治理流水线,Agent 背后有一套分工和调度系统,生态扩展背后有一套让模型"知道自己能干什么"的感知通道

Claude Code 的稳不是来自某段神奇文案,是来自工程

1. System Prompt 不是一段固定文本

Claude Code 的 system prompt 是由 getSystemPrompt() 函数动态拼装出来的。

静态部分("宪法")

动态部分("当期政策")

关键设计: SYSTEM_PROMPT_DYNAMIC_BOUNDARY 标记明确了缓存友好边界。边界之前的内容稳定,可以被 API 层缓存。当产品每天处理海量请求时,这种设计直接影响运营成本。

2. "做任务的哲学"写成了制度

getSimpleDoingTasksSection() 把行为规范写成制度,而不是依赖模型临场发挥:

"不要信任模型的自觉性" — 好行为要写成制度,不是靠模型自己发挥。

3. 风险动作:把爆炸半径意识编进系统

getActionsSection() 定义了什么叫"需要确认的风险动作":

还特别强调:不要用破坏性操作当快捷方式,遇到陌生状态先调查,merge conflict 和 lock file 不要粗暴删除。

4. 工具使用规范是 grammar,不是工具列表

这不是在说"你有这些工具",是在说"你必须用正确的方式使用这些工具":

很多 agent 的不稳定,恰恰来自模型用错了工具。比如用 bash sed 去改代码,一个正则写错就崩了。

5. 六个内建 Agent:分工比想象中细

Agent职责权限
General Purpose主任务执行全权限
Explore代码探索纯只读(不能 bash/不能写文件)
Plan需求理解 + 架构规划纯只读(architect,不是 executor)
Verification独立验证try to break it
Claude Code Guide引导用户只读
Statusline Setup状态栏配置只读

背后判断:让一个 Agent 同时做研究、规划、实现、验证,最后每件事都做不扎实。

Explore Agent 的只读设计

探索阶段如果不小心改了什么东西,后面的实现阶段就会出问题。把探索和实现的权限彻底隔离

Verification Agent:"想办法搞坏它"

Prompt 点出两类常见验证失败:

  1. verification avoidance — 只看代码不跑检查,写个 PASS 就走了
  2. 被前 80% 迷惑 — UI 看起来行、测试过了,就忽略剩下 20%

强制要求做 adversarial probes,主动找边界情况。每个检查必须带实际执行的命令和输出。最后必须给出 VERDICT: PASS/FAIL/PARTIAL

"实现者和验证者分离"在传统软件工程里是常识,但在 AI Agent 系统里,大部分产品还没做到这一步。

6. 子 Agent 调度的 14 步 pipeline

1

主模型决定调用 Agent 工具

2

解析输入

3

判断类型

teammate / fork / built-in / background / remote

4

选择 agent definition

5

构造 prompt messages

6

构造或继承 system prompt

7

组装工具池

8

创建 agent 专属的 ToolUseContext

9

注册 hooks、skills、MCP servers

10

调用 runAgent()

11

内部调用 query() 进入主循环

12

query 产出消息流

13

记录 transcript,处理生命周期,清理资源

14

汇总结果或走异步通知

fork path 的 cache-identical prefix 设计: fork 时继承主线程的 system prompt 和完整对话上下文,工具集尽量保持一致,目的是让 API 请求的前缀保持字节级一致,从而复用主线程的 prompt cache

7. 工具调用的治理链路(14 步)

当模型决定调用一个工具时,实际链路:

  1. 找到对应的 tool definition
  2. 解析 MCP metadata
  3. 用 Zod schema 做输入校验
  4. 跑 tool 自己的 validateInput
  5. 如果是 Bash,跑 speculative classifier 预判风险
  6. PreToolUse hooks
  7. 解析 hook 返回的权限结果
  8. 走正式的 permission 决策流程
  9. 根据 permission 决策可能再次修正输入
  10. 真正执行 tool()
  11. 记录 analytics、tracing、OTel
  12. PostToolUse hooks
  13. 处理结构化输出
  14. 失败时跑 PostToolUseFailure hooks
哲学:默认假设事情会出问题。 模型可能乱传参数(输入校验),操作可能有风险(speculative classifier + 权限),执行可能失败(失败 hook),成功了也可能需要额外处理(post hook)。

Hook 的表达能力

PreToolUse Hook 不只能记日志,它能返回:

但权力不是无限的:Hook 说 allow 不一定能绕过系统 deny/ask 规则。Hook 说 deny 则直接生效。 强大但受控。

8. 三套扩展机制

Skill

不是文档,是 workflow package。带 frontmatter 的 markdown prompt bundle,可以声明 allowed-tools,按需注入上下文。系统要求模型匹配到 skill 时必须调用,不能只提到而不执行。

Plugin

比 Skill 更重:markdown commands、SKILL.md 目录、commandsMetadata、userConfig、shell frontmatter、model 和 effort hints。是模型行为层面的扩展单元

MCP

不只是工具桥。MCP server 连接时,如果提供了 instructions,会被拼进 system prompt。同时给模型新工具和使用说明

共同点:让模型感知自己的能力。 通过 skills 列表、agent 列表、MCP instructions、session guidance 这些通道,让模型知道当前有哪些扩展能力、什么时候该用、怎么用。很多平台也有插件系统,但模型本身不知道这些东西存在。

9. 给子 Agent 写 prompt 的规范

AgentTool/prompt.ts 专门教模型怎么给子 Agent 写 prompt:

在限制"懒 delegation"。多 Agent 系统里最常见的失败模式:主 Agent 丢一个模糊任务给子 Agent,子 Agent 理解偏了,做出来不对。Claude Code 通过 prompt 强制要求主 Agent 承担 synthesis 责任

10. 上下文是预算,不是免费空气

整个源码里有大量设计围绕一个主题:上下文是稀缺资源

做 Demo 可以不在乎这些。做产品时,缓存命中率提高 10%,一个月省的钱够多雇一个人。

11. 后台任务和生命周期管理

runAgent() 里有大量不起眼但很说明问题的代码:

后台 Agent 有独立的 abort controller,支持前后台切换、自动 summarization、notification 回到主线程。

大部分 Agent 系统在第一天跑得挺好。问题出在第二天,第一百天。任务中断了怎么续?脏状态怎么清?子 Agent 的 shell 进程没杀掉怎么办?Claude Code 对这些问题都有明确的处理路径。这就是为什么它用起来更像一个正式产品,而不是一个很聪明的 prototype。

12. 五条核心设计原则

原则一:不要信任模型的自觉性

好行为要写成制度。你希望模型先读代码再改代码,就把这条规则写进 prompt。你希望模型遇到风险操作停下来确认,就在 runtime 层加权限检查。

原则二:把角色拆开

至少把"做事的人"和"验收的人"分开。同一个 Agent 既实现又验证,天然会倾向于觉得自己做得没问题。

原则三:工具调用要有治理

不是模型说调就调,中间要有输入校验、权限检查、风险预判。执行完也不是结束,要有 post-processing 和失败处理。

原则四:上下文是预算

每个 token 都有成本。能缓存的要缓存,能按需加载的不要一开始就塞进去,能压缩的要压缩。做 Demo 可以不在乎,做产品必须在乎。

原则五:生态的关键是模型感知

你给系统接了十个插件,但模型不知道什么时候该用哪个,那这十个插件就等于不存在。扩展机制的最后一步,是让模型看到自己的能力清单。

一句话总结: Claude Code 的秘密不在 prompt 里,在一整套把行为制度、工具治理、Agent 分工、上下文经济学和生命周期管理连成闭环的工程系统里。