用本地 Coding Agent 取代 Claude Code/Codex 訂閱:照著做的一份實戰設定
每個月被 Claude Code、Codex 的訂閱帳單提醒一次、把整個 codebase 丟到別人家的 GPU 上、沒網路就動不了——如果你也覺得這三件事有點卡,那 Sebastian Raschka(《Build a Large Language Model from Scratch》作者、Ahead of AI 電子報主筆)最近這篇〈Using Local Coding Agents〉值得照著做一遍。
他的結論不浮誇:30–35B 這個級距的開放權重 MoE 模型,已經「足夠」應付很多日常 coding agent 工作。注意是「足夠」,不是「打趴 Opus」。但對工程師來說,「足夠且跑在自己機器上」常常就是分水嶺。這篇就用實戰教學的角度,把他驗證過的設定一步步拆給你照做。
先講清楚:本文數字多為 Raschka 在文章與其 GitHub repo(
rasbt/local-coding-agent-evals)回報的實測結果,我沒有自己重跑。版本號(如 Qwen3.6、North Mini Code、Gemma 4)以他文中所列為準;若你查到的 tag 名稱不同,以你ollama list看到的為準。
本文大綱
一、它到底在解決什麼
訂閱式 coding agent 很好用,但有三個結構性痛點:
- 成本不可預測:用越兇帳單越大,重度使用者一個月燒掉的錢,可能夠買一台二手 Mac Mini。
- 資料外送:你的 private repo、密鑰、商業邏輯,全程經過第三方伺服器。對受規範產業(金融、醫療、政府標案)這常常是直接出局。
- 離線就廢:飛機上、客戶內網、斷線時,agent 直接罷工。
過去「本地跑 LLM 寫 code」的勸退理由是:小模型笨、大模型跑不動。但 2025–2026 這波 MoE(Mixture-of-Experts)開放權重模型改變了天平——35B 的總參數量、每次只啟用約 3B,等於用「大模型的知識量」配「小模型的速度」。Raschka 這篇就是去驗證:這個天平到底翻過去了沒。
二、運作原理:本地化只動「最底下那一層」
要照做,得先有正確的心智模型。一個 coding agent 不是單一個東西,它是三層疊起來的(這也是 Hugging Face agent glossary 的拆法):
- Harness(執行循環):CLI 工具本身——Codex、Qwen-Code、Claude Code。負責呼叫模型、解析 tool call、決定何時停、處理錯誤。
- API 接口:harness 與模型溝通的協定,絕大多數採 OpenAI 相容格式。
- Model(模型):真正生成 token 的 LLM。
雲端版本,是 harness 把請求送到供應商的伺服器。「本地化」做的事很單純:只把最底層的 model,換成跑在你 localhost 上的開放權重模型,上面兩層幾乎不動。 因為大家都講 OpenAI 相容協定,你只要把 harness 的 endpoint 從供應商網址改成 http://127.0.0.1:11434/v1,整條鏈路就接上了。

