← 返回文章一览
技术笔记

DeepSeek Harness 全面评测:当「一切皆插件」遇上 DeepSeek-V4

DeepSeekdshAI AgentCordisAgent Harness开源评测

一、它是什么

2026 年 8 月 13 日,DeepSeek 在 GitHub 上创建了一个新仓库:deepseek-ai/deepseek-harness。十天后,它有了 186,694 个 Star、20,709 个 Fork、13,147 个提交。这不是又一个 ChatBot 前端——这是 DeepSeek 官方出品的 Agent Harness(智能体运行框架),代号 dsh

如果你用过 Claude Code、OpenAI Codex 或者 Cursor 的 Agent 模式,你对「AI 写代码」这件事已经有了直觉。dsh 要解决的问题是同一类,但思路截然不同:它不绑定某个 IDE,不绑定某个前端,甚至不绑定某个模型——它是一个可插拔的智能体运行时,所有能力(模型适配、工具注册、沙箱执行、会话持久化、子代理编排)都是插件,通过配置文件组合。

当前版本 0.1.1-rc.2,MIT 协议,明确标注 developer preview,且不承诺兼容性。换句话说,现在用它在生产环境要冒破坏性升级的风险——但正因如此,它也迭代得极快:最近 30 天有 4,253 个提交,核心团队 10 人,主力贡献者 Tianyi Cui 一人贡献了 5,268 个提交。

二、架构:一切皆插件

dsh 的底层框架叫 Cordis,一个「时空可组合编程范式」的实现。dsh 把 Cordis 源码 vendor 进仓库(不是 npm 依赖),重命名为 @deepseek-ai/cordis,完全拥有框架层——可审计、可打补丁、可 pin 版本。这意味着 dsh 不受上游 Cordis 发版节奏约束,可以随时改框架代码。

插件树

dsh 的运行时是一棵插件树,在启动时从有序的层(layer)组合而成:

dsh --profile web --dump-config 可以看到实际启动的完整插件树。任何一行都可以被你自己的 patch 替换。

包规模

整个 monorepo 有 229 个子包,全部在 @deepseek-ai/dsh-* scope 下。源码(不含 node_modules 和 .git)约 153MB,TypeScript 代码行数约 46.8 万行。这不是一个小项目——它是一个工程化程度极高的大型系统。

核心包的职责划分:

职责ctx 键
core/session追加式会话事件日志与内存存储ctx.sessions
core/system-promptPrompt 段和工具 Schema 组装ctx.systemPrompt
core/tools有作用域的工具注册表和受保护的执行管线ctx.tools
core/agentAgent 接口、运行时注册表、事件词汇ctx.agents
core/agent-loop具体的 Agent 循环实现

关键设计原则:注册即效果(Registrations are effects)。每个插件的贡献都通过 ctx.effect() / ctx.on() 注册,register() 返回一个 disposer——插件卸载时,它注册的所有东西都会自动撤销。这不是「加个标志位然后到处检查」,而是框架级别的生命周期管理。

三、模型能力

dsh 的 LLM 层是 provider-neutral 的抽象缝(seam),DeepSeek 适配器是默认实现。

DeepSeek-V4 系列

内置三个模型:

模型 ID名称上下文窗口模态
deepseek-v4-flashDeepSeek-V4-Flash1,000,000文本
deepseek-v4-proDeepSeek-V4-Pro1,000,000文本
deepseek-v4-flash-vision-expDeepSeek-V4-Flash-Vision (实验)1,000,000文本 + 图片

100 万 Token 的上下文窗口——这是当前公开可用的最大上下文之一。意味着你可以把一个中型项目的全部源码塞进上下文,让模型在完整代码库范围内推理。

默认配置是 thinking enabled + reasoning effort max:每次请求都开启深度思考,推理强度拉满。这是 DeepSeek 对自己模型能力的自信——也是「我们就是 DeepSeek,推理算力不是成本约束」的体现。测试策略里白纸黑字写着:「We are DeepSeek — do not ration real-API tests.」

适配器特性

四、工具生态

dsh 的工具不是硬编码的几个 function call——每个工具都是一个插件包,通过 ctx.tools 注册,模型通过 system prompt 里的 JSON Schema 知道工具的存在。工具目录由代码生成器自动维护(pnpm run gen-tool-catalog),有完整性守卫确保新工具不会遗漏文档。

Shell 执行

文件系统

Web 能力

三个搜索引擎可选:

