乐于分享
好东西不私藏

拆开 Claude Code 的源码我们发现了一个 Agent 操作系统

本文最后更新于2026-03-31,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

拆开 Claude Code 的源码我们发现了一个 Agent 操作系统

你以为 Claude Code 只是一个”能帮你写代码的 AI 终端”?

当你真正把它的源码拆开看——所有的 prompt 文件、工具链、Agent 调度逻辑、权限系统、插件生态——你会发现一个令人震撼的事实:

Claude Code 不是一个会调工具的聊天机器人,而是一个真正可扩展、可治理、可产品化的 Agent Operating System。

这篇文章基于 Xiao Tan 发布的 26 页源码深度研究报告,我们把其中最核心的发现提炼出来,给你看看 Anthropic 到底是怎么把一个 coding agent 做到”工业级”的。

一、它不是 CLI 包装器,是一个平台

很多人对 Claude Code 的印象停留在”一个 CLI 工具”。但从源码结构看,它的复杂度远超一个命令行程序。

4

个入口形态

13+

个核心工具

6

个内建 Agent

14

步工具执行链

它的入口层就暴露了平台化设计思维——同一个 Agent Runtime 可以服务于本地 CLI、初始化流程、MCP 模式和 SDK 消费者。命令系统更是暴露出 /mcp/memory/permissions/hooks/skills/agents 等大量系统级命令,这不是锦上添花,而是用户与运行时交互的重要控制面。

二、System Prompt 不是一段文本,是一个编排架构

如果你以为 Claude Code 的秘密就是那段 system prompt,那你可能只看到了冰山一角。

源码中最关键的文件 prompts.ts 暴露了一个惊人的设计:system prompt 是被”组装”出来的,不是被”写”出来的

关键点在于那条 cache boundary。源码中明确定义了 SYSTEM_PROMPT_DYNAMIC_BOUNDARY——边界之上是可缓存的静态段,边界之下是每次会话特有的动态段。这说明 Anthropic 不只是在写 prompt,而是在做 prompt assembly with cache economics。

换句话说,连 system prompt 的 token 成本和缓存命中率,他们都做了工程化优化。

三、九大 Prompt 模块:AI 工程师的行为宪法

拆开 getSystemPrompt(),里面至少有九个关键 section,每个都在解决一个具体问题:

🧠 Prompt 模块全景

身份定位(Intro):不是聊天机器人,是工具驱动的工程协作者。风险防护从第一屏开始注入

运行时现实(System):把模型从”语言模型幻觉世界”拉回”受控 runtime 世界”

任务哲学(DoingTasks):不乱加功能、不过度抽象、不瞎重构——行为规范的制度化表达

风险动作(Actions):定义 blast radius 思维——什么是危险操作、什么需要确认

工具语法(UsingTools):不是”你有工具”,而是”用正确的方式使用工具”

会话规则(Session Guidance):根据当前工具集和 feature gate 动态生成局部规则

输出效率(Output):先说结论不铺垫、不废话、不塞无谓表格

语调风格(Tone):不乱用 emoji、引用代码用 file:line 格式——看似小,塑造产品质感

子 Agent 人格(Default Agent):主线程与子 agent 在 prompt 结构上有分层

其中任务哲学这一节堪称精华。它把很多 coding agent “行为发散”的问题直接用制度解决了:

不要加用户没要求的功能;不要过度抽象;不要瞎重构;先读代码再改代码;方法失败时先诊断再换策略;结果要如实汇报,不能假装测试过。

很多 agent 不稳定,不是不会写代码,而是行为发散。这一段就是为了从制度层面解决行为漂移。

四、Agent 分工:不是全能选手,而是专业团队

从源码中可以确认至少有 6 个内建 Agent,而且每个都有严格的职责边界:

Agent
职责
核心约束
ExploreAgent
代码探索——快速搜索、定位、理解代码库
绝对只读
PlanAgent
纯规划——理解需求、探索架构、输出实现计划
不做编辑
VerificationAgent
对抗性验证——try to break it
必须跑命令
GeneralPurpose
通用任务执行
标准工具集
ClaudeCodeGuide
使用引导
StatuslineSetup
状态栏配置

VerificationAgent:最值钱的设计

在所有内建 Agent 里,VerificationAgent 是最让人拍案叫绝的。它的 prompt 开头就直接点出两类失败模式:

1Verification avoidance:只看代码、不跑检查、写 PASS 就走

2被前 80% 迷惑:UI 看起来还行、测试也过了,就忽略最后 20% 的问题

然后强制要求:必须 build,必须跑测试,必须 linter/type-check,frontend 要跑浏览器自动化,backend 要 curl 实测响应,CLI 要看 stdout/stderr/exit code,必须做 adversarial probes,每个 check 必须带 command 和 output observed,最后输出 VERDICT: PASS / FAIL / PARTIAL

这不是”再跑一次测试”,而是一个 adversarial validator。它把 LLM 常见的”差不多就算了”直接用 prompt 反制掉了。

五、Fork 机制:复杂子任务的优雅解法

多 Agent 系统里有一个核心难题:怎么让复杂子任务并行运行,但不污染主上下文?Claude Code 的答案是 fork 语义。当 fork 开启时:

