Claude Code源码解读:学会用工具、学会向AI提问(三)
一、源码泄露背后的冰山:庞大且精密的工具系统
2026 年 3 月,Claude Code 因意外泄露了约 51 万行 TypeScript 源码。这次泄露让我们看清了顶级 Agent 系统的真实骨架:它远比大多数人想象的复杂。
它不是在“回答问题”,而是在“编排工具”。你的一次简单提问,在底层可能触发数十次工具调用和 Hook 钩子。
Claude Code 拥有一个庞大且纷繁的文件目录系统:
src/ (~1,900 文件, 512,000+ 行)
├── main.tsx # 入口 (Commander.js CLI + React/Ink 渲染)
├── commands.ts # 命令注册表 (100+ 命令)
├── tools.ts # 工具注册表 (38+ 工具)
├── Tool.ts # 工具类型定义
├── QueryEngine.ts # LLM 查询引擎 (~46K 行)
├── query.ts # 主查询循环 (~1,729 行)
├── context.ts # 系统/用户上下文收集
├── cost-tracker.ts # Token 成本追踪
│
├── commands/ # 斜杠命令实现 (100+ 个)
├── tools/ # 工具实现 (38+ 个)
├── components/ # Ink UI 组件 (~140 个)
├── hooks/ # React Hooks + 权限 Hooks
├── services/ # 外部服务集成
│ ├── api/ # Anthropic API 客户端
│ ├── mcp/ # MCP 协议集成
│ ├── lsp/ # LSP 协议集成
│ ├── compact/ # 上下文压缩
│ ├── extractMemories/ # 记忆提取
│ ├── SessionMemory/ # 会话记忆
│ ├── tools/ # 工具执行 & 编排
│ └── analytics/ # GrowthBook + 遥测
├── constants/ # 系统提示词 + 常量
├── bridge/ # IDE 集成桥接
├── coordinator/ # 多智能体协调器
├── plugins/ # 插件系统
├── skills/ # 技能系统
├── memdir/ # 持久记忆系统
├── tasks/ # 任务管理系统
├── state/ # 状态管理
├── remote/ # 远程会话
├── server/ # Server 模式
├── vim/ # Vim 模式 (完整状态机)
├── voice/ # 语音输入
├── keybindings/ # 快捷键系统
├── screens/ # 全屏 UI (Doctor, REPL, Resume)
├── schemas/ # Zod 配置 Schema
├── migrations/ # 配置迁移
├── query/ # 查询管道子模块
├── outputStyles/ # 输出样式
└── buddy/ # 伴侣精灵 (彩蛋)
系统命令与工具库:
‧ /mcp (跨协议协作) ‧ /memory (长期记忆) ‧ /permissions (权限)
‧ /hooks (生命周期) ‧ /plugin (插件) ‧ /skills (封装技能)
‧ /tasks (任务拆解) ‧ /plan (架构规划) ‧ /review (审查)
‧ /status (状态) ‧ /model (模型) ‧ /output-style (输出)
| 层级 | 组件 | 功能 |
|---|---|---|
| 系统层 | System Prompt | 身份定义、安全规则、工具规范(Agent 的“宪法”) |
| 模式层 | Coordinator/Worker | 多智能体编排模式切换,支持任务递归嵌套 |
| 工具层 | 40+ Tools | 文件读写、代码搜索、命令执行、Web 抓取 |
| 钩子层 | 26+ Hooks | 在工具执行前后注入逻辑,确保流程确定性 |
| 项目层 | CLAUDE.md | 项目级持久记忆,解决“新员工入职”的信息差 |
| 记忆层 | 三层记忆系统 | 短期压缩、中期萃取、长期整合的渐进式管线 |
“你以为你只是发了一条消息,其实你启动了一台拥有 40 多双手、20 多个监控点的自动化机器。”
二、提问的四重境界:个人实战心得
基于对 Claude Code 的设计哲学理解和实际使用经验,个人觉得开发者与 AI 的协作能力可以粗略划分为四重境界:
1. 第一重:盲盒式提问(小白入行)
这是最底层、也是最普遍的“小白”状态。
- 特征:无背景、无品牌、无先验信息。
- 典型表现:
“给我写一份品牌推广报告。”
“帮我写个网站。” - 问题本质:把 AI 当成带了某种“超能力”的算命先生。在这种境界下,AI 只能基于最泛化的语料库输出“正确的废话”。
2. 第二重:指令式提问(遥控车模式)
比第一重稍微进阶,开始介入细节,但由于缺乏全局视角,陷入了单步操作的泥潭。
- 特征:一步一步指挥,像操控遥控车一样。
- 典型表现:
“在第 42 行加一个 if 语句。”
“把这里改成红色,再改回去。” - 问题本质:短路了 Agent Loop(代理循环)。你剥夺了 AI 自主探索、规划和验证的能力,把自己变成了系统的瓶颈。
3. 第三重:意图式提问(委托模式)
你开始意识到 AI 是一个具备自主能力的资深工程师。
- 特征:清晰描述目标(Goal),会简单使用 SKILLS、知识库 或一些 MCP。
- 典型表现:
“启动一个研究团队:研究员负责调研竞品获客方式,分析师提取
ck知识库的品牌特性,策略师基于以上输出制定拓客方案。”
“重构认证模块,调用jose库并参考CLAUDE.md规范。” - 关键要素:
- 目标明确:要做什么(What),而非怎么做(How)。
- 工具前置:明确告诉 AI 该调用哪些“技能”或“外部接口”。
- 信任机制:让 AI 进入
Plan Mode(规划模式),它先扫描结构、出方案,你审批后它自主执行。
4. 第四重:系统式提问(编排模式)
这是最高境界,你不再是“操作员”,而是“架构师”,拥有类似 Claude Code 的系统级思维。
- 特征:自我驱动的工具化进化。不仅是灵活编排,更是能“创造工具”——整理个人代码习惯与逻辑,定义专属 Skills,开发专属 MCP,或构建属于自己的领域知识库。
- 典型表现:
“为该重构任务定义一个监控 Hook,实时捕获所有 Bash 执行失败的信号;同时通过
/plugin注入自定义安全扫描,若发现未授权的文件读写立即中断并报告状态。”
“这是我的编码习惯和逻辑,请据此为我生成一个专属的refactor-skill,并在后续重构中自动调用。”
当然,最高境界一向难以修炼,
我举一个这篇文章4亿token买来5个教训:让6个AI Agent连写4天代码发生了什么?的案例
他设计了一个 6 人团队:
- 1 * Lead Agent 负责方案设计、任务拆分、任务分配、交付质量把关、根据实现调整优化技术方案等,对技术方案和最终实现效果负责;
- 3 * Worker Agent 根据 Lead Agent的分配,实现具体任务。采用Git Worktree ,解决多 Agent 并行时代码互踩的问题,同时可以快速扩展,支持更多agent并行;worker 实现任务后交由 Lead Agent确认实现和技术方案是否一致。
- 1 * Gatekeeper 对合入master的代码做审查,拒绝时会写具体的反馈文件,Worker 可以在原代码副本里修复后重新提交;另外,在每轮结束后经验会自动沉淀到记忆文件,下一轮 Lead Agent可以根据每一轮的经验,优化技术方案;
- 1 * Watchdog 作为系统负责人,监控所有运行的环节,如果脚本异常、日志异常,会根据异常信息优化或者修复脚本,然后重跑脚本,保证整个系统平稳运行。