Provider说明
DeepSeekweb-search-deepseek通过 Anthropic 兼容 API 的原生 web_search
Exaweb-search-exaExa 搜索后端
Perplexityweb-search-perplexityPerplexity 搜索后端

加上 web-fetch-http 做网页抓取。

代码运行时

其他工具

五、子代理与编排

这是 dsh 最有野心的部分——四种子代理后端,可以把任务分派给不同的 AI Agent 运行时:

后端机制
Claude Codesubagent-claude-code通过官方 Agent SDK 的一次性 Claude Code 子代理
Codexsubagent-codex通过官方 app-server 协议的一次性 Codex 子代理
ACPsubagent-acp子进程中通过 Agent Client Protocol 驱动子 Agent
DSH SDKsubagent-dsh-sdk子进程中通过 stdio JSON-RPC 驱动另一个 dsh 运行时

这意味着 dsh 可以作为元编排器(meta-orchestrator):用 DeepSeek-V4 做主控,把具体编码任务分派给 Claude Code,把推理任务分派给另一个 dsh 实例。每种后端都有对应的 hook 桥接插件(hooks-claude-codehooks-codex),可以在 dsh 的拦截缝上运行它们的 hook 配置。

最近新增的 Agent Teamsexperimental/agent-team)提供了持久化的多 Agent 团队运行时——不只是一次性分派,而是长期协作的 Agent 编排。

六、沙箱与安全

dsh 的沙箱不是「跑在 Docker 里就完事了」——它是一个四平台原生沙箱体系

平台机制说明
LinuxLandlock自研 Node 原生插件 landlock-run,self-restrict-then-exec
macOSSeatbeltApple 原生沙箱
WindowsACL受限令牌运行器
通用bwrapbubblewrap 容器隔离

landlock-run 是一个独立的 npm 三包族(entry + 平台包),有自己的 CI 构建和发布流程。这不是调一个系统命令,而是写了一个 Node 原生插件来做 Linux Landlock 沙箱——工程深度可见一斑。

沙箱策略(sandbox-policy)支持多种模式:

权限审批(user-approval)是另一层:在非 danger 模式下,危险操作会 ask 用户确认。凭证管理(credentials)支持启动时自动升级 pre-release 文档、持久化凭证记录。

七、持久化与会话

dsh 的会话是事件源(event-sourced)的:所有状态变更都是不可变事件,追加写入日志。这带来了天然的时间旅行和回放能力。

存储后端

会话能力

Compaction

当上下文窗口逼近极限时,compaction 系统介入:

八、开发者体验