⚡ Fork 设计要点

 省略 subagent_type 就是 fork 自己

 Fork 继承完整 conversation context

 研究任务特别适合 fork

 Fork 很便宜,因为共享 prompt cache

 不要给 fork 单独设 model,否则 cache 命中变差

 不要偷窥 fork 的输出文件

 不要预言 fork 的结果

fork path 会尽量继承父线程的 system prompt 和 tool definitions,以保持 API request prefix byte-identical,从而提高 prompt cache 命中。普通人只想”子任务能跑”,Claude Code 想的是”子任务能跑,而且尽量复用主线程 cache,不白烧 token”。

六、工具执行不是直连,是一条 14 步 Pipeline

Claude Code 的工具执行远不是”模型决定 → 直接跑函数”这么简单。实际链路是:

TOOL EXECUTION PIPELINE

01.Find tool

02.Parse MCP metadata

03.Input schema validation (Zod)

04.Tool-specific validateInput

05.Bash speculative classifier check

06.Run PreToolUse hooks →can block / rewrite / deny

07.Resolve hook permission

08.Permission decision

09.Apply updatedInput

10.tool.call() ← actual execution

11.Analytics / tracing / OTel

12.Run PostToolUse hooks

13.Process structured output

14.PostToolUseFailure hooks (if failed)

注意第 6 步的 PreToolUse hooks。Hook 不仅仅能”记日志”,它还能返回 message、blocking error、updated input、permission behavior、prevent continuation……这意味着 Hook 是一个 runtime policy layer,真正参与控制流。

而且,Hook 的权限语义是被严格嵌进总权限模型里的——hook allow 不一定绕过 settings 的 deny 规则。Hook 强,但没有绕开核心安全模型。

七、生态层:Skill、Plugin、Hook、MCP 四重奏

Claude Code 的扩展能力不是”装个插件就完事”,而是四层机制协同工作:

机制
本质
核心价值
Skill
Workflow PackageMarkdown prompt + frontmatter
把重复工作流压缩成可复用能力包
Plugin
模型行为层扩展单元prompt + metadata + constraints
不是 CLI 插件,是模型行为的扩展
Hook
Runtime 治理层PreToolUse / PostToolUse
拦截、改写、审批——策略执行层
MCP
工具 + 行为说明注入通道tools + instructions
不只注册工具,还注入使用说明

最妙的是,这些扩展不是暗箱操作——它们通过 skills 列表、agent 列表、MCP instructions、session-specific guidance 等方式,让模型”知道自己的扩展能力是什么”

很多系统也有插件也有工具,但模型本身不知道有哪些扩展、什么时候该用、怎么用。Claude Code 让生态对模型可感知,这才是生态真正能发挥作用的关键。

八、Claude Code 的真正护城河

很多人复刻 coding agent 时只拿走:一段 system prompt、一个文件编辑工具、一个 bash 工具、一个 CLI 壳。

但 Claude Code 真实的护城河是这些能力的系统性叠加

🏰 十一层护城河

Prompt Architecture — 不是一段文本,是可编排的运行时资源

Tool Runtime Governance — 14 步 pipeline,不是直连函数

Permission Model — 层层审批,blast radius 思维

Hook Policy Layer — runtime 级的策略执行

Agent Specialization — 探索、规划、验证、执行分工明确

Skill Workflow Packaging — 可复用的能力包

Plugin Integration — 模型行为层面的扩展

MCP Instruction Injection — 工具 + 说明一体注入

Prompt Cache Optimization — 连 token 成本都做了工程优化

Async / Background Lifecycle — 产品化的生命周期管理

Transcript / Telemetry / Cleanup — 完整的运维体系

少哪一个都行,但会显著掉”手感”。

它把”好行为”制度化了

Claude Code 最大的优势之一,不是模型更聪明,而是——它不把”好习惯”交给模型即兴发挥,而是写进 prompt 和 runtime 规则里。

不乱加功能、不过度抽象、不瞎重试被拒绝的工具、不未验证就说成功、不让 fork 输出污染主上下文、匹配 skill 时必须执行 skill、verification 不能只看代码必须跑命令……

这种制度化,会极大提高系统一致性。

它特别懂”上下文是稀缺资源”

源码中大量设计都在围绕上下文做优化:system prompt 动静边界、prompt cache boundary、fork path 共享 cache、skill 按需注入、MCP instructions 按连接状态注入、function result clearing、summarize tool results、compact / transcript / resume……

他们不是把 token 当免费空气,而是当 runtime 预算来管理。

九、写在最后

这份研究报告让我们看到了一个事实:当下最强的 coding agent 之间的差距,已经不在”模型能力”这一层了。

差距在于工程

谁能把 prompt 当架构来设计、把工具调用当 pipeline 来治理、把 agent 当专业角色来分工、把权限当安全模型来建设、把生态当运行时来集成——谁就能做出更稳定、更可控、更有”产品感”的 AI 系统。

Claude Code 的真正秘密,不是一段 system prompt,而是一个把 prompt architecture、tool runtime、permission model、agent orchestration、skill packaging、plugin system、hooks governance、MCP integration、context hygiene 和 product engineering全部统一起来的系统。

这就是 Agent Operating System。