然后经过了几天的尝试,各种bug:
| 天数 | 关键事件 |
|---|---|
| Day 1 | 8个版本连环崩溃:24分钟内3次崩溃,代码0合入 |
| Day 2 | 卡死 11.6 小时:Agent 全部卡在等 lock,Watchdog 68 次巡检报告"正常" |
| Day 3 | 0字节根因发现:流式日志取代 /dev/null,14 个模块自动合入 |
| Day 4 | TS 重写:Bash → TypeScript,31 文件 / 3600 行,测试 50 → 218 (+336%) |
痛定思痛的作者不得不回退到“头疼治头,脚疼治脚”的过程:
| 故障 | 逼出来的能力 |
|---|---|
| API 错误走 stdout 未被捕获 | 双通道检测 |
| Bash 版本不兼容 | 兼容方案 |
| 环境变量连锁污染 | 三处防御性清理 |
| 双实例竞争 + 无超时 + 11.6h 卡死 | 互斥锁 + 双超时 |
| stdout 全缓冲导致 0 字节误杀 | 流式日志 + 多维心跳 |
所以看得出来,一个好的系统Agent,要打的补丁也不少,而且要兼顾的“胶水代码”更是细枝末节的需要一堆
三、普通开发者咋办
面对如此复杂的系统,普通 Vibe Coding 使用者我感觉不用直接进入“系统提问”阶段,
我觉得第三重就比较好,大概就是:
学会使用工具 + 创造一些自己用的顺手的小工具 + 学会“结构化表达”需求
1. 学会“结构化表达”需求
不同项目可能不一样,感觉可以积累,
从“怎么做”转向“做什么”。
- ❌ 错误做法:“打开文件 A,把第 10 行的函数名改成 B。”
- ✅ 正确做法:“重构这个模块,让函数命名符合项目规范。”
推荐的需求模板:
- 任务目标:[清晰描述达成结果]
- 技术约束:[框架、库、规范]
- 验收标准:[如何确认任务完成,如跑通测试]
- 参考资料:[CLAUDE.md、相关文档]
2. 积累自己用顺手的工具
- 为自己准备的顺手的SKILLS,不同的项目都可以使用得到,或者自己创造一些skills;
- 一些项目开发的基本规则,写成
rule.md,并加入到vibe coding的工具里面; - 找一款自己喜欢的vibe coding的工具,比如trae,codebuddy,claude code,qoder,workbuddy,etc.
五、总结:从 Prompt 到 Harness
个人感觉接下来写代码的工作大部分肯定交给vibe coding工具,那么人人都是产品经理的时代变成现实;
谁可以更好的提需求 + 有创意/想法,可能会更加有竞争力。
在这篇文章对话朱广翔 - 人人都能coding了,软件会消失吗?的一段话:
把AI用好,这样AI就会助我们成功。其实就是说我们人的发展要和AI保持一个15度的夹角。什么意思呢?我们人和AI不能正交,正交的话AI进步了你还在原地,你没有受益。但人又不能站在AI的延长线上,比如AI擅长写代码,你就不要写代码了,因为总有一天你会被它取代。你总要有点东西是它不能取代的。保持一个15度夹角,这夹角就是你的专业知识所在。比如你是学法律的、学金融的,你有自己的taste,或者你是懂艺术的。
参考文献
更多推荐


所有评论(0)