DeepSeek Harness · Code-Level Reading
全书目录:一条线性阅读路径
这套页面按线性顺序讲完整个项目,并且用一条真实示例贯穿全书:官方命令 dsh web(卷零)+ 用户消息「帮我列一下当前目录」(卷一)。每页开头的「示例轨迹」块展示该页代码的真实输入输出:从 apps/cli/src/bin.ts 入口出发,沿启动链走到 agent loop 的心脏(卷零、卷一),再按 cordis.patch.yml 的挂载顺序遍历每一个能力域(卷二),最后落笔工程支撑(卷三)。每一页都标注文件路径与行号。
图 0全书结构
图 0开读前需要知道的三件事
① 一切皆插件。模型适配器、工具注册表、会话日志、agent loop 本身,全部是插件,全部能从配置替换。不存在特权内核。
② 模型可见 ⟺ 已记录。送进模型请求的内容必须能从 session log 重建——所以模型历史来自 deriveMessages() 对日志的投影,而不是任何内存对象(在 06/09 页你会看到它的行级实现)。
③ waterfall 事件必须调 next() 才委托;serial 事件没有 next();emit 是纯通知不可否决。这是所有扩展点代码的语法基础(08/10/14 页反复出现)。
图 0全书章节表
| 卷 | 章节 | 覆盖的代码 |
|---|---|---|
| 卷零 · 入口与组装 | 00-04 | bin.ts / args.ts / profile.ts / boot() / runProfile——配置树如何变成活插件树 |
| 卷一 · 核心循环 | 05-17 | agent.ts 心脏 / session 日志 / inbox / 请求折叠 / llm seam / tools 流水线 / shell 三件套 |
| 卷二 · 能力全景 | 20-34 | 持久化、压缩、子代理、技能、目标、工作流、文件、终端/LSP、Web、审批沙箱、存储查询、设置凭据、SDK/API、客户端/Python/Native、工程支撑——15 个能力域,覆盖 cordis.patch.yml 全部条目 |