小岛AI
| ONLINE |

posts/deepseek-harness-open-source.md

DeepSeek Harness 开源,极简模式只留两把工具

小岛AI 2026 / 08 / 13

十三天前,我在写 DeepSeek V4 Flash 那篇时,留下了一个没填上的坑。

官方说,Flash 在 Terminal Bench 2.1 跑到 82.7 分,用的是尚未发布的 DeepSeek Harness minimal mode。那时候我们只知道名字,不知道系统提示词,不知道工具集,也不知道上下文和重试是怎么处理的。

今天夜里,这个坑终于有东西可以往里填了。

DeepSeek Harness 官方仓库正式公开,npm 包也已经上线。项目采用 MIT 许可证,目前是 Developer Preview,也就是开发者预览版。README 还很诚实地把警告写在最前面,后面会有破坏兼容性的改动。

先别急着拿它替换 Claude Code。现在连正式版都算不上。

但我把仓库和架构文档顺着翻下去,还是没忍住笑了一下。因为 DeepSeek 当时拿去跑 82.7 分的 minimal 模式,比我想象中还要克制。

一条完整系统提示词。

两把工具。

就这些。

提示词是 You are a helpful software engineer assistant.,工具只有持久化的 bashstr_replace_editor,一个跑终端命令,一个修改文件。官方配置还明确关掉了额外提示段、运行时上下文快照和上下文压缩。

好家伙,AI 编程工具都在往系统提示词里塞百科全书,DeepSeek 反手只给模型发了张员工胸牌。

DeepSeek Harness minimal 模式的模型侧与宿主侧

图|极简模式只压缩模型可见的动作空间,Workspace、持久化、沙箱与权限仍由宿主保留

这件事很容易被读成「提示词不重要」。我觉得不是。

准确一点说,DeepSeek 在区分两类复杂度。模型每一轮必须理解的东西,尽量少。工程系统必须兜住的东西,一样没少。

终端状态要持久化,文件要限制在 workspace,危险操作要经过权限策略,会话要能保存,浏览器界面要能恢复。这些能力仍然存在,只是不再全部写进提示词和工具说明里,让模型每一轮重新交上下文税。

这和我昨天写 Pi 时看到的取舍有点像。区别在于,Pi 从一个轻量核心往外长,DeepSeek Harness 则直接搭了一套很重的插件基础设施,再在上面做出一个极轻的 Agent 预设。

外面很重,里面很轻。

有点子牛逼。

这不是又一个换皮 Claude Code

从产品表面看,DeepSeek Harness 很像大家熟悉的 AI 编程助手。

安装 Node.js 后,运行下面这条命令,Web UI 默认会开在本机 3080 端口。

npx @deepseek-ai/dsh web

在设置页填入 DeepSeek API Key,选择一个项目目录,就可以让 Agent 读写文件、执行命令、维护计划和委派子任务。权限策略需要批准的操作,界面会向人确认。

DeepSeek Harness 官方模型设置界面

图|官方 Web UI 已支持 DeepSeek 与自定义模型提供方配置

到这里,确实很像 DeepSeek 版 Claude Code 或 Codex。可它真正想做的,不只是一个新的聊天窗口。

官方 README 只有一句架构介绍。

一切皆插件。

这句听着很像开源项目最爱挂在门口的标语。源码再往下看,才发现他们来真的。模型适配器是插件,工具注册表是插件,会话日志是插件,连负责让模型不断调用工具、接收结果、继续下一步的 Agent Loop 自己,也是插件。

传统框架经常留一个不可触碰的核心,大家在周围加扩展。DeepSeek Harness 反过来,官方架构文档写得很直接,这里没有一个需要打补丁的特权核心。想换行为,就在同一棵插件树上挂另一个实现。

DeepSeek Harness 一切皆插件的架构示意

图|模型、工具、会话、沙箱、子 Agent 与 Agent Loop 都挂在同一个 Cordis Context 上

支撑这套设计的是 Cordis。用人话讲,它像一个可以随时组装和拆卸服务的共享插座。插件把服务、类型事件和可撤销的副作用挂进同一个 Context,卸载插件时,相关注册也会跟着撤掉。

一次运行并不是启动某个写死的应用,而是按顺序组合出一棵插件树。web 是一套组合,headless 又是另一套。Profile 决定装哪些 Bundle,用户自己的 cordis.patch.yml 再盖在上面。任何一行配置都可以被替换或插入。

想看看自己的机器最终启动了什么,可以直接 dump 出整棵配置树。

dsh --profile web --dump-config

这套思路的野心,其实比做一个好用的 CLI 大得多。

它更像在做 Agent 的 Linux。官方给你一个能用的发行版,但模型适配、工具、沙箱、UI 和循环都不是焊死的。你可以换窗口管理器,也可以换内核旁边的某个设备驱动,只是这里被换掉的设备,可能是 Codex 子 Agent、远程容器或你自己的审批系统。

