DeepSeek Harness · 源码深度解析
Everything is a Plugin
这句话是怎么在 21.5 万行 TypeScript 里被兑现的
227 个包、约 50 个包组、2693 行 vendored Cordis。这套笔记按"第一次理解一个 Agent Harness 的顺序"重排,12 章,每一句结论都落到 文件:行号。
dsh 的标语是 "Everything is a Plugin"。这句话不是营销词——连驱动整个产品的 Agent 循环本身都是一个插件:
// packages/core/agent-loop/src/index.ts:296
export class AgentLoop extends Service implements AgentFactory {
static inject = ['agents', 'sessions', 'llm', 'tools', 'systemPrompt']
会话日志、提示词装配、工具注册表、模型调用,对循环而言全都是"别人提供的服务"。把这个包从配置里删掉,产品里就没有循环了;换一个包实现同样的接口,产品的循环就换了。
本书要回答的是:这句话是怎么在 20 万行代码里被真正兑现的,以及其中哪些设计可以搬到你自己的项目里。
第一段 · 底座
第二段 · 主干
第三段 · 能力与治理
第四段 · 编排与对外
建议读法
搞懂 Agent 到底怎么跑
04 → 05 → 07
给 dsh 写插件
02 → 03 → 08
抄架构做自己的产品
01 → 02 → 08 → 10
全部读完
01 → 12 顺序读