KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
Harness 配套项目:从消息到可恢复运行 — keel 龙骨
Agent Harness 的配套项目:Harness 配套项目:从消息到可恢复运行
沿着一条事件诊断运行阅读代码:先看到一次模型调用,再看到消息、工具、状态、事件和停止条件怎样逐步组成运行时。不要先通读所有模块,按章节进入对应代码。
准备环境
建议 Python 3.11 或更高版本:
python -m pip install -r courses/foundation/agent-harness/course/project/requirements.txt
ollama serve
ollama pull qwen3:8b
$env:OLLAMA_MODEL = "qwen3:8b"
按章节运行和观察
第 02 章:只调用模型
python courses/foundation/agent-harness/course/project/examples/01_chat.py
先观察:这里还没有工具、状态和运行事件,它只是模型适配器的最小实验。
第 03 章:流式事件
python courses/foundation/agent-harness/course/project/examples/02_stream.py
观察 chunk 如何累积,为什么流中断时不能把部分内容标记为最终结果。
第 04 章:真实结构化决定
python courses/foundation/agent-harness/course/project/examples/03_structured_decision.py
这个示例使用真实 Ollama 返回结构化下一步决定;协议错误、未知工具和最大步数由 tests/test_harness.py 中的固定响应验证。
第 05 章:真实只读工具
python courses/foundation/agent-harness/course/project/examples/04_tool_calling.py
沿着消息列表观察 assistant tool call、tool result 和第二轮模型调用。
第 06 章以后:读 Harness 核心
ollama_adapter.py 供应商响应 -> 内部对象
schemas.py Decision、事件和状态的数据结构
tools.py 领域工具实现
harness.py 循环、停止条件、状态和事件
先看 schemas.py,再看 harness.py。读每个方法时问:它改变了哪个状态?写入了哪条事件?允许了哪个下一步?
运行确定性测试
python -m unittest discover -s courses/foundation/agent-harness/course/project/tests -v
测试固定构造模型决定和工具结果,验证:
- 最终决定可以完成运行;
- 工具决定会执行并回传结果;
- 未知工具会失败;
- 连续工具请求会触发最大步数;
- 事件带有
run_id、event_id和sequence。
这些是不变量,不应该依赖 Ollama 是否“这次刚好选对”。
目前实现的边界
代码是单进程、内存状态,适合学习运行时协议。它还没有实现持久化 Run、分布式 worker lease、完整身份系统和生产级事件存储。第 11 章会说明这些边界如何映射到服务项目。