📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

OpenClaw + Ollama 本地 AI 建置血淚史!為什麼我最後含淚棄坑回歸雲端 LLM?

ipas AI中級 & 證券分析師 加菲特10:11

Transcription

哈囉大家好,歡迎回到加菲特頻道。

今天要跟大家分享一個我花了整整兩天時間採坑的經驗,就是嘗試用OpenClaw搭配本地端的Ollama模型,再透過Cloudflare Tunnel對外連接LINE Messaging API,打造一個完全免費、完全本地運行的AI助理。聽起來很美好對吧?免費的模型、免費的通道、完全掌控自己的資料。但實際操作下來,我發現這條路充滿了各種意想不到的坑。最後我還是決定回到雲端模型。今天就來跟大家分享這整個過程,希望

首先,簡單介紹一下OpenClaw。OpenClaw是一個開源的個人AI助理框架,它的前身叫做Clawdbot,後來改名叫Moltbot,現在又改名叫OpenClaw。它最大的特色是可以連接各種通訊軟體,像是LINE、Telegram、WhatsApp、Discord、Slack等等,讓你可以透過這些平台跟AI對話。更厲害的是,OpenClaw不只是聊天機器人,它還可以執行各種任務,像是管理行事曆、瀏覽網頁、整理檔案,甚至幫你發送郵件。它支援各種大型語言模型,不管是OpenAI的GPT、Anthropic的Claude、Google的Gemini,還是本地端的Ollama模型都可以。

我的初衷很簡單,我想要一個完全免費、完全本地運行的AI助理。為什麼呢?第一是成本考量,雲端模型的API費用累積起來其實不少。第二是隱私考量,我不想把對話內容傳到第三方伺服器。第三是學習目的,我想了解整個系統是怎麼運作的。所以我的計劃是這樣的:用Ollama在本地端跑開源模型,用OpenClaw作為AI助理框架,用CloudFlare Tunnel把本地服務對外暴露,最後連接LINE Messaging API,讓我可以用LINE跟AI對話。

首先是環境建置。我的電腦是Windows 11,配備RTX Pro 6600瓦Workstation滿靴版,差不多30萬台幣。安裝Ollama本身很簡單,官網下載安裝程式,一路下一步就完成了。接著用命令列拉模型下來:`ollama pull qwen3:latest`。我一開始選的是Qwen3:latest,這是阿里巴巴的千問模型,號稱支援function calling,也就是工具呼叫功能。

OpenClaw的安裝也不難,用npm全域安裝:`npm install -g openclaw@latest`,然後啟用LINE外掛:`openclaw plugins enable line`。接著執行`openclaw configure`進行初始設定,跟著提示選擇本地模式,設定Ollama的API端點,通常是`http://127.0.0.1:11434/v1`。

CloudFlare Tunnel的設定稍微複雜一點,但CloudFlare的文件寫得很清楚。基本上就是建立一個Tunnel:`CloudFlareTunnel url http localhost 18789`,然後把本地的OpenClaw Gateway鏈口映射出去,再把這個公開網址填到LINE Developers Console的Webhook URL。最後啟動OpenClaw Gateway:`openclaw gateway --port 18789 --verbose`。

到這邊為止,一切看起來都很順利,LINE的Webhook驗證也通過了,信息可以送進來,OpenClaw也收到了。問題來了,AI的回覆品質慘不忍睹。

第一個大坑,就是本地模型的能力問題。我一開始用的QWinNext 80B模型,模型大小大概50GB,可以在Ollama Library查詢。雖然號稱支援function calling,但實際測試下來,它根本無法正確使用OpenClaw提供的工具。什麼意思呢?OpenClaw有很多內建工具,像是網頁搜尋、檔案讀寫、訊息發送等等。當你問AI一個需要搜尋網絡的問題時,它應該要知道要呼叫搜尋工具,取得結果後再回答你。但本地模型常常不知道要用工具。我換了好幾個模型,像是`qwen2.5:72b`、`glm-4.7-flash`、`gpt-oss:120b`,結果都差不多,複雜的工具呼叫對這些模型太困難了。

第二個大坑更懸,當我請AI執行比較複雜的任務時,系統會噴出`Sessions Spawn Forbidden`的錯誤。這是什麼意思呢?原來OpenClaw在處理複雜任務時,會啟動子代理、subagent來分工處理,但這個功能需要特定的權限設定,而且本地模型似乎沒辦法很好的協調這些子代理。我花了很多時間研究這個問題,最後的解決方案是在SOUL.md裡面加上不要用subagent的指示,強制AI用單一代理處理所有任務。這樣錯誤是少了,但AI處理複雜任務的能力也跟着下降了。

第三個坑是OpenClaw內建的`web_search`工具有bug。當我用繁體中文界面時,這個工具會傳送`search_lang: "zh"`給Brave Search API,但正確的參數應該是`zh-hant`或`zh-hans`。結果就是API回傳422錯誤,搜尋功能完全無法使用。這個問題的解決方案是禁用內建的websearch工具,改用第三方的serpapi skill。指令是這樣的:`openclaw config set tools tools.sandbox.tools.deny '["web_search"]' --json`。注意這邊有個小坑,在PowerShell裡面設定JSON陣列要加`--json` flag,不然會出錯。這又是另一個花了我不少時間才搞懂的細節。

