返回指南
模型·2026年10月1日·閱讀約 8 分鐘

OpenClaw 的最佳本機模型:在四項代理任務上測量 gemma4、gpt-oss:20b 與 qwen3-coder:30b

四項評分代理任務,每項執行三次,每次都使用全新的工作區:OpenClaw 2026.9.7 搭配 Ollama 0.35.0,執行於 128 GB M3 Max。建議的預設模型 gemma4 擊敗兩個更大的模型——而程式撰寫模型失敗在工具呼叫格式,而非程式碼。

最後審核於 。

在執行 OpenClaw 2026.9.7 與 Ollama 0.35.0 的 128 GB M3 Max 上,OpenClaw 自己的 Ollama 設定所建議的模型 gemma4,在四項代理程式任務的全部 12 次評分執行中均通過;gpt-oss:20b 通過 12 次中的 11 次,但失敗的工具呼叫次數幾乎是 gemma4 的三倍;而通常作為程式設計首選的 qwen3-coder:30b 只通過 12 次中的 2 次,因為其工具呼叫持續在 Ollama 的解析器中失敗。 我們在全新的工作區中,對每個模型的每項任務各執行三次,以腳本評分結果,並記錄 OpenClaw 自己的工具與 token 計數,以及 Ollama 的伺服器日誌。測量日期為 2026 年 10 月 1 日。

若要瞭解 OpenClaw 本身的費用,以及改用託管模型的費用,請參閱 OpenClaw 定價;若要使用 API 備援執行本機模型,請參閱 OpenClaw 中的多個代理程式與模型。

執行內容

機器Apple M3 Max,128 GB 統一記憶體
OpenClaw從 npm 安裝的 2026.9.7、Node 24.21.0、openclaw agent --local --json,每次執行一個回合
Ollamav0.35.0 發行版二進位檔、原生 API(不含 /v1)
模型gemma4:latest — 7.5B、Q4_K_M、磁碟上 6.6 GB;gpt-oss:20b — 20.9B、MXFP4、13.8 GB;qwen3-coder:30b — 30.5B 混合專家模型、Q4_K_M、18.6 GB
上下文OpenClaw 對三者皆為 contextWindow 32,768;Ollama 以 131,072 載入 gemma4 和 gpt-oss,以 262,144 載入 qwen3-coder
工具執行OpenClaw 的 Docker 沙箱,工作區以讀寫模式掛載
執行次數4 項任務 × 3 次重複 × 3 個模型 = 36 次;每次都在全新的工作區並使用全新的 OpenClaw 狀態

四項任務

工作代理程式必須完成的事項通過條件
讀取讀取一份 301 行的服務日誌,並找出唯一一行 ERROR 所代表的服務回覆包含正確的服務名稱
修正方法執行一個單元測試檔案,修正該檔案測試的模組中的錯誤,然後重新執行——不要修改測試測試以 0 結束,且測試檔案逐位元組完全相同
計數計算五個 CSV 檔案中的資料列數,並將計數寫入 counts.jsoncounts.json 等於預期物件
兩檔案修正兩個模組中有兩個彼此獨立的錯誤,導致三項測試失敗;修正兩者,不要修改測試所有測試皆以 0 結束,且測試檔案逐位元組完全相同

結果

模型工作通過中位數時間中位數工具呼叫次數失敗的工具呼叫(3 次執行)輸入/輸出 token 中位數
gemma4:latestt1-read3/350.2 秒1021,438 / 19
gemma4:latestt2-fix3/347.5 秒4013,387 / 866
gemma4:latestt3-count3/337.9 秒7113,073 / 513
gemma4:latestt4-multi3/375.1 秒10616,417 / 2,441
gpt-oss:20bt1-read3/338.7 秒3516,971 / 508
gpt-oss:20bt2-fix3/354.2 秒7612,409 / 1,193
gpt-oss:20bt3-count2/376.5 秒10513,247 / 1,713
gpt-oss:20bt4-multi3/365.1 秒11313,065 / 1,380
qwen3-coder:30bt1-read0/325.1 秒008,915 / 38
qwen3-coder:30bt2-fix0/334.8 秒309,435 / 163
qwen3-coder:30bt3-count2/336.9 秒309,503 / 279
qwen3-coder:30bt4-multi0/342.5 秒509,992 / 243

