我用 opencode 建 iF.ai——代價是一筆只有弱模型付得出的稅
工具選型常被講成一場跑分賽:同一個任務丟給兩個工具,看誰做得漂亮。但選 agent 工具,真正的決定不在一條跑分線上,而在兩條會互相打架的軸之間押注——可編排性,和模型無關的可靠性。我為 iF.ai 押了前者。這篇講我押注的理由,以及我後來才量清楚的代價。
第一軸:可編排性,也是我選 opencode 的全部理由
我最早想做的事很單純:用手機操作我的 agent。當時 Claude Code 這側能讓我從手機驅動的入口,實際上只有 GitHub Action 一條,套不進我要的使用情境。
opencode 的關鍵差別不在功能多寡,而在它是 API、程式級別的。具體講就是:Claude Code 給我的入口是終端機或 GitHub Action;opencode 給我的是一個我能從任何前端打進去的 API——LINE bot、App、我自己的後台,都能接。它不是一個我得坐在終端機前用的工具,而是一個我能拿去編排的零件。
iF.ai 的編排層之所以走得出後來那幾代演進(那段四代故事我另有專文),前提就是這個可編排性。引擎不能被程式驅動,那條產品線根本長不出來。所以我選 opencode,不是因為它跑分高,而是因為它的形狀允許我把它變成別的東西。
但代價不在我原本以為的地方
我一度以為 opencode 的 system prompt 比 Claude Code 重,所以更吃模型。拿數字校準後,發現不是這麼回事:交叉幾個專門拆解兩邊 token 的來源(見文末),兩邊的 base system prompt 其實相當,各約 2 到 3 千 token。 base 不是重點。代價藏在別的地方。
真正的稅,在你往上堆的東西
那我實測到的「換弱模型就掉」,到底是哪來的?答案是:重量不在 base,在我為了拿到可編排性而載進去的那一堆。
opencode 自己的一個 issue 量過:一個真實的重度配置(一個 Sisyphus agent、上百個 skill、五十幾個工具),在你打第一個字之前,context 就吃掉約 68,000 token,將近 99% 是系統 overhead。而 Claude Code 的對應開銷是固定的——核心 prompt 加上內建工具目錄大約十七、八 k,就到頂了,不會再往上爆。差距不在誰的 base prompt 寫得長,而在你掛了多少 skill 跟工具。
這裡有個我一開始沒看穿的東西:我要的可編排性,跟讓 harness 變重的東西,是同一枚硬幣。 編排意味著掛上更多工具、更多 skill、更多流程;每一樣都在第一個字之前先佔走 context。我不是「選了一個比較重的工具」,我是「選了一條會讓工具越用越重的路」。
順帶一提,這也解釋了一個更小的觀察:同一個模型下,我走 superpowers 的 skill 跑起來,有時還是會比裸跑差一點。道理一樣——skill 也是往上堆的重量,同一條稅。
為什麼這筆稅幾乎只有弱模型付
如果重量對誰都一樣,那也就算了。問題是它不公平。
有一份叫 Harness-Bench 的評測把同一批模型放進不同 harness 裡跑,結論很乾淨:強模型對 harness 的差異容忍度高,跨 harness 的表現變異小;弱模型的表現變異大,更依賴周邊那層執行基座。換句話說,同樣一層 harness 重量,Opus 這種強模型撐得住、分數穩;haiku、minimax 這種弱一點的,表現就明顯不穩。
這正是我實測到「換弱模型較不靈」的機制,不是玄學:不是弱模型笨,是它對 harness 重量的敏感度高,而我為了可編排性,恰恰把 harness 養重了。我等於開了一張只有弱模型付得出的帳單。
兩軸不可兼得,你得先知道哪條是命脈
把這條線收起來:可編排性和模型無關的可靠性,是兩條會打架的軸。我信奉的 Harness 原則本來是後者——把限制寫進 code、用客觀可驗證的關卡兜住,好讓便宜模型也能可靠交付。但在 iF.ai 這個案子上,可編排性是命脈,所以我選擇往第一軸傾斜,代價記在第二軸,而且我現在知道這筆代價具體落在哪、由誰買單。
真正想留給你的不是「我選了哪個」,而是這個框架:別把工具選型當成一條跑分線,它是兩條軸的取捨。 你得先想清楚,對你的東西而言,哪一條是不能輸的。
而這也讓那個開放問題變得更具體、更值得追:有沒有辦法讓重量隨任務伸縮——只在當下需要時才載入對應的 skill 跟工具,讓弱模型大多數時候不必預先付那筆稅?opencode 2026 年中開始長出的 skill registry,看起來正往這個方向走。能不能既保有可編排性、又把那筆稅退給弱模型,是我會繼續逼的下一題。
來源
- Claude Code 核心 system prompt ~2.3–3.6k、工具目錄 ~14–17.6k:claudecodecamp〈Inside Claude Code’s System Prompt〉;逐版本抽取見 Piebald-AI/claude-code-system-prompts
- 三個 harness 的逐請求 token 拆解(opencode base ~2.4k):c-daniele〈Claude Code, OpenCode, and π (pi): anatomy of a trivial request〉(2026-05-18)
- opencode 重度配置 ~68k 初始 overhead:GitHub issue anomalyco/opencode#26661
- 弱模型對 harness 變異更敏感:Harness-Bench,arXiv 2605.27922