第四個大坑是LINE的限制。我請AI幫我製作一份Word文件,AI說做好了,然後就沒有然後了,檔案沒有傳過來。研究了一下才發現,LINE Messaging API並不支援直接傳送檔案,至少不是透過OpenClaw的標準方式。這表示如果我需要AI幫我產生文件,我只能請它存到本地端,然後自己去電腦上找。這對於一個行動助理來說是很大的限制。我後來設定了Telegram作為備用頻道,因為Telegram是可以傳檔案的,但這樣就變成要管理兩個通訊軟體,有點麻煩。

第五個坑讓我哭笑不得。我請AI製作一份Word文件,它說做好了,我去看檔案,副檔名確實是docx,但卻打不開。怎麼回事?原來AI很聰明地偷懶,它只是把純文字內容存成檔案,然後把副檔名從TXT改成docx。這當然不是真正的Word檔案,Word根本打不開。解決方案是安裝`python-docx`套件,然後寫一個skill來產生真正的Word檔案。我在SOUL.md和SKILLS.md裡面用粗體字強調,禁止把純文字改副檔名,但AI還是會犯這個錯誤,需要直接指定用`python-docx`的skill才會觸發。這就是本地模型能力不足的另一個表現。

類似的問題也發生在Google Maps連結上。我請AI幫我規劃沖繩旅遊行程,要求附上景點之間的交通路線連結。AI很乖地給了我一堆連結,但是問題是,這些連結全部都是假的。AI根本沒有去查詢真正的Google Maps,它只是編造了一些看起來像是Google Maps短連結的字串。點下去當然是404錯誤。正確的做法應該用Playwright MCP實際開啓瀏覽器截圖,但本地模型似乎理解不了這麼複雜的指示。

後來我設定了Telegram,想說至少Telegram可以傳檔案,結果又遇到新的問題。AI嘗試用CLI指令傳送檔案,但參數填錯了,噴出`Action send requires a target`的錯誤。原來在Telegram對話中,AI應該使用OpenClaw內建的`message` tool,並帶上`media`參數,而不是執行外部的CLI指令。但AI分不清楚這兩種方式的差異,常常用錯。

經過兩天的奮鬥,我終於做出了一個重要決定:放棄本地模型,回到雲端模型。

我現在用的是GitHub Copilot提供的GPT-4O模型。為什麼選這個?因為如果你有GitHub Copilot的訂閱,這個模型是在訂閱中不用費用的,不需要額外付費。而且GPT-4O的能力確實比本地模型強很多,工具呼叫的準確率都正常了。設定方式是先執行`openclaw auth login github-copilot`用GitHub賬號登錄,然後把模型改成GitHub Copilot GPT-4O:`openclaw config set agents.defaults.model.primary GitHub Copilot GPT-4O`。

好,來總結一下這次的經驗教訓。

第一,本地模型的Function Calling能力還不夠成熟。雖然很多模型號稱支援工具呼叫,但實際使用起來準確率不高,尤其是面對複雜的多步驟任務時。

第二,免費的東西往往有隱藏成本。本地模型省了API費用,但花了大量時間在除錯和繞過各種限制,時間也是成本啊。

第三,OpenClaw本身是個很棒的框架,但它的文件還不夠完善,很多細節要靠自己摸索,或是看原始碼才能搞懂。雖然我是靠Cloud Code去看的。

第四,通訊軟體的API限制比想像中多。LINE不能傳檔案,Telegram需要正確的Chat ID,每個平台都有自己的眉角。

第五,AI會偷懶,而且偷懶的方式很有創意。把純文字改副檔名、編造假連結,這些都是AI在能力不足時會採取的捷徑。要防止這些行為,需要在System Prompt,在S-O-U-L-M-D裡面明確禁止,而且要用很強調的語氣。

如果你還是想嘗試本地模型加OpenClaw的組合,這邊給幾個建議:

第一,選擇參數量大一點的模型,70B以上。

第二,準備好足夠的VRAM,70B以上的模型需要很大的顯存,可能要用量化版本或是分散到CPU。

第三,寫清楚的SOUL.md和SKILLS.md,把每個工具的正確使用方式都詳細說明。

第四,設定好Fallback模型,當本地模型出錯時可以切換到雲端模型。

第五,心態要調整好,這是一個需要不斷調整和妥協的過程。

好,今天的分享就到這邊。雖然這次的嘗試,最後沒有成功達到完全本地運行的目標,但過程中學到了很多關於OpenClaw、Ollama、各種通訊軟體API的知識。我相信隨著開源模型的進步,未來一定會有能力足夠強的本地模型,可以完美支援這種複雜的AI助理場景。到時候會再來挑戰一次。

如果你對OpenClaw或是本地AI助理有興趣,歡迎在下面留言討論。也歡迎訂閱頻道,之後我會繼續分享更多AI工具的使用心得。我們下次見,拜拜。