万字长文拆解 DeepSeek V4 Pro 与 Harness:它根本就不是一个产品,而是一场筛选
不管哪个时代,人都会遇到同一道题:面前问题太复杂,资源和时间却不够,必须决定先做哪个、放弃哪个。
从 1812 年黑格尔的辩证法,到马克思、列宁,再到 1915 年毛泽东在延安写下的《矛盾论》,一百多年里,这套思想最终落到了一个很实际的问题上:复杂事物中矛盾很多,但真正重要的是找到决定其他矛盾的主要矛盾。
今天的大模型行业也不例外。当前大模型行业面临的主要矛盾有以下这些:
- 模型能力的增长速度,同把这种能力转化成可靠产出的能力之间的矛盾(模型强,但产出物没价值)。
- 算力资源受限,同能力需求无限之间的矛盾(人们总吐槽 AI 太傻)。
- 单价在快速下降,同真实账单在上涨之间的矛盾(模型便宜了,但每个月花的更多了)。
- 要做通用智能,同要交付一个能用的产品之间矛盾(简单的不好用,好用的不简单)。
这些矛盾才构成了交错向上发展的行业和机会。没有人能逃避这些选项,DeepSeek 也一样。
本文做了什么
我对 deepseek-v4-Pro 以及 Harness 做了几轮实测:直接打接口的探针、七次编码任务运行(其中四次是只改一个变量的对照)、把上下文压到 92 万 token 的位置测试,加上把它 19.8 万行源码和 21.7 万行测试过了一遍。试图来回答以下问题:
- v4-Pro 这个模型到底怎样,比 flash、preview 版本有哪些不同?
- 好多网友反馈接入其他 Harness 会降智是怎么回事?
- 使用成本到底怎么样?能否量化?
- Harness 解决什么问题?什么人适合它?
总而言之,这几天的研究和使用下来还是很精彩的,我甚至能透过 v4-Pro 和 Harness 管中窥豹,看到一些 DeepSeek 对技术、对人性,甚至对世界的判断和认知。
一、先看模型:DeepSeek V4 Pro 到底强在哪里?
1. Pro 很可能重做了一次非常先进的后训练
Pro 和 Flash 这两个模型其实有挺多版本。把它们拉出来对比,会发现两个有意思的结论:
- Pro 对比 flash,模型本身的层面在深度、宽度、注意力、专家池以及专家内部宽度都有很大进展。
- 但这五个维度都是预训练阶段就定性的,不是后训练带来的变量。
有一样是相同的:每个 token 实际只激活 6 个专家,两个模型都是 6。
还有一处彩蛋:deepseek Harness 的出厂默认模型写的是 deepseek-v4-flash。
为什么 Pro 正式版拖到 Flash 转正之后才公布?坊间其实预测 Pro 早就该来了。如果去翻旧账会发现四月那版 v4-Pro-Preview 其实有一个缺陷:竞赛型代码题三项全场第一,但 Terminal Bench 2.0 只有 67.9。7 月 31 日 Flash 转正,官方贴出它的 Terminal Bench 2.1 是 82.7,而同一张表里 Pro-Preview 是 72.1。也就是说 Flash 正式版的 Terminal Bench 已经比旗舰模型 Pro 的分数高不少了。
我合理推测 DeepSeek 在 Flash 版本上尝试出了更好的后训练方法,因此 v4-Pro 被回炉重造。
再看 v4-pro-0813 的几项跃升:
| 指标 | Pro-Preview | Pro-0813 | 提升 |
|---|---|---|---|
| Terminal Bench 2.1 | 72.1 | 87.9 | +15.8 |
| DeepSWE | 12.8 | 62.7 | +49.9 |
| 内部全栈测试集 | 41.8 | 71.1 | +29.3 |
我自己也出了两道题去验这件事:
- 一道是同一个改动要落到五处分散的调用点上,其中一处是用字符串登记的,grep 根本搜不出来
- 另一道是两个前后串联的故障,修的顺序错了就白改
在实测中六次运行全部满分,那个搜不出来的点它也找到了。
也就是说这一版补上的是能自己把一件活干完的能力。以前估计得在旁边盯着,现在可以把一件有明确验收标准的活交出去,然后走开(而且做的更好了)。
2. 媒体没提到的另一半
这张官方表还有另一半,中英文媒体都没提。媒体的叙事是"逼近 Claude Fable 5"。而在 DeepSeek 自己贴的对照表里,Kimi K3 在多数 agentic 项上仍然领先 0813:
| 指标 | Kimi K3 | V4 Pro-0813 |
|---|---|---|
| Terminal Bench 2.1 | 88.3 | 87.9 |
| DeepSWE | 67.5 | 62.7 |
| Toolathlon | 76.5 | 74.1 |
| Agents' Last Exam | 27.6 | 25.7 |
0813 只在三项上领先。大概 DeepSeek 想传递的叙事是发生在国产开源之间,并无心和国外闭源模型较真。
还有一个更有意思的数据:官方 changelog 里 Flash-0731 和 Pro-0813 用的是同一套内部测试集、同一个 Harness,所以可以直接并排:
- Pro 的总参是 Flash 的 5.6 倍、激活参数 3.8 倍
- 但换来的是个位数的领先
- 最难那一项 Agents' Last Exam 分别是 25.2 对 25.7,几乎打平
而且它自己那个框架的出厂默认模型写的是 deepseek-v4-flash;第三方评测机构 AA 的 coding agent 榜上,DeepSeek 那一行用的也是 Flash;两个老模型名下线前指向的同样是 Flash。
几条独立线索都指向同一件事:Flash 才是它认定的主力性价比档,Pro 是上限档。
3. 1M 上下文的真相
这是本轮最独家的一处发现,而且任何人都能自己核对。
从 Hugging Face 上的 config.json 里的 rope_scaling 可以看到:
65536 × 16 = 1,048,576,正好 1M也就是说这 1M 不是原生训练出来的,是在 64K 的基础上用一种叫 YaRN 的办法外推 16 倍得到的。像一个只在 100 米跑道上练过的人,你让他跑 1600 米。也不是不能跑,但是很可能最后几百米的质量直线下降。
而且这在同行里是特殊的。三家都标 1M,但路径完全不同:
- DeepSeek:明确用了外推缩放(YaRN 16 倍)
- Kimi K3:没有外推字段,换掉了注意力机制本身
- GLM-5.2:没有外推参数,把
rope_theta拉到了 800 万
我跑了个脚本实测了一下,把可客观判对错的事实埋进长文本的不同位置:
- 语料 3,857,465 个字符 = 923,858 个输入 token
- 五个位置各埋两条,10/10 全部命中,零编造
- 其中 95% 那个位置,落在约 90.2 万 token 处(真正的尾巴片段)
所以结论是外推并没有导致窗口后段衰减。不过最后大约 8% 我仍然没碰到,但足以说明跑到 1440 米还没掉速,只是最后 160 米没测。不过官方自己给 Claude Code 的接入建议里,把自动压缩窗口设在 768K,也就是 1M 的四分之三。他们的建议就是别把 1M 跑满。
二、V4 Pro 到底贵不贵?
1. 单价偏贵,一项任务便宜
第三方评测机构 Artificial Analysis 明确把它的输入价标为 expensive。同类中位数是每百万 token $0.33,它是 $1.32。但它每个任务只花 $0.25,在同批 106 个开源大模型里第二低。
| 模型 | 每任务成本 | 相对倍数 |
|---|---|---|
| V4 Pro | $0.25 | 基准 |
| Kimi K3 | $0.84 | 3.4x |
| GLM-5.2 | $0.32 | 1.3x |
| Claude Opus 5 | $2.34 | 9.4x |
就是说它起步价比别人贵,但路线短、绕得少,一趟算下来还算便宜。
2. 真正省钱的是缓存
agent 干活的方式天生就是绕弯的。读一遍不够就读两遍,改错了再改回来。绕弯就是烧 token。所以真正算账的时候不应该去看单价多少,应该去看完成一次任务要多少米。
我在长上下文测试里正好量到了这个数:
- 同一份 92 万 token 的上下文,第一次提问花了约 ¥9.00
- 第二到第五次提问加起来只花了约 ¥0.28
- 五次提问里被缓存命中的部分完全相同:923,776 个 token
四次编码任务的缓存命中率在 93% 到 98% 之间。这就像熬火锅底料——第一次熬很贵,之后每次下菜只加一点新料。但底料只要被改动一点点,就得从头重熬。
3. 省钱是写在工程里的
我在它 219 个包里查到,215 个 README 都必须回答同一个问题:我对 KV 缓存前缀稳定性有什么影响。
而且它还有个只许规划、不许动手的 plan 模式。正常做法是把写文件、改代码这些工具从工具表里摘掉,摘了模型就调不到。但是 dsh 没摘。出厂提示词里明写:
The tool catalog stays the same across modes for request-cache stability … those tools remain listed only to keep the request shape stable.
它宁可承担模型不听话、真去调用了被禁工具的风险,也要保住请求前缀不变、保住缓存命中。
而且还有一个工程设定:
- 工具结果超过 8,192 字符就裁、留头 4,096 尾 1,024
- 超过 50,000 字节直接落盘不进上下文
- 连给会话起个标题都设了 64 token 的输出上限
每一处都在算 token,DeepSeek 是真为你钱包着想。
4. 涨价之后的真实影响
8 月 17 日 0 点涨价正式生效。对旧价的倍数:
| 类型 | 涨幅 |
|---|---|
| 缓存命中 | 6-12 倍 |
| 未命中 | 1.5-3.0 倍 |
| 输出 | 2.25-4.5 倍 |
高峰时段是北京时间 9-12 点、14-18 点。注意涨得最多的是缓存命中。而我四次编码任务的命中率在 93% 到 98% 之间。所以这次涨价真正肉疼的是那些把缓存用得最好的人。
把前面几章串起来看,同一件事在不同层面重复出现:
- 架构层:MoE 让总参像 1.6T、算力像 49B
- 定价层:单价偏贵、每任务第二低
- 缓存层:92 万 token 第一次 ¥9、后四次 ¥0.28
- 工程规范层:215 个包必答缓存前缀问题、plan 模式宁可不摘工具
DeepSeek 一直在做同一件事:用更少的算力和更少的上下文,买同样的产出。
三、为什么换个 Harness,模型就像"降智"了?
社交媒体和知乎上早有用户实测:把 V4 Pro 接到 Claude Code 里明显变差,同样任务换 OpenCode 就正常。
我实际打了接口,发现答案是官方路由导致的。
DeepSeek 为了让 Claude 生态的工具直接接过来,做了一层模型名翻译。Anthropic 那边有三档(Opus 旗舰、Sonnet 主力、Haiku 轻快),DeepSeek 只有两档,于是 claude-opus 对应到 Pro,而 claude-sonnet 和 claude-haiku 一起对应到 Flash。
问题就发生在 Sonnet 这里——这在 Anthropic 那边是干活主力,能力离 Opus 更近,但在这套映射里被和 Haiku 一起归到了 284B 的 Flash。
我试了非 claude 的名字:foobar-9000 和 gpt-5-turbo 都直接报 400,错误信息明说只支持那两个 DeepSeek 模型名。只有 claude-* 开头的名字才会静默落到某个 DeepSeek 模型。
还有一个更容易踩的坑:配置里写着任何非当前代的 claude 名字,都可能落到 Flash。比如 claude-3-opus-20240229 名字里有 opus,但最后落到的是 Flash。而 claude-opus-4-6 才落到 Pro。
那会不会收着 Pro 的钱,实际跑 Flash 的质量呢?我打了 23 发会被映射到 Flash 的请求、累计输出 10.3 万 token,让余额跳动 ¥1.00。四套价格假设里最接近的是按 Flash 计价(预测 ¥0.925,差 ¥0.075)。
所以这不是钱的问题,主要问题是我以为在用 1.6T 的旗舰,实际有一部分活是 284B 的小模型在干,而且没有任何提示。
对开发者而言,用 Claude 生态的工具接它,以下四个环境变量要一起显式覆盖:
ANTHROPIC_MODEL
ANTHROPIC_DEFAULT_OPUS_MODEL
ANTHROPIC_DEFAULT_SONNET_MODEL
CLAUDE_CODE_SUBAGENT_MODEL2
3
4
四、DeepSeek Harness:它到底解决了什么问题?
8 月 13 日晚 19:19,V4-Pro 正式版公告发出。76 分钟后,DeepSeek 把自己的那套脚手架也开源了。
1. 官方分数终于可以复现了
厂商报跑分,用的都是自家的脚手架,而脚手架不公开。DeepSeek 自己在公告脚注里也说明了这件事:0813 的 Code Agent 成绩是用「DeepSeek Harness 极简模式」加 max 思考档跑的,并主动声明"其他框架下结果可能略有不同"。
它把这套配置直接放进了仓库。极简模式下模型能看到的工具只有两个:一个持久 bash、一个字符串替换编辑器。上下文压缩:关闭。系统提示词:一句话。而流空闲超时是 172,800,000 毫秒——48 小时。他们预期的是能跑两天的任务。
有意思的是 Claude Code 恰好是反过来的:重系统提示词、一大堆工具、带自动压缩。两者几乎是对立的两端。
我照它跑通了,两道题同样满分。那官方备注的"略有不同"到底有多少?
- 同一道多文件重构题:标准模式 42 步,极简模式 65 步(多 55%)
- 另一道终端修故障题:20 步对 27 步,多 35%
- 两道题极简模式都做对了,但改动密集那道题的成本高了 58%
比喻一下:相当于只给你一把瑞士军刀去修车,对比给你一整套工具箱。军刀什么都能干一点,所以你确实能修好,但要多拧很多下。工具少不等于省,它是用步数换了工具数。
2. Everything is a Plugin
那到底什么是 Plugin?我理解其实就是 OS 和 APP 的关系。苹果造 iPhone 的时候,根本不知道十年后会有个叫「小红书」的 App。核心没变,我只需要加强平台环境,能力却无限长出来,这就是插件能带来的想象力。
dsh 把这件事推到了什么程度呢?模型适配器、工具注册表、会话日志、沙箱策略、连派活的那个主循环本身,都是插件,都能从配置里换掉。
而且它还多走了一步——它给模型准备了五个工具,让模型在运行中的进程里自己写插件、挂载、执行、停止。
官方原文第一句:
"The self-referential Cordis toolset: five model-facing tools over the live runtime in the current DSH process."
其中 cordis_define 让模型自己写一个包——名字、用途、宿主端代码,可选浏览器端代码;语法检查后登记。cordis_run 在一个 vm 沙箱里执行它。
这相当于允许一个 App 在运行时自己写一个新 App,然后立刻装进系统。而官方对这件事的说明非常坦诚:
沙箱只隔离全局对象,不是安全边界……宿主域的辅助函数使逃逸成为可能。把这套工具当作 bash 权限来对待。
也就是说它递给你一把上膛的枪,同时非常认真地告诉你这把枪没有保险栓。
它还有一个特性,可以把竞品当子代理——也就是说可以让 Claude、Codex 作为小弟来给 dsh 打工。我实测了一遍,Claude 子进程真的被拉起来了,我还抓到 Claude Code 正在 clone 它的官方插件市场。但委派连续两次失败,模型于是自己降级到普通子代理完成了任务,并主动交代了它换了工具、以及为什么换。
3. V4 Pro 和 Harness,是两种完全不同的产品
用 V4-Pro 和用 dsh 是两件不同的事。前者很简单:拿个 API key,接进现在用的 Claude Code、Codex、OpenCode 就完事了。大多数人需要的只是这个。
但 dsh 却完完全全是一个纯粹的开发工具,绝对不是一个高度集成、封装好一次性交付的产品。用好 dsh 需要以下四样东西:
你得会改配置,并且知道自己在改什么。模型选哪个、工具给几个、上下文压不压、沙箱怎么开,都在 YAML 里,都没有推荐设置这回事。
你得自己判断该开哪个模式。它给了你一个开关,工具是"直接调"还是"写程序调"。而这个开关在我两道题上的结论是相反的:一道贵 22%,一道省 23%。这条分界线我跑了四次才摸到。
你得能承受东西说变就变、而且出了问题没人接。它自己标着 developer preview,明写会有破坏性变更。而 Issues 是关闭的,你不能提问题,只能自己看代码。
你得自己判断安全边界。就是上一章那把没有保险栓的枪。它把风险写得很清楚,但决定要不要开的是你。
五、DeepSeek 把判断权交给了谁?
一切从矛盾论开始,也从矛盾论结束,事物的本质就是矛盾的。解决一个矛盾,就产生新的矛盾,也就留下新的机会,如此循环。
1. 自由和选择成本一起交给了用户
GitHub 仓库的事实:Issues 功能关闭、外部 PR 总数为 0、只开了讨论区、330 个 watch 对 85,268 个 star。而仓库里带着完整的 issue 治理流水线——policy、lifecycle、模板,连单测都写了,就是没开。
如果目标是让丰富的个体自由创造,为什么不接一个外部 PR?它的姿态好像是给你自由改,但别来跟我协作。像是宜家把板材、螺丝、图纸全给用户,但不接受用户的任何改进建议。
但如果转换视角,在它的假设下这其实是自洽的。如果每个人都知道自己要什么,那提 issue 让我改本身就是多余的,你直接拿去改你自己那份不就好了。
我实测了两道同样的题,但结果方向相反:
- 多文件重构那道题:写程序模式贵 22%、慢 34%
- 终端修故障那道题:省 23%、快 38%
你究竟想要什么,你能付出多大的代价,这都需要你自己想清楚。 DeepSeek 把选择权给你的同时,也把做出这些选择所需要的认知成本交给了你。
2. Harness 到底是给人用的,还是给模型用的?
这个代码库是按对 Agent 友好而不是对人友好来组织的。九条证据全是公开源码,任何人都能验。
"一切皆插件"做到"连主循环都能换、还给模型开一套自己写插件的工具"这个程度,用"方便用户自定义"是解释不通的。但换一个假设就全通了:如果它期待的使用者不是人,而是模型自己呢?
一个要长期自己跑、自己改自己的系统,需要的恰恰是这些:
- 每一环都可替换(不然改不动)
- 决策全部留痕(686 篇,连被否决的 11 篇都留着)
- 测试比源码还多且每个文件 100% 覆盖(不然改坏了没人知道)
- 包拆得极碎(改动面才小)
- 单位成本压到极限(不然跑不久)
3. 苹果与 DeepSeek:两种交付哲学
DeepSeek 拒绝做判断。它没有推荐设置、没有默认模式、不告诉你哪个开关该开,因为给你一个默认值,就等于替你判断了一次。
iOS 是平台,可 iPhone 对普通用户是完全可用的成品。你不装任何 App,开机就能打电话、拍照、上网。苹果做了两层:对开发者是平台,交出判断权;对用户是产品,承担判断。易上手难精通的真正含义,就是这两层同时存在。
而 dsh 只做了平台那一层。它是一个只有内核、没有出厂系统的 OS。真正的对照物是 AOSP——手机厂商拿它去做自己的发行版,HyperOS、OriginOS 都是这么来的。AOSP 也不接你的 issue,你 fork 走自己维护。
苹果几十年都在致敬极富创造力的人,但它交付的始终是产品。同样相信用户有创造力,一家替你铺路,一家把零件递给你。没有谁优谁劣,只有不同的选择,仅此而已。
4. 最终的主要矛盾
DeepSeek 交还判断权的彻底程度,同接过这份判断权所需的能力与成本之间的矛盾。
矛盾恰恰出在彻底上。不彻底就不矛盾了,给一半自由、留一套默认值,那是 Claude Code 的做法。而它把判断权完整交还出去,包括那些你不知道自己需要判断的地方(该开哪个模式、默认模型是哪个、那把枪有没有保险栓)。事实上主体并不总是具备承接这份判断权的条件。
那它为什么会这么选?至少有三个解释:
他们没有做产品的资源和意愿。 团队构成是研究者,算力和人都压在模型上。(社区有很多人直呼让他们招一个产品经理吧,因为 dsh 用起来确实折磨人。)
产品化的边际收益太低。 C 端用户赶都赶不走,B 端靠 API 就够了。
产品的前提是替用户做判断,而他们选择不做这个判断。 可能因为判断不了,也可能因为他们真的认为人的想法足够多样,不该被一套默认值收拢。
我倾向第三个解释,只有它能同时解释模型侧和用户侧。它是一个交付给自主主体的零件箱,而这一代最重要的自主主体,可能不是现在的我。没准是针对未来的模型或者人们。
写在最后
这篇文章本身也是一个组合的产物。四道自造题、七次运行、两轮实测,所有结论都只在这个特定组合里成立。而且我从开始全程都在问它能不能干活,直到很晚才意识到该问一句:它是给谁做的,我适合用吗?
回头看 V4 Pro 和 DeepSeek Harness,这次真正有意思的或许不只是一个模型又变强了多少。模型越来越强、上下文越来越长、Agent 能做的事情越来越多之后,新的问题也随之出现:能力该怎么用,成本该花在哪里,哪些判断应该交给产品,哪些又应该留给人,甚至留给模型自己。
DeepSeek 给出的答案并不轻松,它把更多能力开放出来,也把更多选择和责任一起交了出去。
我自己是做产品的,其实产品经理的工作就是替用户做那些假设。所以把这套东西看完,我自然而然的想到,如果不做假设是一种更尊重人的姿态,那我这个岗位的意义是什么?
我想,做假设的本质是替用户承担认知成本。DeepSeek 把这个成本还给了我,苹果替我吃掉了它。
两种都是选择,代价不同而已,最终取决于人们想要什么,还有这家公司相信什么。