時間為每次執行的實際經過時間,包括約五至七秒的 OpenClaw 啟動時間。「輸入 token」是 OpenClaw 記錄的未快取輸入;從快取重新傳送的上下文另計,並計入下方的費用區段。失敗工具呼叫欄位計算的是 OpenClaw 記錄的失敗;qwen3-coder 的失敗發生在呼叫抵達 OpenClaw 之前,因此該欄顯示為零,詳情如下。

數據說明了什麼

  • gemma4 和 gpt-oss:20b 都適合短時間的代理程式任務。 24 次執行中有 23 次通過,包括需要讀取數個模組、編輯其中兩個模組並重新執行測試的兩檔案修正。
  • gemma4 更穩定地使用工具。 在讀取任務中,它每次都恰好進行一次工具呼叫;gpt-oss 進行三次,其中兩次通常在讀取檔案前就失敗。在全部 12 次執行中,gpt-oss 有 19 次失敗的工具呼叫,而 gemma4 有 7 次;gpt-oss 每項任務平均有 9.1 次助理回合,gemma4 則為 6.8 次。
  • 唯一一次失敗是 gpt-oss 在計數任務中失敗:它進行 13 次工具呼叫後寫入格式錯誤的 counts.json,並在沒有回覆的情況下結束回合。
  • 速度在此並非區別因素。 所有執行中,gemma4 的中位數為 53 秒,gpt-oss 為 54 秒;最慢的一次是 gemma4 在兩檔案修正中的 133 秒,進行了 17 次工具呼叫。qwen3-coder 的執行時間較短,只是因為它很早就失敗。
  • 較大的模型在這些任務中並未帶來更高的準確度。gpt-oss:20b 的參數數量幾乎是 gemma4 的三倍,而為程式碼打造的 qwen3-coder:30b 三者得分最低。

每個模型 12 次執行足以看出這些任務上的模式,但不足以普遍排名模型。未測試長時間任務、更大的程式碼庫及其他量化方式。

qwen3-coder:30b 為何失敗

不是因為程式設計。其 10 次失敗執行中:

  • 5 次在 Ollama 的解析器中結束。 qwen3-coder 以 XML 撰寫工具呼叫;當引數包含程式碼時,它以 </function> 關閉了 <parameter> 元素。Ollama 0.35.0 的伺服器日誌記錄「qwen tool call parsing failed … XML syntax error … element <parameter> closed by </function>」,而 OpenClaw 以「Agent run failed」結束回合。
  • 4 次完全沒有進行呼叫。 回覆宣布下一步,接著將單獨的 </tool_call> 以文字輸出,沒有任何 Ollama 能解析為呼叫的內容;回合就在此結束。這是 OpenClaw 文件所指向的 /v1 URL 相關症狀——但在此處它發生於原生 API。
  • 1 次是錯誤答案:它將 CSV 標頭列計為資料列。

解析器屬於 Ollama,因此這是 Ollama 0.35.0 的結果,而不是對模型的定論。如果你使用 OpenClaw 執行 qwen3-coder,請在責怪模型之前查看 ollama serve 的日誌是否有「qwen tool call parsing failed」,並在 Ollama 升級後重新測試。

