产品发布 · 小互解读

DeepSeek 发布DeepSeek-V4-Pro正式版和自家的 Harness 同时大幅提高API价格

219 个包、MIT 协议,你现有的 hooks 和技能能直接搬过去用

一分钟速览
  • DeepSeek 把自己的 Agent 外壳程序整个开源了,装了 Node 之后一句 npx 就能跑起来。
  • 别家写死在核心里的计划模式、子 Agent、权限审批、MCP,它全做成了能拆能换的插件,连主循环也是。
  • V4-Pro 的公开 Agent 成绩就是拿它跑的,而跑分那份配置只给了模型两个工具。
  • 同一天宣布 8 月 17 日涨价,缓存命中这一档的高峰价是现在的 12 倍。
立场提示:本文材料来自 DeepSeek 自己发布的仓库源码、官方 X 账号与 API 文档。跑分数据是厂商自评,没有第三方复现。文中所有涨幅倍数由本站按官方新旧价目表计算。dsh 的行为描述来自源码与文档,本站没有实际部署运行。
开篇

DeepSeek 一天公布三件大事

8 月 13 日,DeepSeek 一天里公布了三件事。

一、开源 DeepSeek Harness(dsh)。一套 Agent 外壳程序,跟 Claude Code、Codex 同类。它把计划模式、子 Agent、权限审批、MCP 接入这些别家写死在核心里的功能,全做成了能拆能换的插件,连 Agent 的主循环本身也是。你现有的家当它也认:Claude Code 的 hooks 和技能直接能用,还能把子任务派给你机器上真正的 Claude Code 去做。

二、DeepSeek-V4-Pro 正式版。升级集中在动手干活的能力上,改仓库、跑命令、把一件事从头做完,这类任务的分数普遍翻倍(DeepSWE 12.8 涨到 62.7)。这块能力现在超过 Opus-4.8,贴着 Kimi-K3 和 Fable 5;考知识和推理还差一截,HLE 只有 42.7,Fable 5 是 53.3。

三、API 全面涨价。8 月 17 日零点起改成峰谷两个价。缓存命中的输入价涨到 12 倍,输出涨到 4.5 倍。

前两件是一件事的两面:V4-Pro 跑分表底下有一行脚注,写明公开的 Code Agent 任务用的就是「DeepSeek Harness(minimal 模式)」。

19:31 发 V4-Pro 官方 X 带一张跑分表 19:56 开源 Harness GitHub 建仓,MIT 8/17 00:00 新价生效 改成峰谷两个价 跑分表底下那行小字 公开的 Code Agent 成绩,是用 DeepSeek Harness 的 minimal 模式测出来的,档位 max
时间为北京时间。两件事之间隔了 25 分钟。

也就是说,今天开源的这套壳,就是 DeepSeek 跑这些分时用的那套。它跑分时开了哪些功能、关了哪些,配置文件在仓库里能一行行看。

概念

harness 就是模型外面的一层壳

大模型本身只会一件事:读进一段文字,吐出一段文字。它不能自己打开你的文件,不能自己敲命令,不能自己记住昨天聊过什么。这些事全是外面那层程序在做,把你项目里的文件读出来递给模型看;模型说「我要执行 npm test」,是这层程序真的去执行,再把满屏的输出塞回给模型;模型想改文件,是这层程序判断该不该让它改、要不要先问你一句。

这层程序就叫 harness。Claude Code 是一个 harness,Codex 是一个,Cursor 里的 Agent 模式也是。同一个模型套在不同的壳里,干活水平能差出一大截,因为壳决定了模型能看到什么、能碰到什么、卡住的时候怎么办。

HARNESS(外面这层壳) 大模型 只会:文字进,文字出 一段字 一段字 把文件读出来递给它 模型自己碰不到磁盘 它说跑命令就真去跑 再把输出塞回去 管住它别乱改东西 该问你的时候停下来问 记住这一路发生了什么 下一轮还得接着用
本站示意图。中间那块是模型,外面一圈全是壳的活。
打个比方

模型是发动机,harness 是车的其余部分,方向盘、油门、刹车、仪表盘。发动机再好,没有车的其余部分也开不动;同一台发动机装进不同的车,开起来完全是两回事。

理念

