Claude Code:源码泄露事件与核心设计解析
2026年4月4日大约 4 分钟
Claude Code:源码泄露事件与核心设计解析
一、源码泄露原因
Claude Code 通过 npm 发布。正常上线前会压缩混淆;开发时为定位 BUG 会生成 Source Map(.map,代码与源码对照),上线本应删除。
2.1.88 版本问题:发布时打包工具 Bun 默认生成 Source Map,且未在配置中排除 .map 文件,约 59.8MB 的 map(含 sources 路径与 sourcesContent 源码片段)被发布到公开 npm。安全研究员发现后迅速传播。此前约去年 2 月也发生过类似问题,属于重复失误。
二、泄露内容概述
| 维度 | 说明 |
|---|---|
| 范围 | 客户端源码,约 1900+ TypeScript 文件、约 51 万行 |
| 涵盖 | Agent 循环引擎、40+ 内置工具、系统提示词组装、记忆与上下文压缩、权限管控、部分未上线功能 |
| 不含 | 服务端模型训练、API 后端核心逻辑 |
| 技术栈 | React Ink:用 React 写终端 UI |
三、架构分层(六层)
- CLI 与界面层:终端交互与展示
- Agent 循环引擎:核心决策,可理解为「大脑」
- 工具系统:内置工具 + MCP 扩展
- 记忆系统:缓解对话「断片」
- 上下文压缩:控制 token 与窗口
- 权限与安全:最底层约束
四、Agent 循环实现
- 形式:
while (true)的 ReAct 式循环 - 流程:每轮先做上下文压缩 → 调大模型 → 若返回
tool_use则执行工具 → 结果写入对话历史 → 进入下一轮,直到任务结束 - 通信:
queryModel处理请求、SSE 流式、token 统计 - 约束:循环处有「巫师守则」类注释,规范模型推理与行为
五、工具设计策略
- 注册:
tools.ts集中注册;工具清单需与 A/B 测试配置同步,否则影响系统提示词缓存 - ToolSearchTool:工具多时先给「名称 + 一句话摘要」,按需加载完整定义,省 token
- 工厂:
buildTool创建工具;isConcurrencySafe、isReadOnly默认 false(fail-closed:未声明则视为不安全)
读写分离与并发
- 默认最多约 10 路工具并发(可由环境变量调整)
- 连续只读可并发;遇到写操作需等待前置完成
- 参数解析失败等视为不安全;并发导致的上下文修改先排队,批次结束后顺序落盘
六、System Prompt 与缓存分裂
利用 Anthropic Prompt Cache,用「动态边界」切分:
| 部分 | 内容 | 缓存 |
|---|---|---|
| 静态 | 全局共用片段 | 多用户共享缓存 |
| 动态 | 当前时间、Git 状态、CLAUDE.md 等 | 按用户/会话单独加载 |
动态内容若误混入静态区会导致缓存失效;设计目的是降本。
七、内容检索策略
- 未采用主流 RAG 向量检索
- 采用:Grep 搜索记忆文件与历史对话
- 产品侧观点(如 Boris Cherny):由 AI 自主决定搜什么、怎么搜,效果可优于固定 RAG;Grep 实现简单、无索引过期负担
八、三层记忆架构
| 层 | 文件/载体 | 要点 |
|---|---|---|
| 第一层 | memory.md | 类似目录;每轮加载;约 200 行 / 25KB;偏指针;单行建议 ≤150 字符;超限时行数+字节双截断并加 Warning |
| 第二层 | 话题/专题文件 | 编码片段、约定、踩坑等;新对话由 Sonnet 等小模型最多挑 5 个相关文件;规则示例:用某工具时不一定加载其文档但要加载已知问题;不长期记源码(避免漂移误导) |
| 历史 | 特定格式文件 | Grep 关键词召回 |
不同「温度」的数据用不同管线管理。
九、五级上下文压缩
从轻到重:
- 剪裁:保留旧工具调用结构,精简正文
- 微压缩:大结果卸载到外部缓存
- 上下文折叠:中间过程摘要,保留关键信息
- 自动压缩:上下文接近上限时全量摘要
- 应急压缩:API 413 等触发;含断路器:连续失败若干次则停止,防止死循环
十、安全与实验功能
- Dangerously State Permissions(类比「游乐模式」)下仍有 影子分类器(如
Yellow Classifier.ts);工具调用多道关卡;Bash 等含大量规则 - Feature flag:按用户/环境灰度;路线图传闻包括长期运行助手、自动整理记忆、多 agent、语音、浏览器工具等
反蒸馏与内部模式(据泄露讨论)
- 反蒸馏:请求中注入假工具定义,干扰竞品蒸馏
- 卧底模式:内部仓贡献等场景默认行为(细节以官方为准)
十一、有趣细节
- 隐藏「数字宠物」等彩蛋,计划后续开放
- 硬编码提示减少 AI 无意义重复列目录
- 对启动速度等产品体验有细致优化
十二、总结与启示
Claude Code 未必依赖全新算法,而是把并发控制、读写分离、分层缓存、断路器等工程常识组合进 AI 产品;其客户端结构可作为 AI 应用架构学习材料。
说明:本文基于公开讨论与泄露事件的技术梳理,非法律或官方立场;正式合规与安全解读请以 Anthropic 官方为准。