三种入口

  1. Web UIdsh web 启动后默认自动打开浏览器(http://127.0.0.1:3080),提供完整的对话界面、模型选择器、设置面板、插件库存、子代理管理
  2. CLIdsh --profile headless "你的任务" 一次性运行,适合脚本化场景
  3. ACP:Agent Client Protocol,JSON-RPC over stdio,给 IDE 集成用——这是 dsh 作为「被嵌入组件」的接口

Python SDK

dsh 提供了完整的 Python SDK(python/ 目录),通过换行分隔的 JSON-RPC over stdio 与 bundled runtime 通信。可以在 Python 里像调用函数一样驱动 dsh:

deepseek-harness-sdk    # 高层 turns API + 底层 JSON-RPC client
deepseek-harness-runtime-bin  # bundled runtime 二进制和默认配置

配置体系

dsh 的配置是声明式的 cordis.yml。一个典型的配置文件长这样:

- id: llm-deepseek
  name: '@deepseek-ai/dsh-llm-deepseek'
  config:
    thinking: enabled
    reasoningEffort: max
    models:
      - id: deepseek-v4-pro
      - id: deepseek-v4-flash-vision-exp
        inputModalities: [text, image]

- id: sandbox
  name: '@deepseek-ai/dsh-sandbox-local'

- id: bash
  name: '@deepseek-ai/dsh-bash-sandbox'
  config:
    timeoutMs: 60000

配置支持 !!js 表达式(在 plugin config 和 entry disabled 字段下),可以做条件组合——比如根据环境变量切换沙箱模式。HMR(热模块替换)支持开发时改代码不重启。

测试

dsh 的测试策略可能是我见过最严谨的开源项目之一:

覆盖率 100% per-file 这个要求极其激进——它意味着任何一行未被测试执行的代码都会 block PR。文档里说:「An uncovered line is often dead code the gate is correctly flagging for deletion, not a missing test to bolt on.」

九、实战体验

我在这台 Linux 机器上从源码构建并运行了 dsh。

构建

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build

构建过程顺畅,最后产出 200 个 client artifact。Node 版本要求较新(实测 v26.5.1 可用),pnpm 11.7.0。

启动

node apps/cli/lib/bin.js web
# → 监听 127.0.0.1:3080,HTTP 200

启动后 Web UI 可用。模型选择器里有 V4-Flash、V4-Pro 和 Vision 三个选项。界面是深色主题,有侧边栏会话列表、模型选择、设置面板。

实际使用

由于 dsh 需要 DeepSeek API Key 才能真正跑 Agent 循环,我主要验证了:

十、横向对比

维度dshClaude CodeOpenAI CodexHermes AgentOpenHands
出品方DeepSeekAnthropicOpenAINous Research社区
架构一切皆插件 (Cordis)单体 CLI单体 CLI插件式容器化
模型绑定DeepSeek-V4(可换)Claude(绑定)GPT(绑定)任意任意
上下文窗口100 万200K128K取决于模型取决于模型
沙箱四平台原生无独立沙箱无独立沙箱依赖终端Docker 容器
子代理4 种后端delegate_task
消息平台20+ 平台
Web UI内置内置
配置方式cordis.ymlsettings.jsonconfigconfig.yamlconfig.toml
开源协议MIT闭源闭源开源MIT

dsh 的独特定位是:一个平台级的 Agent 运行时框架,而不是一个终端用户工具。Claude Code 和 Codex 是「拿来就用」的 CLI,dsh 是「拿来就改」的框架。它的 229 个包和 100% 覆盖率门禁说明它面向的是贡献者和集成者,不是终端用户。

十一、不足与风险

1. Pre-release,破坏性变更

README 里大写加粗:「THERE WILL BE COMPATIBILITY-BREAKING CHANGES.」版本号 0.1.1-rc.2,SQLite 用单调递增的 SCHEMA_VERSION,session 格式版本 0 且不承诺兼容。现在用 dsh 做生产系统,要做好随时升级踩坑的准备。

2. 无消息平台适配

dsh 没有内置 Telegram、Discord、飞书、微信等消息平台适配器。对外接口是 Web UI、ACP(给 IDE)和 API Gateway(给程序化调用)。如果你想通过消息平台用 dsh,需要自己写中间层,或者用另一个 Agent 框架(比如 Hermes)桥接。

3. 文档密度高,入门门槛陡

文档目录有 30+ 篇文章,包括架构、Cordis primer、事件生产者/消费者、防御性模式、postmortem 等。质量很高,但要求读者理解 Cordis 范式、插件效应系统、作用域事件分发——这不是「5 分钟上手」的项目。

4. Node 版本要求新

实测 Node v26.5.1 可用。没有 .nvmrc.node-version pin,但 engines 字段要求 node ^22.19 || >=24。在一些用 LTS Node 20 的环境里可能需要额外配置。

5. 无独立沙箱的竞品对比

虽然 dsh 的沙箱体系很完善,但 Claude Code 和 Codex 依赖的是 OS 级别的权限控制(用户审批、工作目录约束),对大多数开发者来说已经够用。dsh 的 Landlock/Seatbelt/ACL 沙箱更适合高安全要求的部署场景——但这也增加了理解和配置成本。

6. 模型生态封闭

默认只有 DeepSeek-V4 系列适配器。虽然 LLM 层是 provider-neutral 的抽象,但目前只有一个实现(llm-deepseek)加一个验证孪生(llm-pi-ai)。要接 Claude 或 GPT,需要自己写适配器——虽然有 subagent-claude-codesubagent-codex 可以做子代理,但主控模型还是 DeepSeek。

十二、总结

dsh 是一个工程深度令人惊叹的项目。从 Cordis 框架的 vendor 策略、四平台原生沙箱、100% per-file 覆盖率门禁、四种子代理后端、到事件源的会话持久化——它不是在做一个 CLI 工具,而是在做一个Agent 运行时基础设施

它的优势在于:

它的风险在于:

适合谁:想在 DeepSeek 模型生态上做深度定制的团队、需要高安全沙箱的 Agent 部署场景、想研究「插件化 Agent 架构」最佳实践的工程师。如果你只是想让 AI 帮你写代码,Claude Code 依然是更务实的选择——但如果你想知道「一个理想的 Agent 运行时应该怎么设计」,dsh 值得仔细读。


项目地址:github.com/deepseek-ai/deepseek-harness 版本:0.1.1-rc.2 | 协议:MIT | 评测时间:2026-08-23

相关文章

© 2026 9x9