计划模式、子 Agent、权限、MCP 全在核心之外

市面上的 Agent 工具,功能大多长在核心里:计划模式、子 Agent、权限审批、MCP 接入、上下文压缩,都是产品自带的固定件。你能调参数、能开关,但换不掉,不满意只能 fork 整个项目,或者等厂商加个选项。

dsh 反过来做。它的 core 目录只有八个包:会话日志、系统提示词组装、工具注册表、Agent 接口、默认驱动器、作用域原语。上面那些功能,一个都不在里面。

常见做法 DSH 核心:功能都长在里面 计划模式 子 Agent 权限审批 MCP 接入 上下文压缩 主循环 换不掉,只能调参数 core · 只有 8 个包 会话 · 提示词 · 工具表 · Agent 接口 ↓ 以下全在核心之外,可拆可换 计划模式 子 Agent 权限审批 MCP 接入 上下文压缩 网页/命令行界面
本站按仓库目录结构绘制。左边是常见做法的示意,右边的分包是 dsh 的实际结构。

计划模式是一个插件,子 Agent 是十一个包、七种提供方,权限审批是两个包,MCP 接入是一个客户端插件,上下文压缩是四个包,待办清单、定时任务、后台作业各自独立。界面也一样:网页界面是 apps/web,命令行是 apps/cli,终端界面得自己装一个 profile,不随发行版交付。

这条原则一直贯到 Agent 的主循环。仓库给贡献者的规矩写得很硬:新行为一律挂在文档写明的扩展点上;真要改主循环本身,必须在同一个改动里更新架构文档。

不存在需要打补丁的特权内核:扩展 dsh 的方式是把插件挂载到其他插件旁边,而各项注册都是副作用,会在其插件卸载时撤销。

docs/architecture.zh.md
打个比方

别家的 Agent 工具像一台封死的机器,厂商在外壳上留几个接口给你插扩展;dsh 是整台机器(包括发动机)都由乐高块拼的,你想换哪块拆哪块,拆下来的那块留下的痕迹也会自动清干净。

代价也是实打实的:它还在开发者预览阶段,README 第一句就写着未来会有破坏兼容性的变更;插件配置的覆盖是整行替换,没有深度合并层。

组装

连主循环都是可以换掉的插件

撑起这套拆法的是一个叫 Cordis 的框架(源码被整个搬进了仓库的 vendor/ 目录里)。它干的事是:让每个插件往一个共享的上下文里塞东西,服务、事件、副作用;插件被卸载时,它塞进去的东西会自动撤销。

在这个底子上,产品的每一部分都做成了插件:模型适配器是插件,工具注册表是插件,会话记录是插件,Agent loop 本身也是插件

具体怎么运作:跑起来的 dsh 是一棵插件树,由几层配置按顺序叠出来。最底下一层是 dsh-base,装的是模型适配器、工具、持久化、沙箱与审批策略、设置、凭据、遥测;往上叠 dsh-web-app 就多出浏览器界面,叠 dsh-headless 就变成跑完一个任务打印结果就退出、完全不带服务器;最上面才是你自己的改动。

空的 profile 根 · 什么都还没有 dsh-base 模型 · 工具 · 持久化 · 沙箱 · 凭据 · 遥测 dsh-web-app 或 dsh-headless 加一个网页界面,或者跑完就退出 你的 cordis.patch.yml 想换哪一行就写哪一行 越上面越后应用,同一行后写的赢
本站示意图。dsh --profile web --dump-config 会把实际启动的整棵树打印出来,打印出的任何一行都能被你自己一行盖掉。

前面说的整行替换就发生在这一层:只想改一行里的一个字段,也得把这行其他要保留的字段全部重抄一遍。

规矩

模型看见的必须进日志,能力必须成套换

拆得这么碎,靠两条规矩兜住不散架。

一、模型看到的每个字,都必须能从日志重建

会话日志是只追加的事件流,模型每一次请求看到的上下文,都从这条流里投影出来。规矩是反过来定的:凡是能到达模型请求的东西,都必须能从日志重建,而且有一条运行时断言在盯着。所以想给模型加一样它能看到的新东西,就得同时加一个会话事件,不能偷偷塞。

