Seedance 2.5 現已上線 — 首發於 Atlas Cloud

DeepSeek Harness vs OpenCode:多數開發者忽略的 Token 使用差距

DeepSeek Harness 與 OpenCode 的比較:在同一模型、同一任務上進行測試。每個工具對你的 token 用量做了什麼、差距為何真實存在,以及如何自行測量。

你選了一個便宜的模型。你對模型卡做了計算。然後帳單來了,看起來完全不像你算的數字。

這個差距幾乎從來不是模型造成的。問題出在框架上。框架決定了你的模型被呼叫多少次、每次呼叫要重播多少對話內容、工具結構有多大,以及失敗的測試執行要重試三次還是十二次。同一個模型、同一個任務、兩個不同的框架,token 用量天差地別。

2026 年 8 月 13 日,DeepSeek 開源了自己的代理框架,爭論立刻變得激烈。一邊是模型實驗室兩週前才發布的倉庫。另一邊是 OpenCode,GitHub 上星數最高的編碼代理。兩者都是 MIT 授權。兩者都可以指向你指定的任何模型。

所以這是一個誠實的比較版本。不是感覺,不是星數。而是每個框架實際對你 token 用量做了什麼,以及如何在十五分鐘內在自己的倉庫上進行測量。

重點摘要

  • DeepSeek Harness 是 DeepSeek AI 推出的插件優先代理執行環境,MIT 授權,以 TypeScript 編寫,仍標示為開發者預覽版。模型、工具、對話、儲存、沙箱、迴圈,甚至代理迴圈本身都是可替換的插件。
  • OpenCode 是一個 Go 語言編寫、終端機原生的編碼代理,擁有約 198k GitHub 星數、成熟的 TUI、LSP 支援以及龐大的供應商目錄。它是目前安全的預設選擇。
  • 框架選擇對 token 用量的影響比大多數人預期的還要大。 在一個使用 DeepSeek V4 Flash 的 30 個工作流程基準測試中,測試的框架每個任務的平均 token 用量範圍約為 192,000 到 1,400,000。
  • DeepSeek Harness 不在該基準測試中。 它在發布兩天後才推出,因此現在任何引用 Harness 基準測試數據的人都是在猜測。
  • 兩者都與模型無關,因此你可以將兩者指向同一個 OpenAI 相容端點,並進行真正的同條件測試。這才是對你程式碼庫唯一重要的數字。

正在筆記型電腦上輸入程式碼的手,旁邊有一杯咖啡

兩台筆記型電腦並排放在陽光充足的桌子上,執行相同的編碼任務,透過兩個不同的代理框架

公平比較 DeepSeek Harness 與 OpenCode 的唯一方法:同一個模型、同一個任務、兩個終端機。

為什麼 DeepSeek Harness 對比 OpenCode 成為本月爭論焦點

DeepSeek 的框架是一個口號:代理 = 模型 + 框架。模型負責思考,框架負責讀取檔案、執行終端機和呼叫工具。過去兩年每個人都專注於優化前半部分,而把後半部分當作管道。

結果管道相當昂貴。

Composio 將 30 個複雜的多應用程式工作流程,透過 8 個不同的代理框架,全部驅動同一個 DeepSeek V4 Flash 模型,每個任務有 900 秒上限,並在 240 次執行中進行二元程式化評分(Composio,2026 年 8 月)。到處都是同一個模型。結果差距很大。

框架通過率中位數時間每個任務平均 token 數
Pi Agent66.7%132.2s559,000
Prime Agent62.5%242.1s1,400,000
OMP56.7%272.4s742,000
Claude Code53.3%122.7s742,000
Codex53.3%245.0s678,000
DeepAgents53.3%187.1s665,000
Hermes Agent50.0%175.5s192,000
OpenCode46.7%129.7s692,000

再看一次 token 欄位。最節省的框架使用的 token 量約為最浪費框架的七分之一,執行的是完全相同的模型和完全相同的任務。該基準測試本身的結論是,框架「可能與它們運行的模型一樣重要」。

