DeepSeek Harness 开发者预览版:一切皆插件
DeepSeek Harness v0.1 开发者预览版以 MIT 协议开源。基于 Cordis 插件系统,Agent 的所有能力均为可组合插件。
TL;DR: DeepSeek 以 MIT 协议开源了自家的 Agent Harness。核心思路:模型、工具、会话、沙箱、存储、调度、UI 全部是插件,想换哪块换哪块,不用动源码。目前是 v0.1 开发者预览版,接口随时会变,但架构设计本身值得现在就去看一看。
今天 DeepSeek 把 deepseek-harness 放到了 GitHub 上。没有公众号长文,没有发布会,就是一个仓库:18.5k 星(内测期间攒的),外加一行命令:
npx @deepseek-ai/dsh web
跑起来之后打开 localhost:3080,你会看到一个 Agent 环境。这个环境里,模型、它调用的每个工具、会话存储、代码沙箱、甚至 UI 本身,全是独立插件——在配置层随时替换。
deepseek-ai/deepseek-harness 仓库——18.5k 星、MIT 协议、上线时已有 12,293 个 commit。
为什么值得关注
大多数 Agent 框架把循环写死了:prompt → 工具调用 → 结果 → prompt。你想换个会话持久化方案,或者把沙箱换成远程容器,或者改调度逻辑,都得去翻框架内部代码。
DeepSeek Harness 走了另一条路。核心是 Cordis——一个插件框架,插件通过 服务、类型化事件 和 可逆副作用 向共享上下文贡献能力。产品的每个部分都是插件:模型适配器、工具注册表、会话日志、Agent 循环本身。没有特权核心需要 patch——你通过在其他插件旁边挂载一个新插件来扩展 DSH。
核心架构概念是能力接缝(Capability Seams):每个能力有三种角色——声明接口的 Service Definition、实现它的 Service Provider、使用它的 Consumer。换一个 Provider,整个栈跟着走。把文件系统和子进程 Provider 指向远程沙箱,bash、PTY 和 LSP 全部跟过去,不需要任何 fork。
架构一览
DSH 通过 Profile(命名的组合方案)和 Bundle(分发格式)启动。Profile 列出它要叠加的 Bundle 和用户补丁。默认有两个:web(完整浏览器 UI)和 headless(一次性运行器,无服务器)。
基础 Bundle(dsh-base)提供模型适配器、工具、持久化、沙箱策略、设置、凭证、遥测。额外 Bundle 添加界面:dsh-web-app 是浏览器应用,dsh-headless 是纯 CLI 执行。
层级按顺序组合:Bundle → Profile patch → 用户级 patch → --patch 覆盖。任何配置行都能被你自己的 patch 替换,不用动源码。
| 组件 | 职责 | ctx 键 |
|---|---|---|
| Agent Loop | 默认驱动:步骤、回合、模型调用 | ctx.agentLoop |
| Session | 仅追加事件日志,内存存储 | ctx.sessions |
| System Prompt | 提示词段落和工具 schema 组装 | ctx.systemPrompt |
| Tools | 带作用域的工具注册表 + 受保护执行管线 | ctx.tools |
| LLM | 消息/流式词汇 + 适配器接缝 | ctx.llm |
| Shell | 通过子进程执行 Bash/PowerShell | ctx.shell |
| Filesystem | 带策略事件的文件读写编辑 | ctx.fs |
| Sandbox | 进程隔离(本地、Docker、远程) | ctx.sandbox |
| Terminals | 持久化 PTY 会话 | ctx.terminals |
| Jobs | 后台任务(bash、subagent、terminal) | ctx.jobs |
| Subagents | 子 Agent 委托(fork、新建、远程) | ctx.subagents |
| Schedule | cron 式定时执行 | 通过 ctx.sessions |
所有组件通过 Cordis 服务注册。换掉任何 Provider——Consumer 不需要改。
Cordis:“时空可组合性的元框架”——DSH 运行的插件内核。
Profile 和运行模式
DSH 内置多种 Profile,每种组合不同的 Bundle 和工具包:
| Profile | 技术栈 | 适用场景 |
|---|---|---|
| web | dsh-base + dsh-web-app | 完整浏览器 UI,日常开发 |
| headless | dsh-base + dsh-headless | 一次性 CLI 运行器,CI 集成 |
| PTC | Code mode 启用 | 模型生成程序来组合多步工具调用 |
| 极简 | 仅 shell + 文件编辑 | 基准测试(SWE-bench、Terminal-Bench) |
| 创造 | Cordis 工具集加载 | 运行时自省,动态插件实验 |
极简模式把工具注册表精简到只剩 bash 和 str_replace_editor——正好是编码 benchmark 要求的最小集。创造模式加载 cordis_* 工具集(cordis_define、cordis_run、cordis_inspect_*),Agent 可以检查自己的运行时并在内存中定义新的 package。
Profile 用户可自建。列出 Bundle 并应用 patch 就行:
dsh --profile web --dump-config # 查看你的机器实际启动了什么
仅追加的会话日志
Session log 是模型看到的一切的 source of truth。deriveMessages() 从中投影出模型历史。原始 assistant/chunk 事件保留回放和 UI 保真度。Fork、恢复、转录、遥测、持久化全部从这一条流派生。
设计铁律:模型可见 = 必须记日志。 任何到达模型请求的内容都必须能从日志重建。运行时有断言检查这一点。
Agent 循环以**回合(turn)和步骤(step)**运行。一个 step 是一次模型请求加它调用的工具。一个 turn 是零到多个 step:在第一个输入被认领前开始,在无人欠债时关闭。流程:
turn/start → 认领输入 → 组装 prompt + 工具 schema →
step/start → 模型请求 → assistant/message → tool/call* → tool/result* → step/end
→ 还有输入?→ 下一个 step
turn/end
关键事件(agent/pre-step、agent/request、llm/stream、tools/pre-execute)是 waterfall 模式——监听者必须调用 next() 才能委托。这意味着任何插件都能在管线的任意点拦截、变换或短路,不需要 patch 循环本身。
技术栈
| 层级 | 技术 |
|---|---|
| 运行时 | TypeScript / Node.js |
| 包管理 | pnpm workspace(monorepo) |
| 构建 | tsdown |
| 测试 | Vitest(单元 + e2e + 快照 + 压力) |
| Python 支持 | pytest,独立 python/ 目录 |
| Lint | oxlint |
| Git hooks | lefthook |
| CI | GitHub Actions + GitLab CI |
仓库上线时已有 12,293 个 commit——不是周末项目。monorepo 的 packages/ 目录说明内部拆分做得很细。还有 native/ 目录(大概率是桌面端/Electron)、apps/(Web UI)和 website/(文档站)。
目前缺什么(毕竟是预览版)
直说局限:
- 一定会有破坏性变更。 README 加粗写的。插件 API 会变。
- 文档偏少。 有架构文档和开发指南,但还没有插件编写教程。
- 生态刚起步。
dsh-plugin这个 GitHub topic 存在,但第三方插件数量极少。 - 没有托管版。 只能本地跑,没有云服务。
- 模型支持范围不明确。 文档说模型供应商是插件,但除了 DeepSeek 自家模型,开箱支持哪些还不清楚。
横向对比
| DeepSeek Harness | OpenHands | Claude Code | Cursor Agent | |
|---|---|---|---|---|
| 架构 | 插件化(Cordis) | 单体运行时 | 闭源 | 闭源 |
| 可扩展性 | 全部可替换 | 需要 fork | 不可扩展 | 不可扩展 |
| 许可证 | MIT | MIT | 专有 | 专有 |
| 成熟度 | 开发者预览 | 生产级 | 生产级 | 生产级 |
| 模型绑定 | 无(插件化) | 无 | 仅 Anthropic | 多模型 |
| 会话透明度 | 全量追加日志 | 部分 | 有限 | 有限 |
架构哲学上最接近的对比对象是开源 Agent 框架生态——但 DSH 的区别在于框架本身几乎是空的。框架只是 Cordis + 约定;所有实质内容都在插件里。
对 Agent 插件架构的可移植性标准感兴趣的,可以参考我们的 Agent 插件可移植标准解读。
快速上手
DeepSeek Harness 官方落地页——文档、Discord 社区和快速上手指南入口。
npx 一键启动
npx @deepseek-ai/dsh web
需要 Node.js 环境。启动后浏览器打开 http://127.0.0.1:3080。
从源码安装
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
社区
- GitHub Discussions:deepseek-ai/deepseek-harness/discussions
- Discord:DeepSeek Harness 社区
- 插件发现:给你的仓库打上
dsh-plugintopic
FAQ
DeepSeek Harness 能用于生产环境吗?
不能。这是 v0.1 开发者预览版,团队明确说了会有破坏性变更。适合试验和评估,不适合上生产。
能用 DeepSeek 以外的模型吗?
原则上可以。模型供应商是插件。但文档没说清楚哪些供应商开箱即用,哪些需要社区插件。
DSH 和 LangChain、CrewAI 有什么区别?
LangChain 和 CrewAI 提供有主见的编排方案,循环模式是固定的。DSH 没有内置编排——循环本身也是插件。代价是:灵活度更高,但需要自己组装的也更多。
有云端托管版吗?
没有。DSH 只能本地运行,DeepSeek 目前没有托管服务。
DSH 和 Cordis 是什么关系?
Cordis 是插件系统——相当于内核。DSH 是跑在这个内核上的 Agent Harness。Cordis 管插件生命周期、依赖解析和热重载;DSH 用 Cordis 插件定义「Agent」到底由哪些部分组成。