这条规矩换来的是:会话能暂停、能恢复、能从任意一点分叉出一条新的,重放出来的内容跟当时一模一样,没有任何模型看得见的状态藏在日志之外。

二、一项能力必须凑齐三个角色才算数

dsh 把「一项能力」定义成三个角色:声明接口的、实现接口的、使用接口的(通常是给模型用的工具)。三个一起设计,缺一个就不算一项能力。

上面用它的工具(原样不动) Bash 持久终端 语言服务器 同一个接口:文件系统 + 进程 实现 A:跑在你自己机器上 实现 B:跑在远程沙箱里
本站示意图。把下面那一层从 A 换成 B,上面三个工具一行代码都不用改。

换掉最下面那层,上面全跟着走:文件系统和进程共享同一个执行环境,所以把它们指向远程沙箱,Bash、持久终端、语言服务器就一起搬过去了,不用为每个工具单独做一个远程版本。子 Agent 也是同一个道理,接口就是「接一个自包含的任务、返回一个最终答案」,背后是同进程 fork 一个,还是启动一个别家的产品,对上层没区别。

工具

Code Mode、ralph 和自己装插件

既然每一块都能换,那出厂时默认装了哪些块?常规的那些都在,三十来个:bash、读写和编辑文件、globgrep、网页搜索与抓取、待办清单、计划模式、语言服务器、持久终端(开着一个终端会话反复发命令,不是每次起一个新的)、后台任务、定时任务、子 Agent 派活与互相发消息、翻自己历史会话的 session_search。也能接 MCP 服务器,接进来的工具在模型眼里和原生工具没区别。

另外三个工具,在别的壳里不常见。

一、Code Mode:模型写一段程序批量调工具

常规做法是模型每次说「我要调这个工具」,外壳执行完把结果塞回去,再问下一步。搜一批文件再挑几个来读,这一来一回就是好几趟,而且每一轮的中间结果都要原样堆进模型的上下文。

run_code 换了个路子:模型写一小段 TypeScript 程序,在程序里用 await tools.grep(...)await tools.read(...) 这样的写法把一连串调用串起来,一口气跑完,只把最后要看的那点结果返回。

常规做法 CODE MODE 模型 工具 来回好几趟 中间结果全堆进上下文 模型写一段程序 await tools.grep(…) await tools.read(…) …筛掉没用的 return 三行结果 一次调用跑完 只有 return 的那点进去
本站示意图,来回次数为示意。省下来的主要是上下文:中间那些没用的输出不进模型的视野。
打个比方

以前是每办一件小事就打一个电话确认一下,办十件打十个;现在是写一张清单让人一次性办完,回来只汇报最后的结果。

二、ralph:每一轮都换一个全新的 Agent 来干

给它一个不许改的目标,它每一轮都开一个全新的子 Agent,这个新 Agent 看不到上一轮的任何对话。轮与轮之间只传两样东西:工作区里那些真实的文件(这是它的长期记忆),和一份短的结构化报告。直到有一轮报告说做完了、或者报告说卡在哪儿了、或者轮数用完。

目标:一个字都不许改 第 1 轮 全新 Agent 第 2 轮 全新 Agent 第 3 轮 全新 Agent …… 轮与轮之间只传一份结构化报告,上一轮的对话全丢 共享工作区(所有轮共用同一份文件) 改过的文件留在这里,这就是它唯一的长期记忆
本站示意图。工具说明里特意写明:只有用户明确要求时才用它,普通的长期任务应该用 goal 工具。

三、cordis:Agent 给正在运行的自己装插件

这一组是四个动作加一份只读报告。它们操作的对象是当前正在跑的这个进程,不是磁盘上的配置文件。

1
定义cordis_define 登记一个新插件,此时什么都不运行,你在会话里看到的是一张卡片和一个启动控件。
2
跑起来cordis_run 在沙箱里求值它的主机那一半,同时把浏览器那一半投递给每个打开着的网页。
3
停掉cordis_stop 把它拆到完全停稳并从页面撤回,但定义还留着,随时能再启动。
4
忘掉cordis_undefine 连定义一起删,卡片作为一条已卸载记录留在会话里。

注意第 2 步里的「浏览器那一半」,Agent 可以现写一段界面,直接投到你正开着的那个网页里。配套还有一个 cordis_inspect,让 Agent 读自己进程里的实时状态:有哪些服务、哪些插件还活着、注册了哪些工具。

