OpenClaw 串 LINE 踩到的四個大坑
上次分享了 Telegram 的 IPv6 網路坑,這次輪到 LINE 了 😂
這幾天我在 OpenClaw 上做了一個新的 Agent 給 LINE Channel 用,結果一路踩坑踩到懷疑人生,這邊整理一下遇到的四個問題,希望能幫到也在串 LINE 的夥伴們省一點 debug 的時間... 還有省點帳單...
🐛 坑一:多帳號 Webhook 路由壞掉,訊息全跑去 Main Agent
這個很早期就修好了,但我還是有遇到同樣問題,堪稱靈異現象,最後重新 install gateway 後修復。
我設定了兩個 LINE Bot,一個 default、一個 secondary,分別綁不同的 Agent。Webhook 路徑也拆開了(/line/webhook 和 /line/secondary),看 log 兩個 provider 都有正確啟動,webhook 也有在接收訊息。
結果不管傳訊息給哪隻 Bot,Session 都會建在 :main 上面,永遠是 default Agent 在回話。最詭異的是,回覆訊息確實是從 secondary Bot 的 LINE 帳號發出來的(Token 用對了),但 Agent 的人格、workspace 全部是 default 的。
簡單來說就是,LINE API 那邊的 accountId 有正確傳遞,但在 OpenClaw 內部做 Agent Route 解析的時候,accountId 根本沒被帶進去,所以永遠 fallback 到預設的 main agent。
🐛 坑二:LINE 的 Model 會偷偷跳掉,帳單直接起飛 💸
上面的問題重新 install gateway 後修復,但我還是踩到另一個問題,就是用WebChat 跟同一個 session 對話時,Model 是正確的(就是我在 Agent 裡設定的 GPT-5-nano),但一旦從 LINE 來溝通,Model 就會偷偷跳回 Main 預設的 Model Opus-4.6,Prompt 倒是正常的。
這個超難發現,因為龍蝦回話的「語氣」看起來是對的(Prompt 沒跑掉),但其實底層跑的其實是 Main Agent 預設的模型。我的情況是 Main 預設用 Opus,結果我就放著給家人玩,玩到中午一看帳單已經飆到 15 美元了才驚覺不對勁 😱
建議大家如果發現龍蝦回話怪怪的,第一件事去檢查 session 的 model 設定有沒有跳掉,路徑通常在:
.openclaw/agents/<your-agent>/sessions/sessions.json確認一下裡面的 model 欄位是不是你設定的那個,說真的這個問題到現在我都不知道為什麼發生,目前推測是我都叫 Line 去用 Gemini CLI 白瞟,但 GPT-5-nano 不支援 tool use,導致它會自己去改 model 設定,換成 GPT-5-mini 之後就沒再發生了,但我中間也做了不少事情,也不確定是不是這個原因。
🐛 坑三:mentionPatterns 在群組裡完全沒作用
我把龍蝦拉進 LINE 群組,想設定只有 @ 到它或是提到特定關鍵字的時候才回覆,所以設了 requireMention 跟 mentionPatterns。
結果群組裡不管誰講什麼話,龍蝦都會跳出來回覆,完全不理會 mention 的設定 😅
聰明一點的模型會辨識有沒有叫他,但是每次辨識都是在燒 Token 呀,就是這樣帳單才一路飛到 25 美元,而且明明有設 historyLimit=10 也沒用,每次只有人在 Line 群講話,token 用量就是一直疊上去,最後講一句話要 0.5 美元。
追了一下原因,發現有兩層問題:第一,LINE 根本沒有被註冊到 channel 的 DOCKS 物件裡,所以框架不知道 LINE 有支援 mention gating 這件事;第二,LINE 的 inbound message flow 在處理群組訊息時,直接跳過了 mention 檢查的邏輯。
這個如果你只是 1 對 1 私訊用倒是不影響,但如果想把龍蝦丟到群組裡當助理,模型又不夠聰明,就會變成群組裡的話癆,每則訊息都回,群友會崩潰🤣 你看到帳單也會...
📌 Issue: https://github.com/openclaw/openclaw/issues/16975
🐛 坑四:LINE Provider 無限重啟,完全不能用
這個是最麻煩也奇妙的,LINE Channel 啟動之後,完全不報錯,但 log 裡面會一直跳:
[line] [default] starting LINE provider (Bot Name)
[line] [default] auto-restart attempt 1/10 in 5s
[line] [default] auto-restart attempt 2/10 in 11s
...
webhook path /line/webhook already registeredProvider 不斷重啟,指數退避越等越久,不過 LINE 功能大致是正常的,只是會一直重啟。因為底層 Gateway 預期 Provider 啟動會是一個長期存活的狀態(像 Telegram 會一直 block 住),LINE 是 webhook 模式,設定好 HTTP route 之後函式就直接 return 了(大概 4ms),gateway 就以為「provider 掛了」然後觸發自動重啟。
就我的例子來說,我之前叫 Opus 修他去跑了 plugins install ./extensions/line,這導致系統原本就內建了一份 LINE Plugin,結果他自己又在 ~/.openclaw/extensions/line 裝了一份。兩個一模一樣的 Plugin 在啟動時互毆,搶同一個 webhook 路徑,雙雙同歸於盡引發 Crash-Loop。🙃
如果跟我例子不一樣的話,我查了 Issue,有人提了 PR 修掉,解法是在 monitorLineProvider 裡面加一個 await,等待 abortSignal 才 resolve,讓 Promise 保持 pending 直到 gateway 主動發出 shutdown 信號,但還沒被 merge 進新版本 (2.22)。
📌 Issue: https://github.com/openclaw/openclaw/issues/20573
📌 PR (已修): https://github.com/openclaw/openclaw/pull/23621
結論
整體感覺 LINE 用戶在全球較少,在 OpenClaw 上的整合還沒有 Telegram 那麼成熟,踩坑機率蠻高的。但好消息是社群還是很活躍,這些問題都已經有 Issue 在追蹤,有些也已經有 PR 在修了。
如果你也在用 OpenClaw 串 LINE,幾個建議:
多帳號路由的問題官方說修了,但 Model 跳掉的狀況還是存在,記得定期檢查 sessions.json 裡的 model 設定。
群組的 mention 功能目前對 LINE 無效,先別把龍蝦拉進群組
Provider 無限重啟的問題已經有 PR 修了,可以追蹤一下有沒有 merge,或是手動修
最重要的:養龍蝦記得盯帳單,不然 Opus 跑起來是真的會燒錢 🔥
我感覺我養龍蝦整天都在換水患濾網... 看起來很酷但坑也不少 😂
作者:Chi