KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
Agent Harness — keel 龙骨
先把自己放进一个真实的值班场景:用户提交故障编号,模型判断下一步,程序决定是否查询工具,工具结果回到模型,运行最终以完成、失败、取消或等待审批结束。你要理解的不是某个框架的 API,而是这条运行为什么能够继续、为什么必须停止,以及每一步由谁负责。
先把自己放进一个真实的值班场景:用户提交故障编号,模型判断下一步,程序决定是否查询工具,工具结果回到模型,运行最终以完成、失败、取消或等待审批结束。你要理解的不是某个框架的 API,而是这条运行为什么能够继续、为什么必须停止,以及每一步由谁负责。
章节目录
- 01. Agent 到底比一次模型调用多了什么? — 先把场景放回现实。
- 02. 先让模型只做一件事:生成消息 — 这一章的目标很窄:你只需要学会调用 Ollama,并知道一次调用返回了什么。暂时不引入 Agent loop、工具注册表或数据库。
- 03. 屏幕上的字为什么不等于运行完成? — 流式输出让用户更快看到模型生成的内容,但它改变的是传输方式,不是运行完成的含义。
- 04. 怎样把模型建议变成程序输入? — 模型可以输出自然语言,但程序不能靠字符串猜测“它是不是想调用工具”。你需要把模型输出转换成结构化的内部决定。
- 05. 让模型第一次用上只读工具 — 现在你已经知道模型的决定还不是动作。接下来给它一个只读工具 lookup_incident,让它查询事件资料,再根据结果回答用户。
- 06. 把往返变成有边界的运行 — 前一章只处理一次工具。现实任务可能需要先查事件,再查服务负责人,再生成报告。Harness 必须知道何时继续、何时失败、何时停止。
- 07. 模型看到什么,系统保存什么? — 运行能循环起来以后,新的问题出现了:下一轮模型应该看到哪些内容?哪些内容只服务当前运行?哪些内容值得跨运行保存?
- 08. 失败、取消和重启怎样保持可解释? — 生产运行最危险的不是“明确失败”,而是“结果不确定”。例如创建工单请求超时,客户端不知道工单是否已经创建;立刻重试可能产生两张工单。
- 09. 模型想做危险的事时谁来暂停? — 只读查询和发送通知、创建工单、发布服务不是同一类工具。模型即使正确理解用户目标,也不应该因此获得现实世界的写权限。
- 10. 怎样把一次运行还原出来? — 当用户说“Agent 做错了”,你需要能够回答:它看到了什么、模型提出了什么、程序允许了什么、工具实际发生了什么。只保存最后一句回答是不够的。
- 11. 把脚本放进 API 和 worker — 前面的 Harness 可以在单进程中运行。进入真实项目后,你还要处理请求生命周期、后台任务、持久化状态和多个 worker 并发。
- 12. 完成事件诊断助手 — 这是结课项目。目标不是做一个漂亮聊天页面,而是完成一条能够解释、停止、恢复和测试的 Agent 垂直切片。