兼容

你的 hooks 和技能直接能搬过去

所以对已经在用 Claude Code 的人来说,搬家成本有多高?大部分家当不用动。

现有的 hooks 直接能跑(hooks 就是在某个固定时机自动触发的小脚本,比如每次改文件前先跑一遍格式检查)。dsh 里有两个桥接插件,一个吃 Claude Code 的 hooks.json,连 ${CLAUDE_PLUGIN_ROOT}${CLAUDE_PROJECT_DIR} 两个变量替换都照做;另一个吃 Codex 的 hook 配置。退出码的约定也照搬:退出码 2 表示拦下这次操作、把 stderr 的内容当理由。多个 hook 同时命中时按最严的算,deny 压过 ask,ask 压过 allow。

技能直接能读。它扫 SKILL.md 格式的技能文件,扫两个地方:自己的 ~/.dsh/skills,还有一个 ~/.agents,配置字段里管这个叫「为兼容 skill 扫描的共享 Agent 配置根目录」。

它还能反过来把活派给真正的 Claude Code。子 Agent 这个能力下面挂了七种提供方,其中两种是外部产品:一种调官方 Claude Agent SDK,会去找你机器上那个 claude 命令;一种启动官方的 codex app-server --stdio。派过去一个自包含的任务,只把最终答案拿回来。派过去的那个 Claude Code 用的是你本机原来的账号和配置,文档特意说明,它既不复制也不过滤这些文件,也不会创建或修改你的登录状态。

hooks.json SKILL.md MCP 服务器 Claude Code Codex dsh 全都当原生能力用 派一个自包含任务过去 只把最终答案拿回来
本站示意图。前三样是把你已有的东西接进来,最后一样是反过来把活派出去。

能做到这些,靠的还是前面那条三件套规矩:子 Agent 的接口就是「接一个自包含的任务、返回一个最终答案」,谁满足这个接口谁就能当提供方,别家的成品产品也算。

hook 桥接本身也有边界:原生插件能做到这个桥接的所有事,功能更强、有类型、没有序列化的损耗。桥接只是让现有配置能直接用的兼容路径,真要定制还是得写原生插件。

反过来的方向也通:DeepSeek 的 API 可以直接当 Claude Code、GitHub Copilot、OpenCode 这些工具的后端模型,不用改代码。换壳和换模型这两件事,现在可以分开做。

权限

沙箱起不来就直接拒绝干活

但把这些工具交给 AI,它敲错命令怎么办?这层壳给了三档权限,默认最紧的那档。

read-only
默认档。出问题也不会误伤,临时目录都不给写。
workspace-write
只能写工作区。Windows 上额外给一个本次会话私有的临时目录。
danger-full-access
不限制文件修改。跑分环境用的就是这一档。

每个平台用各自的原生机制:Linux 优先用 bwrap,不行就用 Landlock(为此他们自己写了一个 C 扩展);macOS 用 Seatbelt;Windows 用 ACL 受限令牌。

不支持的平台、或者沙箱机制起不来的时候,它直接报 SANDBOX_UNAVAILABLE 拒绝执行,绝不会静默地退回成「那就不限制了吧」。宁可让你干不了活,也不在你不知道的情况下把权限放开。

当前是哪一档,还会作为一条消息告诉模型,而且只在第一次和策略变化时说一遍,不重复刷屏。

实证

DeepSeek 跑分时只开了两个工具

那么 DeepSeek 自己用这套东西时,到底开了多少功能?

跑分脚注里的 minimal 模式,配置文件就在仓库里(examples/jsonrpc-agent/minimal.cordis.yml),能一行行看。它给模型的东西只有两样。

MINIMAL.CORDIS.YML · 跑分用的那份 系统提示词,整整一句 You are a helpful software engineer assistant. ✓ 持久 bash 状态保留,超时 5 分钟 ✓ 字符串替换编辑器 输出上限 16000 字符 以下全部关掉 技能系统 运行时上下文注入 工作区上下文 上下文压缩(没装) 普通 bash 工具 后台任务工具 这套配置在 Terminal Bench 2.1 上拿到 87.9 全表第三,压过 Opus-4.8 的 85.0
逐行来自仓库里的 minimal.cordis.yml。权限那档开的是 danger-full-access,跑分环境不设防。