關鍵設定

  • 原生 Ollama URL。 OpenClaw 文件指出,/v1 OpenAI 相容 URL「會破壞工具呼叫,模型可能會將原始工具呼叫 JSON 以純文字輸出」;本次執行使用不含 /v1 的 baseUrl,並搭配 api: "ollama"。
  • 在手寫項目中固定 contextWindow。 在冒煙測試中,未設定此值的明確模型項目解析為 200,000 個 token 的上下文;OpenClaw 自己的 Ollama 設定會為本機模型寫入 32,768,本次執行即使用此值。
  • Ollama 的上下文是獨立的。 Ollama 0.35.0 以 131,072 個 token 載入 gemma4 和 gpt-oss,以 262,144 個 token 載入 qwen3-coder——常駐記憶體為 45.3 GB——不受 OpenClaw 的 32,768 影響;決定記憶體的是這項設定,而不是 OpenClaw 的預算。
  • 將 shell 放入沙箱。 在你的機器上執行 shell 命令的本機模型,才是這裡真正的風險。使用 sandbox.mode: "all" 時,exec 會在 OpenClaw 的 Docker 映像中執行,僅掛載工作區;該映像會以 OpenClaw 沙箱文件中的 docker build 命令建置一次。
OpenClaw 2026.9.7 + Ollama 0.35.0——已使用 openclaw config validate 驗證
// ~/.openclaw/openclaw.json — the runs used one model per config; the
// fallbacks line shows the pattern and was not part of the measured runs
{
  models: { providers: { ollama: {
    apiKey: "ollama-local",
    baseUrl: "http://127.0.0.1:11434",   // native Ollama URL — no /v1
    api: "ollama",
    timeoutSeconds: 600,
    models: [
      { id: "gemma4:latest", name: "gemma4:latest", contextWindow: 32768, maxTokens: 8192,
        params: { keep_alive: "30m" } },
      { id: "gpt-oss:20b",   name: "gpt-oss:20b",   contextWindow: 32768, maxTokens: 8192,
        params: { keep_alive: "30m" } },
    ],
  } } },
  agents: { defaults: {
    model: { primary: "ollama/gemma4:latest", fallbacks: ["ollama/gpt-oss:20b"] },
    sandbox: { mode: "all", workspaceAccess: "rw" },   // shell runs in Docker
  } },
  tools: { exec: { mode: "full" } },
}

本機模型的成本

本機模型以時間、磁碟空間和電力,替代按 token 計費。每次執行中,OpenClaw 記錄 gemma4 約有 16,415 個未快取輸入 token、78,469 個重新傳送的快取上下文 token,以及 1,142 個輸出 token;gpt-oss 則為 13,761、88,688 和 1,192。粗略計算——不同模型的 tokenizer 不同——以 Claude Haiku 4.5 的 Kunavo 費率(每百萬 token 的輸入 $0.70、快取 $0.07、輸出 $3.50)計算,同樣的數量每次約為 $0.021 和 $0.020。未測量電力;每次執行的電費為瓦特 × 秒 ÷ 3,600,000 × 你的每 kWh 價格。

實際可行的模式是以本機模型作為主要模型,並為本機模型失敗的回合提供託管模型備援。OpenClaw 為每個代理程式接受一個 fallbacks 清單;Kunavo 金鑰可作為 Ollama 旁的 OpenAI 相容提供者,從預付餘額按 token 計費。Kunavo 沒有人使用 OpenClaw 對其端點執行過測試——這些執行完全在本機完成。

常見問題

OpenClaw 最適合使用哪個本機模型?

在我們測試的三個模型中,gemma4 表現最好——它也是 OpenClaw 自己建議的 Ollama 模型。在配備 128 GB 記憶體的 M3 Max 上,執行 OpenClaw 2026.9.7 與 Ollama 0.35.0 時,gemma4(7.5B、Q4_K_M)在四項任務的 12 次評分執行中全部通過;gpt-oss:20b(20.9B、MXFP4)通過 12 次中的 11 次,工具呼叫失敗 19 次,而 gemma4 為 7 次;qwen3-coder:30b 只通過 12 次中的 2 次,因為它的工具呼叫在 Ollama 剖析器中持續失敗。這是短任務上的三模型結果,不是對所有本機模型的排名。

OpenClaw 可以搭配 Ollama 完全離線執行嗎?

