Skip to content

Commit bbd1a81

Browse files
committed
tighten volume-1 article 04 execution boundary explanation
1 parent d30326c commit bbd1a81

1 file changed

Lines changed: 46 additions & 22 deletions

File tree

docs/guidebookv2/volume-1/04-how-intent-becomes-execution.md

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@ tags:
1717
- **上一篇**[上一篇:一次请求是怎么跑成一次 Agent Turn 的](./03-how-a-request-becomes-an-agent-turn.md)
1818
- **下一篇**[下一篇:Claude Code 怎么维持上下文、状态与持续工作](./05-how-claude-code-maintains-context-state-and-continuity.md)
1919

20-
上一篇把 Claude Code 的动态主线立住了:一次请求不会天然停在首条回复,而是沿着“判断 → 执行 → 结果回流 → 再判断”的闭环继续推进
20+
上一篇已经把一件事讲清了:Claude Code 的基本单位不是一句回复,而是一轮会继续推进的 agent turn
2121

22-
但第三篇还留下了一个关键问题
22+
第四篇不再重复讲这条闭环,只往前补一个关键问题
2323

24-
> **当模型已经判断“下一步该做什么”时,Claude Code 怎么把这个判断真正落成现实动作?**
25-
26-
这篇补的,就是这层桥。
24+
> **当模型已经判断“下一步该做什么”时,这个判断是怎么被 runtime 接住,并落成现实动作的?**
2725
2826
先把核心判断摆在前面:
2927

@@ -33,15 +31,17 @@ tags:
3331

3432
## 执行能力层在系统里的位置
3533

36-
把前几篇连起来看,Claude Code 至少已经有这样一条主线:
34+
这里最容易产生的误解,是把这条链直接想成“模型调用了一个函数”。
35+
36+
但更准确的理解其实是三层分工:
37+
38+
- **模型**只负责形成当前判断,并把“下一步想做什么”表达成 `tool_use`
39+
- **runtime**负责接住这份意图,决定怎样纳入当前 turn,并推动执行发生
40+
- **tool / external capability**负责真正落到读文件、跑命令、改内容这类现实动作上
3741

38-
1. 用户把请求送进 runtime
39-
2. runtime 组织一轮 agent turn
40-
3. 模型形成当前判断
41-
4. 系统把这个判断落成现实动作
42-
5. 结果回流,当前 turn 再继续或收口
42+
所以第四篇真正要解释的,不是“模型怎么直接做事”,而是:
4343

44-
第四篇讲的,就是第 3 步和第 4 步之间的那层执行能力结构。
44+
> **模型的意图,怎样经过 runtime,变成正式执行。**
4545
4646
可以先看这张总图:
4747

@@ -63,6 +63,35 @@ flowchart TB
6363
6464
也正因为这条链存在,Claude Code 才不是“会说的模型”,而是“能把意图推进成进展的 runtime”。
6565

66+
如果想把“谁负责哪一段”看得更清楚,可以再看下面这张职责边界图:
67+
68+
```mermaid
69+
flowchart LR
70+
subgraph ML[模型层]
71+
M1[形成当前判断]
72+
M2[输出 tool_use]
73+
end
74+
75+
subgraph RT[runtime 层]
76+
R1[接住结构化意图]
77+
R2[orchestration\n纳入当前 turn]
78+
R3[execution\n推动动作发生]
79+
R4[收集 tool_result]
80+
R5[组织 continuation]
81+
end
82+
83+
subgraph TL[tool / external capability 层]
84+
T1[读文件 / 跑命令 / 改内容 / 调外部能力]
85+
end
86+
87+
M1 --> M2
88+
M2 --> R1 --> R2 --> R3 --> T1 --> R4 --> R5
89+
```
90+
91+
这张图想强调的只有一句:
92+
93+
> **模型负责表达意图,runtime 负责编排与接管,tool 负责把动作真正落到现实边界上。**
94+
6695
---
6796

6897
## 先把整条链讲清:`tool_use -> orchestration -> execution -> tool.call -> tool_result`
@@ -95,7 +124,7 @@ flowchart TB
95124

96125
所以可以把它压成一句话:
97126

98-
> **orchestration 负责把这次工具意图纳入当前运行时**
127+
> **orchestration 负责决定:这次工具意图怎样被纳入当前 turn**
99128
100129
它关心的是运行时编排,不是底层动作本身。
101130

@@ -138,19 +167,14 @@ execution 最后还要落到具体对象上。最典型的,就是 `tool.call`
138167

139168
> **`tool_result` 回流到 runtime,不等于某个工具一完成,系统就立刻单独再打一轮模型请求。**
140169
141-
Claude Code 更接近这样一条链
170+
更接近的过程其实是
142171

143172
1. assistant 先在当前输出流里产出 `tool_use`
144-
2. runtime 可以边流边执行工具,也可以边拿到已完成的 `tool_result`
145-
3. 这些结果会先被收进当前 turn 的本地消息状态
173+
2. runtime 逐步执行工具,并接住已经完成的 `tool_result`
174+
3. 这些结果会先收进当前 turn 的本地消息状态
146175
4. 然后再按下一轮 continuation 的组织方式,一起送回模型继续当前工作
147176

148-
所以这里真正成立的,不是“每个 result 立刻递归打一次模型”,而是:
149-
150-
- **对执行层来说**,工具可以流式启动、并发完成、逐步收结果
151-
- **对模型回喂层来说**,结果不是 `result-by-result` 地即时递归打模型,而是回到下一轮 continuation 的统一组织里
152-
153-
更短地说:
177+
所以这里真正成立的不是“每个 result 都即时递归打模型”,而是:
154178

155179
> **工具执行可以边流边跑,但模型 continuation 仍然按 turn 收口。**
156180

0 commit comments

Comments
 (0)