之前 OpenClaw 大紅的時候,看到部署使用 node 的時候我不是很想用,然後當時各種漏洞的存在也確實證實了這一點,但是現在已經有不少優秀的分支可以使用。因為我比較在意輕量化,於是選擇了較為輕量化的 ZeroClaw。
既然是部署一個自己的 AI 助理,那我還是不希望自己的資料上傳到雲端,所以這次的折騰目標是嘗試建置一個純本地的私人助理。
總覽
為了實現資料全本地化,模型方面使用 Ollama 部署本地模型,通訊則使用在 NAS 上搭建的 Matrix 伺服器,具體的手機與電腦端則使用 Element 軟體。雖然該軟體也有網頁端,但不知道為什麼一直設定出錯,所以暫時不折騰了。
另外我還試著做了容器多開設定以及建置一個 MCP 伺服器,這裡因為只是容器,所以我給了 ZeroClaw 完整權限。
編譯 ZeroClaw
安裝 Rust,造訪
https://rustup.rs/
下載 rustup-init.exe 檔案後執行,遇到選項選擇預設 1 即可,期間需要安裝 VS Studio 及相關配件。
複製(Clone)ZeroClaw 官方程式碼:
| |
然後執行 setup.bat 以開始安裝,選擇自己想要安裝的版本,如果不知道就選擇標準安裝。
順便一提,Windows 上的安裝路徑問題是我修復的,我的第一個 PR (●’◡’●)
另外,官方對於環境變數 PATH 寫入有問題,安裝完成後開啟 PowerShell 執行(這個小問題我就懶得提 PR 了):
| |
然後關閉終端機。
本地部署模型
安裝 Scoop,開啟 PowerShell 執行以下命令:
| |
然後新增軟體源,安裝 ollama:
| |
執行 Qwen2.5-coder-7b-instruct-Q4_K_M 模型(可以在安裝 ZeroClaw 後執行):
| |
等到出現 success 和命令列互動後就代表部署成功,預設執行於 http://127.0.0.1:11434。
Matrix 部署
使用 Docker 部署 Synapse 伺服器,然後使用 Element 連線。
首先產生設定檔:
| |
開啟 data/homeserver.yaml 調整設定檔,例如:
| |
撰寫 docker-compose.yml:
| |
啟動容器:
| |
造訪 Element 官網 下載用戶端,連線到自己的伺服器註冊帳戶後開始對話。
建立一個 claw 的專用帳戶,開啟所有設定,在「說明與關於」最下方有 Access Token,在 Encryption 有 recover key,在帳戶介面有 Username,這就是 user-id。
設定 Zeroclaw
執行圖形化介面:
| |
這裡根據具體類型選擇就行,我只寫部分。
選擇 Ollama,輸入自訂模型名稱,API Key 隨便輸入(例如 sk-local),選擇模型,之後預設即可。不過建議開啟 sandbox-enabled,sandbox-backend 填寫 docker。
在 claw 的設定中,推薦開啟 interrupt-on-new-message,該選項可透過訊息中斷目前任務。
開啟代理:
| |
啟用通道監聽 matrix:
| |
Matrix 設定的問題
我不清楚是不是我某一項沒有選對,也就是關於允許的使用者需要建立一個群組,在設定檔中新增:
| |
當然,關於其他的設定可以分模組進行 GUI 判斷:
- agent
| |
- channel
| |
本地 MCP
我寫了一個 MCP 伺服器用來連線本地的一些服務,目前包含生圖、TTS、印表機服務。
其中生圖服務提供了本地(透過 ComfyUI)和連線 OpenAI 的 image2,而其他服務暫時沒測試,因為我還沒想好要接什麼 TTS 服務,而且印表機的需求只能說是有,但不是很必要。
具體可見我的 GitHub 儲存庫:
Docker 多開
因為目前 Zeroclaw 對於 channel 的 matrix 只能監聽一個帳戶,於息我透過多開來對應不同的 matrix 帳戶,同時設定了像是定時/不定時喚醒、多訊息偵測等服務。不過官方的 Docker 映像檔還是停留在 0.7.5,感覺是要等 0.8.0 出來後再更新吧,所以這個映像檔是我在本地建置的,畢竟在這之後設定檔的變更比較大,不是很推薦使用官方的 0.7.5 映像檔。