KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

DeepSeek Harness — keel 龙骨

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

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

章节目录

  1. 01 · Cordis 内核:把插件系统做成依赖响应式的 — dsh 的插件系统不是自己写的一套,而是 vendored 进来的 Cordis(vendor/cordis/src/,context.ts 146 行、fiber.ts 754 行、reflect.ts 418 行、registry.ts 337 行、events.ts 352 行)。它最反直觉的一点是:插件的加载与卸载不是被 API 调用驱动的,而是被「我依赖的服务现在在不在」这件事驱动的。调用 ctx.plugin(p) 只是「申
  2. 02 · 插件全景:54 类插件怎么拼出一个运行时 — packages/ 下有 54 个顶层分类、307 个二级包(去掉 test-support/ 的 7 个测试基建包正好 300)。vendor/ 下另有 9 个 vendored 的 Cordis 生态包。理解这个仓库的难点不在任何一个包多大,而在分类之间的分层关系:谁是能力接缝(seam)、谁是接缝的具体实现、谁是把它们拼起来的 bundle。
  3. 03 · 主循环:turn/step 的八步与三个反直觉约束 — 主循环在 packages/core/agent-loop/src/agent.ts,647 行,一个类 ReactLoopAgent implements Agent。它的形状出人意料地小:
  4. 04 · Session 事件流:append-only 真相与 surface 投影 — packages/core/session/src/types.ts: SessionEventMap 的文档注释是这个子系统唯一的宪法:
  5. 05 · 四种 preset 与 Code Mode:把工具编译成一段 TypeScript 程序 — packages/bundle/web-app/presets/ 下有四个 .patch.yml:standard、ptc、minimal、cordis。它们不是四套代码,而是四份配置补丁——每个文件只做一件事:往 profile 树里 insert 一条 @deepseek-ai/dsh-agent-preset 声明。这一章先用逐行 diff 讲清楚这四个 preset 的差异,再讲 ptc 背后的 Code Mode 是怎么把 N
  6. 06 · 沙箱三后端、模型 provider 与 subagent 托管 — 前五章讲的是「dsh 自己怎么跑」。这一章讲边界:它把什么交给操作系统、把什么交给别的 CLI、把什么交给上游 SDK。三件事各有各的形状——沙箱是一个必须 fail-closed 的能力接缝(capability seam),模型 provider 是一张只做「拒绝或翻译」的路由表,subagent 则是一套把 Claude Code、Codex 这种外部 agent 当作可寻址 provider 来托管(hosting)的注册表。

进入 keel 阅读