乐于分享
好东西不私藏

Claude Code 源码泄露!小哆啦带你扒光它最牛的三个骚操作

本文最后更新于2026-03-31,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

Claude Code 源码泄露!小哆啦带你扒光它最牛的三个骚操作

就几个小时前,一个叫 Chaofan Shou 的老哥在 X 上爆料:Anthropic 的 Claude Code 完整源码,居然通过 npm 包里的 source map 文件给漏出来了。对,你没看错 —— 一个价值几十亿美金的 AI 编程工具,源码就这么”赤裸裸”地躺在 GitHub 里,

小哆啦第一时间冲了进去,啃完 300 多个源文件。结论是:这玩意儿最变态的不是 AI 本身,而是工程架构写得太骚了。 今天配合三张哆啦A梦连环画,带你搞懂里面最硬核的三个设计。


这波”泄密”是怎么回事?

简单说:Anthropic 发布 Claude Code 的 npm 包时,不小心把 source map 文件打包进去了。source map 本来是给调试用的——它能把压缩混淆后的代码,一一映射回原始 TypeScript 源码。于是 Chaofan Shou 一 npm install,完整的未混淆源码就到手了。

Anthropic 大概率是构建流程里忘了加 --no-sourcemap 之类的开关。这种事在开源社区不算罕见,但对一个商业闭源产品来说——嗯,社死级别的。

不过对我们吃瓜群众来说,这可是天赐的学习材料。闲话少说,直接开扒。


Claude Code 解决了三个别家 Agent 框架根本搞不定的硬核问题:

  1. AI 一边”想”一边干活,你实时看进度 —— 不是傻等半天给你吐一坨
  2. 聊天记录越来越长,上下文窗口炸了怎么办 —— 用三层策略把”无限对话”塞进有限窗口
  3. 在浏览器里打字,命令却在你本地电脑跑 —— 一个 CLI 里藏了一整套分布式系统

每个问题的解法,都让我直呼内行。一个一个来。


一、流式流水线:回转寿司式的执行引擎

痛点

大部分 AI Agent 的工作模式:

你提问 → AI 思考(转啊转啊转...) → "叮!" 一次性吐出所有内容

但 Claude Code 野心大得多——它不光要逐字输出回复,还要在输出的同时调用工具。AI 嘴里说着”我来看看你的代码”,手上已经在 cat 文件、跑 bash 命令了,结果直接实时推给你看。

核心难题:AI 在说话、工具在并发跑、UI 在渲染——三条线同时推进,怎么不打架?

骚操作来了

一个 TypeScript 特性就搞定了:async generator(异步生成器)。整条数据链被做成一条传送带——

每个环节”做好一个就往下传一个”,不用等前面全部搞完。就像回转寿司店:厨师捏好一盘就扔上传送带,你不用等全部菜上齐才动筷子。

四个绝妙之处:

1) 天然限速,不用操心背压。 UI 渲染慢了?传送带自动暂停等它。生成器的天性就是”你不 pull 我就不 push”——零额外代码实现流控。

2) 工具并行跑,不等 AI 说完。 AI 一边吐文字,Claude Code 已经在后台同时跑好几个工具了(比如并行执行 3 个 Bash 命令)。更骚的是——

3) 一个工具崩了,其他的照跑。 它搞了个三层取消树

某个 Bash 命令挂了?只干掉它和同批兄弟,不会把整个对话炸了。session 稳如老狗。

4) 服务器过载也不慌。 API 返回 529报错?传送带内部偷偷重试——旧流发个”墓碑信号”(tombstone),新流无缝接上。你作为用户只觉得”AI 停顿了一下”,完全无感。


二、三层记忆压缩:有限窗口装无限对话的黑魔法

痛点

所有大模型都有一个死穴:上下文窗口有上限。你跟 Claude Code 聊 30 轮,中间读了 20 个文件、跑了 50 条命令——这些历史记录像塞满了的文件柜,再塞就炸了。直接砍掉最早的对话?那等于失忆。

三层压缩术

Claude Code 的骚在于:它不是用一种方式硬扛,而是分三层、各管各的

第一层:微压缩(Micro-Compact)—— 做完题就扔草稿纸

每次工具执行完,把之前那些旧的工具输出截了。你 5 分钟前 cat 读取的文件内容?不好意思,过期了,只留最新的。

