Skip to content

Commit 2dcd74c

Browse files
Bill-Billionclaude
andcommitted
feat: add incremental change tables to all 19 chapter READMEs
Each chapter (s02-s19) now has a "相对 sXX 的变更" table showing exactly what was added compared to the previous chapter — new tools, new functions, new data structures, and agent_loop changes. This restores the incremental "diff" feel from the original docs/ version, where readers could see at a glance "what did this chapter add?" without comparing code files. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 9262ccd commit 2dcd74c

23 files changed

Lines changed: 4101 additions & 3 deletions

File tree

DEV-SPEC-PHASE5.md

Lines changed: 3086 additions & 0 deletions
Large diffs are not rendered by default.

UPDATE-PLAN.md

Lines changed: 339 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,339 @@
1+
# Session 更新计划
2+
3+
## 原则
4+
5+
- 每章开独立 Explore Agent 深入读 CC 源码,拿到具体的字段名、行号、常量值、算法逻辑
6+
- 源码分析写入 `<details>` 折叠,不污染教学主线
7+
- 深入但不堆砌——只保留对理解核心概念有帮助的差异点
8+
- 简单章(概念足够直观)分析可以轻量,复杂章(机制密集)必须全量
9+
10+
## 更新完成标准
11+
12+
每章更新后应满足:
13+
- [ ] README 主线无 CC 内部工程术语(tengu_*、GrowthBook 等)
14+
- [ ] `<details>` 折叠中有基于源码行号的逐项对照
15+
- [ ] 关键差异点有"教学版为什么简化"的说明
16+
- [ ] 复杂章有 SVG 图,简单章 code 够用
17+
- [ ] code.py 可独立运行
18+
19+
---
20+
21+
## Batch 1: 已有深度的章(微调)
22+
23+
### s01 Agent Loop ✅ 已完成
24+
- query.ts 1729 行全量分析
25+
- State 11 字段 + 10 退出路径 + 7 继续路径
26+
- 改动:无需
27+
28+
### s02 Tool Use ✅ 已完成
29+
- Tool.ts + toolOrchestration.ts + StreamingToolExecutor.ts 分析
30+
- isConcurrencySafe vs isReadOnly 修正
31+
- 并发对比 SVG
32+
- 改动:无需
33+
34+
### s08 Context Compact ✅ 已完成
35+
- compact.ts 1705 行 + autoCompact.ts 351 行全量分析
36+
- 5 层修正为 4 层管线 + 应急
37+
- 14 个精确常量
38+
- 改动:无需
39+
40+
---
41+
42+
## Batch 2: 亟待深化的复杂章(深度分析 + 重写 CC 对照)
43+
44+
### s03 Permission System
45+
46+
**CC 源码位置**:
47+
- `src/Tool.ts` — checkPermissions(), PermissionResult 类型
48+
- `src/services/tools/toolExecution.ts` — checkPermissionsAndCallTool() 完整管线
49+
- `src/tools.ts` — canUseTool callback, permissionContext
50+
- `src/query.ts` — permission 在循环中的调用点
51+
- YoloClassifier / auto-approve 逻辑
52+
53+
**分析重点**:
54+
1. PermissionResult 的完整类型定义(allow/deny/ask 三种决策)
55+
2. checkPermissions 的调用时机和参数
56+
3. canUseTool callback 的签名和作用
57+
4. 权限决策管线的精确顺序(schema → validateInput → hooks → permission → call)
58+
5. YoloClassifier 如何自动批准
59+
6. permission bubbling 机制
60+
61+
**更新内容**:
62+
- [ ] 重写 `<details>` 折叠:完整 PermissionResult 类型 + 管线顺序 + 行号
63+
- [ ] 补充 permission bubbling 概念
64+
- [ ] 术语小抄补上
65+
66+
---
67+
68+
### s04 Hooks System
69+
70+
**CC 源码位置**:
71+
- `src/services/tools/toolHooks.ts` (650 行) — PreToolUse/PostToolUse 钩子执行
72+
- `src/query.ts` — stop hooks, hook_stopped_continuation
73+
- `src/hooks/` 目录 — 各类 React hooks(与教学无关),但 stop hooks 相关的逻辑在 query.ts
74+
- `src/services/compact/postCompactCleanup.ts` — 压缩后钩子清理
75+
76+
**分析重点**:
77+
1. PreToolUse hooks 的完整执行流程和返回值类型
78+
2. PostToolUse hooks 的触发时机
79+
3. Hook 返回值如何影响工具执行(preventContinuation, updatedInput, permissionDecision)
80+
4. Stop hooks 的触发时机和处理逻辑
81+
5. 钩子注册和优先级机制
82+
83+
**更新内容**:
84+
- [ ] 重写 `<details>` 折叠:PreToolUse/PostToolUse/Stop hooks 的完整类型 + 触发时机 + 行号
85+
- [ ] 教学版的 register_hook/trigger_hooks 与 CC 的差异对比
86+
87+
---
88+
89+
### s09 Memory System
90+
91+
**CC 源码位置**:
92+
- `src/services/extractMemories/extractMemories.ts` (615 行) — 记忆提取
93+
- `src/services/extractMemories/prompts.ts` — 提取 prompt
94+
- `src/services/SessionMemory/sessionMemory.ts` (495 行) — 会话记忆
95+
- `src/services/SessionMemory/prompts.ts` — 记忆 prompt
96+
- `src/services/autoDream/consolidationLock.ts` — 巩固锁
97+
- `src/query.ts` — 记忆加载和提取的调用点
98+
99+
**分析重点**:
100+
1. MemorySelector 的筛选算法(embedding 相似度 vs 关键词)
101+
2. ExtractMemories 的触发时机(stop hook 中,不是 autoCompact 后)
102+
3. DreamConsolidator 的触发频率和逻辑
103+
4. 记忆的 JSON 结构(type、tags、timestamp、expires_at)
104+
5. session memory vs user memory 的区分
105+
6. 记忆文件存储位置和格式
106+
107+
**更新内容**:
108+
- [ ] 重写 `<details>` 折叠:三子系统的具体触发时机 + 数据结构 + 行号
109+
- [ ] 补充 session memory compact(s08 中回撤的那个机制)
110+
- [ ] 术语小抄补上
111+
112+
---
113+
114+
### s11 Error Recovery
115+
116+
**CC 源码位置**:
117+
- `src/query.ts` — 全部恢复逻辑:
118+
- max_tokens escalation (8K→64K)
119+
- max_output_tokens recovery (续写提示,最多 3 次)
120+
- collapse_drain_retry
121+
- reactive_compact_retry
122+
- stop_hook_blocking
123+
- token_budget_continuation
124+
- fallback model 切换
125+
- 指数退避
126+
127+
**分析重点**:
128+
1. 7 种 Continue 路径的精确触发条件和行号(部分已在 s01 中覆盖)
129+
2. 指数退避的具体参数(BASE_DELAY_MS, MAX_RETRIES, jitter)
130+
3. fallback model 的切换逻辑
131+
4. max_tokens escalation 的单次限制
132+
5. reactiveCompact vs autoCompact 的触发差异
133+
134+
**更新内容**:
135+
- [ ] 重写 `<details>` 折叠:四条恢复路径的精确条件 + 常量 + 行号
136+
- [ ] 添加错误恢复决策树 SVG
137+
- [ ] 术语小抄补上
138+
139+
---
140+
141+
### s15 Agent Teams
142+
143+
**CC 源码位置**:
144+
- `src/hooks/useSwarmInitialization.ts` (81 行) — Team/Swarm 初始化
145+
- `src/hooks/useSwarmPermissionPoller.ts` (330 行) — 权限轮询
146+
- `src/hooks/useInboxPoller.ts` (969 行) — 收件箱轮询
147+
- `src/hooks/useTeammateViewAutoExit.ts` (63 行) — 队友自动退出
148+
- `src/Task.ts` — teammate 相关的 task 逻辑
149+
- `src/query.ts` — teammate idle notification, TaskCompleted hooks
150+
151+
**分析重点**:
152+
1. Teammate 的生命周期管理
153+
2. 收件箱的 JSONL 格式和读写锁
154+
3. 消息总线的实现方式
155+
4. permission bubbling 在 team 中的实际应用
156+
5. teammate 的 idle 通知机制
157+
158+
**更新内容**:
159+
- [ ] 重写 `<details>` 折叠:team 拓扑 + 消息格式 + 权限冒泡 + 行号
160+
- [ ] 术语小抄补上
161+
162+
---
163+
164+
### s19 MCP Plugin
165+
166+
**CC 源码位置**:
167+
- `src/services/mcp/client.ts` (3348 行) — MCP Client 核心
168+
- `src/services/mcp/auth.ts` — MCP 认证
169+
- `src/services/mcp/config.ts` — MCP 配置
170+
- `src/services/mcp/channelPermissions.ts` (240 行) — 通道权限
171+
- `src/services/mcp/channelNotification.ts` — 通道通知
172+
- `src/services/mcp/channelAllowlist.ts` — 通道白名单
173+
174+
**分析重点**:
175+
1. MCP Client 的连接生命周期(stdio/SSE/HTTP 三种 transport)
176+
2. tools/list 和 tools/call 的 JSON-RPC 协议细节
177+
3. Channel 机制——MCP server 如何反向给 Agent 发消息
178+
4. 工具池合并的精确算法
179+
5. MCP tool 的命名规则(mcp__server__tool)
180+
181+
**更新内容**:
182+
- [ ] 重写 `<details>` 折叠:MCP 协议细节 + transport 类型 + channel 机制 + 行号
183+
- [ ] 术语小抄补上
184+
185+
---
186+
187+
## Batch 3: 中等复杂章(定向分析 + 补充 CC 对照)
188+
189+
### s06 Subagent
190+
191+
**CC 源码位置**:
192+
- `src/tools/AgentTool/` — AgentTool 定义
193+
- `src/query.ts` — fork mode, fresh messages[]
194+
- `src/Task.ts` — 子 Agent 的 task 绑定
195+
196+
**分析重点**:
197+
1. fork mode vs fresh mode 的实际差异
198+
2. prompt cache 在子 Agent 中的共享机制
199+
3. 子 Agent 的上下文限制
200+
201+
**更新内容**:
202+
- [ ] 补充 CC 源码对照折叠
203+
- [ ] 术语小抄
204+
205+
### s07 Skill Loading
206+
207+
**CC 源码位置**:
208+
- `src/setup.ts` — skill loading 初始化
209+
- `src/query.ts` — skill 注入点
210+
- `src/tools.ts` — skill 工具的注册
211+
212+
**分析重点**:
213+
1. Skill 的目录结构和 manifest 格式
214+
2. 两级加载的具体实现
215+
3. Skill 内容注入方式(system prompt vs tool_result)
216+
217+
**更新内容**:
218+
- [ ] 补充 CC 源码对照折叠
219+
- [ ] 术语小抄
220+
221+
### s10 System Prompt
222+
223+
**CC 源码位置**:
224+
- `src/constants/systemPromptSections.ts` (68 行) — 所有 prompt section
225+
- `src/constants/prompts.ts` (914 行) — 完整 prompt 模板
226+
- `src/context.ts` (189 行) — 上下文组装
227+
- `src/query.ts` — getSystemContext/getUserContext 调用点
228+
229+
**分析重点**:
230+
1. system prompt 的 section 列表和顺序
231+
2. 运行时组装的逻辑(哪些始终加载,哪些按需)
232+
3. memoize 缓存机制
233+
234+
**更新内容**:
235+
- [ ] 补充 CC 源码对照折叠
236+
- [ ] 术语小抄
237+
238+
### s12 Task System
239+
240+
**CC 源码位置**:
241+
- `src/utils/tasks.ts` (862 行) — Task 数据结构和 CRUD
242+
- `src/tools/TaskCreateTool/TaskCreateTool.ts` — 创建任务
243+
- `src/tools/TaskListTool/TaskListTool.ts` — 列出任务
244+
- `src/tools/TaskGetTool/TaskGetTool.ts` — 获取任务
245+
- `src/tools/TaskUpdateTool/TaskUpdateTool.ts` — 更新任务
246+
- `src/hooks/useTaskListWatcher.ts` (221 行) — 任务看板监听
247+
248+
**分析重点**:
249+
1. TaskRecord 的完整字段(id, subject, status, owner, blockedBy, ...)
250+
2. 任务状态机的所有合法转换
251+
3. claim task 的并发安全机制
252+
4. 任务文件存储格式
253+
254+
**更新内容**:
255+
- [ ] 补充 CC 源码对照折叠
256+
- [ ] 术语小抄
257+
- [ ] 任务状态机 SVG
258+
259+
### s13 Background Tasks
260+
261+
**CC 源码位置**:
262+
- `src/query.ts` — pendingToolUseSummary, notification queue, background execution
263+
264+
**分析重点**:
265+
1. background task 的线程模型
266+
2. notification queue 的注入时机
267+
3. pendingToolUseSummary 的生成(Haiku 后台摘要)
268+
269+
**更新内容**:
270+
- [ ] 补充 CC 源码对照折叠
271+
- [ ] 术语小抄
272+
273+
### s14 Cron Scheduler
274+
275+
**CC 源码位置**:
276+
- `src/hooks/useScheduledTasks.ts` (139 行)
277+
- CC 的 cron job 存储和触发机制
278+
279+
**分析重点**:
280+
1. durable vs session-only 的持久化方式
281+
2. cron 表达式的解析和匹配算法
282+
3. 调度器在主循环中的集成点
283+
284+
**更新内容**:
285+
- [ ] 补充 CC 源码对照折叠
286+
- [ ] 术语小抄
287+
288+
---
289+
290+
## Batch 4: 概念章或教学虚构章(轻量分析)
291+
292+
### s05 TodoWrite
293+
- CC 中已被 Task 系统取代
294+
- [ ] 补充说明 CC 的演进路径
295+
- [ ] 术语小抄
296+
297+
### s16 Team Protocols
298+
- shutdown_request/response 协议在 query.ts 中的实现
299+
- [ ] 轻量 CC 对照
300+
301+
### s17 Autonomous Agents
302+
- 来新璐指出"真实 CC 里没有这套",是教学假设
303+
- [ ] 开篇诚实标注,不需要 CC 源码分析
304+
- [ ] 术语小抄
305+
306+
### s18 Worktree Isolation
307+
- git worktree 命令的使用在 setup.ts/tools.ts 中
308+
- [ ] 轻量 CC 对照
309+
310+
---
311+
312+
## 执行顺序
313+
314+
```
315+
Batch 1 (已完成): s01, s02, s08
316+
317+
Batch 2 (深度分析, 本周):
318+
Day 1: s03 Permission + s04 Hooks (并行跑 2 个 Agent)
319+
Day 2: s09 Memory + s11 Error Recovery (并行跑 2 个 Agent)
320+
Day 3: s15 Agent Teams + s19 MCP (并行跑 2 个 Agent)
321+
322+
Batch 3 (定向分析, 后续):
323+
s06 Subagent + s07 Skill Loading (并行)
324+
s10 System Prompt + s12 Task System (并行)
325+
s13 Background + s14 Cron (并行)
326+
327+
Batch 4 (轻量, 最后):
328+
s05 TodoWrite + s16 Team Protocols (并行)
329+
s17 Autonomous + s18 Worktree (并行)
330+
```
331+
332+
## 总工作量估算
333+
334+
| Batch | 章数 | 每章预估 |
335+
|-------|------|---------|
336+
| Batch 2 深度 | 6 章 | 2-3 Agent 调用 + 编辑 |
337+
| Batch 3 定向 | 8 章 | 1-2 Agent 调用 + 编辑 |
338+
| Batch 4 轻量 | 4 章 | 直接编辑 |
339+
| **合计** | **18 章**(s01/s02/s08 已完成) | |

0 commit comments

Comments
 (0)