上一节列的三十来个内置工具,在这里只留下两个:一个能保持状态的 bash,一个字符串替换编辑器。技能系统关了,运行时上下文注入关了,工作区上下文关了,上下文压缩没装,连普通的 bash 工具和后台任务工具都关了。系统提示词是那句最平常不过的「You are a helpful software engineer assistant.」。

Terminal Bench 2.1 的 87.9 分、DeepSWE 的 62.7 分,就是在这套配置下拿的。

这些分数主要来自模型本身,外壳里没有提示词技巧在下面兜底。而这套 harness 出厂时功能都在,开哪些由使用者自己决定。

数据

V4-Pro 涨的主要是动手干活的分

既然分数主要来自模型,那 V4-Pro 这次到底涨了什么?先说清楚,下面这张表是厂商自己发的。

DeepSeek 官方跑分表,V4-Pro-0813 与自家预览版及 GLM-5.2、Kimi-K3、Opus-4.8、Fable 5 的对比
官方跑分表。底下那行脚注就是本文开头说的那句:公开 Code Agent 任务用 DeepSeek Harness(minimal 模式)测试。来源:@deepseek_ai

跟自家的预览版比,涨得最多的几项都是「让模型自己动手把一件事做完」类型的题。

DeepSWE12.8 → 62.7
12.8
62.7
DSBench-Hard31.1 → 67.2
31.1
67.2
Cybergym52.7 → 83.3
52.7
83.3
AutomationBench12.8 → 31.8
12.8
31.8
Terminal Bench 2.172.1 → 87.9
72.1
87.9
浅色是 V4-Pro-Preview,深色是 V4-Pro-0813。条长按各项分数比例画,不同基准之间不可横向比较。

DeepSWE 从 12.8 涨到 62.7,翻了将近五倍。之前的预览版在这类题上基本是不及格的水平。

跟别人比就各有胜负了。Terminal Bench 2.1 的 87.9 排在 Kimi-K3(88.3)和 Fable 5(88.0)之后,压过 Opus-4.8 的 85.0;AutomationBench 的 31.8 是这张表里最高的。但考知识和推理的 HLE,不带工具时 42.7 分,明显落后 Fable 5 的 53.3 和 Opus-4.8 的 49.8;DeepSWE 的 62.7 也还落后 Fable 5 的 70.0 和 Kimi-K3 的 67.5。

涨幅集中在动手干活类的题上;考知识和推理的题,这一版没什么变化。

官方推文里还有两条:V4-Pro 和 V4-Flash 都能调推理力度,分 low、high、max 三档,官方给的用法是简单任务用 low、日常 Agent 工作流用 high、复杂任务用 max(跑分用的是 max);另外原生支持了 OpenAI 的 Responses API,官方文档里给了 Codex 的一键配置脚本,跑一行命令就会备份你原来的 ~/.codex/config.toml、写入模型元数据、只改必要字段,保留你原有的 MCP 服务器配置。

价格

8 月 17 日起,缓存命中价涨 12 倍

同一天官方还宣布了第三件事:北京时间 8 月 17 日零点起,API 改成峰谷两个价。高峰时段是 9:00–12:00 和 14:00–18:00,一天加起来 7 小时,其余 17 小时算空闲;空闲价正好是高峰价的一半。

0 点 9–12 14–18 24 点 深色 7 小时 = 高峰价 浅色 17 小时 = 高峰价的一半
北京时间。本站按官方公告绘制。

deepseek-v4-pro 算:现在输出是 6 元一百万 tokens,新价空闲时段 13.5 元、高峰 27 元,高峰是现在的 4.5 倍。输入(没命中缓存)现在 3 元,新价 4.5 元和 9 元。

涨幅最大的是缓存命中的输入价

元 / 百万 tokens现价新价 · 空闲新价 · 高峰
pro 输入(缓存命中)0.0250.15(6 倍)0.30(12 倍)
pro 输入(未命中)34.5(1.5 倍)9(3 倍)
pro 输出613.5(2.25 倍)27(4.5 倍)
flash 输入(缓存命中)0.020.05(2.5 倍)0.10(5 倍)
flash 输入(未命中)11.5(1.5 倍)3(3 倍)
flash 输出24.5(2.25 倍)9(4.5 倍)

