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 Harness GitHub 仓库,18.5k 星 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/PowerShellctx.shell
Filesystem带策略事件的文件读写编辑ctx.fs
Sandbox进程隔离(本地、Docker、远程)ctx.sandbox
Terminals持久化 PTY 会话ctx.terminals
Jobs后台任务(bash、subagent、terminal)ctx.jobs
Subagents子 Agent 委托(fork、新建、远程)ctx.subagents
Schedulecron 式定时执行通过 ctx.sessions

所有组件通过 Cordis 服务注册。换掉任何 Provider——Consumer 不需要改。

Cordis GitHub 仓库——DSH 底层的插件元框架 Cordis:“时空可组合性的元框架”——DSH 运行的插件内核。

Profile 和运行模式

DSH 内置多种 Profile,每种组合不同的 Bundle 和工具包:

Profile技术栈适用场景
webdsh-base + dsh-web-app完整浏览器 UI,日常开发
headlessdsh-base + dsh-headless一次性 CLI 运行器,CI 集成
PTCCode mode 启用模型生成程序来组合多步工具调用
极简仅 shell + 文件编辑基准测试(SWE-bench、Terminal-Bench)
创造Cordis 工具集加载运行时自省,动态插件实验

极简模式把工具注册表精简到只剩 bashstr_replace_editor——正好是编码 benchmark 要求的最小集。创造模式加载 cordis_* 工具集(cordis_definecordis_runcordis_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-stepagent/requestllm/streamtools/pre-execute)是 waterfall 模式——监听者必须调用 next() 才能委托。这意味着任何插件都能在管线的任意点拦截、变换或短路,不需要 patch 循环本身。

技术栈

层级技术
运行时TypeScript / Node.js
包管理pnpm workspace(monorepo)
构建tsdown
测试Vitest(单元 + e2e + 快照 + 压力)
Python 支持pytest,独立 python/ 目录
Lintoxlint
Git hookslefthook
CIGitHub Actions + GitLab CI

仓库上线时已有 12,293 个 commit——不是周末项目。monorepo 的 packages/ 目录说明内部拆分做得很细。还有 native/ 目录(大概率是桌面端/Electron)、apps/(Web UI)和 website/(文档站)。

目前缺什么(毕竟是预览版)

直说局限:

  • 一定会有破坏性变更。 README 加粗写的。插件 API 会变。
  • 文档偏少。 有架构文档和开发指南,但还没有插件编写教程。
  • 生态刚起步。 dsh-plugin 这个 GitHub topic 存在,但第三方插件数量极少。
  • 没有托管版。 只能本地跑,没有云服务。
  • 模型支持范围不明确。 文档说模型供应商是插件,但除了 DeepSeek 自家模型,开箱支持哪些还不清楚。

横向对比

DeepSeek HarnessOpenHandsClaude CodeCursor Agent
架构插件化(Cordis)单体运行时闭源闭源
可扩展性全部可替换需要 fork不可扩展不可扩展
许可证MITMIT专有专有
成熟度开发者预览生产级生产级生产级
模型绑定无(插件化)仅 Anthropic多模型
会话透明度全量追加日志部分有限有限

架构哲学上最接近的对比对象是开源 Agent 框架生态——但 DSH 的区别在于框架本身几乎是空的。框架只是 Cordis + 约定;所有实质内容都在插件里。

对 Agent 插件架构的可移植性标准感兴趣的,可以参考我们的 Agent 插件可移植标准解读

快速上手

DeepSeek Harness 官网 deepseek.com/harness 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

社区

FAQ

DeepSeek Harness 能用于生产环境吗?

不能。这是 v0.1 开发者预览版,团队明确说了会有破坏性变更。适合试验和评估,不适合上生产。

能用 DeepSeek 以外的模型吗?

原则上可以。模型供应商是插件。但文档没说清楚哪些供应商开箱即用,哪些需要社区插件。

DSH 和 LangChain、CrewAI 有什么区别?

LangChain 和 CrewAI 提供有主见的编排方案,循环模式是固定的。DSH 没有内置编排——循环本身也是插件。代价是:灵活度更高,但需要自己组装的也更多。

有云端托管版吗?

没有。DSH 只能本地运行,DeepSeek 目前没有托管服务。

DSH 和 Cordis 是什么关系?

Cordis 是插件系统——相当于内核。DSH 是跑在这个内核上的 Agent Harness。Cordis 管插件生命周期、依赖解析和热重载;DSH 用 Cordis 插件定义「Agent」到底由哪些部分组成。