中間那層「推理後端」就是把模型權重載入、對外開一個 OpenAI 相容 port 的程式。Raschka 主推 Ollama,理由很實際:跨 macOS/Linux/Windows、命令列就能裝、預設就開 OpenAI 相容 API。其他選項他也點名:LM Studio、vLLM、SGLang、MLX。其中 MLX 是 Apple Silicon 專屬的優化路徑,在 Mac 上拉模型時要挑 -mlx 變體。
為什麼 MoE 模型能在 Mac Mini 上跑得動
關鍵在「啟用參數」。Qwen3.6 35B-A3B 的 A3B 意思是 active 3B——35B 的權重全載進記憶體(所以吃 RAM),但每生成一個 token 只有約 3B 參數真的參與運算(所以速度像小模型)。這就是它能在一台 Mac Mini M4 上跑出堪用速度的原因。
三、手把手:把本地 agent 接起來
以下是照著文章與 repo 可以複製的流程。先準備好硬體心理預期:Raschka 的測試機是 Mac Mini M4(Apple Silicon,統一記憶體)和一台 DGX Spark(Linux)。有意思的是,他自己幾乎都把 agent 跑在 DGX 上,把 Mac 留給其他工作、也避免長時間推理讓 Mac 過熱。
Step 1:裝 Ollama、拉模型
# 先到 ollama.com 安裝,然後拉模型
# macOS(Apple Silicon):挑 MLX 變體更快
ollama pull qwen3.6:35b-mlx
# Linux / GPU 機器
ollama pull qwen3.6:35b
下載約 22GB,執行時需要約 30–40GB RAM。如果你的機器只有 16GB,這顆會吃不下——這是要先算清楚的硬門檻。Ollama 起來後,OpenAI 相容 API 預設就在 http://127.0.0.1:11434/v1。
Step 2A:接 Qwen-Code(Qwen 原廠 harness)
git clone https://github.com/QwenLM/qwen-code.git
cd qwen-code
npm install && npm run build
第一次跑 qwen 進設定,選 Custom Provider → OpenAI-compatible,填:
- API endpoint:
http://127.0.0.1:11434/v1 - Provider name:
ollama - Model:
qwen3.6:35b
接著務必把對外回報關掉。編輯 ~/.qwen/settings.json:
{
"privacy": { "usageStatisticsEnabled": false },
"telemetry": { "enabled": false, "logPrompts": false },
"general": { "enableAutoUpdate": false }
}
logPrompts: false 這行特別重要——本地化的初衷就是不要把 prompt 外送,別讓 harness 的遙測偷偷把它送出去。
Step 2B:接 Codex(讓 OpenAI CLI 跑你的本地模型)
Codex 支援自訂 provider。在 ~/.codex/ 下設一個 profile(檔名如 ollama.config.toml)指向本地 Ollama:
model = "qwen3.6:35b"
model_provider = "ollama"
model_reasoning_effort = "high"
model_reasoning_effort = "high" 是這類 agent 任務值得先開的設定——多花一點 token 換更穩的推理,對需要連續 tool call 的編碼任務通常划算。
Step 3(進階):跨機跑——用 SSH tunnel 把遠端模型當本地
如果你像 Raschka 一樣,模型跑在另一台機器(GPU 主機/DGX),但想在筆電上敲指令,用一條 SSH tunnel 把遠端的 11434 port 轉到本地就好:
ssh -N -L 11434:127.0.0.1:11434 user@your-gpu-host
跑起來之後,筆電上所有 harness 仍然指向 127.0.0.1:11434,完全無感——但運算其實在遠端那台。這招對「重模型放工作站、人坐咖啡廳」的工作型態很實用。
Step 4:自己量一遍,別只信別人的數字
repo 附了三組可重跑的 benchmark,建議照做來校準你自己的硬體:
# 速度與記憶體(prefill/decode 速度、wall time、長 prompt 下的記憶體)
uv run speed-memory-benchmark/ollama_speed_memory_bench.py --model qwen3.6:35b-mlx
# 硬核 tool-reasoning:5 題,只看模型有沒有做對工具決策(不實際執行)
python3 hard-tool-reasoning-benchmark/ollama_hard_reasoning_bench.py --model qwen3.6:35b
第三組是 Agent Problem Pack:在隔離 workspace 裡丟 5 個小型 coding 任務,實測 agent 真的能不能把事做完。這比看 SWE-bench 分數更貼近你的日常。
Step 5:用小模型的 prompt 心法
35B 級的本地模型不是 Opus,硬塞「幫我把整個專案重構成微服務」這種大題目,它會崩。要把它用好,關鍵是把任務切到它接得住的大小。幾個照著就有感的招式:
- 一次只給一個明確任務。與其「順便把測試也補一補、再把 lint 修掉」,不如拆成三輪各跑一次。小模型在單一目標上的成功率遠高於多目標。
- 明確點名檔案與函式路徑,例如「修改
src/auth/token.py裡的refresh_token(),讓它在過期時回傳 401」。不要讓它自己在大 codebase 裡漫遊找檔案——那會吃光 context、也容易跑偏。 - 主動控制 context 長度。長 context 會直接推高 RAM(前面提過 50k context 時記憶體會跳到 20–29GB)並拖慢 decode。完成一個段落就清掉對話、或用 harness 的
/compact類指令壓縮歷史,比讓它無限累積更穩。 - 先讓它講計畫、你確認、再動手。要求「先列出你打算改哪些檔案與步驟,等我說 go 再執行」。這在小模型上能擋掉不少「自信地改錯地方」的情況。
- 給範例勝過給形容詞。要它輸出特定格式時,貼一段你要的樣子,比寫「請寫得乾淨一點」有效太多。
這些技巧在雲端旗艦上是「加分」,在本地小模型上常常是「能不能用」的分界。
四、數據與限制:誠實版
先看速度。Qwen3.6 35B-A3B 在 Mac Mini M4 約 40 tok/s、DGX 約 30 tok/s(作者回報)。Raschka 給的及格線是:「比 20–30 tok/s 快,對本地 agent 工作就算合理」。換句話說,這顆已經過線——本地化不必然拖慢你。

