DeepSeek Harness
DeepSeek Harness(简称 dsh)是 DeepSeek AI 开发的开源 Agent harness,目前处于 developer preview(快速迭代、会有破坏性变更)。它采用"一切皆插件“的架构,底层由 Cordis 驱动——一个把"插件贡献服务、类型化事件、可逆副作用到共享上下文"作为范式的框架(设计论文《A Programming Paradigm for Spatiotemporal Composability》)。项目没有稳定中文专名,中文社区一般直接称 DeepSeek Harness 或 dsh。
架构:无特权核心
dsh 的骨架是一个在启动时按有序分层组合出的插件树。没有需要打补丁的特权核心:包括模型适配器、工具注册表、会话日志、甚至 Agent 循环本身在内,每个部件都是插件、都可由配置替换。扩展方式是"在旁边挂一个插件”——注册是对插件卸载可逆的副作用(effect)。
Profile 与 Bundle
- profile(配置档):存放在 Harness home 下的命名组合,列出它叠加的 bundles、安装的外部插件以及用户的
cordis.patch.yml。web和headless作为模板内置。 - bundle(包):Cordis 配置行及其所挂载代码的分发格式,上层可对 bundle 插入的内容继续 patch(打补丁)。
dsh-base是每个 profile 的第一层:模型适配器、工具、持久化、沙箱与审批策略、设置、凭据、遥测;dsh-web-app加浏览器应用,dsh-headless加无服务器的一次性运行器。
dsh --profile web --dump-config # 打印实际启动的插件树,任何一行都能被自己的 patch 替换核心包与事件
| 包 | 职责 | ctx 键 |
|---|---|---|
core/session | 追加式 SessionEvent 日志与内存存储 | ctx.sessions |
core/system-prompt | prompt 分段与工具 schema 组装 | ctx.systemPrompt |
core/tools | 作用域化工具注册表与受守卫的执行管线 | ctx.tools |
core/agent | Agent 接口、实时注册表与 agent/* 事件 | ctx.agents |
core/agent-loop | 默认的 Agent 循环驱动 | ctx.agentLoop |
core/scope | 每 Agent 的作用域注册原语 | 库,无键 |
llm/llm | 消息与流词汇、适配器接缝 | ctx.llm |
事件是扩展点,选择正确的事件域是多数修改的第一步:session 事件(持久化的、可随重载存活的 session/event)、agent 事件(携带实时 Agent 的 agent/*:inbox、step、status、request、validation、continuation)、能力事件(把策略与适配器挂到 fs/*、tools/*、telemetry/* 接缝,不 import 循环本身)。
工具执行的接缝设计
dsh 的 shell 执行是分层接缝:Service Definition(ctx.shell)、Service Provider(dsh-bash-local 与 dsh-bash-sandbox)、Consumer(dsh-tool-bash)分离;前台的 bash 执行留在接缝后,后台进程句柄经 ctx.jobs 运行时注册,由 job_output/job_list/job_kill 控制。DSH_* 变量是 Harness 持有的子进程事实(如 DSH_HOME、DSH_SHELL=1、DSH_SESSION_ID),由 ctx.shellEnv 收集进每次 shell 调用环境。这类"接缝 + 插件"设计把沙箱化、审批策略、遥测作为可挂接点,而不是写死在循环里。
与开源 harness 的关系
dsh 与 Pi 都提供可运行的 Agent Loop 与工具体系,再通过扩展/插件机制叠自己的 Skills、工具与策略。社区已有桥接项目把 Pi 扩展生态挂到 dsh 上(如 pi2dsh、dsh-pi-adapter、dsh-tui),说明后者把扩展 ABI 当作一等公民的经营思路正在成形。