File tree Expand file tree Collapse file tree
docs/guidebookv2/volume-1 Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -52,7 +52,8 @@ flowchart LR
5252 O --> E[execution]
5353 E --> C[tool.call]
5454 C --> R[tool_result]
55- R --> RT[结果回流 runtime]
55+ R --> A[当前 turn 内本地累积结果]
56+ A --> RT[assistant + tool_results 组织下一轮 continuation]
5657 RT --> M2[模型继续当前 turn]
5758```
5859
@@ -133,6 +134,26 @@ execution 最后还要落到具体对象上。最典型的,就是 `tool.call`
133134
134135这也正好接回第三篇的判断:agent turn 之所以是闭环,不是因为做过一个动作,而是因为动作结果会重新回到 runtime 里。
135136
137+ 这里还有一个很容易误读的点,最好顺手压清:
138+
139+ > ** ` tool_result ` 回流到 runtime,不等于某个工具一完成,系统就立刻单独再打一轮模型请求。**
140+
141+ Claude Code 更接近这样一条链:
142+
143+ 1 . assistant 先在当前输出流里产出 ` tool_use `
144+ 2 . runtime 可以边流边执行工具,也可以边拿到已完成的 ` tool_result `
145+ 3 . 这些结果会先被收进当前 turn 的本地消息状态
146+ 4 . 然后再按下一轮 continuation 的组织方式,一起送回模型继续当前工作
147+
148+ 所以这里真正成立的,不是“每个 result 立刻递归打一次模型”,而是:
149+
150+ - ** 对执行层来说** ,工具可以流式启动、并发完成、逐步收结果
151+ - ** 对模型回喂层来说** ,结果不是 ` result-by-result ` 地即时递归打模型,而是回到下一轮 continuation 的统一组织里
152+
153+ 更短地说:
154+
155+ > ** 工具执行可以边流边跑,但模型 continuation 仍然按 turn 收口。**
156+
136157---
137158
138159## 为什么不能把它简单理解成“模型直接调函数”
Original file line number Diff line number Diff line change @@ -232,6 +232,22 @@ restore 处理的不是“当前太重”,而是“中断之后怎么续上”
232232
233233> ** 把之前那条会话线里的有效状态重新接回 runtime。**
234234
235+ 这里最好再多压一句边界,避免把 restore 理解浅了:
236+
237+ - 它不只是把历史 transcript 原样回显一遍
238+ - 也不只是把 UI 上一次对话重新展示出来
239+ - 更关键的是把后续还能继续工作的那部分状态重新接回系统
240+
241+ 换句话说,restore 真正关心的不是“显示恢复到哪里”,而是:
242+
243+ > ** 当前 runtime 还能不能重新建立一条可继续判断、可继续执行、可继续续跑的工作线。**
244+
245+ 所以如果要更精确一点,restore 恢复的重点更接近:
246+
247+ - 这条工作线目前走到哪
248+ - 哪些 messages / tool use / tool result 仍然构成有效工作材料
249+ - 当前还能以什么状态继续往下判断与执行
250+
235251三者并排看,可以先记成:
236252
237253- ** collapse** :旧内容还在,但先折轻一点再带着跑
@@ -270,7 +286,7 @@ flowchart LR
270286 M --> P{上下文是否过重?}
271287 P -- 是 --> X[collapse / compact]
272288 X --> C
273- C --> R[会话可续接状态 ]
289+ C --> R[可续接工作状态\nmessages/tool_use/tool_result 的有效投影 ]
274290 R --> T[restore]
275291 T --> C
276292```
Original file line number Diff line number Diff line change @@ -74,19 +74,25 @@ flowchart TD
7474 U[用户任务] --> R[Claude Code Runtime]
7575
7676 R --> T[内建 Tool / 执行能力]
77- R --> S[Skill / 做事方法 ]
77+ R --> S[Skill / 做事方法层 ]
7878 R --> A[Agent / 任务承担者]
79- A --> SA[Subagent / 分出的独立执行会话 ]
80- R --> E[MCP / 外部能力边界 ]
81- R --> P[Plugin / 系统级扩展接入 ]
82-
83- S --> A
84- S --> T
85- E --> T
86- P --> T
87- SA --> R
79+ A --> SA[Subagent / 拆出的独立执行会话 ]
80+ R --> E[MCP / 外部能力接入面 ]
81+ R --> P[Plugin / 系统级扩展接入层 ]
82+
83+ S -. 提供方法组织 . -> A
84+ S -. 提供方法约束 . -> T
85+ E -. 把系统外能力接回 runtime . -> R
86+ P -. 把系统级挂点接回 runtime . -> R
87+ SA -. 结果回流主 runtime . -> R
8888```
8989
90+ 看这张图时,最好先记住一个读图规则:
91+
92+ > ** 这张图表达的是“能力长在哪一层、最后怎样回到 runtime 被组织”,不是某一轮里一步步发生的直接调用链。**
93+
94+ 也正因为如此,图里的虚线更偏“关系 / 回流 / 接入面”,不是“函数按这个顺序直接调用”。这样读,skill、MCP、plugin 和 runtime 的关系就不容易被误看成一条串行执行线。
95+
9096看这张图时,最值得先抓住的不是名词,而是两个方向:
9197
9298### 第一,Claude Code 的扩展不只是一种
You can’t perform that action at this time.
0 commit comments