KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

DeepSeek Harness(dsh)解析 — keel 龙骨

DeepSeek Harness 的参考信息:DeepSeek Harness(dsh)解析

课程导读 · 当「一切皆插件」遇上「日志即真相」

这门课针对一个具体问题:如果要把一个 Agent 运行时的每个部件都做成可替换插件、把它的每次运行都做成可重放的事件日志,工程上要付出什么、能换回什么?

内核怎么挂插件 → 插件有哪些 → 一轮怎么跑 → 日志怎么记 → 程序怎么写 → 沙箱怎么挡

六章的对应关系:

章节 解决的核心问题
01 Cordis 内核 依赖驱动的自动挂/卸载是怎么用 Proxy 和 epoch 实现的
02 插件全景 46 类约 300 个插件怎么归类,bundle 与 boot 怎么分工
03 主循环 没有 maxSteps 的循环靠什么停,工具结果为什么要按 model order 提交
04 Session 事件流 62 种事件怎么扩展,消息历史为什么只能是投影
05 Preset 与 Code Mode 四种 preset 差在哪,PTC 怎么把工具编译成一段 TypeScript
06 沙箱与 Provider 沙箱不可用时为什么 fail closed,claude-code 怎么被当成 subagent

每章结构统一:正文机制 → 代码地图 → 关键取舍 → 自测题。

这门课的一条主线

把「控制层」与「能力层」彻底拆开
   → 控制层只剩两样东西:一个依赖响应式的插件内核 + 一条 append-only 事件流
   → 能力(模型、工具、沙箱、UI、渠道)全部以插件身份挂进来
   → 于是 fork / resume / replay / 换 preset 都退化成「对同一条日志做不同读法」
   → 代价是:每一层都要为「可重放」让步(abort 也要补合成结果、事件类型要注册)

第 03 章的 model order 提交、第 04 章的 surface 投影、第 05 章的 SDK 字节稳定输出,都是这条主线的不同切面。读完你应该能回答:为什么这个运行时敢于不设 maxSteps?

与其它板块的关系

版本与可信度

进入 keel 阅读