Appearance
实验 13 · Agent 与 MCP — 类型化工具、状态机与崩溃恢复
本实验筑牢 AI Agent 系统的四个工程底线:严格基于 JSON Schema 的参数校验、高风险操作的人在环路(HITL)审批令牌、可确定性重放的状态机,以及基于持久化 Checkpoint 的崩溃恢复能力。
网页即时交互实验一:Agent 核心生命周期状态机
真正的生产级 Agent 绝不是简单的 while True 死循环,而是严格由状态转移驱动的有限状态机。在模型生成 tool_calls 后,必须依次通过 Schema 校验、权限鉴权、人在环路拦截、工具执行与自纠错收敛:
交互:Agent 主循环状态机
所谓 Agent,本质就是一个「LLM 推理 → 调工具 → 把结果塞回上下文」的 while 循环。
Idle
等待用户输入
→ think(user msg)
点「单步执行」开始
教学要点(红旗实验):把失败率拉到 80%,反复点执行 —— Agent 会卡在 Execute 自旋, 直到触发 3 次重试上限进 Error。没有 max_steps 和重试上限的 Agent 会烧光你的 token 预算。 这两个数字不是可选项,是生产环境的保险丝。
网页即时交互实验二:故障注入与 Checkpoint 崩溃恢复演练
在长时间运行的多步智能体任务中,网络中断或进程崩溃在所难免。通过在每个状态转换边界写入幂等 Checkpoint,Agent 在故障重启后能够从最近一次一致状态继续执行,避免重复扣费或副作用重放:
STATE MACHINE · LOCAL FIXTURE
HITL、checkpoint 与幂等恢复
每一步只推进一个状态;高风险动作先批准,故障重试复用同一个 idempotency key,不把重复副作用当成功。
before_toolcheckpoint saved · idempotency=write-001before_toolcheckpoint saved · idempotency=write-001
这是离线状态机演示;真实合同由 python/agent_core、checkpoint 和安全测试证明,不连接任何工具或账号。
网页即时交互演练三:声明式 Tool 分发与状态机执行循环
在免安装的浏览器 WebAssembly 运行环境中,直接练习实现 Agent 状态机与工具调用分发循环:
就绪 (点击运行)
点击右上角「▶ 运行」或按 ⌘/Ctrl+Enter 在浏览器端直接执行交互实验指南
- 人在环路拦截:在状态机中触发高危操作(如转账或写入磁盘),观察系统如何挂起并等待人工审批 Token。
- 崩溃重放一致性:在恢复演练中注入断电故障,点击恢复执行,核对执行结果是否与无故障运行保持位级等价。
本地动手实验与单元测试
在网页端观察状态转移后,回到本地运行你的类型化工具分发、MCP 协议集成与崩溃恢复套件:
bash
cd <仓库根目录>
source .venv/bin/activate
export PYTHONPATH="$PWD/python"
# 运行 Agent 状态机与 MCP 单元测试
pytest python/tests/test_agent_tools.py -v