再看能力。在那組 5 題 agent pack 上(作者回報):
- Qwen3.6 35B-A3B:Qwen-Code 4/5、Codex 5/5。
- North Mini Code 1.0(他口中「同級最有意思的替代品」):Qwen-Code 4/5、Claude Code 5/5。
- Gemma 4 E2B(約 8GB RAM 就跑得動):agent 任務 0/5——小歸小,但拿來當 agent 不行。
這裡有兩個比「分數」更值得記住的洞察:
洞察一:token 用量是 harness 決定的,不是模型。 同一批任務,Claude Code 平均吃掉最多 token、Codex 最少。差異主要來自 harness 怎麼組 context、塞多少 system prompt,而不是底層 LLM。你選哪個 harness,直接影響本地推理的負擔。
洞察二:別預設「原廠 harness 配原廠模型最佳」。 最反直覺的一筆是——Qwen3.6 透過 Codex 跑,反而比透過自家的 Qwen-Code 更好。這代表 harness 與模型的搭配是要實測的經驗問題,不是查表就有答案。
限制也要講白:
- 天花板還在訂閱那邊。Raschka 沒有說本地打趴雲端;他明說最頂的閉源模型仍然更強。最強的開放權重(他文中點名 GLM 5.2 一類)又「太大,消費級硬體跑不動」。本地是「夠用」,不是「最強」。
- RAM 是真門檻。30–40GB 起跳,且長 context 下會浮動(他測 50k context 時記憶體在 20–29GB 間跳)。16GB 機器基本無緣這個級距。
- 5 題是小樣本。這是快速校準用的 smoke test,不是 SWE-bench 規模的權威評測。把它當「方向對不對」的指標,不是「贏幾分」的排行榜。
五、什麼時候該用、什麼時候別用
適合切到本地的場景:
- repo 不能外送(合規、客戶 NDA、敏感程式碼)。
- 需要離線(飛機、內網、現場)。
- 重度使用、訂閱費已經很有感,且你手上有 ≥32GB RAM 的 Apple Silicon 或一台 GPU 機。
- 偏「樣板化、上下文中等」的工作:重構、寫測試、補型別、改 lint、跑遍小修補。
還是乖乖用訂閱的場景:
- 吃硬推理的難題(複雜架構設計、跨檔案大重構、刁鑽 debug),天花板仍在 Opus/GPT 旗艦那邊。
- 機器只有 16GB RAM,或不想讓筆電長時間滿載發燙。
- 你的價值是速度,而本地那 40 tok/s 還是讓你等得不耐煩。
務實的折衷是混用:日常樣板工作交給本地模型(省錢、保密、離線可用),真正難的題目再切回雲端旗艦。harness 那層不用換,只切 model 設定就好——這正是三層架構的好處。
六、對工程團隊的意義
- 先量自己的硬體,不要照搬數字。 把 repo 那三組 benchmark 在你團隊的標準機上跑一遍,得出你們自己的 tok/s 與通過率,再決定要不要鋪開。
- 把「換 harness」當成可調參數。 既然 Qwen3.6 在 Codex 上比 Qwen-Code 好,團隊值得用自己的真實任務做一輪 harness × model 的小型對照,找出最佳組合,而不是預設原廠配對。
- 本地化要連遙測一起做完。 把 prompt 外送關掉(
logPrompts: false、停用 usage statistics)才算真的「資料不出網」,否則本地化只做了一半。 - 用 SSH tunnel 把重模型集中化。 一台共用 GPU 工作站 + 團隊成員 tunnel 過去,比每人塞一顆 35B 進筆電更省資源,也更好管。
- 定位成「成本與隱私的下層保險」,而不是「全面取代雲端」。把它當預設承接日常工作的那一層,難題保留升級路徑——這個分工最穩。
七、來源
- Sebastian Raschka,〈Using Local Coding Agents〉,Ahead of AI:https://magazine.sebastianraschka.com/p/using-local-coding-agents
- 可重跑評測程式碼:
rasbt/local-coding-agent-evals,https://github.com/rasbt/local-coding-agent-evals - Qwen-Code(Qwen 原廠 CLI harness):https://github.com/QwenLM/qwen-code
- 模型與後端:Ollama(ollama.com)、MLX(Apple Silicon)、LM Studio、vLLM、SGLang
整理:DataAgent · Coding Agent 實戰教學

