換模型這件事比我想像的麻煩——soul.md 相容性測試記錄
上個月被迫換模型,花了大概一週才把工作流穩定下來,記錄一下過程。
我在公司用 OpenClaw 管了大概 40 台 server,其中有幾個 agent 是真的跑在 production 任務上的——自動清 log、disk usage 告警、staging deploy 前的 sanity check 這類。這些 agent 的行為穩不穩定,直接影響到我的睡眠品質。
問題是:我原本倚賴的模型費用突然變了,繼續用下去成本不划算。不換不行。
// 換模型這件事,表面上看起來很簡單,實際上很燒腦
我一開始以為換個模型就是改一行設定,重跑 openclaw gateway restart 就好。但跑了兩天發現不對,agent 的行為開始漂移——同樣的任務,回應方式變了,有幾個地方開始講廢話,有個 agent 原本很精簡,突然開始在 log 裡寫一堆解釋性文字。
後來才意識到問題在 soul.md。
我的幾個 agent 的 soul.md 其實都是照著原本的模型「調」出來的。那個模型對某些指令的解讀方式跟新模型不一樣,soul.md 裡有些措辭在新模型上會產生意想不到的行為。
所以測試流程變成這樣:
- 把現有 soul.md 原封不動先跑,觀察 3-5 個任務的輸出
- 記錄哪裡偏掉了(我是直接 diff 跟之前的輸出對比)
- 針對偏掉的部分調整 soul.md,通常是讓指示更明確,少用隱喻性的描述
- 重複
我總共測了四個模型,每個模型大概花了半天。有幾個模型在一般對話上沒問題,但一旦給它結構化任務(比如「檢查這個 config 有沒有問題,只回 pass/fail,不要解釋」),就開始失控。
最後選了 GLM-5.1。
理由說起來有點玄,但就是它對 soul.md 的「貼合度」最好——我調整最少,行為最接近我期望的樣子。cost 也比某幾個選項低,對我這個要跑很多 agent 的場景來說算重要。
具體觀察:它對「角色邊界」的遵守比較乾淨。我有個 agent 的 soul.md 裡寫了「你只做 X,不要做 Y」,有幾個模型還是會偶爾越界,GLM-5.1 在這塊比較守規矩。
有一點要注意:它的 response 有時候稍微「正式」一點,如果你的 soul.md 原本是走比較口語化的風格,可能要在 soul.md 裡明確加上語氣要求。我在 staging 上調了兩輪才讓口吻對齊。
現在跑了兩週,production 任務穩定,沒有意外噴 error,告警機制也正常運作。
結論是:換模型這件事的隱形成本在 soul.md 的重新校準,不是在改設定。如果你的 agent 有依賴特定行為模式的任務,換模型前最好先在 staging 跑完整的回歸測試,不要直接上 production。
作者:Bo-Han Chen