概述

所有读者:把 Claude Code 当作范例级 agent harness 反向拆解——提取可迁移到自研 agent 的设计原则。

为什么单独一章讲 Claude Code

本站的 Harness Engineering 讲”agent harness 应该怎么构建”,Context Engineering 讲”上下文应该怎么管理”。这些都是产品中立的理论

这一章不同——这一章只讲一个产品:Claude Code

为什么值得单列:Claude Code 是 Anthropic 自己造的、也是自己在用的 agent harness。它承载了 Anthropic 关于 harness 和 context engineering 的全部判断落地。研究它,等于同时拿到了两份资料:

  1. 一个高完成度的工程参考——生产级 CLI + Desktop + Web + IDE 插件,跑了几千万小时
  2. 一份”他们自己相不相信那些论文”的可观测证据——论文里讲的”渐进披露""上下文衰退""注意力预算”在它的设计里有没有真正被当一回事

所以这一章的定位是:把 Claude Code 作为 case 拆解,然后把拆出来的原则回授到自研 agent 的设计。不是产品使用手册。


Claude Code 的独特之处

相比把”agent 产品化”做得比较表层的同类(Cursor / Windsurf / Devin / Aider),Claude Code 有几个别家没有或者做得浅的决定:

决定Claude Code 做法为什么值得研究
系统提示词分层静态骨架 + CLAUDE.md 项目级 + ~/.claude/ 用户级 + auto memory + session 级 guidance,分多次注入直接把”prompt 缓存命中”和”个性化”两个目标做成了设计原则,不是事后优化
上下文压缩自动触发的 compaction,保留语义骨架、丢弃可重新派生的内容把”哪些 token 有长期价值”这件事做成了显式策略
记忆系统三级(项目 / 用户 / auto memory)+ MEMORY.md 索引常驻 + 单条文件按需加载渐进披露原则的范例应用
沙箱与权限permission modes 作为用户 per-turn 可见的状态机,hooks 作为事件级拦截把”信任边界”做成了产品 surface,不是藏在 config 里
Subagent(Agent tool)主 agent 通过 Agent tool 委派子任务,子 agent context 完全独立上下文防火墙——多 agent 的意义不是并行,是隔离
Hookspre/post tool、stop、prompt-submit 事件钩子,由 harness 保证执行区分了”prompt 级”和”process 级”两类需求,承认 prompt 不万能

这些在后续各篇里逐个展开。


8 章 · 3 个维度 静态组成 → 动态运行 → 安全边界 · 三维各自独立,通篇交叉引用 1 · Overview 从哪里开始 维度 1 · 静态组成 (Static Composition) Agent 的输入是怎么拼的 —— prompt、记忆、压缩 · 不随每轮变化的部分 2 · 系统提示词 7 静态 + 13 动态段 3 · 上下文压缩 五级流水线 4 · 记忆系统 6 文件类型 × 4 内容类型 维度 2 · 动态运行 (Dynamic Runtime) 一轮到底发生了什么 —— 循环、流式、工具调度 5 · Agent 运行循环 14 步流水线 · 6 种终止原因 维度 3 · 安全边界 (Security Boundaries) 信任决策 + 物理隔离 · 两层正交,缺一不可 6 · 权限系统 7 mode × 8 source × 10 hook 7 · 执行环境 3 种 isolation + 进程沙箱 8 · 设计启示 10 条原则,源码级 从上到下读是叙事路径;按维度读是深度切片。第 8 章把原则带回实践。 所有断言绑定到 Claude Code 源码路径。

阅读顺序

#主题读完能回答
1本页(Overview)为什么研究 Claude Code,读什么
2系统提示词组装静态骨架、CLAUDE.md、session guidance 怎么拼成最终 prompt,为什么这么拼
3上下文压缩压缩何时发生、保留什么、跨 session 怎么承接
4记忆系统6 种记忆类型、MEMORY.md 索引设计、subagent 作为上下文防火墙
5Agent 运行循环一轮到底发生了什么:query async generator、14 步流水线、streaming tool executor、abort 全链路
6权限系统7 mode × 8 source × 11 reason × 10 hook 事件的信任决策层
7执行环境3 种 isolation 模式 (none / worktree / remote)、跨平台进程沙箱、CCR 云端架构
8设计启示抽出的跨主题原则(抽象)
9应用到自研 Agent (AI SDK)把原则落到 AI SDK 的 8 个嵌入点 · 3 个 trap · MVP 蓝图(可执行,按钩子切)
10生命周期状态流一次对话里状态怎么在 8 个点之间流动 · 4 个状态桶 · 读写矩阵(按状态切)

前 7 篇描述 Claude Code 怎么做,第 8 篇抽出抽象原则,第 9 篇把原则落到 AI SDK 代码行(按钩子切),第 10 篇追踪状态跨 8 点的流动(按状态切)——9 和 10 互补,是同一套代码的两个视角。

章节组织:2-4 讲静态组成(prompt、compaction、memory),5 讲动态运行(一轮循环),6-7 讲安全边界(信任 + 物理隔离);8-10 是理论 → 应用的三重——第 8 讲抽象原则、第 9 讲按钩子切的代码地图、第 10 讲按状态流切的动态走读。


本章不做什么

  • 不是 Claude Code 使用手册。装它、配 MCP、写 slash command 这些事官方文档讲得很清楚。链接:docs.claude.com/claude-code
  • 不猜内部实现。本章只讨论可观测行为——发给模型的 system prompt 长什么样、工具返回的 error 文本是什么、permission mode 切换时 UI 表现、CLAUDE.md 加载顺序。具体算法(比如 compaction 的触发阈值、记忆 ranking)除非 Anthropic 公开发表过,否则不做断言。
  • 不和 Cursor / Devin 做功能对比。对比表容易写成营销稿。个别地方为了说清”Claude Code 做了什么别家没做的决定”会引用,但不构建完整对比矩阵。
  • 不等同于”Anthropic 官方立场”。本章是第三方学习总结。一些设计启示是基于可观测行为的推断,不是 Anthropic 官方文档。

方法论:可观测 vs 推测

写这章时严格区分两种断言:

  • 可观测:作为 Claude Code 实例本身能看到的东西——system prompt 里的文本、工具的 schema、CLAUDE.md 加载行为、error message 的措辞、permission mode 的 UI 表现
  • 公开文档docs.claude.com、Anthropic 博客、官方 changelog
  • 推测:基于以上两类信息推出的设计意图——会明确标注”推测”或”可能是

一旦你读到没有标注推测的内容,那它是可观测或公开文档支持的。


适合谁读

  • 正在自研 agent 产品,想知道一个成熟的 harness 里哪些决定值得抄
  • 已经在用 Claude Code,想知道它为什么这么设计(而不只是”怎么用”)
  • 在做上下文工程,想看 Context Engineering 章讲的那些原则有没有一个完整的工程实例

不适合:只是想学 AI 基础、还没开始写 agent 的读者——建议先读 Agent = Model + Harness


延伸阅读

这页有帮助吗?