当然,Linux 的另一面大家也熟。自由通常会附赠配置文件、依赖树和一段周末时间。

Cordis、Profile、Bundle、Patch、Service Definition、Provider、Consumer,一口气看下来,学习曲线一点都不极简。普通开发者如果只想让 AI 改个 bug,Claude Code 和 Codex 目前还是更省心。DeepSeek Harness 现阶段更适合愿意拆机器的人,不适合明早九点要稳定交付的生产环境。

我更喜欢它把每一步都记成事件

「一切皆插件」最容易上头,真正让我觉得这套架构是按生产问题设计的,反而是另一句很朴素的话。

模型能看到的东西,必须进入日志。

DeepSeek Harness 把一次工作拆成 turn 和 step。一次 step 是一轮模型请求加它调用的工具,一次 turn 可以包含很多个 step。从用户消息、模型输出、工具调用到工具结果,关键节点都会写成持久事件。

很多 Agent 出问题时,只留最后一句回答和几行命令输出。你知道它错了,却不知道它在哪一轮拿到了什么上下文,为什么突然改道,压缩前丢掉了哪条约束。

事件日志就是给这类事故留黑匣子。

会话恢复、分叉、回放、转录、遥测和持久化都从同一条事件流派生。UI 不需要自己偷偷维护另一份状态,模型历史也不是从屏幕上的聊天气泡硬拼出来。只要进入过模型视野,就应该能够从日志重建。

这话听起来不性感,做久了 Agent 才知道有多重要。模型偶尔犯傻不可怕,系统连它为什么犯傻都还原不出来,才是真的一时间无语凝噎。

另一处我很喜欢的设计叫 capability seam,可以理解成能力接缝。一项能力被拆成接口、实现和使用方。文件系统是一个接缝,子进程是一个接缝,子 Agent 也是一个接缝。

因此,把本地文件与进程提供方换成远程沙箱时,Bash、PTY 和 LSP 可以一起移动,不用每个工具各写一套远程版本。权限策略又能在工具真正执行前拦截。对个人玩具这可能显得重,对要跑几个小时、会碰凭证和生产代码的 Agent 来说,这才是地基。

我为什么愿意支持这次发布

先把边界放前面。

它是开发者预览,npm 当前还是 0.1.0 的 RC 版本。官方已经提前说会破坏兼容。MCP 客户端虽然随 CLI 提供,默认并没有启用,因为每个 MCP Server 命令都属于沙箱外的受信任代码。遥测默认留在本地,手动开全量导出又可能包含消息、工具参数、结果和 workspace 路径。

这些都说明现在更适合阅读、试验和提交反馈,不适合悄悄塞进公司的自动部署链路。

支持也不等于无脑上生产。

我愿意支持,是因为 DeepSeek 这次开放的不只是又一份模型权重,而是模型如何真正做事的那层系统。对于一个模型公司来说,这一步很难得。

过去我们看 Agent 跑分,经常只看到模型名字。提示词多长,工具怎么描述,失败能不能重试,上下文何时压缩,全部藏在厂商内部。最后系统跑出来的分数,全记到模型头上。

7 月 31 日那张 82.7 分的表就是这样。DeepSeek 很诚实地写了用了自家 minimal Harness,却只能留下一句「即将发布」。外部团队可以复现任务,复现不了那层运行系统。

现在至少门打开了。

我们终于知道,今天仓库里的 minimal preset 不是一张神秘提示词,而是一句身份描述、一个持久 Bash 和一个文件编辑器。我们也能继续检查它的工具说明、超时、权限、事件日志与沙箱边界,甚至写另一个 Profile 做对照。

这不保证任何人明天都能复现 82.7。模型快照、推理档位、采样参数、环境镜像和评测提交仍然要对齐。可从黑盒走到能审、能改、能跑对照实验,已经是很实在的一步。

更重要的是,DeepSeek 没把 Harness 做成只能伺候自家模型的封闭外壳。架构里模型适配器本来就是可替换插件,官方模型设置页也留了自定义提供方。一个模型公司愿意把入口做成可以换掉自己的形状,这个姿态我喜欢。

说真的,我对这件事难免有点偏心。给 AI 搭脚手架就是我每天在做的活,看着模型公司终于把工具循环、会话日志、沙箱、审批和上下文这些不太上镜的东西摆到台前,会有一种修船的人终于被允许走上甲板的感觉。

模型当然还是发动机。

但一艘船能不能穿过长任务的风浪,靠的从来不只是一台发动机。舵、索具、航海日志和坏掉以后怎么抢修,同样决定它能不能回来。

十三天前,那套 Harness 还只是 82.7 分下面的一行脚注。

今天,它把方向盘也交出来了。

这一次,我支持。