倍数由本站按官方新旧价目表计算,价目本身来自 DeepSeek API 定价页。

缓存命中这一档为什么要紧?因为 Agent 干活的方式就是一轮一轮来,每一轮都要把前面的对话和读过的文件重新发一遍给模型,这部分绝大多数是命中缓存的。涨幅最大的那一档,正好是长时间跑 Agent 时用量最大的那一档。

打个比方

缓存命中就像每天走同一条路,收费站给了熟客价。现在熟客价涨了 12 倍,偶尔路过的人感觉不大,天天跑的人先受不了。

并发限制上,deepseek-v4-pro 是 500,deepseek-v4-flash 是 2500。官方没有给出涨价理由。

成色

218 个包必须写清自己哪儿不行

所以现在到底能不能上手?

219
工作区里的包数量
1.7 万
开仓当天的 star,六小时涨到这个数(2026-08-13 22:02 北京时间查询)
rc.6
npm 上的最新版本,8 月 13 日一天连发三个

装是能装了:npm 上 8 月 10 日发的第一个候选版本,13 日一天连发三版,最新是 0.1.0-rc.6。仓库是当天 19:56 建的,到 22:02 已经涨到 1.7 万 star、1182 个 fork。填完 API 密钥、选一个工作区目录,就能开始用了。

dsh 网页界面的设置页,填 DeepSeek API 密钥的表单
网页界面的设置页:填完密钥立刻生效,不用重启;也能加别的提供方或自定义的 OpenAI 兼容端点。来源:仓库 docs/user/guide/

但 README 第一句就是警告:处于开发者预览阶段,正在快速迭代,未来将出现破坏兼容性的变更。内部规范写得更直白,因为还没有外部使用者,宁可要正确的地基也不要兼容层,会话文件的格式版本号停在 0,不作任何兼容承诺。

约束这件事的是一道 CI 闸门:219 个包里,218 个的 README 都必须有一节「已知限制与延期工作」,写漏了直接不给过;唯一豁免的是一个纯类型定义的包,而且豁免名单里还必须写明为什么它没有限制可写。

抽几条看:

ACP 自动化接口只支持开新会话,加载、列出、恢复、删除、fork 全都不支持。
附件对象无限期保留,基于引用的垃圾回收还没做。
配置 patch 是整行替换,没有深度合并层,覆盖时要把整行重抄。
网页命令行有意不支持 --host 0.0.0.0,不让你把服务绑到所有网卡上。
上手

想自己动手要装什么、跑什么

只是想用:装个 Node(22.19+ 或 24+),跑 npx @deepseek-ai/dsh web,浏览器打开它打印的地址,在设置里填 DeepSeek API 密钥保存(不用重启),再点「选择工作区」把项目目录加进来选中,选中之前输入框是不能用的。需要审批的操作,界面会先问你。

想改它:除了 Node,还要 Corepack 启用的 pnpm(仓库锁死 11.7.0)和 Git 2.26 以上。克隆下来 pnpm install,然后跑一次 pnpm run typecheck,能过就算环境搭好了。安装时会顺带装上 Git 钩子:提交前自动跑代码检查并修一部分,推送前自动跑一遍类型检查。

代码里的待办标记分三档,看到时按这个读:FIXME 是发版阻断项,正式版之前必须解决;TODO 是有空就该做;XXX 是想起来再说、不作承诺。

🧰 上手卡 · DeepSeek Harness(dsh)
价格开源免费(MIT),模型 API 另计费
门槛装 Node 22.19+ 或 24+,跑 npx @deepseek-ai/dsh web,在设置里填 DeepSeek API 密钥
来源
DeepSeek HarnessDeepSeek AI·GitHub 仓库·2026-08-13
本站说明
README.zh.md 本身只有 75 行,架构、工具清单、跑分配置、各包限制均来自克隆仓库后的源码与文档(HEAD 47f9438)。跑分表为官方原图,条形图与涨价倍数由本站按官方数据计算绘制,其余示意图为本站所画。star 数与 npm 版本为 2026-08-13 22:02(北京时间)查询值,封面为 GitHub 自动生成的仓库卡片。