終章:五種工程觀,我們該抄什麼
五家 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 單體的角度回答了同一批問題,兩邊對着讀,五種工程觀就齊了。
用自助餐給自己的項目做一次架構評審
回到頁首的演示,按你手頭真實項目的現狀勾選:已經有嘅機制剔上,冇嘅留空。看右邊清單裏的紅色警告,找出至少一條缺依賴的組合(比如有重試邏輯但沒有任何單調證據)。然後回答:補返缺嗰塊,最少要寫幾多程式碼?如果答案超過一週,説明你該先抄的是更底下那層。