Claude Code 源代码泄露的事情在 X 等平台上炸开了锅。但比起八卦本身,更值得挖的是这个事件暴露出的东西——一个成熟的 Autonomous Agent 产品,在模型之外那些真正难啃的骨头。
Anthropic 的工程师们显然知道:真正的护城河不在于模型有多强,而在于把模型包裹起来的那层「脚手架」做得多扎实。这大概是 2026 年初最值得全行业认真读一读的技术文档。
01 | 当我们在聊 Agent,难的到底是什么
Claude Code 的架构核心是一个叫 Harness 的本地运行时外壳。如果用人体的比喻,Harness 是身体,LLM 是大脑。身体负责呼吸、心跳、反射这些不需要思考的事,大脑只专注于真正需要智能的决策。
这个划分有多重要?
看看行业走过的弯路。第一代 Chatbot 无状态问答,第二代 Workflow 用 n8n、LangChain 这类工具把 LLM 嵌进 DAG 流——这两代的共同特点是代码在控制模型下一步做什么。模型是镶在流程里的一个节点,框架决定它什么时候被调用、怎么调用。
第三代才是真正的 Autonomous Agent:模型控制循环,运行时只是执行器。Claude Code 属于第三代。
Harness 这个词用得很准。它不是 framework,不是 runtime,而是一个让模型能在现实世界里行动的外壳。这个外壳提供文件系统访问、shell、分层记忆、声明式扩展,所有这些都在一个由可组合权限约束的有界自主循环里运行。
说白了:给任何支持工具调用的 LLM 套上这个外壳,它就能在真实世界里干活了。模型可以换,外壳不需要换。
我的思考: 这个分层的思路其实很老派——Unix 的哲学,程序只做一件事并做好。但把它用到 Agent 架构上,意味着行业终于开始把模型当作一个「能被调用的服务」而不是「需要被管理的智能体」来设计。这是认识论上的转变。
02 | TAOR Loop:让运行时变笨,把智能留给模型
Claude Code 的执行引擎是一个叫 TAOR 的循环:Think → Act → Observe → Repeat。
循环本身不复杂,50 行代码能说清楚。但背后的设计哲学值得玩味——Orchestrator(编排器)被设计得极其「笨」,只负责驱动循环、执行工具调用、感知结果。所有推理、决策、何时停止,全部交给模型。
运行时不知道代码是什么,不知道文件在哪,它只是跑循环,让模型决定下一步。
这句话说出来简单,做起来需要对工程决策的极度克制。多数框架的本能是把编排逻辑写进代码——这里加个判断,那里加个分支,Orchestrator 越来越「聪明」,也越来越脆弱。
Claude Code 的做法恰恰相反:把确定性留给框架,把智能下沉到模型。
还有一个细节很有意思:工具层也遵循同样的「笨」哲学。Claude Code 没有给模型配备几十上百个专项工具,只提供四种能力原语——Read、Write、Execute、Connect。其中 Bash 是通用适配器,git、npm、docker 全部通过 shell 组合完成。
不要构建 100 个工具,给模型一个 shell,让它自己组合。
这句话值得裱起来。
我的思考: 很多人觉得 Agent 框架应该越来越聪明、越来越复杂。但 Claude Code 的思路是反直觉的——脚手架应该随着模型能力提升而变薄,而不是变厚。如果你每次模型升级都要往框架里加更多逻辑,说明你在对抗模型,而不是利用模型。这和做基础设施的思路是一样的:越底层的组件,越要抵抗增加复杂度的冲动。
03 | Context Window 是稀缺资源,不是越大越好
这是整篇文章最让我有共鸣的一个观点。
Context 不是越大越好,而是越干净越好。这是 Claude Code 整个架构里贯穿始终的设计原则。
Context Collapse 是 Agent 系统最普遍的失败模式:对话进行下去,上下文窗口被填满,记忆退化,幻觉出现,Agent 开始在自己积累的噪音里迷失。Claude Code 把 Context Window 看成一种需要主动管理的稀缺资源,而不是可以随意挥霍的无限带宽。
它构建了三层防御体系:
第一层:Auto-Compaction。 Context 使用量达到约 50% 时自动触发,用 LLM 摘要替换原始对话轮次,释放空间同时保留关键决策。这不是简单截断历史,而是有策略的压缩。
第二层:Sub-Agent 隔离。 重型探索任务交给独立子 Agent,运行自己独立的 TAOR 循环,有自己的 Context 预算。任务完成后只返回摘要给主 Agent,主 Agent 的 Context 完全不受污染。
第三层:Prompt Cache 经济学。 代码里追踪了 14 个 cache-break 向量(会让 prompt 缓存失效的情况)。还有一个函数叫 DANGEROUS_uncachedSystemPromptSection()——光是这个命名本身就是一种文档:这里加东西要小心,会破坏缓存。
当你为每个 token 付费的时候,缓存失效就不再是计算机科学笑话,而是一个财务问题。
Session Continuity 也是一个被低估的设计:会话不是一次性的,像 git branch 一样运作,可以 checkpoint、rollback,或者把某个探索方向 fork 成一条新路径。Context 的管理不只在单次会话内,而是跨会话的。
我的思考: Context 管理本质上是一个资源调度问题,而资源调度从来都是工程里最脏、最难做好的活。多数人关注的是模型有多强,但我更关心的是——给定一个模型,谁能把 Context 管理得更精细,谁的 Agent 产品体验就更好。这不是靠模型升级能解决的,是工程问题。
04 | 记忆是索引,不是存储
Claude Code 的记忆系统设计,让很多人对「Agent 记忆」的理解需要重构。
大多数人想象记忆就像一个更大的背包,装得越多越好。但 Claude Code 的记忆系统,更像是一个带有严格图书管理员的档案系统——核心原则是:能从代码库里重新推导出的信息,绝不应该被存储。
它的记忆系统分为六层:Managed Policy → Project CLAUDE.md → User Preferences → Auto-Memory → Session → Sub-Agent Memory。每次会话启动时按层加载。
Auto-Memory 循环甚至允许 Agent 学习用户的工作模式,并把这些模式写入 MEMORY.md 供未来会话使用——用户不需要反复解释相同的事情,Agent 会从历史交互里自己记住。
更有意思的是,这个系统有主动自我编辑能力:不仅会记录,还会重写、去重、甚至剪除互相矛盾的信息。过期且无效的记忆在这里被视为「负债」而非资产。
我的思考: 「记忆是负债」这个观点很反直觉,但细想很对。你存储的每一条信息都需要维护成本,信息之间还会产生不一致——这种不一致就是债务。好的记忆系统不是存得越多越好,而是该记住的记住,该忘的果断忘。大多数 Agent 产品在记忆层面做的只是存储,而不是管理。
05 | 权限系统是 UX 问题,信任是可组合的
Claude Code 的权限系统被设计为一个五档信任光谱:plan(只读)→ default(询问)→ acceptEdits(自动批审编辑)→ dontAsk(白名单内全通过)→ bypassPermissions(跳过所有检查)。
每个工具调用都经过静态分析层的多层白名单校验,bashSecurity.ts 里有 23 项编号的安全检查——包括被阻止的 Zsh 内置命令、Unicode 零宽字符注入、IFS null-byte 注入,甚至还有一个在 HackerOne 审查期间发现的恶意 token 绕过。
但更有意思的是 API 身份验证机制:API 请求在 JS 层之下做了加密验证。cch=00000 占位符在请求离开进程前被替换成计算出的哈希值,这个计算发生在 JS 层之下,对任何运行在 JS 里的代码完全不可见。
本质上是在 HTTP 传输层实现的 API 调用 DRM。
这就是 Anthropic 向 OpenCode 发律师函背后的技术基础——他们不只是在保护 API 密钥,而是在密码学层面证明了请求来自真实的 Claude Code 二进制文件,而不是第三方伪造的客户端。
我的思考: 权限设计是 Agent 产品从 Demo 走向企业生产环境的门槛。但 Claude Code 把它做到了一个更深的技术层面——不只是产品策略,而是密码学防御。这预示了一个趋势:未来 Agent 产品的护城河不只是模型能力,还有底层基础设施的可信度。
06 | KAIROS 的野心:从不召唤的 Agent
这次泄露还有一个彩蛋——一个还没发布的功能 KAIROS。
它的特征很有意思:后台常驻、每日记忆蒸馏、GitHub Webhook 感知变化、每 5 分钟 Cron 调度刷新。拼在一起,是一个完全不同的产品形态:不是你召唤它,而是它一直在,主动为你工作。
现有的 Claude Code 是召唤式 Agent:你打开终端,它来帮你;你关掉终端,它就停了。但 KAIROS 描绘的是下一代:Agent 在后台持续运行,感知代码库变化,每天晚上做记忆蒸馏,把当天的工作模式压缩进长期记忆,第二天已经「预热」好了。
我的思考: 这是两种完全不同的时间哲学。召唤式 Agent 活在用户的时间里,需要用户主动发起;KAIROS 这种常驻 Agent 活在自己的时间里,用户只是被通知的对象。如果 KAIROS 真的产品化,它重新定义的不只是工具,而是人机协作的工作模式——从「我用 AI 帮我做事」变成「AI 在后台替我守着事」。
07 | 写在最后:源码泄露的真正价值
Claude Code 的源码泄露,扒出了很多有意思的东西:Anti-Distillation 机制(API 请求里注入虚假工具定义来污染竞品模型的训练数据)、Undercover Mode(强制隐藏 Claude Code 在外部仓库里的存在)……
这些工程决策充满争议——一边是合理的商业防御,一边是 AI 透明度的伦理困境。Anthropic 员工在开源项目里生成的 commit 和 PR,将没有任何 AI 参与的标记,这是好事还是坏事?
但比起这些八卦,更值得记住的是这次泄露展示的完整的 Agent 工程化思路:Harness 设计、TAOR 循环、Context 管理、记忆索引、权限分层、多 Agent 编排。这些不是纸上谈兵,而是生产级产品的实战经验。
行业里聊 Agent,太容易陷入「模型有多强」的叙事。但 Claude Code 用 1900 个文件、512,000 行 TypeScript 告诉我们:真正难的一直是模型之外的东西。