昨晚 DeepSeek 发布了新模型 DeepSeek V4 Pro,虽然有些波折,但性能提升毫不意外。倒是跟着一起出来的 DeepSeek Harness 让人眼前一亮,这是 DeepSeek 的第一个 Agent 产品。刚刚开源一天,GitHub 已经 7 万多星了,增速比当初 R1 开源的时候还猛。
很多人以为 DeepSeek Harness 是又一个 Codex 复刻,但实际跑一下就可以发现,这东西跟 Codex 们根本不是一个思路。
简单说,Codex 就是一体机,模型、工具、循环、权限全部焊死在一起。想换模型必须使用 Codex 支持的模型格式,想去掉用不到的工具省点 token 也没门。DeepSeek Harness 则是组装机,模型是插件,工具是插件,会话是插件,连 Agent 循环等等一切皆插件。
为此,DeepSeek 还专门发了一篇 88 页的论文,把插件的装卸做成了有数学证明的形式化系统。这还是我第一次看到有人用数学证明来定义 Agent Harness 该怎么组装。
下面就从安装开始,带你一步步把它跑起来。
一行命令跑起来
首先,机器上需要安装 Node.js (版本号要求 22.19 以上,如果没有,可以让其他的 Agent 帮你安装)。然后在命令行执行:
npx @deepseek-ai/dsh web
稍等一下,你会看到 dsh web: http://127.0.0.1:3080。接着,在浏览器打开这个链接就进入了 DeepSeek Harness 主界面。
在开始使用之前,它会提示你输入 API Key。到 DeepSeek 开放平台(platform.deepseek.com)创建一个:

复制 API Key,回到 Harness 界面粘贴上就可以进入如下所示的主界面了 :

这时候输入框还是不能输入的。你需要先选择一个工作区(就是你要让 Agent 操作的项目目录),比如我选择了 deepseek-harness 源码目录,接着输入框就可以用了。
开始第一个任务
配好之后我试了个简单的:让它总结自己的源码仓库。发了一句“总结此代码库并识别其主要工作原理”,它读了 AGENTS.md,扫了 packages 目录,阅读了设计文档,一分钟左右就给出了一份架构概览,核心包和它们的职责列得挺清楚。

直观用下来,跟 Codex 具有明显的不同:
第一个明显感受是速度。用惯了 Codex 再切过来,对比太明显了,响应速度和工具调用的周转都非常快。当然这跟 DeepSeek V4-Flash 本身的推理速度有关,但 Harness 端的开销控制也做得不错。
另一个亮点是轨迹视图。点开“轨迹”标签页,可以看到模型每一步看到了什么、调了哪个工具、传了什么参数、返回了什么结果,连 system prompt 和 context 注入都能展开看。

所有信息都记在 append-only 的会话日志里,恢复、分叉、回放都从这里派生。这个“模型可见即已记录”的方式,在其他 Agent 工具里不常见。
装备 Agent 预设
DeepSeek Harness 对 Agent 的灵活控制体现在它的 Agent 预设功能里。所谓 Agent 预设就是一个会话的 Agent 所运行的插件组装,包括它的工具、提示词与能力等等。
打开设置里的“Agent 预设”,可以看到它已经内置了四种预设:

标准模式是日常默认,提供了最完整工具组合。PTC 模式让模型用 TypeScript 程序编排多步工具调用,跟 Claude Code 的 thinking tool use 一个思路。极简模式只保留 bash + 编辑器这两个工具,用于基准测试。创造模式则在标准模式的基础上又增加了自检、插件实验和预设创建功能,用来创建新的 Agent 预设。
这四种模式本身就展示了“一切皆插件”的核心:不同模式就是不同的插件组合,你也可以复制一份改成自己的。
对于入门使用来说,标准模式就够了。等你玩熟练了,想针对特定场景或项目做定制,到时候就可以切换到创造模式,让它帮你装备上你特定的工具、Skill、知识库等私有配置。
一切皆插件
前面说了 DeepSeek Harness 是组装机,那具体能组装哪些东西呢?翻了一下源码,我发现整个项目由 50 多个独立的 Cordis 插件组成,每个插件负责一个具体能力。这些插件之间没有谁是核心、谁是外围的区分,官方原话是 “There is no privileged core to patch”,所有插件地位平等。
下面这张图展示了主要的服务插件和它们的可替换选项:

从图里可以看到,模型、工具、会话、沙箱、技能、子 Agent 这些能力全部挂在同一个 Root Context 下面,每个都可替换。下面挑几个最实用的场景说一下:
换模型。设置页面添加自定义 OpenAI 兼容端点,指向公司网关或 vLLM,下一次请求直接生效,不用重启。
换沙箱。默认本地沙箱(Linux Landlock / macOS sandbox-exec),代码里有 E2B 云端沙箱适配器,换个配置就行。
删工具。Claude Code 每次都把几十个工具 schema 塞进提示词白吃 token。DSH 每个工具是独立插件,配置里禁用即可。
换 Agent 循环。这是跟所有现有 Agent 最大的区别。Claude Code 和 Codex 的 agent loop 都是写死在运行时里的,你可以在预留的 hook 点做定制,但循环本身换不了。DSH 的 agent loop 就是一个普通插件,写一个新的替换它就行。而且循环里的每个关键节点(模型请求前、工具执行前、轮次结束时)都是 waterfall 事件,你写一个审批插件或日志插件,监听这些事件就能拦截和改写,不需要碰循环代码本身。
说白了,其他 Agent 能做的事 DSH 都能做。但反过来,agent loop 本身可替换这件事,是其他 Agent 加多少 hook 都做不到的,因为这是最底层的架构决定。
Cordis 运行时安全装卸
既然一切都是插件,那就必须回答一个问题:怎么保证插件在运行时装上去、卸下来不会把其他插件搞挂?这正是 Cordis 框架要解决的核心问题。
做个对比:VSCode 也有插件系统,但卸载每个插件必须重启整个编辑器。而 Cordis 的目标是让插件可以随意热插拔,而且有数学证明保证安全。
下面这张图展示了 DeepSeek Harness 的分层架构,从上到下每一层都可以被上一层覆盖:

论文把安全装卸拆成两个维度来解决:
时间维度,插件卸载时所有副作用必须可撤销。每个注册的事件监听器、服务、工具 schema 都通过
ctx.effect()安装,运行时追踪逆操作,卸载时反序执行。空间维度,插件间依赖自动管理。通过
inject声明需要哪些服务,框架等依赖就绪再激活。被依赖的服务卸了,依赖它的插件自动暂停。
有了这些,你可以在 Agent 跑着的时候换模型、加工具、改沙箱,不丢上下文,不丢会话。论文还证明了 confluence 定理,不管你以什么顺序装卸插件,最终状态等价于把最终配置从头加载一次。
还不够好的地方
DeepSeek Harness 虽然刚开源一天,但生态已经非常丰富了。内测阶段的招募在 Twitter 上引发了一场开发者路演,964 人报名提交了 897 个项目。开源后 awesome-deepseek-harness 等精选列表迅速冒了出来。
有意思的是,从 GitHub commit 历史可以发现,不少代码是通过 Codex worktree 提交的。DeepSeek V4 原生支持 Responses API,可以无缝接入 Codex,所以团队直接拿竞争对手的工具来开发自己的产品,挺务实的。
目前官方不接受外部 PR,但可以通过 Discussion 反馈问题,也鼓励社区做独立插件丰富生态。官方表态也挺有意思:“我们不认为官方仓库中的包比社区创建的包更重要”。
不过问题也不少。现在的 v0.1 还处在开发者预览状态,后续肯定会有破坏兼容性的变更。安全方面,已有研究者发现几个严重漏洞,包括 read-only 沙箱对读操作不设防、动态插件的 vm 沙箱存在逃逸路径等,这些安全问题在使用时一定要注意。
写在最后
如果把 DeepSeek Harness 当产品看,它现在有没有 Codex 好用?UI 成熟吗?体验够不够顺畅?这些问题的答案都是“还差得远”。
但 DeepSeek Harness 看的可能不是当下的使用体验。在模型能力还在高速变化、Harness 的最佳范式远没有收敛的阶段,过早押注一个封闭产品,等于拿一家公司的判断去猜一个还在移动的终局。DeepSeek 的做法是把门打开,保留尽可能多的选择权,让社区来探索什么组合最有效。
某种上下文策略胜出了,它就可以成为默认插件。PTC 比传统工具调用更有效,它就可以被强化。未来模型强到不需要复杂的多 Agent 编排,那些组件就可以随时卸掉。社区跑出来的问题、插件和经验,会不断暴露模型在真实任务中哪里不够用,这些反馈既推动 Harness 迭代,也能告诉模型团队下一代该往哪个方向训练。
你不用急着把全部任务都切过来,但可以考虑把中文写作、超长上下文任务、以及日常跑量大的工作丢给它试试,等慢慢稳定后再考虑切换更多工作过来。
相关链接:
- 官方文档:deepseek.com/harness
- GitHub 仓库:github.com/deepseek-ai/deepseek-harness
- Cordis 论文:github.com/cordiverse/paper
欢迎长按下面的二维码关注 Feisky 公众号,了解更多云原生和 AI 知识。
