KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
既有课程实践成熟度审计 — keel 龙骨
Advanced Agent Systems 的参考信息:既有课程实践成熟度审计
审计对象是仓库现有的 Harness、Tool Calling、Context Window、Persistent Memory、Multi-agent Collaboration、Real-world Execution 和 Safety Controls 配套项目。结论不是“能不能运行”,而是“它对哪一种工程承诺提供了什么证据”。
总体结论
现有课程已经超过纯玩具:对象契约、确定性替身、错误码、工具白名单、审批绑定、幂等 fingerprint、未知结果、补偿、作用域和 provenance 都有对应代码与测试。它们适合建立正确的运行时边界。
但它们大多仍是单进程协议实验,不能直接宣称生产级。共同缺口是:持久化运行、worker lease、真实 provider usage 对账、版本迁移、端到端质量/成本结果、并发下的原子性、长任务唤醒、可重放 trace 和真实检索评估。
分课程结论
| 课程 | 已有专业度 | 当前仍是教学替身的地方 | 下一步优化 |
|---|---|---|---|
| Harness | Decision/Tool/Result、停止条件、事件序列和固定测试清楚;模型/工具 timeout 与未知异常已有稳定错误码和脱敏事件 | Run 全在内存;没有 cancel、lease、checkpoint 和 context usage;模型与工具仍未进入持久 trace |
接入本高阶课的事件/唤醒/租约;增加持久化 replay 和端到端 SLO |
| Tool Calling | Registry、Pydantic 参数/结果校验、审批、幂等、并行和流式边界较好 | ToolRunner 没有持久化消息;真实执行器没有 deadline/cancellation;未知结果和重试仍停留在独立示例 |
用异步 Task adapter 和 Real-world Execution 的 gateway 合并测试 |
| Context Compaction | 预算公式、依赖组、摘要来源、tool trace 校验、checkpoint 幂等和 provider usage(含可选 reasoning tokens)对账已落地 | 默认计数器是字符近似;摘要是截断式教学实现;没有质量数据集和真实模型回归 | 增加计数校准、事实保留评估、JIT retrieval 和发布门禁 |
| Persistent Memory | scope、来源、写入门禁、SQLite 生命周期、embedding 检索、删除和审计有实证 | 向量 JSON 扫描不可扩展;重排公式未校准;context budget 用字符;缺少 ACL/citation/Recall@k 数据集;项目测试入口依赖 pytest 的 conftest.py |
使用本高阶课的 ACL-aware retrieval、citation gate、评估数据集;明确 SQLite 规模边界 |
| Multi-agent | Task/Result、并行、取消、超时、review 和 artifact 关联清楚 | ThreadPoolExecutor 不是可恢复 worker;迟到线程仍可能继续副作用;没有 per-agent context/token budget |
将任务变成 durable run,加入 lease、取消令牌和上下文隔离 |
| Real-world Execution | Action fingerprint、preview、幂等、unknown、reconcile、Saga 和长 Job 很扎实 | Store/Job 都是内存;没有 outbox、外部 webhook、租约和持久 job history | 用本高阶课的 event store/wakeup 连接外部执行结果 |
| Safety Controls | provenance、PDP/PEP、最小权限、审批 TTL/单次消费、隔离和审计边界明确 | Approval/Audit 是内存;策略版本迁移、密钥/会话存储和真实 sandbox 仍未实现 | 把审计事件接入 trace,增加异步任务和长期运行中的重新授权 |
发现的具体问题
- 课程 README 与测试入口不完全一致:Persistent Memory 的规范命令是
pytest,直接用unittest discover会因conftest.py不自动导入而失败。课程应明确测试框架,不要让读者误以为两者等价。 - Context Builder 仍按字符预算:usage 对账已经能发现估算误差,但默认计数器仍不能证明“不超过模型 token budget”。下一步要在模型适配器层进行真实计数,并记录估算/实际差值。
- 内存状态被描述为 checkpoint:Context 项目的
CheckpointStore只验证进程内幂等,不能证明 worker 重启后可恢复。高阶项目改用 SQLite 事件历史和 reducer。 - 质量结果不足:现有测试主要验证不变量,没有固定检索集、引用正确率、压缩后任务成功率、延迟和成本对照,因此还不能说“有提升”。
- 事件不等于 trace:多数项目有 sequence,但没有跨模型、工具、检索、压缩、唤醒的 trace/span 关联,也没有采样和脱敏策略。
本轮已落地的修正包括:Harness 的模型/工具异常分类与脱敏、Real-world Execution 的 adapter failure receipt、Context 的实际 usage 对账、Multi-agent 的非确定性完成顺序测试修正,以及高阶项目的 wakeup 冲突检测。
复盘后的验收分层
L0 代码能运行
L1 协议不变量和失败分类有固定测试
L2 进程重启、重复投递、超时和未知结果可恢复
L3 真实数据集上有质量/成本/延迟/安全基线和回归门禁
L4 生产服务有持久事件、租约、观测、版本迁移和 SLO
现有课程大多在 L1,Real-world Execution 和 Safety Controls 的局部协议达到 L2;本高阶课程的目标是把关键路径推进到 L2,并为 L3/L4 明确证据而不虚报完成度。
优化优先级
P0:先修复“可恢复性”
- event store + reducer;
- wake-up 唯一 ID、租约和去重;
- checkpoint 不再只是内存对象;
- Tool/Memory/Context 事件共享 run/trace ID。
P1:再修复“知识和上下文结果”
- ACL 过滤先于检索排序;
- citation 必须来自检索结果并带 source version;
- token usage 估算与 provider usage 对账;
- 压缩/检索使用固定数据集做消融。
P2:最后接入真实基础设施
- Temporal/LangGraph durable runtime;
- Postgres/向量数据库/混合检索;
- MCP Task 或 webhook 适配器;
- OpenTelemetry trace、指标和告警。
复盘结论
旧课程保留,因为它们把“模型提议、程序校验、外部执行、状态和安全”的边界讲对了。优化不是把每个示例改造成巨型生产系统,而是明确哪些地方是替身,并用高阶课程提供能证明恢复、检索质量和运营结果的下一层实验。