今天有人在 npm registry 上发现,Anthropic 发布的 Claude Code 包里附带了 .map 文件——source map。
这东西本来是给浏览器 debug 用的,附带进生产包是个失误。代价是:原始 TypeScript 源码可以被完整还原出来。
一时间社区里传开了,完整的源代码结构被扒了出来。
本着学习 coding agent 工程实现的目的,深入读一下这份代码,看看 Anthropic 是怎么构建一个生产级 coding agent 的。
先看项目结构 整个代码库遵循层级优先的组织方式——顶层目录对应架构子系统,不是按功能分组的。
kadaliao/claude-code (main 分支) ├── main.tsx # CLI 入口 ├── QueryEngine.ts # 核心查询编排引擎 ├── Tool.ts # 工具接口定义与类型 ├── Task.ts # 后台任务类型定义 ├── query.ts # 异步生成器查询循环 ├── tools.ts # 工具注册表 (40+ 内置工具) ├── commands.ts # 斜杠命令注册表 (80+ 命令) ├── context.ts # 系统/用户上下文组装 ├── ink.ts # 自定义 Ink 渲染引擎封装 │ ├── screens/ │ ├── REPL.tsx # 主交互式 REPL(约 5000 行) │ ├── Doctor.tsx # 诊断界面 │ └── ResumeConversation.tsx # 会话恢复界面 │ ├── components/ # 100+ React UI 组件 ├── hooks/ # 自定义 React Hooks ├── state/ # AppState 状态存储 ├── services/ # 后端服务模块 ├── tools/ # 各工具的具体实现 ├── commands/ # 各斜杠命令的实现 ├── skills/ # 动态技能加载系统 ├── tasks/ # 后台 Agent 任务类型 ├── entrypoints/ # 初始化与 SDK 入口 ├── bridge/ # 远程连接与移动端桥接 ├── coordinator/ # 协调器模式编排 ├── assistant/ # 助手(KAIROS)模式 ├── plugins/ # 插件系统 └── voice/ # 语音输入集成 几个马上能引起注意的点:
...