Claude Code的真正优势藏在引擎盖下面 | 推文 Claude Code的代码库近日遭到泄露,内部实现细节随之浮出水面。它比网页版聊天界面强的地方,不是模型本身,而是一整套精心设计的上下文管理和工具调用机制。换句话说,同样的模型,装进不同的软件框架,表现会差很远。 最近Claude Code的TypeScript源码在GitHub上短暂出现过,随即引发广泛讨论。在撇开法律问题之后,它揭示了一个值得深想的问题:为什么同一家公司的同一个模型,放在网页端和放在Claude Code里,用起来感觉像两个东西? 答案大概不在模型权重里。 Claude Code启动时会主动拉取当前git分支、最近提交记录、CLAUDE.md等信息,这是它比网页聊天"懂代码库"的起点。更有意思的是它的缓存策略:静态内容和动态内容之间有明确的边界标记,静态部分全局缓存,不用每次重算。这有点像操作系统里的写时复制,脏页才走慢路径,干净的页直接复用。 工具层面也有讲究。它没有直接通过Bash调grep,而是用一个专门的Grep工具,权限处理和结果收集都在自己掌控里。还有独立的Glob工具做文件发现,以及LSP接入,支持调用层级查找、引用跳转这些功能。网页端看代码更像读静态文本,Claude Code看代码更像真的在跑一个Language Server。 有观点认为,这些工具的加入本质上是把IDE的能力注入给了模型,而不是让模型自己去猜文件结构。 上下文膨胀是代码Agent最容易翻船的地方。反复读文件、长日志、来回对话,context很快就满了。Claude Code在这里做了几件事:文件读取去重,检测文件没有变化就不重新处理;工具返回的结果如果太大,写到磁盘,context里只放预览加文件引用;超长context自动触发压缩和摘要。 这些加在一起,本质上是在做一个手动管理的内存层级,告诉模型什么值得放在寄存器里,什么扔到硬盘就好。 还有一个细节:Claude Code维护一个结构化的Markdown会话记录,包含当前状态、任务说明、涉及的文件和函数、错误与修正、工作日志等部分。这个设计很像人类程序员写scratch pad的习惯,只是被系统化地内置进去了。 子Agent和fork机制倒不新鲜,fork出来的Agent复用父级缓存,同时感知可变状态,可以在不污染主循环的情况下跑摘要、提取记忆或做后台分析。 原作者有个判断,大概70%可信:如果把DeepSeek或其他模型塞进这套框架里,稍作适配,编程表现也会大幅提升。模型是硬件,这套软件框架才是系统软件,性能由两者共同决定。 这留下一个没解决的问题:如果框架比模型更关键,那未来coding agent的竞争,会不会最终变成一场上下文管理工程的军备赛?