终章:五种工程观,我们该抄什么
五家 harness 设计哲学总表,附最小可抄清单和体量陷阱清单。
先玩再讲。下面是全专题讲过的主要机制,做成了可勾选的卡片,每张标着它解决的问题和依赖的前置机制。像点菜一样勾出你项目需要的,右边实时生成你的架构清单:缺了依赖会标红警告,勾了体量陷阱会提醒你养不养得起。点「播放」看一遍典型的踩坑加纠正过程。
全专题拆的是 DSH,但每一课都在跟别家对照。收官先把五家摆在一张桌上。三个维度:真源(对话状态的权威副本放哪)、扩展模型(第三方怎么加能力)、安全依靠(防出事靠什么)。
表看完先记住一件事:五家没有对错,只有立场。Claude Code 的断路器数字来自真实账单,Grok 的静态组合换来编译期确定性,Codex 把不信任写进操作系统层,OpenCode 把可换模型放在第一位。DSH 的特殊在于它把可证明排在了好用前面,这是运行时的立场,也是它文档和测试体量的根源。
全专题讲了三十来个机制,大多数和 DSH 的插件框架绑定。但有五件是纯思路,抄走就能用:
- 事件日志真源。对话状态只存一份 append-only 的事件序列,消息数组永远从它派生。一个 JSONL 文件加一个 fold 函数就是最小实现,恢复和回放白送(机制详解见 Model-visible ⟺ logged 那一课)。
- 三种输入语义。用户在 agent 干活时发来的消息,明确分成排队、插话、打断三种命运,写成显式的接口语义。没有这一层,输入时机就是薛定谔的状态。
- 双路径压缩。主动测压和被动溢出恢复分开挂,事件不同、条件不同、失败语义不同(见 Compaction 双路径那一课)。
- 溯源鉴权。每段进入上下文的内容都带来源标签,高权限操作只认可信来源。工具结果里藏的指令冒充不了用户。
- 单调 Guard。重试、恢复这类危险放行,一律要求出示单调递增的证据(世代号、计数器),不认插件的口供。
这五件的共同点:都是接口语义层面的决定,跟你用什么语言、什么框架无关。一个周末能搭出毛坯,剩下的是打磨。
反过来,有三件事是 DSH 用专职团队的人力堆出来的,个人和小团队照抄必翻车:
- 219 个包的插件树。一切皆插件意味着每个能力都要切出 Service Definition、Provider、Consumer 三个角色,配齐 README、测试和文档配对。DSH 有 49 个包分组、268 份 README。你项目里的同款需求,一个 plugins 文件夹加约定就够了。
- 双语三文件文档配对。每份文档是英文、中文加一份记录两侧 blob hash 的
.i18n.yaml,改一侧不重新确认配对就 CI 红。纪律漂亮,成本是每次文档改动双倍起步。 - per-file 100% 覆盖率门禁。每个源文件都要 100% 行覆盖。DSH 自己都写了篇 proposed 笔记(
2026-06-11-mutation-testing)承认覆盖率只证明代码被执行过。没有 AI 大规模写测试的产能,这个门禁只会逼人写「执行但不断言」的假测试。
抄机制不抄框架五件可抄的都是接口语义,三件陷阱都是基础设施。判断标准:这个设计删掉框架还成立吗?成立就能抄。
体量是成本,也是团队的自证1.8 万行文档、684 篇活跃与归档笔记、逐文件覆盖门禁,养这些的前提是有 AI 产能加专人管门禁。它证明的与其说是必要性,不如说是投入。
没做完的部分同样诚实DSH 把自己的未完成写在明面上:预发布阶段、格式无兼容承诺、MCP 只桥了一种能力、没有交互式 TUI。看一个项目的成熟度,先看它敢不敢列这张表。
收官课不吹主角。DSH 是开发者预览版,根 AGENTS.md 开头第二节就写着预发布立场:
SCHEMA_VERSION; dsh-session keeps SESSION_FORMAT_VERSION at 0 with no compatibility promise.(大意:第一个正式版本发布时删掉本节。当前没有外部使用者,宁要正确的地基也不做兼容垫片;后端直接拒绝旧的磁盘格式,会话格式版本停在 0,不做任何兼容承诺。) 出处:deepseek-harness-master 仓库根
AGENTS.md 第 5 至 7 行,核对日期 2026-08-13
MCP 这边,只桥接了工具一种能力,Resources 和 Prompts 明确延后,packages/mcp/mcp-client/README.md 第 111 行原文:「Tools are the only bridged MCP capability — Resources and Prompts have no harness consumer and are deferred.」产品入口也只有 Web UI 和 headless 运行(apps/ 下只有 cli 与 web 两个应用),没有 Claude Code、Grok Build 那样的交互式 TUI。这三条不算黑点,算取舍:地基没干透之前不浇二楼。
最后说一个容易被略过、但最能解释 DSH 动机的东西。它的四种产品模式就是四份 preset 配置文件,其中极简模式的核心配置一共就这几行:
# The `minimal` agent preset: a fixed-prompt, two-tool coding-agent composition.
#
# The persona is the complete system prompt, so global identity, Web orientation,
# tool guidance, and later assembly listeners cannot add prompt text. Runtime
# context snapshots are suppressed for this preset, and the model composes only
# persistent `bash` and `str_replace_editor`. Context compaction is absent.
- id: persona
name: '@deepseek-ai/dsh-persona'
config:
text: You are a helpful software engineer assistant.
complete: true
includeRuntimeContext: false
apps/cli/config/agent-presets/minimal/agent.cordis.yml,核对日期 2026-08-13。代码块保留源码原文。读一下这份配置在做什么:系统提示词就一句话,且声明为 complete,任何插件都加不了字;运行时上下文被抑制;工具只有 bash 和 str_replace_editor;没有压缩。所有 harness 侧的变量都被拧到最小。根目录的 BENCHMARK.md 推荐用 Python SDK 跑这个 minimal 变体做基准测试,每个任务独立 workspace 和会话。
这解释了 DeepSeek 做 harness 的动机之一:模型厂商需要一台标准化、可复现、无压缩干扰的测量仪来评自家模型,顺手把它做成了通用运行时。Anthropic 做 Claude Code 是为了让模型服务产品,DeepSeek 做 DSH 有一半是为了测量模型本身。立场不同,工程观自然不同。往后看,agentic RL 训练和模型评测对这种可回放、可证明的 harness 只会更饥渴,这可能是 DSH 这套重机制路线最先兑现价值的地方。
对照组的收官可以互相印证:Grok 专题的 工程复盘与证据边界 和 Coding Agent 设计工作台 从 Rust 单体的角度回答了同一批问题,两边对着读,五种工程观就齐了。
用自助餐给自己的项目做一次架构评审
回到页首的演示,按你手头真实项目的现状勾选:已经有的机制勾上,没有的留空。看右边清单里的红色警告,找出至少一条缺依赖的组合(比如有重试逻辑但没有任何单调证据)。然后回答:补上缺的那块,最小要写多少代码?如果答案超过一周,说明你该先抄的是更底下那层。