这两天整个技术圈都在传同一件事:Claude Code 的完整源码泄露了。
3 月 31 号凌晨,Anthropic 推了一版 npm 更新(v2.1.88),结果忘了过滤 source map 文件。一个 59.8MB 的 cli.js.map 就这么混进了公共 npm 包里。几个小时之内,51.2 万行 TypeScript 被完整还原,GitHub 上到处都是镜像。
大伙都在做源码分析,拆架构、扒功能、找彩蛋。我也翻了两天,但最后让我停下来的不是某个功能的实现细节。
我反复想的一件事是:这 51 万行代码,竟然没有一行在做"模型"。
Anthropic 管这个叫 Harness。
Harness 是什么
整个泄露的源码,1900 多个文件,51.2 万行 TypeScript,做的全是模型外围的编排工作。
Claude 本身呢?就是个 API 调用。往 https://api.anthropic.com 发个 POST 请求,返回一段文本。完事了。
那 51 万行代码在折腾什么?
让模型从"能说话"变成"能干活"。裸模型你给它一段话,它回你一段话。但在 Claude Code 里,AI 可以读文件、改代码、跑命令、做搜索、并行处理多个子任务,甚至记住你上次聊天时的偏好。这些能力全来自外围的 Harness,模型本身一个都给不了。
翻完源码后改变我认知的几个设计
不聊具体代码实现,只说思路。
记忆系统:敢遗忘的 AI 反而更聪明
Claude Code 的记忆分了三层。最上面是 CLAUDE.md,用户自己写的项目说明,放在项目根目录,每次对话都加载。中间层是自动记忆,AI 在聊天过程中自己提取关键信息,比如你说过"测试别用 mock",它下次就会记住。最底层是即时上下文,当前对话的内容,用完即走。
有个细节很有意思:记忆索引 MEMORY.md 被限制在每行 150 字符、总共 200 行以内。这不是技术限制,是故意的。大部分人做 AI 应用恨不得把所有对话记录都塞进 context window,Claude Code 反过来,主动控制记忆密度,只留指针,要用的时候再去查原始文件。
跟做项目文档一个道理。写得多不一定好,找得到才有用。
工具约束比工具本身更重要
Claude Code 里有几十个工具:读文件、写文件、执行 shell 命令、搜索代码、管理 git,连浏览器都能操作。但看源码之前我以为"工具调用"就是把 API 暴露给模型,看了之后发现差得远。
每个工具的 schema 里写了大量的"什么时候别用"。比如搜索工具会说"找特定文件用 Glob 别用 Grep",还会告诉模型"别用 Bash 去 cat 文件,有专门的 Read 工具"。
道理很简单:AI 只要有能力做某件事,它就真的会去做。你给它一把锤子,它看什么都像钉子。所以好的 Harness 设计重点在约束,在"别做什么",而不在"能做什么"。
这对我写自己的 AI 应用启发很大。给工具的时候,说明文档花的时间应该比写工具本身更多。
多 Agent 是为了隔离,不是为了快
源码里有一套 Agent 调度系统。主 Agent 可以起多个子 Agent,每个有独立的上下文和工具集,甚至能在独立的 git worktree 里干活,互不干扰。
一开始我以为这是为了并行提速。看了实现才明白,核心原因是 context window 有限。复杂任务全塞在一个 Agent 里,上下文很快就爆了。拆成多个独立 Agent,每个只管自己那摊事,结果反而更可控。
软件工程里的模块化不也是这个思路么?拆分的收益在隔离,并行只是副产品。
跟我有什么关系?
说说我自己的体感。过去半年 Cursor、Cline、Claude Code、Windsurf 这些工具我基本都摸过,有个感觉越来越明显:
模型正在变成水电煤。
2024 年大家还在争 GPT-4 好还是 Claude 好,到了 2026 年,GPT-5.4、Claude Opus 4.6、DeepSeek V4、Gemini 3.1 Pro 各有所长,但差距在缩小。你不会因为"用南方电网还是北方电网"就觉得电脑性能有差别,模型也在走同一条路。
Claude Code 的源码印证了这个判断。51 万行 Harness 代码 vs. 一个 API 调用。模型是引擎,Harness 才是整辆车。
所以我现在的做法是:别纠结"哪个模型最好",把精力花在搭自己的工作流上。
模型要能换。写代码用 Claude Opus,日常问答扔给 DeepSeek V4,长文档丢给 Gemini 3.1 Pro 的百万 token 上下文。绑死一个模型不如搞一套能灵活切换的基础设施。
上下文管理比 prompt engineering 重要。我现在在项目里维护一个 CLAUDE.md,把项目结构、技术栈、关键约定写清楚。效果比花半小时调 prompt 好得多。
工具编排是真正的活。模型不会用你的内部 API,不了解你的数据库,不知道你的部署流程。把这些封装成工具喂给它,才算把 AI 真正接进来了。
我的实际工具链
主力编码用 Claude Code,需要跑多个模型对比效果的时候走 API 聚合平台统一调用。以前试过直接对接各家官方 API,接到第三个的时候我就放弃了,每家一套认证、计费、报错逻辑,胶水代码写得比业务代码还多。现在统一走 OpenAI 兼容格式,换模型改个 model 参数就行。
复杂重构扔给 Claude Opus 4.6,上下文长推理强。日常问答和快速原型用 DeepSeek V4 或 GPT-5.4 mini,响应快成本低。长文档分析选 Gemini 3.1 Pro,百万 token 上下文。虽然确实省钱了,但核心原因是不同场景真的需要不同模型。
这次泄露之后我一直在想一件事。Anthropic 花了上亿美金和一堆顶尖工程师,99% 的代码量花在了 Harness 上。那我们做 AI 产品的时候,到底应该把精力放在哪?
我自己的答案越来越明确了:模型交给专业做模型的人,我们把外面那一圈搭好就行。