INTERACTIVE AGENT RUNTIME LAB
Agent Planning → Execution → Tool Calling 循环
用“查询北京明天天气并给出出行建议”的 Mock 任务,逐步观察 Agent 从输入结构化、规划、创建 Run、执行 Step、调用工具、写入 Observation、动态重规划,到生成最终答案的完整循环。
9 条职责泳道确定性状态机AgentRun JSON DiffPlan v1 → v2面试与架构学习
完整泳道交互图
等待开始用户
Agent API
Planner
Workflow Runtime
Executor
Tool Registry
External Tool
State Store
LLM
职责分层:LLM 决策,Runtime 控制
Planner提出结构化计划
Workflow Runtime维护状态机
Executor执行当前步骤
Tool Registry校验与路由
State Store持久化事实
六个关键设计问题
Interview Notes问题核心解释不这样做的后果
Plan 为什么不能只是一段自然语言?
自然语言适合表达意图,不适合作为可执行协议。结构化 Plan 才能校验依赖、记录状态、调度、重试和版本化。
无法精确知道执行到哪一步,也无法安全恢复。
为什么 Step 需要稳定 ID?
稳定 ID 是事件、日志、输出、重试、依赖边和 checkpoint 的关联键。
重规划后无法判断哪个步骤被复用、替换或新增。
为什么工具结果必须写回 State?
Observation 是后续决策的事实输入,也是恢复、审计和最终答案的依据。
结果只停留在一次 LLM 上下文里,中断后即丢失。
为什么 Runtime 而不是 LLM 控制流程?
LLM 是概率决策器;Runtime 是确定性状态机,负责权限、超时、重试、幂等、并发和持久化。
流程不可预测,难以生产化。
为什么重规划要增加 plan.version?
版本号明确表示执行图变化,可追踪 v1 的失败原因和 v2 的替代策略。
历史计划被覆盖,无法解释系统为何改变路径。
为什么执行状态和业务结果必须分开?
completed 只表示执行结束,不代表 output 一定满足业务质量,结果仍需单独校验。
会把成功调用但返回空数据误判为业务成功。