Dive into Claude Code它如何工作,以及为什么这样设计

一个能改文件、跑 shell、调外部服务的编码 agent,内部是什么结构?这篇文章先沿着一条真实请求走完全流程,再回头解释每个选择的动机与代价。

Jiacheng Liu、Xiaohan Zhao、Xinyi Shang、Zhiqiang Shen VILA Lab, MBZUAI · UCL arXiv:2604.14228v2 2026 年 7 月 2 日

中文重构版,依据 arXiv v2 全文。原文按论文章节编号组织,此版改为「如何工作」与「为什么这样设计」两部分,内容取舍与图表重排见文末关于这个版本。分析对象是 Claude Code v2.1.88 的公开 TypeScript 源码,约 1884 个文件、51.2 万行。

先读这些

全文的十四条结论。每条都可以展开看依据,也可以直接跳到对应章节。

核心循环只是一个带状态管理的 while-true 循环,系统的复杂度几乎全在它周围。

循环本身做三件事:装配上下文、调模型、执行模型要求的工具,然后重复。社区对提取出的源码的估算是,只有约 1.6% 的代码属于 AI 决策逻辑,其余 98.4% 是运行外壳——权限、工具路由、上下文管理、恢复逻辑。C 级证据

→ 04 模型调用

这套架构是从五个人类价值倒推出来的,不是从模型能力倒推出来的。

人类决策权、安全保密与隐私、可靠执行、能力放大、情境适应性。十三条设计原则把这五个价值翻译成具体的工程取舍,每条原则都能追到具体源码。

→ 价值与原则

用户会批准 93% 的权限提示。系统的回应不是加警告,而是改问题。

逐条批准一旦被习惯化,用户就不再真的审阅了——这使交互式确认作为唯一安全机制在行为上不可靠。架构的回应是先划定边界(sandbox 与分类器),再让 agent 在界内自由行动,而不是增加提示的强度。A 级证据

→ 06 权限七关

安全不是一道关卡,而是七道独立的层,任何一层都能单独否决一次调用。

工具预过滤、拒绝优先的规则求值、permission mode 约束、auto-mode 分类器、shell sandbox、恢复时不还原权限、hook 拦截。请求必须通过所有适用的层。

→ 06 权限七关

但分层防御建立在「各层相互独立」的假设上,而这个假设会被性能压力破坏。

安全研究者记录到:子命令超过 50 个的命令会退化成一次泛化批准提示,因为逐子命令解析会让界面卡住。层与层共享性能预算,于是它们可能同时降级。C 级证据

→ 架构取舍

上下文窗口是系统认定的约束性资源,压缩为此分成五层递进。

预算削减、snip、microcompact、context collapse、auto-compact,按代价从低到高顺序执行,越贵的越晚触发。这是「懒降级」原则:先用最不破坏信息的压缩,只有便宜手段不够时才升级。

→ 08 上下文满了

记忆是纯文本文件,不是数据库,也不是向量索引。

CLAUDE.md 是普通 Markdown,用户可读、可改、可进版本控制。代价是检索精度:系统用 LLM 扫描记忆文件头部来挑选最多五个相关文件,粒度是文件级而非条目级。这是用检索精度换取可审查性。

→ 02 上下文装配

CLAUDE.md 以用户消息而非系统提示送入模型,因此它是「指导」而不是「强制」。

这导致模型对其中指令的遵从是概率性的。真正确定性的强制在权限规则层。架构刻意把指导与强制分成两层:前者可以商量,后者不能。

→ 02 上下文装配

扩展面切成四种机制而非一种,排序依据是上下文开销。

hook 零开销、skill 低开销(只有描述进上下文)、plugin 中等、MCP 高开销(工具 schema 很占地方)。单一机制无法覆盖从零开销生命周期钩子到 schema 密集的工具服务这整个跨度。

→ 03 工具池怎么来的

subagent 只回传摘要,不回传对话历史;隔离靠 git worktree 而非容器。

每个 subagent 的完整历史写进独立的 sidechain 文件,主对话只拿到最终文本。代价是大多数委派需要自包含的 prompt。worktree 隔离提供工作区级的文件系统分离,不引入容器编排。

→ 09 委派 subagent

会话恢复不恢复权限。这是刻意的安全保守选择。

会话被当作彼此隔离的信任域。恢复旧的授权会带来便利,但也会把过时的信任判断带进已经变化的上下文。架构选择让用户重新授权,以摩擦为代价维持「信任只在当前会话建立」这条不变式。

→ 10 会话落盘与恢复

同样的设计问题,在 OpenClaw 和 Hermes Agent 那里得到不同答案——差异来自部署场景。

Claude Code 把信任边界放在模型与执行环境之间,OpenClaw 放在网关外围,Hermes 居于两者之间:像 Claude Code 那样逐动作批准,但像 OpenClaw 那样渲染到许多界面上。两者可以互为宿主,提示 agent 的设计空间是分层的而非平铺的。

→ 三方对照

模型变强并不使 harness 失效。

五个价值里只有「能力放大」主要取决于模型有多强;安全完全不取决于模型能力,更强的模型反而更危险。实证上,固定模型只换 harness,长程任务得分变动可达 18 分。C 级证据

→ 设计哲学

全文最没有解决的问题:系统放大短期能力,而支撑人长期理解的机制很有限。

16 名资深开发者的随机对照试验显示 AI 工具让他们慢了 19%,而他们自己感觉快了 20%;807 个仓库的因果分析显示代码复杂度上升 40.7%。这些证据不针对 Claude Code,但指向同一类架构。论文把它列为贯穿全文的关切,而非一个已被回答的问题。

→ 长期能力这一问

第一部分

它如何工作

跟着一条请求走完全程。任务是「修好 auth.test.ts 里失败的测试」——这是原论文贯穿始终的例子,一句平常的话会依次激活工具调用、权限检查、上下文选择、迭代修复、委派与会话持久化。十站,每站一个子系统。

00

系统全景

七个组件连成一条从左到右的主干:用户 → 接口 → agent loop → 权限系统 → 工具 → 执行环境,状态与持久化在旁边记录一切。所有入口最终汇进同一个循环。

User提交 prompt,审批权限,查看输出
Interfaces交互式 CLI、headless CLI、Agent SDK、IDE 与桌面与浏览器
Agent Loop调用模型、分派工具、收集结果的迭代循环
AGENT LOOP 的三条外联
Permission System上行 Propose Action,下行 Allow / Ask / Deny
Tools下发调用,回传 Tool Result
State & Persistence启动时 Load,产生事件时 Persist
Execution Environment文件、Shell、网络、MCP

所有入口最终汇聚到同一个 agent loop。

图 1 Claude Code 的高层结构。系统分解为七个功能组件:用户、接口层、agent loop、权限系统、工具、状态与持久化、执行环境。

七个组件各自对应到具体源码:

  1. 用户:提交 prompt、批准权限、审阅输出。
  2. 接口层:交互式 CLI、无头 CLI(claude -p)、Agent SDK,以及 IDE/桌面/浏览器。所有界面喂进同一个循环。
  3. agent loop:模型调用、工具分发、结果收集的迭代周期,实现为 query.ts 里的 queryLoop() 异步生成器。
  4. 权限系统:拒绝优先的规则求值(permissions.ts)、auto-mode 机器学习分类器、基于 hook 的拦截(types/hooks.ts)。
  5. 工具:最多 54 个内置工具(19 个无条件,35 个受功能开关与用户类型影响),由 assembleToolPool() 组装,再与 MCP 提供的工具合并。
  6. 状态与持久化:以追加为主的 JSONL 会话记录(sessionStorage.ts)、全局 prompt 历史(history.ts)、subagent 的 sidechain 文件。
  7. 执行环境:带可选 sandbox 的 shell 执行(shouldUseSandbox.ts)、文件系统操作、网络抓取、MCP 服务器连接、远程执行。
入口在哪main()main.tsx)初始化安全设置,其中包括 NoDefaultCurrentDirectoryInExePath,用来防止 Windows 上的 PATH 劫持。

把这七个组件展开,会得到五层子系统。这张图是理解后续每一站的坐标系——每一站都落在其中某一层里。

SURFACE 入口与渲染
交互式 CLIheadless CLIAgent SDKIDE 与桌面与浏览器UI renderer
CORE 核心循环
agent loopcompaction pipeline
SAFETY / ACTION 安全与动作
权限系统auto-mode classifierhook 流水线扩展机制内置工具MCP 工具shell sandboxsubagent spawning
STATE 状态
上下文装配运行时状态会话持久化CLAUDE.md 层级sidechain
BACKEND 后端
执行后端外部资源

五层是七组件模型的细粒度展开,每层映射到具体的源码目录。

图 3 展开后的分层架构,五个子系统层自上而下。
值得单独说明QueryEngine 不是引擎。它是给非交互界面(无头 CLI 与 SDK)用的对话包装器,内部照样调用 queryLoop()。交互式 CLI 直接调 query(),完全绕过 QueryEngine。共享的代码路径是那个循环函数,不是这个类。
01

请求进来

用户在终端敲下「修好 auth.test.ts 里失败的测试」。这句话进入的是一个反应式循环——每一轮只承诺一次动作序列,不回溯,不搜索多条路径。

整个单轮流程如下图。请求经上下文装配进入模型,工具请求穿过权限网关,工具结果回灌循环,compaction 在上下文吃紧时介入。这张图是第一部分剩下九站的路线图。

User Prompt用户输入
Context Assembly装配设置与历史
ITER 1 工具被放行
模型调用
Tool Request
Permission 通过
执行得到结果,可同步、可交给 subagent、可后台运行
ITER 2 工具被拒绝
模型调用
Tool Request
Permission 拒绝
拒绝理由回灌成 tool_result,继续迭代

上下文压力触发 compaction 后,压缩结果回流到下一轮的上下文。

ITER N 收敛
模型只产出文本,没有 tool_use
Assistant Response
用户阅读并回复,进入下一轮
图 2 单轮 agentic turn 的端到端流程。prompt 经上下文装配进入模型,工具请求穿过权限网关,工具结果回灌循环,compaction 负责消化上下文压力。

这个循环遵循 ReAct 模式:模型生成推理与工具调用,harness 执行动作,结果喂给下一轮迭代。

它没有选的路另一类编排方式是把控制流定义成带类型边的状态机(LangGraph),或者用树搜索先探索多条动作轨迹再决定(LATS)。Claude Code 的反应式设计用搜索完备性换取了简单与低延迟:每一轮承诺一条动作序列,不回溯。

Anthropic 自己的文档归纳了五种可组合的工作流模式——prompt 链接、路由、并行化、编排者-工作者、评估者-优化者。Claude Code 主要在 subagent 委派上用了编排者-工作者模式(见 09),核心循环则保持反应式。

02

上下文装配

模型看到什么,决定它能做什么。上下文窗口由九类来源拼装而成,有的在开始时一次装好,有的在这一轮进行中陆续注入——所以上下文不是静态的,它在一轮之内还会长。

启动时装入
system promptoutput style环境信息CLAUDE.md 层级auto memoryskill 描述MCP 工具名
按需懒加载
path-scoped rules(读到匹配目录才加载)经 ToolSearch 取得的 deferred tool 定义
增长部分 随对话膨胀
对话历史文件读取命令输出工具结果
压缩产物 用摘要换空间
subagent 摘要compact 摘要
Context Window以上全部汇入同一个有界窗口,这是系统真正的稀缺资源
图 6 上下文构造与记忆层级。装入时机决定各部分何时开始占用窗口:(1)(2)(3) 在启动时装入,(4) 每轮累积,(5) 执行期加入,(6) 经 ToolSearch 按需取得。

九类来源

  1. 系统提示:含 output style 的修改,以及 --append-system-prompt 的内容。
  2. 环境信息:经 getSystemContext() 取得 git 状态(远程模式或禁用 git 指令时跳过)。每个会话记忆一次。
  3. CLAUDE.md 层级:经 getUserContext() 载入四级指令文件,同样有记忆。
  4. 路径域规则:条件规则与目录匹配规则,只有 agent 读到匹配目录里的文件时才懒加载。
  5. auto memory:与情境相关的记忆条目,异步预取。
  6. 工具元数据:skill 描述、MCP 工具名,以及经 ToolSearch 按需取得的延迟工具定义。
  7. 对话历史:向前携带,受 compaction 影响。
  8. 工具结果:文件读取、命令输出、subagent 摘要。
  9. compact 摘要:替换掉更早的历史片段。
结构位置的差别系统提示由 asSystemPrompt(appendSystemContext(...)) 组装;用户上下文(CLAUDE.md 与日期)则由 prependUserContext() 前置到消息数组。两者在 API 请求里占据不同的结构位置,可能影响模型的注意力分布。

CLAUDE.md 的四级层级