就模型呼叫而言可以:將供應商指向本機 Ollama 主機後,這些執行中的每個模型請求都傳送至 127.0.0.1。請使用原生 URL http://127.0.0.1:11434,而不是 /v1 OpenAI 相容 URL——OpenClaw 的 Ollama 文件指出,/v1 會破壞工具呼叫,並可能使模型將原始工具呼叫 JSON 以文字形式輸出。需要連線至網際網路的技能或工具仍然需要網路,而 OpenClaw 的 Docker 沙箱映像必須建立一次(不會自動拉取)。

本機 OpenClaw 模型需要多少記憶體?

在磁碟上,gemma4 為 6.6 GB、gpt-oss:20b 為 13.8 GB,而 qwen3-coder:30b 為 18.6 GB。載入後,Ollama 回報 gpt-oss 使用 13.7 GB、qwen3-coder 使用 45.3 GB,因為 Ollama 0.35.0 自行設定了上下文大小——gemma4 和 gpt-oss 為 131,072 個 token,qwen3-coder 為 262,144 個 token——不受告知 OpenClaw 的 32,768 個 token 影響。在 128 GB Mac 上,這些都能容納;在 16 或 32 GB 的機器上,若不使用較小的上下文則無法容納。未測試較小的機器。

與 API 相比,本機模型是免費的嗎?

Not free, just billed differently: you pay in time, disk and electricity instead of per token. Each run here used about 95,000–105,000 tokens counting OpenClaw's re-sent context — on a metered API at Claude Haiku 4.5 rates that would be roughly $0.021 a run, as rough arithmetic across different tokenizers. A local run took about 54 seconds; power draw was not measured, so the electricity side is a formula: watts × seconds ÷ 3,600,000 × your price per kWh.

為什麼 qwen3-coder 在使用 Ollama 的 OpenClaw 中會失敗?

在我們的測試中,問題出在工具呼叫格式,而不是程式碼。qwen3-coder 會以 XML 撰寫工具呼叫;在 Ollama 0.35.0 中,12 次執行有 5 次以 Ollama 的服務日誌回報「qwen tool call parsing failed」結束——XML 語法錯誤:<parameter> 元素由 </function> 關閉——之後 OpenClaw 以「Agent run failed」停止。另有 4 次將單獨的 </tool_call> 以文字輸出,沒有任何 Ollama 能解析的呼叫,因此沒有執行任何操作。在責怪模型之前,先檢查服務日誌是否有該警告,並在較新的 Ollama 上重新測試:解析器屬於 Ollama,這項結果僅適用於 0.35.0。

手動將 Ollama 模型加入 OpenClaw 時,為什麼要設定 contextWindow?

因為在我們的冒煙測試中,未設定此值的明確模型項目解析為 200,000 個 token 的上下文——遠超過多數本機模型能處理的範圍;而 OpenClaw 自己的 Ollama 設定會為本機模型寫入 32,768。固定 contextWindow(以及 maxTokens)可讓 OpenClaw 的壓縮預算維持合理。它不會改變 Ollama 自己的 num_ctx:在此測試中,Ollama 仍以 131,072 載入模型。

於 2026 年 10 月 1 日在 Apple M3 Max(128 GB)上執行:OpenClaw 2026.9.7(npm、Node 24.21.0)、Ollama v0.35.0(發行版二進位檔)、從 Ollama registry 拉取並以 sha256 驗證的 gemma4:latest、gpt-oss:20b 和 qwen3-coder:30b。36 次執行中的每一次都使用全新的工作區與全新的 OpenClaw 狀態,在 OpenClaw 的 Docker 沙箱中執行 exec,並使用腳本評分器;工具呼叫與 token 計數來自 OpenClaw 自己的 JSON 輸出。任務測試資料、評分器及介面卡腳本,均隨本頁的證據一同發布。未測量項目:耗電功率、長時間任務、其他量化方式或較小的機器。