5 分钟读完路线 · 全程约 3 小时精读 · 本地代码都在你的机器上
~/Code/Projects/openclaw-src/packages/agent-core/src/agent-loop.ts 的
第 214–436 行(runLoop 主循环),约 200 行。别从头读文件,别读整个仓库;
带着第 3 课的七步骨架进去,出来能徒手写出 loop 伪代码,第一站就完成了。
① 永远带着一个问题进去。每站只回答一个问题,答出来就走。
② 折叠所有不服务当下问题的东西。类型体操、hook 细节、错误分支——第一遍全部跳过,
第二遍自然读懂。
③ 任何一处卡超过 15 分钟就标记跳走。卡住说明缺前置知识,硬读是浪费;
后面某站会把它变简单。
| 站 | 读什么(file:line 已核实) | 带进去的问题 | 时长 |
|---|---|---|---|
| 1 | openclaw-src/packages/agent-core/src/agent-loop.ts:214-436 | 七件事各在哪几行发生?hasMoreToolCalls 怎么算出来(:317)? |
60 min |
| 2 | 同目录 agent-stream-response.ts:286-357 | 流式事件怎么变成工具执行?"流中执行"和"流后执行"差在哪? | 30 min |
| 3 | easel-repo/web/app.py:2051-2470 | 浏览器断开为什么 agent 还能跑完?runId 闩锁(:2361)怎么隔离并发会话? | 30 min |
| 4 | openclaw-src …/attempt-system-prompt-prepare.ts:244-301 + easel-repo/openclaw/workspace/AGENTS.md |
AGENTS.md/SOUL.md 在哪一行被拼进 system prompt?稳定前缀为什么放前面? | 45 min |
| 5 | openclaw-src …/run/attempt.ts:331-350 + agent-session-compaction.ts:490 起 |
工具目录怎么装配?compaction 触发后历史发生了什么? | 弹性 |
agent-loop.ts 跳到 214 行;右边本课的骨架图(或第 3 课)hasMoreToolCalls 的三段式布尔表达式是全文件的"心脏",
逐项弄懂 continuationRequired / endTurn===false / batch.terminateagent_end,合上笔记,手写 10 行伪代码——
写不出来就说明还没读完,回去补