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 框架根本搞不定的硬核问题:
-
AI 一边”想”一边干活,你实时看进度 —— 不是傻等半天给你吐一坨 -
聊天记录越来越长,上下文窗口炸了怎么办 —— 用三层策略把”无限对话”塞进有限窗口 -
在浏览器里打字,命令却在你本地电脑跑 —— 一个 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 每个架构要点。
夜雨聆风