就像做数学题——中间的演算过程写完就扔,卷子上只留最终答案。

一个细节:它记住”上次截到哪了”,下次只处理新增部分,不做重复劳动。

第二层:自动压缩(Auto-Compact)—— 叫个实习生写会议纪要

当 token 数快要撑爆窗口(大约是窗口大小 – 33K 留白),Claude Code 会 fork 出一个轻量小代理,唯一任务:读完所有对话历史,产出一份浓缩总结。

这份总结覆盖 9 个维度:用户意图、涉及文件、遇到的报错、当前进度、下一步计划……然后用这几百字的总结替掉厚厚一摞原始对话

骚的是:这个”实习生”跟主 AI 共享工具和项目配置(所以它看得懂你的代码),但被限制只能跑 1 轮对话、不能再召唤子代理——防止套娃。

第三层:会话记忆(Session Memory)—— 下班前写日报

后台定期提取关键信息(做了什么决策、卡在哪、进展到哪),写进一个 MEMORY.md 文件。

下次你敲 /resume 继续干活,这个文件被重新注入上下文——今天的 Claude Code 记得昨天你干了啥

还有个保险丝

压缩本身连续失败 3 次(比如总结太长还是超限了),系统有个熔断器直接拉闸,避免陷入”超限 → 压缩失败 → 再超限 → 再失败”的死循环。

一句话总结:微压缩省空间、自动压缩保连贯、会话记忆跨时空——三层各管一摊,有限窗口装下无限对话。


三、Bridge 远程控制:浏览器 → 互联网 → 你的电脑,一条龙

痛点

Claude Code 本来就是个跑在终端里的本地工具。但 Anthropic 玩了个大的:让你在 claude.ai 网页上打字,命令在你自己电脑上跑

仔细想想——你的浏览器和你的电脑之间隔着整个互联网,消息要穿过 Anthropic 的服务器中转。而且要保证:

  • 消息顺序不能乱
  • 断线要能自动重连
  • 认证 token 快过期了要悄悄续上
  • 传输协议要能热切换

这就是一个正经分布式系统要解的全套问题——结果被塞进了一个 CLI 里。

四招精准解题

整体架构:

四个子问题,四个精准解法:

1) FlushGate —— 30 行代码,消息不乱序

Bridge 连上服务器后,先把本地历史消息同步上去。但同步过程中用户可能在网页上又发了新消息——如果不处理,消息就乱了。

解法:开个”闸门”。同步历史时新消息排队等着,历史全部发完后再按顺序放行。不到 30 行代码,搞定一个经典的分布式排序问题。

2) 双轨传输 + 序列号 —— 协议切换零丢失

系统同时支持 v1(WebSocket)和 v2(SSE + HTTP POST)两套传输。切换时(比如 token 刷新后),旧传输把”我发到第 N 条了”这个序列号交给新传输,服务器从第 N+1 条接着发——不重复、不遗漏

3) JWT 提前 5 分钟续命 —— 不等过期再抢救

认证 token 不是等到过期了再刷新(那时候黄花菜都凉了),而是提前 5 分钟主动续期。还有个”代际计数器”:快速重连导致多个刷新任务同时跑时,只有最新一代生效,过时的自动丢弃——防竞态。

4) 断线重连 —— 序列号对上就行

网络断了?重连后靠序列号对齐:发过的不重发,没发的补上。用户完全无感。

一句话:一个 CLI 里塞了双向路由、认证续期、传输热切、断线重连——每个子问题的解法都极简,没一行多余代码。


扒完了,说说感受

读完这些”泄露”的源码,最让我震撼的不是”AI 多聪明”,而是这帮工程师真 TM 会写系统

  • 流式流水线:选对了一个抽象(生成器),复杂问题直接降维
  • 三层压缩:面对硬约束(token 上限),不硬刚,分三层各个击破
  • Bridge:麻雀虽小五脏俱全的分布式系统,每个组件不多也不少

三个设计的共性:零过度工程。每个抽象只解决一个真实的、绕不过去的问题。不多,不少,刚刚好。

这就是好架构的味道,光是闻着就“陶醉不已”了。


基于 Claude Code npm source map 泄露源码深度阅读。完整技术分析见 Github仓库

插图为哆啦A梦连环画风格,用大雄和哆啦A梦的日常帮你 get 每个架构要点。