记忆系统遵循一条设计原则:存下来的上下文应当能被用户检查和编辑。所以它是纯文本 Markdown,不是结构化配置,也不是数据库条目。

  1. 受管记忆(如 Linux 上 /etc/claude-code/CLAUDE.md):面向所有用户的系统级策略。
  2. 用户记忆~/.claude/CLAUDE.md):私人全局指令。
  3. 项目记忆CLAUDE.md.claude/CLAUDE.md.claude/rules/*.md):随代码库进版本控制的指令。
  4. 本地记忆CLAUDE.local.md):被 gitignore,用于私人的项目专属指令。

文件发现从当前目录一路向上遍历到根,越靠近当前目录的优先级越高——实现方式是后加载。文件按「优先级的反序」装入,因为后装入的能获得更多模型注意力。

这意味着模型的指令集可能在一次对话中演化:当 agent 探索到代码库的新区域,那里的规则才会加载进来。

指导与强制的分界CLAUDE.md 作为用户消息而非系统提示内容送达(context.ts)。它是对话上下文,不是系统级指令,所以模型的遵从是概率性的。确定性的强制在权限规则那一层(06)。这条分界是刻意划的:指导可以商量,强制不能。

记忆文件支持 @include 指令做模块化组合(processMemoryFile()),语法变体包括 @path@./relative@~/home@/absolute。指令只在叶子文本节点生效,不进代码块。实现上被包含的文件追加在包含者之后,循环引用通过记录已处理路径来避免,不存在的文件静默忽略。

检索:没有用向量

系统不使用嵌入或向量相似度索引来检索记忆。它用一次 LLM 扫描记忆文件的头部,按需挑出最多五个相关文件,粒度是文件级而非条目级。基于嵌入的方案能更有选择性地取回单条记忆,代价是可审查性下降,以及需要维护一套索引基础设施。

03

工具池怎么来的

模型这一轮能看到哪些工具,不是固定的。四种扩展机制在 agent loop 的不同位置挂载,它们的排序依据是一个很实际的量:各自要吃掉多少上下文。

while (true) {
  a ctx = assemble(history, memory, tools)
  b out = model(ctx)
    if (out.isTextOnly())
      stopped = run_stop_hooks(out)   # 可否决
  c res = execute(out.toolUse)
    history.push(res)
}
a assemble 控制模型看到什么
CLAUDE.md 文件skill 描述MCP 资源与 promptoutput styleUserPromptSubmit hookSessionStart hook
b model 控制模型能够到什么
内置工具MCP 工具SkillToolAgentTool
c execute 控制动作是否执行、如何执行
权限规则PreToolUse hookPostToolUse hookStop hookSubagentStop hookNotification hook

任何 agent loop 都有这三个注入点。本文分析的四种机制挂在这三处;Anthropic 自己的文档取更宽的范围,把 CLAUDE.md 与 subagent 也算进扩展面。

图 5 扩展机制在 agent loop 上的挂载位置。左侧伪代码是图 1 中 Agent Loop 方块的放大。

一轮开始时,模型看到的不只是 BashTool、FileReadTool 这类内置工具,还有来自 MCP 服务器的数据库查询工具、来自 .claude/skills/ 的自定义 lint skill,以及已安装 plugin 贡献的工具。它们通过四种机制在循环的不同点接入。

四种机制

MCP 服务器。Model Context Protocol 是主要的外部工具接入路径。MCP 服务器可从项目、用户、本地、企业多个作用域配置,运行时再并入 plugin 与 claude.ai 提供的服务器。客户端支持 stdio、SSE、HTTP、WebSocket、SDK,以及 IDE 专用变体。每个已连接服务器贡献一组 MCPTool 对象。

plugin。它同时是打包格式与分发机制。清单模式接受十类组件:命令、agent、skill、hook、MCP 服务器、LSP 服务器、output style、channel、settings、用户配置。加载器校验清单,再把每个组件路由到各自的注册表。一个 plugin 包因此能同时扩展多种组件类型,这使它成为第三方扩展的主要分发载体。

skill。每个 skill 由带 YAML frontmatter 的 SKILL.md 定义,解析 15 个以上字段,包括显示名、描述、附加工具授权、参数提示、模型覆盖、执行上下文(fork 表示隔离执行)、关联的 agent 定义、投入档位与 shell 配置。skill 可以定义自己的 hook,在被调用时动态注册。调用时 SkillTool 这个元工具把 skill 的指令注入上下文。

hook。源码定义了 27 个 hook 事件,覆盖工具授权、会话生命周期、用户交互、subagent 协调、上下文管理、工作区事件与通知。其中 15 个有事件专属的输出模式,支持权限决策、上下文注入、输入修改、MCP 结果变换与重试控制。持久化的 hook 命令有四种类型:shell 命令、LLM prompt、HTTP、agentic verifier。

为什么是四种而不是一种

每多一种机制,开发者要学的表面积就更大。答案在上下文开销上:

表 2 四种扩展机制各自不可替代的地方。上下文开销指该机制启用时会吃掉多少有界上下文。
机制不可替代之处上下文开销注入点
MCP server接入外部服务,支持多种传输方式高,工具 schema 常驻model():tool pool
plugin多组件打包与分发中,取决于打了什么进去三个注入点都可
skill领域专用指令,加上元工具调用低,平时只加载描述assemble():上下文注入
hook生命周期拦截与事件驱动自动化默认为零execute():工具执行前后

这条递进的开销序列(hook 零、skill 低、plugin 中、MCP 高)意味着便宜的扩展可以大规模铺开而不耗尽上下文窗口,昂贵的则留给真正需要新工具面的场合。单一机制无法在不迫使扩展作者做出无谓妥协的前提下,跨越从零开销事件处理器到 schema 密集的外部服务集成这整个跨度。

代价是学习曲线:面对一个具体的集成任务,开发者要先判断该用哪种机制。

工具池的五步组装

assembleToolPool() 在源码注释里被称为「合并内置工具与 MCP 工具的唯一事实来源」。

  1. 枚举基础工具。getAllBaseTools() 返回最多 54 个工具的数组:19 个总是包含(如 BashTool、FileReadTool、AgentTool、SkillTool),另外 35 个依功能开关、环境变量与用户类型条件包含。
  2. 模式过滤。getTools() 按模式过滤。在 CLAUDE_CODE_SIMPLE 模式下只有 Bash、Read 和 Edit 可用(REPL 分支则是 REPLTool),必要时另加 coordinator 工具。每个工具的 isEnabled() 方法会被调用做运行时可用性检查。
  3. 拒绝规则预过滤。filterToolsByDenyRules() 在任何调用之前,就把整体被拒的工具从模型视野里剥掉。
  4. MCP 工具并入。来自 appState.mcp.tools 的工具先经拒绝规则过滤,再与内置工具合并。
  5. 去重。按名称去重,内置工具优先于 MCP 工具。
延迟工具启用 ToolSearch 后,一部分工具在初始上下文里只留名字,完整 schema 按需加载。这是「上下文是稀缺资源」原则在工具层的体现。

基于 agent 的扩展(.claude/agents/*.md 与 plugin 贡献的 agent)不在这四种机制里,因为它们的性质根本不同:它们创建新的、隔离的上下文窗口,而不是扩展当前这个。这部分见 09

04

模型调用

每一轮都走同一条九步固定序列。这一步是全文最反直觉的地方:模型只负责推理,绝不直接接触文件系统、shell 或网络——它对外界唯一的接口是结构化的 tool_use 协议。

九步查询流水线

  1. 设置解析。queryLoop() 解构不可变参数,包括系统提示、权限回调、模型配置。
  2. 可变状态初始化。单个 State 对象存放跨迭代的全部可变状态:消息、工具上下文、compaction 追踪、恢复计数器。循环的七个 continue 点各自以整对象赋值覆写它,而不是逐字段修改。
  3. 上下文装配。getMessagesAfterCompactBoundary() 从最后一个 compact 边界向前取消息,确保被压缩的内容以摘要而非原始消息的形式呈现。
  4. 五个前置 context shaper。顺序执行,见 08
  5. 模型调用。for await 循环流式接收 deps.callModel() 的响应,传入装配好的消息、完整系统提示、思考配置、可用工具集、中止信号、当前模型规格,以及快速模式设置、投入档位、后备模型等选项。
  6. tool_use 分发。响应含 tool_use 块时流向工具编排层。
  7. 权限网关。每个工具请求穿过权限系统(06)。
  8. 工具执行与结果收集。结果作为 tool_result 消息加入对话,循环继续。
  9. 停止条件。响应不含 tool_use(纯文本)时,这一轮结束。
推理与执行分开的安全后果因为推理与强制占用不同的代码路径,一个被攻破或被对抗性操纵的模型,无法越过 harness 里实现的 sandbox、权限检查或拒绝优先规则。模型对外界唯一的接口是结构化的 tool_use 协议,而 harness 会在执行前校验它。

queryLoop() 被定义为 AsyncGenerator,随进展产出 StreamEventRequestStartEventMessageTombstoneMessageToolUseSummaryMessage 等事件。这种基于生成器的设计使输出能流式送往 UI 层,同时在循环内部保持单一的同步控制流

1.6% 对 98.4%社区对提取出的源码的估算:只有约 1.6% 的代码构成 AI 决策逻辑,其余 98.4% 是运行基础设施。对比之下,Devin 维护显式的规划与任务追踪结构,LangGraph 把控制流走开发者定义的状态图——它们在「脚手架侧推理」上投入更多。C 级证据
05

工具分发与流式执行

模型要求跑 npm test 复现失败。工具不必等模型说完就能开始跑——但结果的返回顺序必须与请求顺序一致,否则模型会对不上号。

响应里出现 tool_use 块时,系统在两条执行路径之间选择。主路径用 StreamingToolExecutor,在工具从模型响应中流式到达时就开始执行,降低多工具响应的延迟。后备路径用 toolOrchestration.ts 里的 runTools(),遍历 partitionToolCalls() 产出的分区。两条路径都把工具分类为并发安全互斥:只读操作可以并行,修改状态的操作(如 shell 命令)串行化。

两个协调机制

并发读、串行写结果被缓冲,并按工具被接收的顺序发出,所以即使工具并行运行,输出顺序也保持不变——这很关键,因为模型期望工具结果的顺序与它发出的 tool_use 请求一致。这套模型处在完全串行分发与更激进的推测式方案(如 PASTE,在模型还在生成时就抢先执行预测的后续工具调用)之间。

工具结果收集阶段遍历来自流式执行器或批量 runTools() 生成器的更新。两者都是异步可迭代对象,由同一个 for await 循环消费;差别只在于工具执行是在模型流式输出完成前就开始(流式),还是在按并发安全分组分区后才开始(批量)。

每次更新可携带工具结果、附件或进度事件。有一个专门的检查探测 hook_stopped_continuation 附件:若 PostToolUse hook 发信号说这一轮不该继续,就设置 shouldPreventContinuation 标志。结果经 normalizeMessagesForAPI() 为 Anthropic API 规范化,只保留 user 类型消息。

06

权限七关

npm test 这个请求要穿过七道独立的层,任何一层都能单独拦下它。这套设计的直接动因是一个行为事实:用户会批准 93% 的提示,所以安全不能只靠人的警觉。

Tools发起 Tool Use
Policy CoreRules 规则、Modes 模式、Hooks 钩子
Permission Decision三选一
三条分支
Deny直接返回 Denied Result,不接触执行环境
Allow进入 Execution Environment 真正执行
Ask交给用户或 auto-mode classifier,裁决后回流成 Allow 或 Deny

Deny 规则优先于 Allow 规则,这是 deny-first 的含义。

图 4 权限网关总览。工具调用先过策略核心,再落到放行、拒绝、询问三条分支之一。

七道关卡

  1. 工具预过滤tools.ts):整体被拒的工具在任何调用之前就从模型视野里移除,模型根本无法尝试调用。
  2. 拒绝优先的规则求值permissions.ts):拒绝规则永远优先于放行规则,即使放行规则更具体。
  3. permission mode 约束types/permissions.ts):当前模式决定了没有匹配到显式规则的请求如何处理。
  4. auto-mode 分类器:一个机器学习分类器评估工具安全性,可能拒绝规则系统本会放行的请求。
  5. shell sandboxshouldUseSandbox.ts):已获批准的 shell 命令仍可能在限制文件系统与网络访问的 sandbox 内执行。
  6. 恢复时不还原权限conversationRecovery.ts):会话域的权限在 resume 或 fork 时不恢复。
  7. hook 拦截types/hooks.ts):PreToolUse hook 可修改权限决策;PermissionRequest hook 可在用户对话框之外(协调者模式下则在其之前)异步解决决策。

七种 permission mode

类型定义里存在七种模式:五种外部可见,auto 条件加入,bubble 仅内部使用。

  1. plan:模型必须先给出计划,用户批准后才执行。
  2. default:标准交互式使用。多数操作需用户批准。
  3. acceptEdits:工作目录内的编辑与部分文件系统 shell 命令(mkdirrmdirtouchrmmvcpsed)自动批准,其他 shell 命令仍需批准。
  4. auto:机器学习分类器评估未通过快速路径检查的请求(受 TRANSCRIPT_CLASSIFIER 开关控制)。
  5. dontAsk:抑制提示,本会提示的动作自动拒绝;显式的放行与拒绝规则仍生效。
  6. bypassPermissions:跳过多数权限提示,但安全关键检查与免绕过规则仍适用。
  7. bubble:仅内部使用,用于 subagent 向父终端上升权限。
这七种模式是一条自主性梯度从 plan(用户批准所有计划)经 default 与 acceptEdits 到 bypassPermissions(最少提示)。这条梯度反映了一个反复出现的设计张力:自主性越高,系统就越必须从交互式批准转向自动化的安全检查。SWE-Agent 与 OpenHands 用 Docker 容器隔离整个执行环境,Aider 依赖 Git 作为安全网使所有改动可逆——Claude Code 则在可选的容器化沙箱之上叠多层策略强制,用简单性换取对单个动作的细粒度控制。

规则求值按拒绝优先顺序进行。toolMatchesRule() 先检查拒绝规则:宽泛的拒绝(「拒绝所有 shell 命令」)不能被狭窄的放行(「允许 npm test」)覆盖。规则系统支持工具级匹配(按工具名)与内容级匹配(匹配具体工具输入模式,如 Bash(prefix:npm))。

授权流水线

预过滤。在任何工具请求到达运行时求值之前,filterToolsByDenyRules() 在工具池组装时就把整体被拒的工具从模型视野里彻底剥掉。文档写道:「使用与运行时权限检查相同的匹配器」,所以像 mcp__server 这样的服务器前缀规则会在模型看到之前剥掉该服务器的所有工具。

PreToolUse hook。已注册的 hook 作为权限流水线的一部分触发,可返回 permissionDecision(拒绝或询问)以及修改工具输入参数的 updatedInput一个 hook 的放行不会绕过后续的规则拒绝或安全检查。在交互路径上用户对话框先排队,hook 异步运行;协调者与类似的后台 agent 路径则先等自动检查完成再显示对话框。

规则求值。MCP 工具按完全限定的 mcp__server__tool 名匹配,服务器级规则匹配该服务器的所有工具。

权限处理器。useCanUseTool.tsx 里的处理器按运行时上下文分四条支路:协调者(多 agent 协调模式,先尝试自动解决再回落到用户交互)、swarm worker(多 agent 集群里的工作者,有自己的解决逻辑)、推测式分类器(启用 BASH_CLASSIFIER 且工具为 BashTool 时,一个预启动的分类结果与超时赛跑,分类器高置信度返回则工具立即批准,无需用户交互)、交互式(后备路径,通过终端 UI 呈现标准批准对话框)。

拒绝是路由信号,不是硬停止分类器或拒绝规则挡下一个动作时,系统把这次拒绝当作路由信号:模型收到拒绝原因,修正方案,在下一轮迭代尝试更安全的替代做法。PermissionDenied hook 事件让外部代码能观察并程序化响应这些拒绝。这种面向恢复的设计意味着权限强制在塑造 agent 的行为,而不只是终止它。

auto-mode 分类器与 hook 生命周期

启用 TRANSCRIPT_CLASSIFIER 时,yoloClassifier.ts 加载三份 prompt 资源:一份基础系统提示、一份外部权限模板,以及给 Anthropic 内部用户的另一份内部模板。分类器把待执行的工具调用对照对话记录与权限模板评估,产出放行、拒绝或请求人工批准。isUsingExternalPermissions() 检查 USER_TYPEforceExternalPermissions 配置来选模板。

源码定义的 27 个 hook 事件中,有五个直接参与权限流程,各有 Zod 校验的输出模式:

一个时序细节非 MCP 工具的 tool_result 在 PostToolUse hook 之前发出;MCP 工具的结果则延迟到 post hook 跑完之后,这样 updatedMCPToolOutput 才有生效余地。

shell sandbox

sandbox 为 Bash 与 PowerShell 命令提供额外一层保护。shouldUseSandbox() 检查三件事:sandbox 是否全局启用、该次调用是否主动退出、命令是否匹配任何排除模式。

启用时,sandbox 提供的文件系统与网络隔离独立于应用层权限模型。一个命令可能被权限批准但仍被沙箱化,也可能被权限拒绝而根本到不了安全检查。两套系统作用在不同的轴上:授权隔离

独立性假设会被打破分层安全架构建立在一个独立性假设上:一层失效,其他层能兜住。但多个层共享性能与经济约束。安全研究者记录到:子命令超过 50 个的命令会退化成一次泛化批准提示,而不是逐子命令做拒绝规则检查,因为逐子命令解析会让界面卡住。这说明分层防御在各层共享失效模式时可能一同降级。C 级证据
07

执行、验证与恢复

测试跑起来了,输出回到循环。这一站的问题是:出错怎么办,以及循环什么时候停。设计倾向是静默恢复,把人的注意力留给真正无法恢复的情况。

五种恢复机制

五个停止条件

  1. 没有工具调用:模型只产出文本内容——这是主要的停止条件。
  2. 达到最大轮数:可配置的 maxTurns 上限。
  3. 上下文溢出:API 返回 prompt_too_long
  4. hook 介入:PostToolUse hook 设置 hook_stopped_continuation
  5. 显式中止abortController 信号触发。
为什么强调验证Anthropic 自己的 harness 设计指南点出一个反直觉的事实:哪怕产出质量平平,agent 也倾向于自信地夸奖自己的工作。这构成了把生成与评估分开的动机。
08

上下文满了:compaction

修测试的过程读了几个文件、跑了几次命令,上下文开始吃紧。压缩不是一步到位,而是五层按代价递进——先用最不破坏信息的手段,只有便宜的不够时才升级。

五层,按代价从低到高

  1. 预算削减applyToolResultBudget(),总是启用):对工具结果施加逐消息的尺寸上限,把超大输出替换成内容引用。豁免工具(maxResultSizeChars 非有限的)保留完整输出。内容替换会被持久化,以便 resume 时重建。
  2. snipsnipCompactIfNeeded(),受 HISTORY_SNIP 控制):轻量修剪,移除较旧的历史片段,返回 {messages, tokensFreed, boundaryMessage}
  3. microcompact(受 CACHED_MICROCOMPACT 控制):细粒度压缩,总是走一条基于时间的路径,可选走一条缓存感知路径。启用缓存路径时,边界消息延后到 API 响应之后,以便使用实际的 cache_deleted_input_tokens 而非估算值。
  4. context collapse(受 CONTEXT_COLLAPSE 控制):对话历史上的读时投影。源码注释写道:「什么都不产出;折叠视图是 REPL 完整历史上的读时投影。摘要消息存在折叠存储里,不在 REPL 数组里。这正是折叠能跨轮持续的原因。」它不修改 REPL 存储的历史,只用 applyCollapsesIfNeeded() 替换 messagesForQuery 数组——模型看到折叠版本,完整历史仍可用于重建。
  5. auto-compact(默认启用,可关闭):第五个 shaper,经 compactConversation() 触发一次完整的模型生成摘要。该函数先执行 PreCompact hook,用 getCompactPrompt() 构造摘要请求,调模型产出压缩摘要,结果喂入 buildPostCompactMessages()只有前四层都跑过、上下文仍超过压力阈值时才触发。
懒降级,以及它的代价递进式设计的逻辑是:先施加最不具破坏性的压缩,只在便宜策略不够时升级。代价是复杂度与不可预测性——五个相互作用的压缩层,其中几个受功能开关控制,行为难以完全预料。auto-compact 会在记录里产生可见摘要,microcompact 会发出边界标记,但 context collapse 完全没有用户可见的输出。更简单的单次截断方案牺牲信息,但更容易推理。

buildPostCompactMessages() 返回的压缩输出结构是 [boundaryMarker, ...summaryMessages, ...messagesToKeep, ...attachments, ...hookResults]。边界标记由 annotateBoundaryWithPreservedSegment() 附上保留片段元数据,记录 headUuidanchorUuidtailUuid,以支持读时链修补。这种以追加为主的设计意味着 compaction 从不修改或删除已写入的记录行,只追加新的边界与摘要事件。

一个实测数字源码注释记录了 2026 年 1 月的一次实验:compaction 路径若不复用主对话的 prompt 缓存,「开关取 false 的那条分支有 98% 缓存未命中,消耗约 0.76% 的舰队 cache_creation」。是否复用由 GrowthBook 开关控制。

compaction 之外,还有几个子系统决策同样出于「上下文是瓶颈」这一约束:CLAUDE.md 懒加载(嵌套指令文件与条件规则只在 agent 读到相应目录的文件时才加载)、延迟工具 schema(启用 ToolSearch 时部分工具初期只留名字)、subagent 只回摘要(见 09)、逐工具结果预算(单个工具结果被限制在可配置尺寸内,防止一次冗长输出吃掉不成比例的上下文)。

09

委派 subagent

修测试之前需要先摸清认证模块的结构。这活可以交给 subagent——它在独立的上下文窗口里跑,只把一份摘要交回来。完整历史写进单独的文件,永不进入父上下文。

主对话读写主 transcript
Agent 工具委派入口
可分派的目标
ExplorePlangeneral-purpose自定义 subagent
隔离沙箱做的三件事
重建权限上下文与工具集
可选的权限模式覆盖
独立 worktree
产出
subagent transcript,落盘为 .jsonlmeta.json
subagent report,文本加元数据,插回主 transcript

分派沿三个轴展开:routing 决定交给谁,isolation 决定隔离到什么程度,lifecycle 决定同步还是异步。

图 7 subagent 隔离与委派架构。每个 subagent 跑在独立上下文里,主对话只拿回一份摘要。

Agent 工具与内置类型

委派机制是 Agent 工具(AgentTool.tsx),Task 保留为遗留别名。模型用结构化输入调用 Agent,包含委派 prompt、可选的 subagent 类型,以及隔离模式、权限覆盖、工作目录的配置。内置类型最多六种,实际有几种取决于功能开关与入口点。输入模式使用功能开关控制的字段:相应功能关闭时省略可选参数。isolation 字段给内部用户提供 ['worktree', 'remote'],给外部用户提供 ['worktree'],在构建时决定。

此外用户可用 .claude/agents/*.md 定义自定义 subagent,plugin 也可贡献 agent 定义。每个文件的 Markdown 正文充当该 agent 的系统提示,YAML frontmatter 指定 descriptiontools(放行清单)、disallowedToolsmodeleffortpermissionModemcpServershooksskillsmaxTurnsmemory scopebackgroundisolation

SkillTool 与 AgentTool 的分别两者都是基础工具池里的元工具,但性质不同:SkillTool 通常把指令注入当前上下文窗口(可通过 context: fork 选择性地经同一套 runAgent() 机制派生隔离子 agent),AgentTool 总是派生一个新的隔离 agent。代价是多数 subagent 调用需要自包含的 prompt,因为默认路径不继承父对话历史。

三种隔离模式

权限覆盖逻辑(runAgent.ts)有几条具体规则:subagent 定义了 permissionMode 时,覆盖生效,除非父已处于 bypassPermissionsacceptEditsauto 模式——因为这些模式代表用户对安全与自主性权衡的显式决定,优先级更高。对异步 agent,系统按级联判断是否避免提示:先看 canShowPermissionPrompts,再看 bubble 模式(总是显示,因为它上升到父终端),最后是默认值(同步 agent 显示提示,异步不显示)。能显示提示的后台 agent 会设置 awaitAutomatedChecksBeforeDialog: true,确保分类器在打断用户之前先出结果。

allowedTools 显式传给 runAgent() 时,两级权限作用域模型生效:SDK 级权限(来自 --allowedTools)保留,因为「来自 SDK 消费者的显式权限应当适用于所有 agent」;但会话级规则被 subagent 声明的 allowedTools 替换。未提供 allowedTools 时(常见的 AgentTool 路径),父的会话级规则被继承而不替换。

sidechain 记录

每个 subagent 把自己的记录写成独立的 .jsonl 文件,配一个 .meta.json 元数据文件。这种设计使 subagent 历史可供调试与审计,但不会膨胀父会话文件。只有 subagent 的最终响应文本与元数据返回父对话上下文,完整历史永不进入父上下文窗口。

7 倍即使是隔离上下文的并行,成本也很实在:Claude Code 的 agent team 在 plan 模式下消耗约标准会话 7 倍的 token。这使「只回摘要」在 subagent 本身也处于隔离上下文时更显必要。A 级证据

agent team 的多实例协调用文件锁,不用消息代理或分布式协调服务。每个 teammate 有自己的收件箱 JSON 文件(utils/teammateMailbox.ts),任务分配与其他 agent 间消息推入收件人的收件箱,由逐收件箱的锁文件(utils/lockfile.ts)保护,文件存放在可预测的路径。这用吞吐量换来两个性质:零依赖部署(不需要外部基础设施)与完全可调试(读纯文本 JSON 就能检查任何 agent 的状态)。

10

会话落盘与恢复

测试修好了。这一轮的 prompt、工具调用与结果、compact 摘要、subagent 摘要全部已经落盘。但下次 resume 时,这一轮授予的权限不会回来。

实时状态
Conversation
Context Window

接近容量时触发 compaction。

COMPACTION 三步
1 移除清掉旧的工具输出
2 生成产出会话摘要
3 标记打上 compact boundary
持久存储
session transcript (.jsonl)historysubagent 日志checkpoint
用户可做的三件事
Rewind 回退Resume 恢复Fork 分叉

resume 与 fork 恢复消息,但恢复会话级权限,未被重建的权限回落到 deny-first 询问。

图 8 会话持久化与 compaction。实时状态与持久存储被刻意分开:前者可回收,后者以追加为主。

三条独立的持久化通道

  1. 会话记录:user、assistant、attachment、system 消息,加上 compaction 与其他元数据事件。项目域,每会话一个文件。
  2. 全局 prompt 历史:只存用户 prompt,放在 Claude 配置主目录的 history.jsonmakeHistoryReader() 生成器经 readLinesReverse() 逆序产出条目,支持上箭头与 ctrl+r 导航。
  3. subagent sidechain:每个 subagent 独立的 .jsonl.meta.json

会话记录存为项目专属路径下以追加为主的 JSONL 文件(显式的清理重写是例外)。getTranscriptPath() 把它算作 join(projectDir, ${getSessionId()}.jsonl),其中 projectDir 先查 getSessionProjectDir()(由 resume/分支时的 switchSession() 设置),再回落到 getProjectDir(getOriginalCwd())

记录里除了普通消息,还存 compaction 标记、文件历史快照、归属快照、内容替换记录。追加式 JSONL 是刻意选择:以查询能力为代价换取可审查性与简单性。每条日志事件都人类可读、可进版本控制,不需专门工具即可检视。数据库支撑的方案能对会话历史做更丰富的查询,但引入部署依赖并降低透明度。

会话身份sessionIdsessionProjectDir 成对设置,在 resume 或分支时一起确定。记录路径必须使用消息写入时活跃的那个项目目录,以免 hook 去错误的目录里找东西。

resume、fork,以及权限不恢复

--resume 通过重放记录重建对话(conversationRecovery.ts)。fork 从既有会话创建新会话(commands/branch/branch.ts)。但两者都不恢复会话域权限,用户必须在新会话里重新授予。

为什么不恢复会话被当作彼此隔离的信任域。恢复此前授予的权限会带来便利,但风险是把过时的信任判断带进已经变化的上下文。架构选择「重新授予」而非「隐式持久化」,接受用户摩擦作为代价,以维持一条不变式:信任总是在当前会话里建立

compact_boundary 标记为配合持久化做了专门设计。annotateBoundaryWithPreservedSegment() 在边界事件中记录 headUuidanchorUuidtailUuid。这些 UUID 让会话加载器能在读时修补消息链:被保留的消息在磁盘上保持原来的 parentUuid,加载器用边界元数据正确连接它们。

另需澄清:Claude Code 里的「checkpoint」是给 --rewind-files 用的文件历史检查点,存在 ~/.claude/file-history/<sessionId>/。它们是文件级快照,用于回退文件系统改动,不是通用的状态检查点存储。

第二部分

为什么这样设计

第一部分说清了机制。这一部分回答另一个问题:这些选择从哪来,代价是什么,以及在别的部署场景下同样的问题会得到什么答案。

五个价值与十三条原则

生产级编码 agent 由人为人而建,它嵌入的架构决定反映了建造者认为什么重要。这套架构可以从五个人类价值一路推到具体实现;此外还有一个不在这五者之内的横切问题——长期开发者能力。

Anthropic 的安全 agent 框架把核心张力挑明了:「agent 必须能自主工作,独立运作正是它的价值来源;但目标以何种方式被追求,控制权应当留在人手里。」Claude 的宪法没有用刚性的决策流程去化解这一张力,而是培养「可以按情境施用的良好判断与稳固价值」。

人类决策权

系统做什么,最终由人说了算。这层权力关系被组织成 principal hierarchy——先 Anthropic,再 operator,最后是 user 的委托层级,用来明确谁对什么有权。系统要让人能行使知情的控制:实时观察动作、批准或拒绝待执行的操作、中断进行中且可中断的操作、事后审计。

当 Anthropic 发现用户会批准 93% 的权限提示时,回应不是加更多警告,而是把问题重新组织:先划出边界,再让 agent 在界内自由工作

安全、保密与隐私

保护人、代码、数据与基础设施不受损害,哪怕人当时并不专注,或者干脆判断失误。这一条与人类决策权是两回事:决策权说的是人有权选择,安全说的是这份权力失效时系统仍有义务兜底。auto-mode 的威胁模型明确针对四类风险:过度积极的行为、诚实的失误、prompt injection、模型失准。

可靠执行

agent 要做人真正想要的事,长时间保持连贯,并在宣布成功之前支持验证。它横跨两个尺度:单轮的正确性(是否忠实理解了请求)与长程的可依赖性(越过 context window 边界、经过会话 resume、经过多 agent 委派之后是否还连贯)。

能力放大

系统要实质性提高单位投入与成本下的产出。内部调研显示约 27% 的任务是「没有这个工具就不会去做」的工作,提示架构带来的是新的工作方式,而不只是把原有流程做得更快。它的创造者把它描述成「一件 Unix 实用工具而非传统产品」,由「尽可能小、有用、可理解、可扩展」的构件搭成。

架构把投入压在确定性基础设施上(上下文管理、工具路由、恢复机制),而不是压在决策脚手架上(显式的规划器或状态图)。背后的判断是:模型越强,越受益于丰富的运行环境,而不是越受益于限制其选择的框架。

情境适应性

系统要贴合用户的具体处境——项目、工具、约定与技能水平——而且这段关系会随时间变好。纵向数据显示人机关系确实在演化:自动批准率从不足 50 次会话时的约 20%,升到 750 次会话时的 40% 以上。这种被描述为「由模型、用户与产品共同建构」的自主性,意味着系统面向的是信任的轨迹,而不是固定的信任状态。

十三条原则

五个价值经十三条原则落到具体实现。每条原则回答一个生产级编码 agent 必须解决的反复出现的问题。

表 1 设计原则、它服务的价值,以及它回答的设计问题。一条原则往往同时服务多个价值。
设计原则服务的价值回答的设计问题对应章节
deny-first,拿不准就上交人类人类决策权、安全无法识别的动作应当放行、拦截,还是上交给人?5、8、9
分级信任谱人类决策权、情境适应性固定的权限档位,还是用户可以随时间推移逐步移动的连续谱?5
多机制叠加的纵深防御安全、人类决策权、可靠执行单一安全边界,还是用不同技术叠出多层互相重叠的边界?3、5
策略外置且可编程安全、人类决策权、情境适应性策略写死在代码里,还是外置成配置加生命周期 hook?5、6
把上下文当稀缺资源,渐进式管理可靠执行、能力放大真正的约束资源是什么,又该怎么管:一次性截断还是分级流水线?4、6、7、8
只追加的持久状态可靠执行、人类决策权可变状态、检查点快照,还是只追加日志?4、9
脚手架最小化,运行时 harness 最大化能力放大、可靠执行把投入放在脚手架侧的推理,还是放在让模型自由推理的运行基础设施上?3、4
价值优先于规则能力放大、人类决策权刚性的决策流程,还是由确定性护栏兜底的情境判断?3、5、7
可组合的多机制扩展能力放大、情境适应性一套统一的扩展 API,还是按上下文开销分层的多种机制?6
按可逆性加权的风险评估能力放大、安全所有动作一视同仁,还是对可逆和只读的动作放松监管?4、5、8
透明的文件式配置与记忆情境适应性、人类决策权不透明的数据库、基于 embedding 的检索,还是用户可见、可版本控制的文件?7
subagent 边界隔离可靠执行、安全、能力放大subagent 共享父级的上下文与权限,还是独立运行?8
优雅恢复与韧性可靠执行、能力放大出错就硬失败,还是静默恢复、把人的注意力留给真正不可恢复的情况?4、5

这组原则可以对照三类替代设计家族来读。第一,规则式编排:LangGraph 一类框架把决策逻辑编码成带类型边的显式状态图,即选择脚手架而非最小 harness。第二,容器化执行:SWE-Agent 与 OpenHands 依赖 Docker 隔离,而非分层策略强制。第三,版本控制即安全:Aider 一类工具以 Git 回滚为主要安全机制,而非拒绝优先的求值。

架构没有做什么把五个价值映射到实现,同样暴露了三处缺席:不对模型的推理施加显式规划图不提供单一统一的扩展机制resume 时不恢复全部会话域的信任相关状态。这三处缺席与上述原则集是一致的。

设计哲学:投基础设施,不投脚手架

第一部分记录的实现证实了从价值推出的预测:架构压倒性地是确定性基础设施,LLM 被当作一个无状态的补全端点来调用。这与 agent 工程里的主流做法正好相反。

估计 1.6% 的代码构成决策逻辑,其余 98.4% 是运行外壳。这个比例不是偶然的。十三条原则支撑的是同一个做法:harness 创造让模型能作出好决策的条件,而不是约束它的选择空间。

这一设计与主流反向。LangGraph 一类框架把模型输出路由过带类型边的显式图节点,Devin 一类系统把多步规划器与重型运行基础设施配对。Claude Code 则在丰富的运行外壳内给模型最大的决策自由度。工程复杂度存在的目的不是约束模型的决定,而是使之可能。这种「模型推理、harness 强制」的分层结构,提出了一个问题:agentic 编码工具是否正在收敛到类操作系统的抽象——核心循环是内核,其余一切构成 OS。

模型变强之后,harness 还需要吗

随着前沿模型在编码任务上的实际能力趋同,周边运行外壳的质量成为主要区分点。原生运行时基准测试给这一判断提供了直接实证支持:固定模型、只改变周边 harness,单个模型在长程任务上的得分变动可达 18 分C 级证据

更细一层的论证是:harness 服务五个价值,而其中只有一个主要取决于模型有多强。

约束这五者的 token 经济也不会松动:更好的模型不让 token 变免费。研究对当时最强的模型同样成立——单是 harness 的选择,就能让同一个前沿模型的功能与安全通过率变动十个百分点以上。harness 不会随模型能力增长而失效;改变的只是决策脚手架那一部分,而且只在模型已经很强的地方改变。

三方对照:Claude Code、OpenClaw、Hermes Agent

同样的设计问题,换一个部署场景就换一个答案。这组对照的价值不在评优劣,而在分清哪些是共同原则,哪些是被部署环境逼出来的分歧。

OpenClaw 是一个本地优先的 WebSocket 网关,把多个消息渠道(WhatsApp、Telegram、Slack、Discord、Signal 等)接到一个嵌入式 agent 运行时上,另有 macOS、iOS、Android 的配套应用。Hermes Agent 是单个 Python 进程,它的角色由启动它的入口点决定:一层持久化,许多界面对着同一个运行时。Hermes 发行版暴露三个控制台脚本——hermes(CLI 与网关控制器)、hermes-agent(批量运行)、hermes-acp(Agent Client Protocol 适配器,让外部 IDE 像 Hermes 自己的网关托管其他 agent 那样托管 Hermes)。

Claude Code 是绑定单个代码仓库的 CLI harness,OpenClaw 是多渠道个人助理的常驻控制平面,Hermes 是一个进程、其界面集由入口点决定。三者占据 agent 设计空间的不同区域。

维度Claude CodeOpenClawHermes Agent
系统范围 CLI/IDE 编码 harness,每会话一个短命进程 常驻 WebSocket 网关守护进程,多渠道控制平面 单个 Python 进程,角色由入口点决定(hermeshermes-agenthermes-acp);内建加 plugin 两层消息界面;两个 SQLite 文件(state.dbkanban.db)做持久化
信任模型 拒绝优先的逐动作规则求值,配 hook 与可选 ML 分类器;7 种 permission mode;递进信任梯度 每网关一个受信 operator;DM 配对与入站渠道放行清单;可选开启 sandbox,作用域可配(逐 agent/逐会话/共享),多种后端 逐动作批准集中在一个文件(tools/approval.py);3 种模式(manual/smart/off)加一道无条件的 HARDLINE_PATTERNS 底线;同一套批准流渲染四次:CLI、网关键盘(Telegram/Discord/QQBot)、ACP request_permission,以及一个仅 cron 的无人值守模式
agent 运行时 迭代式异步生成器(queryLoop())作为系统中心 嵌在网关 RPC 分发里的 pi-coding-agent SDK runner;逐会话串行化,可选全局通道 AIAgent.run_conversation 内的同步 while 循环;迭代计数默认 90,另有独立迭代预算;预算耗尽时让 agent 交付一份剥离工具的收尾摘要而非中途终止;工具在导入时经 registry.register() 自注册;并行工具调用,串行后备
扩展架构 4 种机制按上下文开销分档:MCP、plugin、skill、hook 清单优先的 plugin 系统,12 种能力类型,中央注册表;独立的 skill 层;内建 openclaw mcp(服务器与出站客户端注册表) 5 个界面对 Claude Code 的 4 个:三个与 Claude Code 同级(plugins/<name>/ 带生命周期 hook、随包 skills/config.yaml 里配的 MCP 服务器),另两个属于另一个轴——可插拔记忆提供方(plugins/memory/<name>/)与可插拔模型提供方(plugins/model-providers/<name>/);hook 是 Python 回调或外部 shell 命令
记忆与上下文 CLAUDE.md 四级层级;五层 compaction 流水线;基于 LLM 的记忆扫描 工作区引导文件(AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.md,另有条件加载的 BOOTSTRAP.mdHEARTBEAT.mdMEMORY.md);独立记忆系统(MEMORY.md、每日笔记、可选 DREAMS.md);auto-compaction 支持可插拔提供方;可选混合检索(向量加关键词,取决于嵌入提供方);面向长期晋升的实验性「做梦」机制 一个辅助 LLM 摘要器,带 token 预算尾部保护,前置一次工具输出剪枝;摘要前缀一段「仅供参考」引言;对上下文文件(AGENTS.md.cursorrulesSOUL.md)做注入前扫描;持久的 MEMORY.mdUSER.md 跨 compaction 保持权威
多 agent 与路由 任务委派型 subagent(Explore、Plan、general-purpose 等);worktree 隔离;只把最终响应文本回传父级 两件分开的事:(a) 多 agent 路由,隔离 agent、独立工作区、绑定式渠道分发;(b) 子 agent 委派,嵌套深度可配(最大 5,默认 1,建议 2),会话绑定线程 delegate_task 在线程池里派生子 AIAgent;并发默认上限 3 个子级,深度上限 1(钳制在 [1,3]);叶子子级默认不能再委派;子级运行时持久记忆被禁用;Kanban 子系统(SQLite 支撑的工作队列)带过期认领回收,用于多进程工作者协调
三个系统在六个设计维度上的对照。每一行都是同一个设计问题的三种不同答案。

三个维度的要点

信任边界放在哪里。Claude Code 假定运行在受信开发者机器上的不受信模型:拒绝优先系统评估每次工具调用。OpenClaw 假定每个网关实例有单个受信 operator:安全架构从身份与访问控制(DM 配对码、发送者放行清单、网关认证)出发,而非逐动作的安全分类。Hermes 取第三个位置:像 Claude Code 那样逐动作批准,但像 OpenClaw 那样渲染到许多界面上。差别在于信任边界的位置:Claude Code 放在模型与执行环境之间,OpenClaw 放在网关外围,Hermes 居中。

循环在架构中的位置。三者都实现 ReAct 模式,但循环所处的位置不同。在 Claude Code 里 queryLoop()系统中心:所有界面汇入它,它直接管理上下文装配、模型调用、工具分发与恢复。在 OpenClaw 里 agent 运行时是嵌在更大网关分发层内的一个组件:网关的 agent RPC 校验参数、解析会话、立即返回,嵌入式 runner 再执行循环并把生命周期与流事件回传网关协议。在 Hermes 里循环是 Claude Code 的同级,但实现形态不同——线程管理并发的同步 Python 循环,不是产出事件的异步生成器。

扩展作用在什么上。Claude Code 的扩展修改单个 agent 的动作面;OpenClaw 的 plugin 扩展跨所有 agent 共享的网关能力面;Hermes 在 Claude-Code 式的逐 agent 界面之上加了第二个轴——就地替换整个记忆与模型提供方后端,而不是在其周围拦截事件。

Hermes 的额外能力

有几项 Hermes 能力落不进上述六个维度,因为它们源自 Hermes 与 OpenClaw 共有、而 Claude Code 逐会话 CLI 模型不具备的常驻进程属性:

这组对照说明了什么

第一,设计问题是稳定的,答案随部署场景变化。推理放在哪、采取什么安全姿态、上下文如何管理、扩展面如何切分——这些问题的适用范围超出编码 agent。OpenClaw 从多渠道个人助理出发回答了每一个,Hermes 从单进程多界面部署出发回答了每一个。

第二,三者的投注方向不同。Claude Code 投在递进式的逐动作安全评估上;OpenClaw 投在外围级的身份与访问控制上;Hermes 居于两者之间。Claude Code 把 agent loop 当作架构中心;OpenClaw 把网关控制平面当作中心,把循环嵌为一个组件;Hermes 的循环在运行时层与 Claude Code 同级,占据同样的架构位置,而非坐在网关分发层里。

第三,三者是可组合的,不是互斥的替代品。OpenClaw 能通过 ACP 集成把 Claude Code、OpenAI Codex 与 Gemini CLI 当作外部编码 harness 托管;Hermes Agent 同时坐在 ACP 主/客分界的两侧——它的网关托管平台适配器与工具服务器,而 hermes-acp 适配器让外部 IDE 托管 Hermes。这说明 AI agent 的设计空间不是一张平铺的分类表,而是分层的:网关级系统与任务级 harness 可以在多个位置组合。

一个方法论提示基于源码的阅读发现 Hermes 项目自身文档与实现有两处漂移:SECURITY.md 记的是 onautooff 分类,而 tools/approval.py:721-750 返回的是 manualsmartoffSECURITY.mdAGENTS.md 描述委派深度默认为二,而 tools/delegate_tool.py:128 设的是 MAX_DEPTH = 1。原论文以源码而非文档为依据。

价值之间的张力

五个价值会互相牵制。这些张力不是设计失误,而是同时追求多个价值的结构性后果。下表只列证据最强的几组,不是全部组合。

表 4 价值之间的张力及其证据。每一组张力都说明这两个价值确实关切不同的东西,不能互相替代。
价值对张力证据
人类决策权 × 安全审批疲劳与保护之间93% 的权限提示被批准,这个比例本身就削弱了人的警觉,安全必须由 classifier 与 sandbox 来补偿
安全 × 能力放大性能与防御纵深之间子命令超过 50 个时的回退路径会因解析开销而跳过逐子命令的 deny 检查,说明安全层之间共享性能约束
情境适应性 × 安全扩展性与攻击面之间多个 CVE 利用的都是 hook 与 MCP server 在信任建立之前就完成初始化这一点
能力放大 × 情境适应性主动性与打断之间主动行为能多完成 12% 到 18% 的任务,但频率一高,用户偏好随即下降
能力放大 × 可靠执行速度与一致性之间有界上下文使系统无法通盘掌握代码库,subagent 隔离又限制了跨 agent 的一致性,相邻工具中亦观察到复杂度上升

另有一个单独的问题:短期收益是否削弱长期的开发者能力。16 名资深开发者、246 项任务的随机对照试验发现,AI 工具让他们慢了 19%,而他们自己感觉快了 20%。跨 807 个仓库的因果分析发现代码复杂度上升 40.7%。一项 54 人的 EEG 研究发现 LLM 用户表现出神经连接性减弱,且在移除 AI 后仍然持续。这些发现与 2023 到 2024 年间入门级技术岗招聘下降 25% 合在一起,提示能力放大与长期可持续性之间的张力越出了个人生产力,延伸到更广的开发者管道。

证据的适用范围这些实证不针对 Claude Code 的架构。它们最相关的对象是依赖有界上下文、工具使用循环与本地生成决策的 agent 系统——Claude Code 属于这一类,但结论不是对它的直接测量。

架构取舍

上述张力落成一组具体的架构取舍。其中值得单独看的是分层防御:它的独立性假设会被性能压力削弱,而权限流水线本身又没有刻画时间维度。

安全对自主性

permission mode 构成一条从 plan 到 bypassPermissions 的梯度,代表单调递减的安全性梯度。resume 时不恢复权限是刻意偏向安全的选择:安全状态不跨会话边界隐式持久化。

但这条梯度不只由架构设计塑造,也由用户行为塑造。93% 的批准率说明批准疲劳使交互式确认在行为上不可靠;纵向数据显示自动批准率从不足 50 次会话的约 20% 升到 750 次会话的 40% 以上,会话时长也大幅增加。这些模式表明梯度是被逐渐习惯化推着走的,而不是被刻意的模式选择推着走的。sandbox 把权限提示的频率降低了约 84%,这把问题重新框定为一个人因问题:对不可靠的人类批准,架构上的回应是减少人需要做的决定数量。

分层防御的独立性假设

更根本地,分层安全建立在独立性假设上:一层失效,其他层兜住。但 Claude Code 的安全层共享性能与经济约束。auto-mode 分类器是一次单独的 LLM 调用,有直接的 token 成本。bashSecurity.ts 模块做基于 AST 的顺序检查,有解析延迟。拒绝优先的规则求值作用在命令结构上。当性能压力推着人去削减这些成本时,多个层可能同时降级。前面提到的 50 个子命令退化案例就是这个假设被违反的实证。

这个张力是结构性的。任何用模型自身做安全评估的 LLM agent 系统都会遇到它。相关的评价标准不是「某一层能否被绕过」,而是「必须有多少个独立层同时失效」,以及「它们是否共享失效模式」。

对抗条件下的权限模型:一个时序漏洞

独立安全研究给权限架构提供了实证检验,具体做法是暴露一条权限流水线图没有刻画的时序属性。两个独立验证的漏洞共享同一个根因:预信任初始化顺序——项目初始化期间执行的代码(hook、MCP 服务器连接、settings 文件解析)先于交互式信任对话框呈现给用户。

这个预信任执行窗口落在拒绝优先求值流水线之外,形成一个结构性特权阶段,第一部分记录的安全保证在其中不适用。

空间顺序与时间顺序权限流水线刻画的是安全检查的空间顺序,没有刻画时间维度——即会话初始化期间每个机制何时变为活跃。初始化序列(扩展加载 → 信任对话框 → 权限强制)创造了一个窗口,在其中扩展架构先于安全架构完全生效。这个发现为「扩展性对简单性」的张力添加了一个安全维度:扩展性不只通过组合复杂度制造攻击面,也通过初始化顺序制造攻击面。
具体漏洞两个预信任顺序漏洞是 CVE-2025-59536(CVSS 8.7)与 CVE-2026-21852(CVSS 5.3),由 Check Point Research 发现。CVE-2025-54794 与 CVE-2025-54795 另外利用了权限流水线其他位置的路径校验与命令解析缺陷。四个都在披露后数周内修补。

上下文效率对透明度

五层 compaction 流水线做到了有效的上下文管理,但压缩对用户基本不可见。预算削减把长工具输出换成引用、context collapse 用摘要替换消息(源码称之为「REPL 完整历史上的读时投影」)、snip 修剪较旧历史时,用户没有简便手段去检查丢了什么。microcompact 的缓存感知压缩又加一层不透明:压缩决策受 prompt 缓存影响,而这对用户不可见。外部研究记录了源码级视图不会暴露的两项成本:摘要步骤是一次阻塞式推理停顿,而且它是非确定的——同样的输入在不同运行间保留的内容会波动。

简单性对扩展性

四种扩展机制带来丰富的定制能力,但产生组合式交互。一个 plugin 贡献的 PreToolUse hook 会修改工具输入;auto-mode 分类器读取缓存的 CLAUDE.md 内容;路径域规则在读到新目录时懒加载,可能在对话中途改变分类器行为;权限处理器的四条支路在多个点与 hook 流水线交互。这些横切关切产生的涌现行为,无法从任何单一配置文件推断出来

可检验的预测与早期信号

架构属性能推出关于代码质量结果的可检验预测——这些预测无法单从源码得出,但可以被测量。

有界上下文窗口阻止 agent 同时保有对整个代码库的感知;五层 compaction 流水线保留了有用信息,但在每一级都引入有损压缩。由此在架构上可以预测:agent 生成的代码,其模式重复与约定违反的比率会高于在完整代码库可见性下产出的代码。subagent 隔离加剧这一效应:每个 subagent 在自己的上下文窗口里、用独立组装的工具池运作,于是并行 agent 可能各自重新实现别处已存在的方案。设计哲学信任模型作出好的局部决策,但缺乏全局上下文时,好的局部决策可能产出糟糕的全局结果。

已发表的、针对架构相似工具的实证工作给出与这些预测一致的数据:

Claude Code 的上下文管理流水线正是为缓解这些效应而设计:递进压缩保留最近与最相关的上下文,缓存感知的 compaction 避免在压缩期作废 prompt 缓存,读时投影保持完整历史可供重建同时向模型呈现压缩视图,subagent 摘要隔离防止探索噪声在父上下文里累积。这些机制是否足以克服有界上下文的结构性限制,是一个可直接测量的实证问题,源码级分析无法解决。

反复出现的三个设计选择

把六个子系统分析合起来读,会浮现三条横切的设计承诺,它们在本来彼此独立的组件里反复出现。

递进分层,而非单一机制

安全、上下文管理与扩展性都用独立机制的递进堆栈,而不是单一集成方案。权限架构叠七个独立阶段;上下文管理叠五个 compaction 阶段,加懒加载 CLAUDE.md、延迟工具 schema、只回摘要的 subagent;扩展性按上下文开销叠四种机制。每一处都以简单性与可调试性换取纵深防御,接受层间交互会产生难以从单一配置预测的涌现行为。OpenClaw 与 Hermes 的对照显示,递进分层在部署场景差异极大的系统里同样出现,提示这个分层模式反映的是共同的设计问题,而不是 Claude Code 特有的实现选择。

以追加为主,偏可审查性而非查询能力

会话记录是追加式 JSONL,配读时链修补。权限不跨会话边界恢复。上下文 compaction 用完整历史上的读时投影,而非破坏性编辑。这一承诺反复出现,因为它保留了 resume、fork 与审计会话的能力,同时不修改此前写下的状态。代价是:更丰富的结构化查询(「给我看跨会话里所有修改过文件 X 的工具调用」)需要事后重建,不能直接查。

确定性 harness 内的模型判断

跨所有子系统,架构在丰富的确定性 harness 内信任模型的判断,而不是约束它的选择。估计 1.6% 的决策逻辑比例把这一点量化了:harness 创造条件(工具路由、权限强制、上下文装配、恢复逻辑),让模型能作好决策。分层权限在 agent 边界之间保全安全不变式,assembleToolPool() 把内置与 MCP 工具并成统一接口,但调用哪些工具、以什么顺序调用,模型保有完全的自由度。取舍就是前面说的那句:好的局部决策,在有界上下文阻碍全局感知时可能产出糟糕的全局结果。

六个未解的方向

论文把这六个问题列为架构本身尚未回答的开放问题,每个都以「是否/如何/哪一个」的形式提出,只在被引文献明确点出机制时才给出具体选项。

一、静默失败与可观测性-评测落差

业界调查提示,已部署 agent 的主要失效模式不是崩溃,而是静默的错误。Bessemer 的 2026 基础设施报告估计「78% 的 AI 失败是不可见的」;LangChain 对 1340 名受访者的 agent 工程调查发现质量而非成本是投产的首要障碍,且可观测性(近 89% 采用)与离线评测(52.4%)之间存在很大落差。

最近的实证工作在几个分辨率上把这个落差刻画得更清楚:有工作编目了十四种失效模式,涵盖系统设计问题、agent 间失准与任务验证;有工作专门为轨迹中的异常检测建立基准;有工作用 passk 指标(k 次独立试验全部成功的概率)暴露一致性缺口;也有工作指出当前 agent 基准缺少留出集与成本控制,限制了可观测性实际能诊断什么。

对照权限流水线与工具编排层,两个架构问题仍然开放:第一,生成器-评估者分离、sprint 合约、事后检查这类脚手架,应当放在 harness 内部(例如作为现有 27 个 hook 事件之外的额外事件),还是作为 harness 外部的独立评测层?第二,现有 hook 流水线能否在当前的上下文开销预算内承载这类脚手架?

二、持久化:记忆与纵向的同事关系

agent 状态与人机工作关系是否应当跨会话持久、以何种形式持久,论文只在两个明确的层上作了记录:四级 CLAUDE.md 层级与 auto memory;以追加为主的 JSONL 记录(其会话域权限在 resume 时不恢复)。这两层之间该放什么,是一个开放的设计问题:既非静态指令、也非单次会话记录的持久状态。

相关文献给出若干候选:把 LLM 重构成带分页记忆的操作系统;面向生产的、能在重启后存活的记忆存储;研究性的 agentic-memory 设计;经语言强化跨尝试累积自反思轨迹。MemGym 把问题更具体化——它评估工具使用对话、深度研究、编码与计算机使用中的动态记忆形成,而不只是聊天里的个人事实保留。这把问题从「笔记该存在哪里」推进到「被记住的哪一种状态真正帮助 agent 继续正确工作」

同一个持久化问题在人这一侧同样出现:776 名宝洁专业人士的田野实验、Copilot 铺开的纵向与组织研究、AI 团队协作轨迹,都报告了随协作累积而出现的人机工作动态变化。单一基底能否同时承载用户的个人指令层级与共享的组织上下文,而又保持 CLAUDE.md 的文件式透明?会话域权限如何与这样一个基底交互,而不重新引入 resume 恢复所刻意规避的问题?OpenClaw 的记忆子系统(做梦、每日笔记、混合检索)与 Hermes 的 WAL 模式 SQLite 全文搜索会话存储,是两个具体的参照点。

三、harness 边界的演化:在哪里、何时、对什么、与谁

有论者主张,更好的模型移动而非消除有用 harness 组合的空间。这一变化在四个方向上哪一个最显著,源码级分析无法解决:

单一 harness 架构能否跨越全部四种扩展,还是会碎裂成专门化的技术栈,是开放的设计问题。

四、任务跨度扩展:从一次会话到一项科研计划

可靠执行被定义为横跨「单轮正确性与长程可依赖性」。当自主工作延伸到单次会话之外,架构如何继续支撑长程可依赖性是开放的。它的基本单位是轮、会话、subagent

相关文献瞄准的是天与周的尺度:端到端自主研究流水线产出草稿论文;独立评估刻画「自主研究」当前交付了什么、又在哪里不足;跨天而非跨轮运行的多 agent 假设生成系统;在此前需要人类专家数周的时间尺度上追求算法发现的工作;以及测量前沿 agent 在固定可靠性下能成功的任务时长的研究。

Quantitative Goal Persistence 基准点出一种更窄的失效模式:agent 可以做出合理的工具调用,却在验证者确认足够有效工作之前就停下。对长程编码 agent,进展需要一个外部的「完成」概念,不能只有一段流畅的收尾发言。

一个后续开发使这个问题变得具体在被分析的 v2.1.88 快照之后,Claude Code v2.1.154 与 Claude Opus 4.8 同期发布的 dynamic workflows:模型写一段 JavaScript 编排脚本,由后台运行时执行,扇出到多个 subagent(每次运行上限一千个),而中间结果存活在脚本变量里,不经过模型的上下文窗口。这正是把编排逻辑本身移出对话的协调原语,把「上下文是稀缺资源」与「subagent 边界隔离」两条原则从单个 subagent 推广到编排层。编排即代码是否会成为主导的长程原语,以及它的 token 成本与减少的人类中途监督如何与可靠性收益权衡,逐会话作用域的分析无法定论。A 级证据

五、规模化的治理与监督

新兴的 AI 监管为实现 Anthropic/operator/user 权限层级的架构添加了外部约束。欧盟委员会的 GPAI 行为准则与实施指南,说明通用 AI 治理正在朝对文档、风险管理、透明度与监督的更明确期待推进。MIT AI Agent Index 发现只有 13.3% 的已索引 agentic 系统发布 agent 专属安全卡。

对照权限流水线,当前架构有两项属性在这一约束下是开放的:第一,论文记录的拒绝优先求值通过会话记录内部可审计,但尚不具备 GPAI 行为准则一类框架所设想的外部可审计形式。第二,「价值高于规则」原则(论文将其与确定性护栏配对)是否容许合规审查可能要求的那种显式的规则表述,是进一步的开放问题。两项属性都位于 harness 之内而非模型之内,未来架构可能需要在这里暴露新的接口

监管也能作用于可用性2026 年 6 月一道美国出口管制命令禁止外国公民访问 Anthropic 的两个模型,发布数日内 Anthropic 对全球所有用户禁用了这两个模型。这类政策可以直接决定一个模型是否还处于部署状态。A 级证据

六、长期开发者能力

长期开发者能力被当作横切关切而非并列的设计价值——因为它在架构中、也在 Anthropic 自陈的设计价值中,都没有作为设计驱动被显著体现。前面的张力与实证预测用外部证据扩展了这个问题:感知与实测的生产力落差、理解力下降、复杂度累积、技术债的持续、神经连接性的持续、入门岗招聘下滑。

实践者的说法一致:Karpathy 在反思自己转向 agent 驱动编码时警告,「你可以外包你的思考,但你不能外包你的理解。」论文的结论随后转向:「未来的系统可以把这一可持续性落差当作一等设计问题,而不是一个下游评测指标。」这个转向是否可能、以及一等对待需要什么架构机制,是这一节记录的最后一个开放问题。

两个子问题把测量落差设计落差分开。第一,驱动这个问题的实证主张能否在会话粒度上测量?现有引文运作在会话到数月的尺度上,但论文所记录的 harness 没有暴露任何逐会话的理解力或约定漂移信号。第二,一旦这类测量存在,架构能否作出回应(把生成器-评估者分离类推到人的这一侧、保全理解力的界面,或尚未命名的机制)?论文对哪一类机制合适不持立场,也不认定这里记录的 harness 就是该行动的正确位点——它也可能是 IDE、组织,或人的成长循环。

结论

生产级编码 agent 可以被理解为对一组反复出现的设计问题的回答。Claude Code 在那个空间里占据一个清晰的设计点:给模型宽阔的局部自主,同时用一层稠密的确定性 harness 把它包起来。

读作五个价值与十三条原则,这些选择是连贯的而非临时的:系统一贯地把人类决策权、安全、可靠执行、能力放大与情境适应性放在优先位置。

与 OpenClaw、Hermes Agent 的对照显示,同样的设计问题在不同 agent 系统里反复出现,但产生不同答案。三者还能通过 ACP 在多个位置组合:OpenClaw 可以把 Claude Code 当作外部 harness 托管,Hermes Agent 同时坐在主/客分界两侧。

对 agent 建造者而言,最有分量的开放问题不是如何增加更多自主性,而是如何随时间保全人的能力。长期能力这一问、第二部分的分析与六个未解方向合起来表明:这套架构提供的、用于显式保全长期人类理解、代码库一致性或开发者管道的机制是有限的。未来的系统可以把这一可持续性落差当作一等设计问题,而不是一个下游评测指标。

第三部分

速查

术语、源码结构、证据基础与文献。这一部分服务「回头查」,不必顺读。

术语对照

技术术语保留英文原词。下表按主题分组,正文中带虚线下划线的词都能在这里找到。

循环与执行

术语含义
agent loop调用模型、分派工具、收集结果并重复的迭代循环,是整个系统的中心
agentic turn从用户一次输入到助手给出最终回复之间的完整过程,内含多轮迭代
QueryEngine面向 SDK 与 headless 模式的会话包装层,把轮次执行委托给主循环
harness包裹模型的那层工程外壳,负责循环控制、工具调度与上下文组装
headless CLI非交互模式,以 claude -p 方式一次性执行
Agent SDK把 agent 能力嵌入其他程序的编程接口
ReAct模型生成推理与工具调用、harness 执行动作、结果喂回下一轮的循环模式
Model Context Protocol即 MCP,把外部工具与数据源接入 agent 的开放协议
dynamic workflowsv2.1.154 引入的机制:模型写一段编排脚本交由后台运行时执行,中间结果不经过上下文窗口
loop engineering不再逐轮 prompt agent,而是构建一个自己找活、分派、检查结果并决定下一步的循环

上下文与记忆

术语含义
context window模型单次调用能看到的全部内容,系统真正的稀缺资源
compaction上下文吃紧时腾出空间的五层流水线;只有最后一层 auto-compact 产出模型生成的摘要
compact boundary压缩发生位置的标记,用于区分摘要之前与之后的消息
microcompact细粒度的缓存感知压缩,只按 tool_use_id 操作,从不检查内容
snip轻量修剪,移除较早的历史片段,处理的是时间深度
budget reduction对工具结果施加逐条尺寸上限,超限的换成内容引用
auto memory系统自动积累并在后续会话中加载的记忆
path-scoped rules只在特定目录路径下生效的规则
output style调整助手输出风格的可切换配置

权限与安全

术语含义
permission mode决定工具调用默认如何处理的模式,共七种
deny-first拒绝规则优先于允许规则,识别不了的一律上交人类
auto-mode classifier自动模式下判定工具调用是否安全的机器学习分类器
sandbox受限的执行环境,即使命令获批也在其中运行
hook挂在生命周期事件上的拦截点,可改变权限判定与执行行为
principal hierarchyAnthropic、运营方、用户之间的权限层级

工具与扩展

术语含义
MCPModel Context Protocol,接入外部服务与工具的协议
plugin把多种组件打包分发的扩展形式
skill按需加载的领域专用指令,平时只有 frontmatter 描述进入上下文
tool pool本轮实际暴露给模型的工具集合
ToolSearch按需检索并加载工具定义的机制
deferred tool先只给名字、schema 用到时再取的工具

委派与持久化

术语含义
subagent由主 agent 派生、在隔离上下文中承担子任务的 agent
sidechainsubagent 独立记录的对话轨迹,与主轨迹分开存放
worktree供 subagent 独立作业的工作副本,避免并行修改互相冲突
transcript落盘的会话记录,以追加为主,显式的清理重写是例外
checkpoint--rewind-files 用的文件历史检查点,是文件级快照,不是通用的状态存档
resume恢复一个已有会话,但不恢复会话级权限
fork从某个位置分叉出新的会话分支
rewind--rewind-files 按文件历史快照回退文件系统改动

包结构

TypeScript 包到运行时职责的映射。左侧是源码目录,右侧是推断出的运行时角色——这部分属于重构分析,不是官方文档。C 级证据

本图属 Tier C 推测性分析,由源码反推而来,并非 Anthropic 官方文档。

入口与循环
main.tsx入口、模式分派、初始化
query.tsagent loop 核心与五个 context shaper
QueryEngine.tsSDK 与 headless 的会话包装
工具与命令
tools/约 42 个子目录,每个含 schema、描述、权限要求与执行逻辑
commands/约 86 个 slash command 子目录
服务层
services/tools/StreamingToolExecutor、toolOrchestration、toolExecution
services/compact/compaction 引擎
services/mcp/MCP 客户端与配置
权限基础设施
utils/permissions/规则求值与 classifier
hooks/useCanUseTool.tsx权限处理器
types/permissions.ts模式定义
types/hooks.ts事件 schema

一处结构上的怪癖:query.ts 这个文件与 query/ 这个目录并存,前者是主循环,后者放循环配置与上下文装配的辅助模块。

图 9 包结构到运行时职责的映射。左侧是 TypeScript 源码目录,右侧是推断出的运行时角色。
表 7 关键文件的大致体量与运行时职责。
文件体量职责
main.tsx804KB入口、模式分派、初始化
query.ts68KBagent loop 核心,五个 context shaper
QueryEngine.ts47KBSDK 与 headless 的会话包装
Tool.ts30KB工具接口、类型与工具函数
history.ts14KB全局 prompt 历史
mcp/client.ts较大MCP 客户端,8 种以上传输变体
compact.ts较大compaction 引擎
AgentTool.tsx较大Agent 工具与 subagent 分派
runAgent.ts较大agent 生命周期与协调

tools/ 目录含约 42 个子目录实现具体工具,各带对应的 schema、描述、权限要求与执行逻辑。commands/ 目录含约 86 个斜杠命令子目录。

关键服务目录包括 services/tools/(StreamingToolExecutor、toolOrchestration、toolExecution)、services/compact/(compaction 引擎)、services/mcp/(MCP 客户端与配置)。权限基础设施横跨 utils/permissions/(规则求值、分类器)、hooks/useCanUseTool.tsx(权限处理器)、types/permissions.ts(模式定义)与 types/hooks.ts(事件模式)。

一处结构上的怪癖query.ts(文件)与 query/(目录)并存。文件里是主查询循环,目录里是循环配置与上下文装配的辅助模块。

工具的条件可用性

getAllBaseTools() 依模式、构建、环境与功能开关构造不同的工具集。模型在极简模式下可能只看到 3 个工具(Bash、Read、Edit),在功能全开的内部构建里则达 54 个(19 个无条件加 35 个条件)。

表 8 工具的条件可用性分类。
类别例子
始终包含AgentTool、BashTool、FileReadTool、FileEditTool、FileWriteTool、SkillTool、WebFetchTool、WebSearchTool
看环境GlobTool 与 GrepTool,Bun 二进制已内置搜索工具时除外;ConfigTool 仅 Anthropic 内部;PowerShellTool 仅 Windows
看 feature flagTaskCreate 与 Get、Update、List 走 todoV2;EnterWorktreeTool 走 worktree;TeamTools 走 swarms;ToolSearchTool
空值检查后决定SuggestBackgroundPRTool、WebBrowserTool、RemoteTriggerTool、MonitorTool、SleepTool

跨文件依赖

导入图包含以下依赖结构:QueryEngine.ts 把单轮执行委派给 query.tsquery.tsservices/tools/(StreamingToolExecutor、runTools)与 services/compact/(autoCompact、buildPostCompactMessages)导入;QueryEngine.tsmemdir/ 导入记忆与 prompt 装配。代码显式避免循环导入:types/permissions.ts 被抽出以打破导入环,context.ts 里的 setCachedClaudeMdContent() 避开一条经权限/文件系统路径的环。

证据基础与方法论

全文的论断分三个证据层级。正文中带 ABC 标记的地方,是原文明确标注了层级的论断。

三个证据层级

源码语料约 1884 个文件、51.2 万行 TypeScript。OpenClaw 与 Hermes Agent 被用作比较参照点,而非事实标准。

设计空间的分析程序

设计问题的识别方式是:逐个考察子系统,寻找「其他生产 agent 存在替代设计」的反复出现的选择点。Claude Code 对每个问题的答案都被追溯到具体源码文件与函数实现(B 级证据)。五价值框架从官方文档与创造者陈述(A 级证据)中识别,再经十三条设计原则追到架构决策。

长期能力保全被单独当作横切问题处理,而非设计价值——因为它在架构中、也在 Anthropic 自陈的价值中,都没有作为设计驱动被显著体现。token 经济被当作同时约束五个价值的横切约束,用以揭示各子系统选择在共享资源压力下如何互相作用。

局限

另有两条分析层面的约束:getSystemContext()getUserContext() 都用 lodash memoize,意味着 git 状态与 CLAUDE.md 内容是被缓存而非每轮重算的,对话中途的动态变化可能不会立即反映(compaction 能清缓存,懒加载的路径域规则提供部分反制)。功能开关造成构建期变异,受门控的模块用动态 require() 而非静态 import,因为 feature() 由于 bun 打包的树摇约束只在 if/三元条件里生效。

社区重实现

Claude Code 的 TypeScript 源码变为公开可读后,若干社区项目发布了独立重实现。每个都是可运行的 CLI agent,而非被动的源码转录或注释。

项目运行时方法
ClawCodexPython移植,另加多提供方模型层
Claw CodeRust独立的 Rust 重写
claude-code-workingTypeScript/Bun逆向工程,可运行
Claude Code Source: Buildable Research ForkTypeScript从快照重建构建系统
Open Claude CodeJavaScript/npm每夜自动反编译流水线
截至 2026 年,从公开生态中识别出的五个代表性重实现。覆盖四种运行时目标与三种重建方法。

论文所属仓库另维护一组配套笔记,追踪新出现的 agent 系统进展;它们不作为 Claude Code 实现的证据。

关于这个版本

这不是逐句翻译,而是按「如何工作 → 为什么这样设计 → 速查」重新组织的中文版。下面说明改动了什么,以便与原文对照。

原文见 arxiv.org/abs/2604.14228,作者仓库见 github.com/VILA-Lab/Dive-into-Claude-Code

参考文献

原文完整文献表,默认收起。浏览器内搜索(Ctrl+F/⌘F)命中折叠内容时会自动展开。

展开完整文献表
  1. Bartz v. Anthropic PBC, no. 3:24-cv-05417-WHA. U.S. District Court for the Northern District of California, Order on Motion for Summary Judgment (June 23, 2025), Alsup, J. Court docket: https://www.courtlistener.com/docket/ 69058235/bartz-v-anthropic-pbc/, 2025.
  2. 777genius. claude-code-working. https://github.com/777genius/claude-code-working, 2026.
  3. Adversa.ai. Critical Claude Code vulnerability: Deny rules silently bypassed because security checks cost too many tokens. https://adversa.ai/blog/claude-code-security-bypass-deny-rules-disabled/, 2026.
  4. agentforce314. Clawcodex. https://github.com/agentforce314/clawcodex, 2026.
  5. Michael Ahn, Anthony Brohan, Noah Brown, Yevgen Chebotar, Omar Cortes, Byron David, Chelsea Finn, Chuyuan Fu, Keerthana Gopalakrishnan, Karol Hausman, et al. Do as i can, not as i say: Grounding language in robotic affordances. arXiv preprint arXiv:2204.01691, 2022.
  6. Aizierjiang Aiersilan. The vibe-check protocol: Quantifying cognitive offloading in ai programming. arXiv preprint arXiv:2601.02410, 2026.
  7. Anthropic. Our framework for developing safe and trustworthy agents. https://www.anthropic.com/news/ our-framework-for-developing-safe-and-trustworthy-agents, 2025a.
  8. Anthropic. Orchestrate teams of Claude Code sessions. https://code.claude.com/docs/en/agent-teams, 2025b.
  9. Anthropic. Claude code overview. https://code.claude.com/docs, 2026a. Official Claude Code documentation. Accessed April 12, 2026.
  10. Anthropic. Claude’s constitution. https://anthropic.com/constitution, 2026b.
  11. Anthropic. Claude fable 5 and claude mythos 5. Anthropic News, https://www.anthropic.com/news/ claude-fable-5-mythos-5, 2026c.
  12. Anthropic. Statement on the US government directive to suspend access to fable 5 and mythos 5. Anthropic News, https://www.anthropic.com/news/fable-mythos-access, 2026d.
  13. Anthropic. Anthropic on github. https://github.com/anthropics, 2026e. Verified GitHub organization page. Accessed April 12, 2026.
  14. Anthropic. How Claude Code works. https://code.claude.com/docs/en/how-claude-code-works, 2026f.
  15. Anthropic. How Claude remembers your project. https://code.claude.com/docs/en/memory, 2026g.
  16. Anthropic. Introducing claude opus 4.8. Anthropic News, https://www.anthropic.com/news/claude-opus-4-8, 2026h.
  17. Anthropic. Orchestrate subagents at scale with dynamic workflows. Claude Code Documentation, https://code.claude. com/docs/en/workflows, 2026i. Research preview; requires Claude Code v2.1.154 or later.
  18. Shraddha Barke, Michael B James, and Nadia Polikarpova. Grounded copilot: How programmers interact with code-generating models. Proceedings of the ACM on Programming Languages, 7(OOPSLA1):85–111, 2023.
  19. Elad Beber. InversePrompt: Turning claude against itself, one prompt at a time. https://cymulate.com/blog/ cve-2025-547954-54795-claude-inverseprompt/, 2025. CVE-2025-54794, CVE-2025-54795; updated April 6, 2026.
  20. Joel Becker, Nate Rush, Elizabeth Barnes, and David Rein. Measuring the impact of early-2025 ai on experienced open-source developer productivity. arXiv preprint arXiv:2507.09089, 2025.
  21. Joeran Beel, Min-Yen Kan, and Moritz Baumgart. Evaluating sakana’s ai scientist: Bold claims, mixed results, and a promising future? In ACM SIGIR Forum, volume 59, pages 1–20. ACM New York, NY, USA, 2025.
  22. Yoshua Bengio, Stephen Clare, Carina Prunkl, Maksym Andriushchenko, Ben Bucknall, Malcolm Murray, Rishi Bommasani, Stephen Casper, Tom Davidson, Raymond Douglas, et al. International ai safety report 2026. arXiv preprint arXiv:2602.21012, 2026.
  23. Piercosma Bisconti, Matteo Prandi, Federico Pierucci, Federico Sartore, Enrico Panai, Laura Caroli, Yue Zhu, Adam Leon Smith, Luca Nannini, Marcello Galisai, et al. Boiling the frog: A multi-turn benchmark for agentic safety. arXiv preprint arXiv:2605.22643, 2026.
  24. Johan Bjorck, Fernando Castañeda, Nikita Cherniadev, Xingye Da, Runyu Ding, Linxi Fan, Yu Fang, Dieter Fox, Fengyuan Hu, Spencer Huang, et al. Gr00t n1: An open foundation model for generalist humanoid robots. arXiv preprint arXiv:2503.14734, 2025.
  25. Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn, Niccolo Fusai, Lachy Groom, Karol Hausman, Brian Ichter, et al. π0 : A vision-language-action flow model for general robot control. arXiv preprint arXiv:2410.24164, 2024.
  26. Anthony Brohan, Noah Brown, Justice Carbajal, Yevgen Chebotar, Xi Chen, Krzysztof Choromanski, Tianli Ding, Danny Driess, Avinava Dubey, Chelsea Finn, et al. Rt-2: Vision-language-action models transfer web knowledge to robotic control. arXiv preprint arXiv:2307.15818, 2023.
  27. Yuandao Cai, Yuzhang Zhu, Liyou Gao, Wensheng Tang, and Shengchao Qin. Push your agent: Measuring and enforcing quantitative goal persistence in long-horizon LLM agents. 2026. https://arxiv.org/abs/2605.23574.
  28. Mert Cemri, Melissa Z Pan, Shuyi Yang, Lakshya A Agrawal, Bhavya Chopra, Rishabh Tiwari, Kurt Keutzer, Aditya
  29. Parameswaran, Dan Klein, Kannan Ramchandran, et al. Why do multi-agent llm systems fail? arXiv preprint
  30. arXiv:2503.13657, 2025.
  31. Harrison Chase. Deep agents. LangChain Blog, https://blog.langchain.com/deep-agents/, 2025.
  32. Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde De Oliveira Pinto, Jared Kaplan, Harri
  33. Edwards, Yuri Burda, Nicholas Joseph, Greg Brockman, et al. Evaluating large language models trained on code.
  34. arXiv preprint arXiv:2107.03374, 2021.
  35. Valerie Chen, Alan Zhu, Sebastian Zhao, Hussein Mozannar, David Sontag, and Ameet Talwalkar. Need help? designing proactive ai assistants for programming. In Proceedings of the 2025 CHI Conference on Human Factors in Computing Systems, pages 1–18, 2025.
  36. Weize Chen, Yusheng Su, Jingwei Zuo, Cheng Yang, Chenfei Yuan, Chi-Min Chan, Heyang Yu, Yaxi Lu, Yi-Hsin
  37. Hung, Chen Qian, et al. Agentverse: Facilitating multi-agent collaboration and exploring emergent behaviors. In
  38. The Twelfth International Conference on Learning Representations, 2023.
  39. Boris Cherny and Cat Wu. Claude code: Anthropic’s agent in your terminal. Latent Space podcast, https://www. latent.space/p/claude-code, 2025.
  40. Prateek Chhikara, Dev Khant, Saket Aryan, Taranjeet Singh, and Deshraj Yadav. Mem0: Building production-ready ai agents with scalable long-term memory. arXiv preprint arXiv:2504.19413, 2025.
  41. Musa Cim, Burak Topcu, Chita Das, and Mahmut Taylan Kandemir. Parallel context compaction for long-horizon llm
  42. agent serving. arXiv preprint arXiv:2605.23296, 2026.
  43. Luca Compagna. Claude fable 5, take two: Same model, different harness, and a very different result. Endor Labs, https: //www.endorlabs.com/learn/claude-fable-5-take-two-same-model-different-harness-and-a-very-different-result, 2026.
  44. Cursor. Cursor: The best way to code with AI. https://cursor.com/, 2026. Official product website. Accessed April 12, 2026.
  45. Cyber Security News. Claude code’s network sandbox vulnerability exposes user credentials and source code. https://cybersecuritynews.com/claude-codes-network-sandbox-vulnerability/, 2026. Independent security re- search; affected range v2.0.24–v2.1.89; no CVE assigned.
  46. Fabrizio Dell’Acqua, Charles Ayoubi, Hila Lifshitz, Raffaella Sadun, Ethan Mollick, Lilach Mollick, Yi Han, Jeff Goldman, Hari Nair, Stewart Taub, et al. The cybernetic teammate: A field experiment on generative ai reshaping teamwork and expertise. Technical report, National Bureau of Economic Research, 2025.
  47. Yang Deng, Lizi Liao, Wenqiang Lei, Grace Hui Yang, Wai Lam, and Tat-Seng Chua. Proactive conversational ai: A comprehensive survey of advancements and opportunities. ACM Transactions on Information Systems, 43(3):1–45, 2025.
  48. Shuangrui Ding, Xuanlang Dai, Long Xing, Shengyuan Ding, Ziyu Liu, Yang JingYi, Penghui Yang, Zhixiong Zhang, Xilin Wei, Xinyu Fang, et al. Wildclawbench: A benchmark for real-world, long-horizon agent evaluation. arXiv preprint arXiv:2605.10912, 2026.
  49. Aviv Donenfeld and Oded Vanunu. Caught in the hook: RCE and API token ex- filtration through Claude Code project files. https://research.checkpoint.com/2026/ rce-and-api-token-exfiltration-through-claude-code-project-files-cve-2025-59536/, 2026. CVE-2025-59536 (CVSS 8.7), CVE-2026-21852 (CVSS 5.3).
  50. Yilun Du, Shuang Li, Antonio Torralba, Joshua B Tenenbaum, and Igor Mordatch. Improving factuality and reasoning in language models through multiagent debate. In Forty-first international conference on machine learning, 2024.
  51. David Dworken and Oliver Weller-Davies. Beyond permission prompts: Making Claude Code more secure and autonomous. Anthropic Engineering, https://www.anthropic.com/engineering/claude-code-sandboxing, 2025.
  52. European Commission. General-purpose AI code of practice. https://digital-strategy.ec.europa.eu/en/policies/ contents-code-gpai, 2025a. Official EU Commission publication, 10 July 2025.
  53. European Commission. Guidelines on the scope of obligations for providers of general- purpose AI models under the AI act. https://digital-strategy.ec.europa.eu/en/library/ guidelines-scope-obligations-providers-general-purpose-ai-models-under-ai-act, 2025b. Official EU Commis- sion guideline document.
  54. Figure AI. Helix: A vision-language-action model for generalist humanoid control. https://www.figure.ai/news/helix, 2025. Figure AI technical blog.
  55. David Garlan, Mary Shaw, et al. An introduction to software architecture. Advances in software engineering and knowledge engineering, 1(3.4), 1993.
  56. Paul Gauthier. Aider: AI pair programming in your terminal, 2024. https://github.com/Aider-AI/aider. Open-source software, https://aider.chat.
  57. Google. Build with Google antigravity, our new agentic development platform. Google Developers Blog, https:
  58. //developers.googleblog.com/build-with-google-antigravity-our-new-agentic-development-platform/, 2025. Ac- cessed June 2026.
  59. Juraj Gottweis, Wei-Hung Weng, Alexander Daryin, Tao Tu, Anil Palepu, Petar Sirkovic, Artiom Myaskovsky, Felix Weissenberger, Keran Rong, Ryutaro Tanno, et al. Towards an ai co-scientist. arXiv preprint arXiv:2502.18864, 2025.
  60. Taicheng Guo, Xiuying Chen, Yaqi Wang, Ruidi Chang, Shichao Pei, Nitesh V Chawla, Olaf Wiest, and Xian- gliang Zhang. Large language model based multi-agents: A survey of progress and challenges. arXiv preprint arXiv:2402.01680, 2024.
  61. Hao He, Courtney Miller, Shyam Agarwal, Christian Kästner, and Bogdan Vasilescu. Speed at the cost of quality: How cursor ai increases short-term velocity and long-term complexity in open-source projects. arXiv preprint
  62. arXiv:2511.04427, 2025.
  63. Zeyu He, Hannah Kim, Dan Zhang, and Estevam Hruschka. How to steer your multi-agent system: Human-llm collaborative planning. In Proceedings of the ACM Conference on AI and Agentic Systems, pages 330–347, 2026.
  64. Sirui Hong, Mingchen Zhuge, Jonathan Chen, Xiawu Zheng, Yuheng Cheng, Jinlin Wang, Ceyao Zhang, Zili Wang, Steven Ka Shing Yau, Zijuan Lin, et al. Metagpt: Meta programming for a multi-agent collaborative framework. In The twelfth international conference on learning representations, 2023.
  65. Xinyi Hou, Yanjie Zhao, Shenao Wang, and Haoyu Wang. Model context protocol (mcp): Landscape, security threats, and future research directions. ACM Transactions on Software Engineering and Methodology, 2025.
  66. Shengran Hu, Cong Lu, and Jeff Clune. Automated design of agentic systems. arXiv preprint arXiv:2408.08435, 2024.
  67. Yuyang Hu, Shichun Liu, Yanwei Yue, Guibin Zhang, Boyang Liu, Fangyi Zhu, Jiahang Lin, Honglin Guo, Shihan Dou, Zhiheng Xi, et al. Memory in the age of ai agents. arXiv preprint arXiv:2512.13564, 2025.
  68. Saffron Huang, Bryan Seethor, Esin Durmus, Kunal Handa, Miles McCain, Michael Stern, and Deep Gan- guli. How AI is transforming work at Anthropic. Anthropic Research Blog, https://anthropic.com/research/ how-ai-is-transforming-work-at-anthropic, 2025.
  69. Wei-Chieh Huang, Weizhi Zhang, Yueqing Liang, Yuanchen Bei, Yankai Chen, Tao Feng, Xinyu Pan, Zhen Tan
  70. Yu Wang, Tianxin Wei, et al. Rethinking memory mechanisms of foundation agents in the second half. arXiv
  71. preprint arXiv:2602.06052, 2026.
  72. John Hughes. Claude Code auto mode: A safer way to skip permissions. Anthropic Engineering, https://www. anthropic.com/engineering/claude-code-auto-mode, 2026.
  73. Chip Huyen. Agents. https://huyenchip.com/2025/01/07/agents.html, 2025.
  74. Carlos E Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei, Ofir Press, and Karthik Narasimhan. Swe-bench: Can language models resolve real-world github issues? arXiv preprint arXiv:2310.06770, 2023.
  75. Sayash Kapoor, Benedikt Stroebl, Zachary S Siegel, Nitya Nadgir, and Arvind Narayanan. Ai agents that matter. arXiv preprint arXiv:2407.01502, 2024.
  76. Andrej Karpathy. [1hr talk] intro to large language models. YouTube talk, https://www.youtube.com/watch?v= zjkBMFhNj_g, 2023. November 2023; popularizes the LLM-as-OS framing.
  77. Andrej Karpathy. Sequoia ascent 2026 summary. https://karpathy.bearblog.dev/sequoia-ascent-2026/, 2026.
  78. Omar Khattab, Arnav Singhvi, Paridhi Maheshwari, Zhiyuan Zhang, Keshav Santhanam, Sri Vardhamanan, Saiful
  79. Haq, Ashutosh Sharma, Thomas T Joshi, Hanna Moazam, et al. Dspy: Compiling declarative language model calls
  80. into self-improving pipelines. arXiv preprint arXiv:2310.03714, 2023.
  81. Nataliya Kosmyna, Eugene Hauptmann, Ye Tong Yuan, Jessica Situ, Xian-Hao Liao, Ashly Vivian Beresnitzky, Iris Braunstein, and Pattie Maes. Your brain on chatgpt: Accumulation of cognitive debt when using an ai assistant for essay writing task. arXiv preprint arXiv:2506.08872, 4, 2025.
  82. Thomas Kwa, Ben West, Joel Becker, Amy Deng, Katharyn Garcia, Max Hasin, Sami Jawhar, Megan Kinniment, Nate Rush, Sydney Von Arx, et al. Measuring ai ability to complete long software tasks. In The Thirty-ninth Annual
  83. Conference on Neural Information Processing Systems.
  84. LangChain. Introducing LangSmith context hub. LangChain Blog, https://www.langchain.com/blog/ introducing-context-hub, 2026a.
  85. LangChain. Managed deep agents: the fastest way to ship a production deep agent. LangChain Blog, https: //www.langchain.com/blog/introducing-managed-deep-agents, 2026b.
  86. LangChain. State of agent engineering. https://www.langchain.com/state-of-agent-engineering, 2026c. Survey of 1,340 respondents conducted Nov-Dec 2025.
  87. LangChain, Inc. LangGraph: Build resilient language agents as graphs, 2024. https://github.com/langchain-ai/ langgraph. GitHub repository.
  88. Geonsun Lee, Min Xia, Nels Numan, Xun Qian, David Li, Yanhe Chen, Achin Kulshrestha, Ishan Chatterjee, Yinda Zhang, Dinesh Manocha, et al. Sensible agent: A framework for unobtrusive interaction with proactive ar agents. In Proceedings of the 38th Annual ACM Symposium on User Interface Software and Technology, pages 1–22, 2025.
  89. Guohao Li, Hasan Hammoud, Hani Itani, Dmitrii Khizbullin, and Bernard Ghanem. Camel: Communicative agents for" mind" exploration of large language model society. Advances in neural information processing systems, 36: 51991–52008, 2023.
  90. Tian Liang, Zhiwei He, Wenxiang Jiao, Xing Wang, Yan Wang, Rui Wang, Yujiu Yang, Shuming Shi, and Zhaopeng Tu. Encouraging divergent thinking in large language models through multi-agent debate. In Proceedings of the 2024 conference on empirical methods in natural language processing, pages 17889–17904, 2024.
  91. Xingyu Bruce Liu, Shitao Fang, Weiyan Shi, Chien-Sheng Wu, Takeo Igarashi, and Xiang’Anthony’ Chen. Proactive conversational agents with inner thoughts. In Proceedings of the 2025 CHI Conference on Human Factors in Computing Systems, pages 1–19, 2025.
  92. Yue Liu, Ratnadira Widyasari, Yanjie Zhao, Ivana Clairine Irsan, and David Lo. Debt behind the ai boom: A large-scale empirical study of ai-generated code in the wild. arXiv preprint arXiv:2603.28592, 2026.
  93. Chris Lu, Cong Lu, Robert Tjarko Lange, Jakob Foerster, Jeff Clune, and David Ha. The ai scientist: Towards fully automated open-ended scientific discovery. arXiv preprint arXiv:2408.06292, 2024.
  94. Josh Ma. What we’ve learned building cloud agents. Cursor Blog, https://cursor.com/blog/cloud-agent-lessons, 2026.
  95. Aman Madaan, Niket Tandon, Prakhar Gupta, Skyler Hallinan, Luyu Gao, Sarah Wiegreffe, Uri Alon, Nouha Dziri
  96. Shrimai Prabhumoye, Yiming Yang, et al. Self-refine: Iterative refinement with self-feedback. Advances in neural
  97. information processing systems, 36:46534–46594, 2023.
  98. Lance Martin. Agent design patterns. https://rlancemartin.github.io/2026/01/09/agent_design/, 2026.
  99. Lance Martin, Gabe Cemaj, and Michael Cohen. Scaling managed agents: Decoupling the brain from the hands. Anthropic Engineering Blog, https://www.anthropic.com/engineering/managed-agents, 2026.
  100. Miles McCain, Thomas Millar, Saffron Huang, Jake Eaton, Kunal Handa, Michael Stern, Alex Tamkin, Matt Kearney, Esin Durmus, Judy Shen, Jerry Hong, Brian Calvert, Jun Shern Chan, Francesco Mosconi, David Saunders, Tyler Neylon, Gabriel Nicholas, Sarah Pollack, Jack Clark, and Deep Ganguli. Measuring AI agent autonomy in practice. Anthropic Research Blog, https://anthropic.com/research/measuring-agent-autonomy, 2026.
  101. MindStudio Team. What is the anthropic Claude Code source code leak? three-layer memory architecture explained. https://www.mindstudio.ai/blog/claude-code-source-leak-three-layer-memory-architecture, 2026.
  102. Ethan Mollick. Co-intelligence: Living and working with AI. Penguin, 2024.
  103. Luca Nannini, Adam Leon Smith, Michele Joshua Maggini, Enrico Panai, Sandra Feliciano, Aleksandr Tiulkanov, Elena Maran, James Gealy, and Piercosma Bisconti. Ai agents under eu law. arXiv preprint arXiv:2604.04604, 2026.
  104. National Security Agency. Model context protocol (MCP): Security design considerations for AI-driven automation. Technical Report PP-26-1834, National Security Agency, May 2026. https://www.nsa.gov/Portals/75/documents/ Cybersecurity/CSI_MCP_SECURITY.pdf.
  105. Xuying Ning, Katherine Tieu, Dongqi Fu, Tianxin Wei, Zihao Li, Yuanchen Bei, Jiaru Zou, Mengting Ai, Zhining Liu, Ting-Wei Li, et al. Code as agent harness. arXiv preprint arXiv:2605.18747, 2026.
  106. Nous Research. Hermes agent. https://github.com/NousResearch/hermes-agent, 2026. Analyzed snapshot commit f1f42a7b9; v0.13.0 release tag v2026.5.7; accessed May 2026.
  107. Alexander Novikov, Ngân Vũ, Marvin Eisenberger, Emilien Dupont, Po-Sen Huang, Adam Zsolt Wagner, Sergey Shirobokov, Borislav Kozlovskii, Francisco JR Ruiz, Abbas Mehrabian, et al. Alphaevolve: A coding agent for scientific and algorithmic discovery. arXiv preprint arXiv:2506.13131, 2025.
  108. OECD. Governing with artificial intelligence: The state of play and way forward in core government functions. https:
  109. //www.oecd.org/en/publications/governing-with-artificial-intelligence_795de142-en/full-report.html, 2025. Offi-
  110. cial OECD Public Governance Committee report, 18 September 2025.
  111. OpenAI. Harness engineering: Leveraging Codex in an agent-first world. OpenAI, https://openai.com/index/
  112. harness-engineering/, 2026a.
  113. OpenAI. Building a safe, effective sandbox to enable Codex on Windows. OpenAI Blog, https://openai.com/index/ building-codex-windows-sandbox/, 2026b.
  114. Addy Osmani. Loop engineering. https://addyosmani.com/blog/loop-engineering/, 2026.
  115. Charles Packer, Vivian Fang, Shishir_G Patil, Kevin Lin, Sarah Wooders, and Joseph_E Gonzalez. Memgpt: towards llms as operating systems. 2023.
  116. Kai Pan. Agent-first tool api: A semantic interface paradigm for enterprise ai agent systems. arXiv preprint
  117. arXiv:2605.10555, 2026.
  118. Wesley Pasfield. Build an agent improvement loop with traces, evals, and Codex. OpenAI Cookbook, https:
  119. //developers.openai.com/cookbook/examples/agents_sdk/agent_improvement_loop, 2026.
  120. Gil Pasternak, Dheeraj Rajagopal, Julia White, Dhruv Atreja, Matthew Thomas, George Hurn-Maloney, and Ash Lewis. Beyond reactivity: Measuring proactive problem solving in llm agents. arXiv preprint arXiv:2510.19771, 2025.
  121. Divya Pathak, Harshit Kumar, Anuska Roy, Felix George, Mudit Verma, and Pratibha Moogi. Detecting silent failures in multi-agentic ai trajectories. arXiv preprint arXiv:2511.04032, 2025.
  122. Neil Perry, Megha Srivastava, Deepak Kumar, and Dan Boneh. Do users write more insecure code with ai assistants? In Proceedings of the 2023 ACM SIGSAC conference on computer and communications security, pages 2785–2799, 2023.
  123. Kevin Pu, Daniel Lazaro, Ian Arawjo, Haijun Xia, Ziang Xiao, Tovi Grossman, and Yan Chen. Assistance or disruption? exploring and evaluating the design and trade-offs of proactive ai programming support. In Proceedings of the 2025
  124. CHI conference on human factors in computing systems, pages 1–21, 2025.
  125. Chen Qian, Wei Liu, Hongzhang Liu, Nuo Chen, Yufan Dang, Jiahao Li, Cheng Yang, Weize Chen, Yusheng Su, Xin Cong, et al. Chatdev: Communicative agents for software development. In Proceedings of the 62nd annual meeting of the association for computational linguistics (volume 1: Long papers), pages 15174–15186, 2024.
  126. Prithvi Rajasekaran. Harness design for long-running application development. Anthropic Engineering Blog, https: //anthropic.com/engineering/harness-design-long-running-apps, 2026.
  127. Gwendolyn Rak. How to stay ahead of AI as an early-career engineer. IEEE Spectrum, 2025. https://spectrum.ieee.
  128. org/ai-effect-entry-level-jobs.
  129. Charles Reis and Steven D Gribble. Isolating web programs in modern browser architectures. In Proceedings of the 4th ACM European conference on Computer systems, pages 219–232, 2009.
  130. ruvnet. Open claude code. https://github.com/ruvnet/open-claude-code, 2026.
  131. Ravi S Sandhu, Edward J Coyne, Hal L Feinstein, and Charles E Youman. Role-based access control models. Computer, 29(2):38–47, 2002.
  132. Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Eric Hambro, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom. Toolformer: Language models can teach themselves to use tools. Advances in neural information processing systems, 36:68539–68551, 2023.
  133. Erik Schluntz and Barry Zhang. Building effective agents. Anthropic Research, https://www.anthropic.com/research/ building-effective-agents, 2024.
  134. Judy Hanwen Shen and Alex Tamkin. How ai impacts skill formation. arXiv preprint arXiv:2601.20245, 2026.
  135. Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, and Shunyu Yao. Reflexion: Language agents with verbal reinforcement learning. Advances in neural information processing systems, 36:8634–8652, 2023.
  136. Leon Staufer, Kevin Feng, Kevin Wei, Luke Bailey, Yawen Duan, Mick Yang, A Pinar Ozisik, Stephen Casper, and Noam Kolt. The 2025 ai agent index: Documenting technical and safety features of deployed agentic ai systems. arXiv preprint arXiv:2602.17753, 2026.
  137. Peter Steinberger and OpenClaw Contributors. OpenClaw: Personal AI assistant. https://github.com/openclaw/ openclaw, 2026. Open-source multi-channel AI assistant gateway. MIT License.
  138. Viktoria Stray, Elias Goldmann Brandtzæg, Viggo Tellefsen Wivestad, Astri Barbala, and Nils Brede Moe. Devel- oper productivity with and without github copilot: A longitudinal mixed-methods case study. arXiv preprint arXiv:2509.20353, 2025.
  139. Yifan Sui, Han Zhao, Rui Ma, Zhiyuan He, Hao Wang, Jianxun Li, and Yuqing Yang. Act while thinking: Accelerating llm agents via pattern-aware speculative tool execution. arXiv preprint arXiv:2603.18897, 2026.
  140. Weiwei Sun, Xuhui Zhou, Weihua Du, Xingyao Wang, Sean Welleck, Graham Neubig, Maarten Sap, and Yiming Yang.
  141. Training proactive and personalized llm agents. arXiv preprint arXiv:2511.02208, 2025.
  142. T-Lab-CUHKSZ. Claude code source - buildable research fork. https://github.com/T-Lab-CUHKSZ/claude-code, 2026.
  143. The Linux Foundation. Linux foundation announces the formation of the agentic AI founda- tion (AAIF), anchored by new project contributions including model context protocol (MCP), goose and AGENTS.md. Linux Foundation Press Release, 2025. https://www.linuxfoundation.org/press/ linux-foundation-announces-the-formation-of-the-agentic-ai-foundation.
  144. Priyansh Trivedi and Olivier Schmitt. Does code cleanliness affect coding agents? a controlled minimal-pair study. arXiv preprint arXiv:2605.20049, 2026.
  145. ultraworkers. Claw code. https://github.com/ultraworkers/claw-code, 2026.
  146. VILA Lab. Agent systems design space source notes. https://github.com/VILA-Lab/Dive-into-Claude-Code/blob/ main/docs/agent-design-space-source-notes_zh.md, 2026. Companion source notes, updated May 2026.
  147. Janelle Teng Wade, Lance Co Ting Keh, Talia Goldberg, David Cowan, Grace Ma, Bhavik Nagda, Brandon Nydick, and Bar Weiner. AI infrastructure roadmap: Five frontiers for 2026. Bessemer Venture Partners, https://www.bvp. com/atlas/ai-infrastructure-roadmap-five-frontiers-for-2026, 2026.
  148. Guanzhi Wang, Yuqi Xie, Yunfan Jiang, Ajay Mandlekar, Chaowei Xiao, Yuke Zhu, Linxi Fan, and Anima Anandkumar. Voyager: An open-ended embodied agent with large language models. arXiv preprint arXiv:2305.16291, 2023.
  149. Lei Wang, Chen Ma, Xueyang Feng, Zeyu Zhang, Hao Yang, Jingsen Zhang, Zhiyuan Chen, Jiakai Tang, Xu Chen, Yankai Lin, et al. A survey on large language model based autonomous agents. Frontiers of Computer Science, 18 (6):186345, 2024a.
  150. Shawn Wang. Agent engineering. Latent Space, https://www.latent.space/p/agent, 2025.
  151. Xingyao Wang, Boxuan Li, Yufan Song, Frank F Xu, Xiangru Tang, Mingchen Zhuge, Jiayi Pan, Yueqi Song, Bowen Li, Jaskirat Singh, et al. Openhands: An open platform for ai software developers as generalist agents. arXiv preprint arXiv:2407.16741, 2024b.
  152. Zora Zhiruo Wang, Jiayuan Mao, Daniel Fried, and Graham Neubig. Agent workflow memory. arXiv preprint arXiv:2409.07429, 2024c.
  153. Lilian Weng. LLM-powered autonomous agents. https://lilianweng.github.io/posts/2023-06-23-agent/, 2023.
  154. Michael Wooldridge. An introduction to multiagent systems. John Wiley & Sons, 2009.
  155. Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, et al. Autogen: Enabling next-gen llm applications via multi-agent conversations. In First conference on language modeling, 2024.
  156. Qing Xiao, Xinlan Emily Hu, Mark E Whiting, Arvind Karunakaran, Hong Shen, and Hancheng Cao. Ai hasn’t fixed teamwork, but it shifted collaborative culture: A longitudinal study in a project-based software development organization (2023-2025). arXiv preprint arXiv:2509.10956, 2025.
  157. Bin Xu. Ai agent systems: Architectures, applications, and evaluation. arXiv preprint arXiv:2601.01743, 2026.
  158. Wujiang Xu, Zujie Liang, Kai Mei, Hang Gao, Juntao Tan, and Yongfeng Zhang. A-mem: Agentic memory for llm
  159. agents. arXiv preprint arXiv:2502.12110, 2025.
  160. Wujiang Xu, Yu Wang, Kai Mei, Kaiqu Liang, Zhenting Wang, Mingyu Jin, Han Zhang, Shi-Xiong Zhang, Wenyue Hua
  161. Sambit Sahu, et al. Memgym: a long-horizon memory environment for llm agents. arXiv preprint arXiv:2605.20833
  162. 2026.
  163. John Yang, Carlos E Jimenez, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik Narasimhan, and Ofir Press. Swe-agent: Agent-computer interfaces enable automated software engineering. Advances in Neural Information Processing Systems, 37:50528–50652, 2024.
  164. Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik R Narasimhan, and Yuan Cao. React: Synergizing reasoning and acting in language models. In The eleventh international conference on learning representations, 2022.
  165. Shunyu Yao, Noah Shinn, Pedram Razavi, and Karthik Narasimhan. τ -bench: A benchmark for tool-agent-user interaction in real-world domains. arXiv preprint arXiv:2406.12045, 2024.
  166. Qizheng Zhang, Changran Hu, Shubhangi Upasani, Boyuan Ma, Fenglu Hong, Vamsidhar Kamanuru, Jay Rainton, Chen Wu, Mengmeng Ji, Hanchen Li, et al. Agentic context engineering: Evolving contexts for self-improving language models. arXiv preprint arXiv:2510.04618, 2025a.
  167. Zeyu Zhang, Quanyu Dai, Xiaohe Bo, Chen Ma, Rui Li, Xu Chen, Jieming Zhu, Zhenhua Dong, and Ji-Rong Wen. A survey on the memory mechanism of large language model-based agents. ACM Transactions on Information Systems, 43(6):1–47, 2025b.
  168. Andy Zhou, Kai Yan, Michal Shlapentokh-Rothman, Haohan Wang, and Yu-Xiong Wang. Language agent tree search unifies reasoning acting and planning in language models. arXiv preprint arXiv:2310.04406, 2023.
  169. Mingchen Zhuge, Wenyi Wang, Louis Kirsch, Francesco Faccio, Dmitrii Khizbullin, and Jürgen Schmidhuber. Gptswarm: Language agents as optimizable graphs. In Forty-first International Conference on Machine Learning, 2024.
  170. Appendix
  171. Evidence Base and Methodology
  172. This appendix records the evidence sources, analytic procedure, and limits of the study.
  173. Evidence Base and Evidence Tiers
  174. Claims in this paper are grounded at three evidence tiers: • Tier A (product-documented): Claims drawn from official Anthropic documentation and engineering publications. These establish product intent but may not reflect internal implementation. • Tier B (code-verified): Claims citing specific files and functions in the extracted TypeScript codebase (v2.1.88, obtained from a publicly available npm package extraction). This is the strongest evidence tier. • Tier C (reconstructed): Claims derived from community analysis, OpenClaw or Hermes Agent structural comparison, or inference from code patterns. These are stated with hedging language.
  175. The source corpus comprises approximately 1,884 files totaling roughly 512K lines of TypeScript. OpenClaw
  176. and Hermes Agent are used as comparative reference points rather than as ground-truth standards.
  177. Design-Space Analytic Procedure
  178. Design questions were identified by examining each subsystem for recurring choice points where alternative
  179. designs exist in other production agents. Claude Code’s answers to each question were traced through specific
  180. source files and function implementations (Tier B evidence). The five-value framework (human decision
  181. authority, safety, security, and privacy, reliable execution, capability amplification, and contextual adaptability)
  182. was identified from official documentation and creator statements (Tier A), then traced through thirteen
  183. design principles to architectural decisions. Long-term capability preservation is treated separately as a
  184. cross-cutting question rather than a design value, because it is not prominently reflected as a design driver
  185. in the architecture or in Anthropic’s stated values (Section 2.4). Token economics serves as a cross-cutting
  186. constraint that bounds all five values simultaneously, revealing how individual subsystem choices interact
  187. under shared resource pressure.
  188. Limitations • Static snapshot. Analysis reflects one version (v2.1.88). Feature flags (e.g., TRANSCRIPT_CLASSI- FIER, CONTEXT_COLLAPSE) create build-time variability. Different build targets may produce functionally different applications. • Reverse-engineering epistemology. Source code reveals implemented structure, control flow, dependencies, and feature gates. It cannot confirm design intent, enabled production flags, runtime prevalence, or unshipped behavior. • Single-system analysis. Findings describe Claude Code’s design space, not the entire design space of coding agents. Generalizations are bounded. • Comparison-system snapshots. The OpenClaw and Hermes Agent analyses each reflect a specific development state and may not represent their current capabilities.
  189. Package Structure
  190. This part maps the main TypeScript package to runtime responsibilities.
  191. Directory-to-Responsibility Map
  192. The package (Figure 9) is organized around a src/ directory. Table 7 lists the key files that form the main
  193. subsystems.
  194. Table 7 Key files by approximate size and runtime responsibility. File Size Responsibility main.tsx 804KB Entry point, mode dispatch, setup query.ts 68KB Core agent loop, 5 context shapers QueryEngine.ts 47KB SDK/headless conversation wrapper Tool.ts 30KB Tool interface, types, utilities history.ts 14KB Global prompt history mcp/client.ts Large MCP client (8+ transport vari- ants) compact.ts Large Compaction engine AgentTool.tsx Large Agent tool, subagent dispatch runAgent.ts Large Agent lifecycle and coordination
  195. Table 8 Conditional tool availability categories.
  196. Category Examples AgentTool, BashTool, FileReadTool, FileEditTool, FileWriteTool, SkillTool, WebFetchTool
  197. Always included WebSearchTool
  198. Environment GlobTool/GrepTool (unless embedded), ConfigTool (ant-only), PowerShellTool (Windows) TaskCreate/Get/Update/List (todoV2), EnterWorktreeTool (worktree), TeamTools (swarms)
  199. Feature flag ToolSearchTool
  200. Null-checked SuggestBackgroundPRTool, WebBrowserTool, RemoteTriggerTool, MonitorTool, SleepTool
  201. The tools/ directory contains approximately 42 subdirectories implementing tools, with the corresponding
  202. schema, description, permission requirements, and execution logic. The commands/ directory contains
  203. approximately 86 slash command subdirectories.
  204. Key service directories include services/tools/ (StreamingToolExecutor, toolOrchestration, toolExecution)
  205. services/compact/ (compaction engine), and services/mcp/ (MCP client and configuration). The permission
  206. infrastructure spans utils/permissions/ (rule evaluation, classifier), hooks/useCanUseTool.tsx (permission
  207. handler), types/permissions.ts (mode definitions), and types/hooks.ts (event schemas).
  208. A structural quirk: query.ts (file) and query/ (directory) coexist. The file contains the main query loop. The
  209. directory houses helper modules for loop configuration and context assembly.
  210. Conditional Tool Availability
  211. The getAllBaseTools() function (tools.ts) constructs different tool sets depending on mode, build, environment
  212. and feature flags (Table 8). The model may see as few as 3 tools in simple mode (Bash, Read, Edit) or up to
  213. 54 tools (19 unconditional plus 35 conditional) in a full internal build with all features enabled.
  214. Cross-File Dependencies
  215. The import graph includes the following dependency structure. QueryEngine.ts delegates to query.ts for turn
  216. execution. query.ts imports from services/tools/ (StreamingToolExecutor, runTools) and services/compact/
  217. (autoCompact, buildPostCompactMessages). QueryEngine.ts imports from memdir/ for memory and prompt
  218. assembly. The code explicitly avoids circular imports: types/permissions.ts was extracted to break import
  219. cycles, and setCachedClaudeMdContent() in context.ts avoids a cycle through the permissions/filesystem
  220. path.
  221. Community Reimplementations
  222. After the Claude Code TypeScript source became publicly readable, several community projects published
  223. independent reimplementations. This appendix lists a few representative examples.
  224. Representative Projects
  225. Table 9 lists five reimplementations identified from the public ecosystem as of 2026. Each project is a working
  226. CLI agent rather than a passive source dump or annotation pass. The set spans four runtime targets (Python
  227. Rust, TypeScript with Bun, JavaScript via npm) and three rebuild methodologies (independent rewrites from
  228. observed behavior, fork from a TypeScript snapshot with reconstructed build, and automated decompilation
  229. pipelines).
  230. Table 9 Representative community reimplementations of Claude Code (as of 2026).
  231. Project Runtime Citation Methodology Port plus
  232. ClawCodex Python (agentforce314, 2026) multi-provider model layer Independent
  233. Claw Code Rust (ultraworkers, 2026) Rust rewrite Reverse-
  234. claude-code-working TypeScript / Bun (777genius, 2026) engineered, runnable Build system
  235. Claude Code Source: Buildable Research Fork TypeScript (T-Lab-CUHKSZ, 2026) reconstructed from snapshot Nightly
  236. Open Claude Code JavaScript / npm (ruvnet, 2026) auto-decompile pipeline
  237. Companion Design-Space Resources
  238. The project repository maintains companion notes that track new agent-system developments as they appear;
  239. these are not evidence for Claude Code’s implementation, which remains grounded in the evidence tiers
  240. above (VILA Lab, 2026).
  241. Source Structure (v2.1.88) Runtime Responsibility Entry & Startup main.tsx Application entry point, mode dispatch, signal handlers replLauncher.tsx Interactive REPL composition (components + screens) entrypoints/ SDK & headless startup (coreTypes.ts, coreSchemas.ts) cli/ CLI argument handlers (agents, auth, mcp, plugins) UI Layer components/, screens/ Terminal UI building blocks (ink framework), screen composition outputStyles/ System-prompt output style logic Core Loop query.ts Agentic query loop (queryLoop AsyncGenerator), 5 shapers query/ Loop config helpers (context assembly is in context.ts) QueryEngine.ts Headless/SDK conversation wrapper (delegates to query.ts) context.ts Context assembly (getSystemContext, getUserContext) Tools & Commands Tool.ts Tool interface and types (execution lives in services/tools/) tools/ 42 concrete tool implementations (Bash, Read, Edit, Agent, ...) services/tools/ Tool execution and orchestration (not registration) commands/ 86 slash command implementations Safety & Permissions utils/permissions/ Deny-first rule evaluation, yoloClassifier (auto-mode) types/permissions.ts 7 permission mode definitions (5 external + auto + bubble) hooks/useCanUseTool.tsx Permission handler (coordinator, swarm, classifier, interactive) components/permissions/ Permission dialog UI (PermissionDialog.tsx, per-tool prompts) Extensibility plugins/ Plugin loader, manifest validation, component registration skills/ Skill loader, SKILL.md frontmatter parsing, bundled skills utils/hooks.ts Hook registry, lifecycle dispatch across 27 event types types/hooks.ts + schemas/hooks.ts Hook schemas (Zod) + types (cmd/prompt/http/agent) Context & Memory services/compact/ 5-layer compaction (budget, snip, micro, collapse, auto) memdir/ Auto memory loading, entry cap enforcement utils/claudemd.ts CLAUDE.md 4-level hierarchy, @include processing state/ Runtime application state Persistence history.ts Global prompt history (history.jsonl, reverse-order reader) utils/sessionStorage.ts Per-session JSONL transcripts, sidechains, file-history Services & Integration services/ MCP client (8+ transports), API adapters, LSP, analytics remote/ Remote execution backend support coordinator/ Multi-agent coordination mode, worker management Additional Infrastructure bootstrap/, bridge/, constants/, server/ App init, WebSocket communication, API configuration ink/, keybindings/, vim/, buddy/, ... Terminal rendering, input handling, optional features
  242. Figure 9 Extracted package structure mapped to runtime responsibilities. Left column: TypeScript source directories
  243. and key files. Right column: inferred runtime roles. This appendix represents reconstructed analysis (Tier C evidence)
  244. not official Anthropic documentation.