Session 02

Agent Runtime / Run Loop

Run loop 是 agent 架构的心脏。真正的 agent 不是一次补全,而是 intake、context assembly、model inference、tool execution、streaming、persistence 和 stop condition 的闭环。

1. 训练目标

本页要练会:能拆清一个 runtime 如何从用户输入变成行动:输入进入哪里,context 怎么组装,模型如何调用工具,工具结果怎么回写,什么时候停止。

主要依据:OpenClaw agent loop / Claude Agent SDK / Hermes quickstart

2. 三项目对照

维度Claude CodeOpenClawHermes Agent
Loop 拥有者Claude Code / Agent SDK 拥有 coding loop,内建 Read/Edit/Bash/Grep 等工具。OpenClaw embedded runtime 在 Gateway 内处理 intake、context、tool、persistence。Hermes CLI/runtime 结合 provider、tool registry、terminal backend 和 memory。
停止条件任务完成、用户审批、权限拦截、命令失败、会话结束。streaming reply 完成、session persisted、工具循环终止。命令执行结果、工具返回、用户中断、provider/sandbox 错误。
可编程性Agent SDK 暴露 query、options、allowed tools、hooks、subagents。OpenClaw 偏 Gateway/runtime config 和 plugin contract。Hermes 通过 CLI、config、plugins、hooks/automation 扩展。

3. 组件机制

机制解释
Intake把用户消息、channel、session、workspace 和身份上下文接入 runtime。
Context assembly按当前任务装配系统规则、历史、workspace、工具说明、记忆和附件。
Tool execution模型选择工具后,由 runtime 或工具层校验权限、执行动作、返回结构化结果。
Persistence保存 session、工具结果、memory candidate、审计日志,支持恢复和调试。

4. 失败模式

失败模式为什么危险
无限循环工具结果没有进入状态,模型看不到进展,反复调用同一个工具。
状态丢失session store 或 workspace 未保存,跨轮次无法解释上一步做了什么。
工具副作用失控runtime 未区分 read/write/dangerous tools,命令或文件修改直接执行。

5. 架构练习

  1. 把 Claude Agent SDK 的 query 调用画成 run loop。
  2. 解释 OpenClaw 的 agentic loop 为什么必须包含 persistence。
  3. 给 Hermes 增加一个高风险 shell tool 时,列出 loop 中需要加的控制点。

6. 知识展开

上面的卡片是索引,点击后跳到对应的详细解释。阅读时不要只记名词,要同时记住组件边界、为什么需要它、三个项目怎么体现,以及你能用什么问题自检。

Detailed Concepts

概念是什么为什么重要项目对照自检问题
Intake normalization把用户消息、频道事件、文件变化或 API 请求转成 runtime 能处理的统一任务输入。入口不统一会导致权限、上下文和审计路径分裂。Claude Code 以 CLI/SDK 会话进入;OpenClaw 支持 channel/Gateway 输入;Hermes 面向桌面/终端交互和工具事件。任务入口是否记录来源、身份和权限范围?
Context assembly在模型调用前组装系统指令、历史、文件、工具结果、记忆和任务状态。上下文质量通常比模型选择更直接影响 agent 可靠性。Claude Code 依赖 repo、CLAUDE.md、skills;OpenClaw 明确 context 组成;Hermes 组合 files、memory、conversation 和工具结果。能否解释哪些上下文必须 pin 住,哪些可检索?
Tool call cycle模型提出工具调用,runtime 校验、执行、收集结果,再把结果回写给模型。这是 agent 与普通聊天的核心差异,也是不确定性和风险最大的环节。Claude Code 工具受 permissions/hooks 约束;OpenClaw loop 里有 tool execution/persistence;Hermes 由 tool registry/backend 执行。工具失败后是重试、降级、请求确认还是停止?
Stop condition决定 agent 何时结束、交付、请求用户、进入等待或转交给其他 agent。没有停止条件会导致成本失控、循环执行或提前交付半成品。Claude Code 常通过任务完成/用户交互结束;OpenClaw runtime 可由 session/channel 管理;Hermes 可由 automation 任务或交互结束控制。是否有最大步数、预算、无进展检测和人工确认?
Persistence把会话、工具结果、文件变更、路由状态和错误状态保存下来。持久化决定任务能否恢复、回放、审计和复盘。Claude Code 有 session/checkpoint/项目文件;OpenClaw 有 session store;Hermes 有 conversation、memory provider 和本地文件状态。恢复后模型需要哪些最小状态才能继续?