現在,大多數文章跳過的部分。DeepSeek Harness 不在該表格中。 基準測試於 8 月 11 日發布,而 Harness 於 8 月 13 日才推出。目前還沒有關於 DeepSeek Harness 的可信直接對比 token 數字,如果你這個月看到有人展示這樣的數字,要嘛他們自己在狹隘任務上執行過,要嘛就是編造的。表格給你的是一個紮實、有來源的 OpenCode 基準:每個任務 692,000 個 token,通過率 46.7%,中位數時間 129.7 秒。

這就是你想要超越的數字,本文的其餘部分將說明如何誠實地進行測試。

DeepSeek Harness 對比 OpenCode:同一個模型、同一個端點、兩個執行環境

在我們執行任何操作之前,先了解每個工具的實際樣貌。

DeepSeek Harness (dsh)OpenCode
來源DeepSeek AIAnomaly(原 SST)
發布日期2026 年 8 月 13 日2025 年底
GitHub 星數約 143k約 198k
授權MITMIT
語言TypeScriptGo
介面127.0.0.1:3080 上的 Web UI終端機 TUI
狀態開發者預覽版,預期會有破壞性變更成熟,廣泛部署
架構一切都是插件:模型、工具、技能、對話、儲存、沙箱、迴圈、排程、UI固定核心,兩個內建代理(build、plan),MCP 和 LSP 擴充
設定檔$DSH_HOME/settings.yamlopencode.json
Token 會計內建 token 計量表,包含上下文壓力與分解預測,以及透過折疊壓縮每個對話的 token 和成本追蹤,TUI 內分解最少
最適合想要重寫代理迴圈本身的團隊想要一個今天就能用的編碼代理的團隊

重要的行是架構那一行。OpenCode 給你一個建構良好的代理,並允許你擴展邊緣。DeepSeek Harness 給你一個骨架,讓你替換主幹,包括代理迴圈本身,它本身也是一個插件。這確實很不尋常,也是它仍然處於預覽版的原因。

兩者都與模型無關,這也是公平測試之所以可能的全部原因。將兩者指向同一個提供一個模型的 OpenAI 相容端點,你所測量到的每個差異都屬於框架。

在本教學中,我透過 Atlas Cloud 提供 DeepSeek V4 Flash,因為它暴露了一個純粹的 OpenAI 相容端點,兩個框架無需任何轉接程式碼即可接受,而且同一個金鑰可用於兩次執行。該 deepseek-v4-flash-0731 列表顯示,每百萬輸入 token 為 0.14 美元,每百萬輸出 token 為 0.28 美元,上下文視窗為 1,048,576 個 token,最大輸出為 393,216 個 token(截至 2026 年 8 月)。任何 OpenAI 相容的供應商都適用於此測試。重點是兩個框架必須指向同一個。

在選擇模型之前值得知道的是:OpenCode 發布了自己的總體使用數據,而 DeepSeek 模型透過它傳輸了 233 兆個 token,其中 V4 Flash 佔 85.5%,V4 Pro 佔剩下的 14.5%(OpenCode,2026 年 8 月)。Flash 是生態系統實際運行的基礎。

步驟 1:將 DeepSeek Harness 和 OpenCode 指向同一個模型

取得一個 API 金鑰和一個基礎 URL,然後將這對參數提供給兩個工具。在 Atlas Cloud 控制台 中建立金鑰,並匯出一次:

bash
1export ATLAS_API_KEY="your-api-key"
2

在連接任一框架之前,先用一個呼叫檢查端點和確切的模型 ID。如果這沒有回傳文字,下游任何東西都不會運作:

bash
1curl https://api.atlascloud.ai/v1/chat/completions \
2  -H "Authorization: Bearer $ATLAS_API_KEY" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "model": "deepseek-ai/deepseek-v4-flash-0731",
6    "messages": [{"role": "user", "content": "Reply with the single word: ready"}]
7  }'
8

在將模型交給代理之前,先直接透過端點讓模型回答一次實際任務,這很有幫助。這樣你就知道失敗的執行是框架的問題,而不是路由的問題:

圖表比較編碼提示與生成的程式碼和 token 統計

文章的任務提示發佈到 api.atlascloud.ai,旁邊是 DeepSeek V4 Flash 0731 回傳的實際答案以及呼叫報告的 token 用量

一次真正的呼叫 deepseek-ai/deepseek-v4-flash-0731,兩個框架都將使用相同的模型 ID:輸入 148 個提示 token,輸出 6,879 個 token,其中 5,731 個是推理 token。這就是你的基準,在框架添加任何工具結構之前。

現在設定每一方。DeepSeek Harness 讀取 $DSH_HOME/settings.yaml,自訂的 OpenAI 相容供應商放在 llm-pi-ai 插件下(DeepSeek Harness 文件,2026 年 8 月):

yaml
1llm-pi-ai:
2  providers:
3    atlas:
4      apiKeyEnv: ATLAS_API_KEY
5      api: openai-completions
6      baseURL: https://api.atlascloud.ai/v1
7      models:
8        - id: deepseek-ai/deepseek-v4-flash-0731
9

api 欄位接受 openai-completionsopenai-responsesanthropic-messages。這裡使用 openai-completions。如果你不想手動編輯 YAML,Web UI 有設定 > 模型 > 新增自訂供應商,它會寫入相同的區塊並將金鑰儲存在 $DSH_HOME/.credentials.yaml 中。

OpenCode 讀取專案根目錄或全域設定目錄中的 opencode.jsonOpenCode 文件,2026 年 8 月):

json
1{
2  "$schema": "https://opencode.ai/config.json",
3  "provider": {
4    "atlas": {
5      "npm": "@ai-sdk/openai-compatible",
6      "name": "Atlas Cloud",
7      "options": {
8        "baseURL": "https://api.atlascloud.ai/v1",
9        "apiKey": "{env:ATLAS_API_KEY}"
10      },
11      "models": {
12        "deepseek-ai/deepseek-v4-flash-0731": {
13          "name": "DeepSeek V4 Flash 0731",
14          "limit": { "context": 1048576, "output": 393216 }
15        }
16      }
17    }
18  },
19  "model": "atlas/deepseek-ai/deepseek-v4-flash-0731"
20}
21

使用 @ai-sdk/openai-compatible,而不是 @ai-sdk/openai,因為這個端點提供 /v1/chat/completions。將 limit 值設定為真實的上下文和輸出數字,因為 OpenCode 使用它們來決定何時進行摘要,錯誤的限制會嚴重扭曲你的 token 比較。

步驟 2:在 DeepSeek Harness 中執行基準測試任務

選擇一個任務,要夠大以需要多次工具呼叫,又要夠小以便客觀評分。多檔案,加上一個必須真正通過的測試套件。兩次執行使用相同的倉庫狀態,因此先提交或暫存。

這是確切的任務提示。逐字貼到兩個框架中:

text
1In this repository, add a token-bucket rate limiter middleware for the Express
2app in src/server.js. Limit each IP to 60 requests per minute. On rejection,
3return HTTP 429 with the JSON body {"error":"rate_limited","retryAfter":<seconds>}.
4Wire the middleware into every /api/* route. Add unit tests in
5test/rate-limit.test.js covering three cases: a request under the limit is
6allowed, a request over the limit is blocked with 429, and the counter resets
7after the window expires. Run the test suite and fix failures until it passes.
8Do not modify any file outside src/ and test/.
9

從你的專案目錄啟動 Harness:

bash
1cd /path/to/your/repo
2npx @deepseek-ai/dsh web
3

這會在 http://127.0.0.1:3080 提供 Web UI。選擇 atlas 供應商和 deepseek-ai/deepseek-v4-flash-0731 模型,貼上任務,讓它執行到完成。不要干預,不要用提示回答澄清問題。你對一個框架提供的任何幫助,如果沒有提供給另一個,都會使比較無效。

完成後,開啟軌跡視圖。那是對話記錄,token 數字就在那裡。

步驟 3:在 OpenCode 中重複執行,以進行公平的 DeepSeek Harness 對比 OpenCode 測試

將倉庫重設為完全相同的起始狀態。這是大多數非正式比較悄悄失敗的步驟,因為第二個框架從第一個框架已經部分修復的倉庫開始。

bash
1git checkout -- . && git clean -fd
2

然後對同一個模型執行 OpenCode:

bash
1opencode --model atlas/deepseek-ai/deepseek-v4-flash-0731
2

貼上步驟 2 中相同的任務提示。使用預設的 build 代理,因為它擁有完整的檔案和 shell 存取權限。再次強調,沒有提示,沒有修正,同樣的放手處理。

讓它完成,然後像評審任何 PR 一樣驗證兩次執行:

bash
1npm test
2

如果執行結果讓套件保持紅色,則表示未通過,無論摘要聽起來多麼有信心。對它進行二元評分,就像 Composio 方法論所做的那樣。一個半成品速率限制器就是失敗。

步驟 4:讀取 DeepSeek Harness 對比 OpenCode 的 token 用量

現在收集數字。兩個框架都會追蹤使用情況,但它們呈現的方式非常不同,這也是它們之間日常使用最大的差異。

DeepSeek Harness 預設提供一個 token 計量表。它暴露三個你可以直接讀取的對話預測:tokenUsage 用於總計,contextPressure 用於你離視窗還有多遠,以及 contextBreakdown 用於 token 實際去了哪裡。最後一個很有用,因為它告訴你你的帳單是來自系統提示、工具結構、檔案讀取還是對話重播。計量表使用大約每四個字元一個 token 的固定啟發式方法,而不是真正的 tokenizer,所以把它當作一個強估計,而不是發票。

Harness 也以不同的方式處理完整的上下文。它不是截斷,而是使用折疊壓縮引擎:它用摘要替換模型可見的表面,同時完整的日誌保留在持久層中。你失去的是提示中的 token,而不是記錄中的歷史。

OpenCode 追蹤每個對話的 token 和成本,並在你工作時列印在狀態行中。TUI 內的分解故意最小化,這就是為什麼存在一個小型的外部分析器生態系統,它們直接讀取 OpenCode 的對話資料庫,以按工具和快取命中率分解使用情況。如果你想要按工具歸因,你需要安裝額外的東西。

對於比較本身,不要相信任一工具自己的計數器作為最終依據。使用供應商端的數字,因為那才是你實際支付的:

要比較的項目在哪裡取得
總輸入 token供應商使用儀表板,按 API 金鑰
總輸出 token供應商使用儀表板,按 API 金鑰
模型呼叫次數Harness 軌跡視圖 / OpenCode 對話日誌
實際時間碼表,從開始到最後一次檔案寫入
通過或失敗npm test 退出碼

最乾淨的方法是建立兩個獨立的 API 金鑰,一個命名為 harness-test,另一個命名為 opencode-test,每個金鑰僅用於一次執行。然後供應商自己的使用頁面為你提供一個無可爭議的並排比較,誤差為零。這個技巧只需要兩分鐘,並消除了所有關於誰的計數器正確的爭論。

DeepSeek 框架 token 用量:真正影響帳單的因素

一旦你有了實際數字,這些是值得調整的槓桿。它們適用於兩個框架,而且它們的重要性遠大於你選擇了哪一個。

對話重播通常是最主要的項目。 代理會隨著每一步重新發送不斷增長的對話。一個 40 步的任務並不是 40 個提示的成本,而是接近 40 個越來越長提示的總和。這就是為什麼基準測試的範圍在相同的工作上從 192,000 到 1,400,000 個 token。積極進行摘要的框架落在這個範圍的底部。

快取命中是可以獲得的最便宜的優化。 DeepSeek V4 Flash 的快取命中價格約為每百萬 token 0.0028 美元,而未命中時為 0.14 美元,便宜約 98%。快取只有在請求前綴逐字節完全相同時才有效,這正是為什麼 DeepSeek Harness 強制執行嚴格的 {{variable}} 插值(具有大聲失敗語義)並保持穩定的請求標頭。一個在呼叫之間隨機打亂系統提示的框架,會悄悄地將每個命中變成未命中。

工具結構會在每次呼叫時都附帶。 連接了二十個 MCP 伺服器,意味著提示中永遠有二十組結構,無論任務是否接觸到它們。在基準測試之前,斷開這個任務不需要的連接,否則你是在測量你的 MCP 配置,而不是你的框架。

過大的工具結果會毒化上下文。 一個 cat 一個 3000 行檔案,或者一個冗長的測試執行器傾印完整的堆疊追蹤,會在其餘的執行中一直留在對話中。Harness 有一個可選的結果修剪伴侶,它會在摘要之前重寫過大的工具結果。值得開啟它。

重試在計算呼叫次數之前是不可見的。 一個對失敗測試重試三次的框架,會花費三倍的代價。比較呼叫次數欄位,而不僅僅是總 token 數,否則你會將重試迴圈誤診為昂貴的模型。

在成本方面,一旦你有 token 計數,算術就很簡單。以 Atlas Cloud 對 DeepSeek V4 Flash 的費率,一個 692,000 token 的任務(偏向輸入)落在低個位數美分。這是關於整個類別的好消息:模型足夠便宜,框架浪費是一個效率問題,而不是預算緊急情況。只有當你乘以一個團隊,全天候運行時,它才會變成一個真實的數字。如果你想要對同一個測試針對第二個模型執行,並將模型效應與框架效應分開,請瀏覽完整的模型目錄

一個應該比任何 token 數字更影響你決定的注意事項:DeepSeek Harness 明確處於開發者預覽版,其自己的 README 以大寫字母警告會有相容性破壞性變更。這是一個很好的基準測試對象,但這個月將其標準化為團隊工具則有風險。OpenCode 是無聊的選擇,而當它針對你的生產程式碼庫運行時,無聊是一種功能。

常見問題

DeepSeek Harness 比 OpenCode 好嗎?

對大多數人來說,還不是。OpenCode 成熟、終端機原生,擁有約 198k 星數和龐大的供應商目錄,而且今天就能用。DeepSeek Harness 只有兩週大,處於開發者預覽版,並警告會有破壞性變更。Harness 在架構上更有趣,因為每個元件(包括代理迴圈)都是可替換的插件。如果你想重寫代理內部,Harness 是為此而建構的。如果你想在這週交付程式碼,請用 OpenCode。

DeepSeek Harness 只能與 DeepSeek 模型一起使用嗎?

不。它與模型無關。它內建了 DeepSeek、Anthropic、OpenAI、Bedrock、Vertex、Azure 和 Codex 的目錄供應商,你可以透過在 $DSH_HOME/settings.yaml 中添加一個區塊,來加入任何支援 openai-completionsopenai-responsesanthropic-messages 協定的自訂供應商。步驟 1 中的設定將它指向一個第三方 OpenAI 相容端點,無需任何轉接程式碼。

如何檢查 DeepSeek 框架的 token 用量?

使用內建的 token 計量表,它預設掛載,並暴露 tokenUsagecontextPressurecontextBreakdown 預測,可在軌跡視圖中看到。請注意,它使用大約每四個字元一個 token 的固定啟發式方法進行估計,而不是執行真正的 tokenizer。為了計費準確性,請改為從你的供應商使用儀表板讀取,理想情況下每次執行使用一個專用 API 金鑰。社群插件(如 token 用量儀表板)會在其上添加持久的每對話記錄。

哪個框架使用更少的 token,DeepSeek Harness 還是 OpenCode?

目前還沒有發布的頭對頭比較。在 DeepSeek V4 Flash 上的 8 框架基準測試測量了 OpenCode 每個任務平均 692,000 個 token,但它在 DeepSeek Harness 發布前兩天執行,因此 Harness 未被包含在內。任何引用該基準測試中 Harness 數字的人,都是在引用不存在的東西。在你的自己的倉庫上執行步驟 2 到步驟 4 的測試,因為 token 用量高度依賴於你的程式碼庫大小、你的 MCP 配置和你的任務形狀。

我可以對同一個 API 金鑰執行 DeepSeek Harness 和 OpenCode 嗎?

可以,對於隨意測試來說沒問題。為了乾淨的測量,使用兩個不同的金鑰,每個框架一個。然後你的供應商使用儀表板會自動將每個 token 歸因於正確的執行,你永遠不需要將兩個不同的內部估計器與一張發票進行對帳。

代理和框架有什麼區別?

DeepSeek 自己的框架是:代理 = 模型 + 框架。模型負責推理。框架是將它與現實連接起來的一切:讀取和寫入檔案、執行 shell 命令、呼叫工具、管理對話、處理批准以及驅動決定下一步該做什麼的迴圈。同一個模型加上不同的框架,會給你一個可測量不同的代理,這正是這個比較的全部重點。

最新模型

一個 API,暢享全模態 AI。

探索全部模型