你的AI助手住在哪?論OpenClaw +Docker部署和技能包裝的必要性

作者:硅谷一孔之見
日期:2026年3月4日 上午5:19
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Docker 加技能包,將 AI 助手變成可遷移、可複用嘅基礎設施,唔使再每次重裝環境重踩坑。

整理版摘要

呢篇文章係作者分享佢點樣用一個週末,透過 Claude Code 自動化配置 OpenClawDocker 入面,再將成個流程打包成技能包發佈上 ClawHub。

作者發現,好多人都花過幾個鐘頭配置 AI 助手,一換機或者重裝系統就歸零,所有踩過嘅坑要再踩一次。佢嘅解決方案係:用 Docker 做 AI 助手嘅「屋企」,用技能包(Skill)記錄同自動化成個配置流程。技能包係 Markdown 檔,包含完整指令,任何人攞到都可以復現同一套環境。

文章整體結論係Docker 提供隔離性、可遷移性、多實例共存同安全邊界;技能包將一次過嘅手工藝術變成可傳遞嘅知識。作者透過自己寫嘅 openclaw-docker-setup 技能包(ClawHub 上結構審查滿分 33/33),示範咗點樣設計技能包,仲揭露咗四個真實踩過嘅坑:LICENSE 檔案冇副檔名被拒、官方 CLI 發佈超時、自動掃描將 /home/node/ 誤報為可疑路徑、預覽伺服器默認綁定 localhost 搞到手機睇唔到。最後佢提出,技能生態系統係 AI 代理從個人工具走向共享基礎設施嘅關鍵一步。

  • Docker 化嘅 OpenClaw 有四大優勢:隨開隨用、互不幹擾、安全邊界、配置可遷移,換機只係一條命令嘅事。
  • 技能包係 Markdown 檔,包含完整指令,確保任何人可以復現相同操作,而唔係一次性嘅手工藝。
  • Docker 嘅隔離性同多實例共存,令你可以同時行生產、演示、測試環境,主機系統零污染。
  • 作者喺製作技能包時踩咗四個坑LICENSE 檔案要加 .md 副檔名、官方 CLI 超時要用 curl 代替、安全掃描誤報 /home/node/、預覽伺服器要 bind 0.0.0.0 先至可以用手機睇。
  • 一次過搞好 Docker 容器同技能包,以後每個人企喺你膊頭上出發;可免去每次重裝系統或換機都要重新配置嘅痛苦。
值得記低
連結 clawhub.ai

openclaw-docker-setup 技能包

作者發佈喺 ClawHub 嘅 Docker 環境搭建技能包,免費下載,包含完整步驟同四個坑嘅解法。

結構示例

結構示例

結構示例 text
# 生產環境docker run -d --name openclaw-prod -p 19001:19001 --cpus=2 ghcr.io/openclaw/openclaw:latest# 演示環境docker run -d --name openclaw-demo -p 19003:19001 --cpus=2 ghcr.io/openclaw/openclaw:latest# 測試環境docker run -d --name openclaw-test -p 19004:19001 --cpus=1 ghcr.io/openclaw/openclaw:latest
整理重點

點解要咁做:一個週末嘅經歷

一個週末嘅下午,我打開 Claude Code 嘅終端,輸入一句話:「幫我在 Docker 裏把 OpenClaw 跑起來,配好郵件和 Google Drive。」然後我基本上冇點動手。AI 自己探路,遇到端口衝突自己換端口,遇到 Python 中文亂碼自己改參數,遇到網頁認證無法穿越 Docker 自己揾到繞過方法,遇到 LICENSE 文件被拒自己加上副檔名。成個過程大概一個下午,我主要係睇住佢做嘢,偶爾回答幾個問題。

配置完成之後,我做咗一件更重要嘅事:叫佢將呢一路嘅操作流程同踩過嘅坑,打包成一個可複用嘅技能包,發佈上 ClawHub。呢篇文章就係記錄呢件事——點解要咁做,同埋你可以點樣做。

整理重點

Docker 化 OpenClaw 嘅四大優勢

喺正式開始之前,先將結論擺喺度Dockerized OpenClaw 嘅核心優勢係四句話。

  1. 1 隨開隨用:容器啟動秒級完成,唔依賴本機環境,換電腦都係一條命令嘅事。
  2. 2 互不幹擾:演示、測試、生產三套環境並存,任意切換,主機系統零污染。
  3. 3 安全邊界:AI 代理有 shell 權限,Docker 限制佢可以碰咩——你話事,唔係佢話事。
  4. 4 配置可遷移:環境打包喺容器入面,重裝系統唔歸零,坑只踩一次記住呢四點。

後續嘅技術細節,都係喺解釋點解呢四句話係真嘅。

整理重點

技能包裝:唔止係配置文件咁簡單

技能包(Skill)喺 OpenClaw 入面係 Markdown 檔,包含令 AI 代理完成特定任務嘅完整指令。關鍵詞係「完整」——唔係一段筆記,唔係一個備忘錄,而係一個承諾:任何人攞到呢份技能包,都可以復現同樣嘅操作序列。

ClawHub 目前有超過 2,857 個技能包。呢個數字唔係偶然嘅。當一個生態系統有近三千個可複用嘅操作單元喺度流通,佢已經越過咗「玩具」階段,進入基礎設施領域。

整理重點

Docker:AI 代理嘅正確居所

返到開頭嘅問題:你嘅 AI 助手應該住喺邊?我嘅答案係 Docker 容器。理由有四個,每一個都好實際。

  • 隔離性:AI 代理唔應該同你嘅日常工作環境住埋一齊。依賴衝突、權限混亂、工具升級搞到另一個工具死機——呢啲「莫名其妙嘅 bug」根源往往係環境污染。Docker 畀 AI 代理一個乾淨、獨立嘅運行空間。
  • 可遷移性:由 MacBook 到雲伺服器,一條命令重建成個環境。重裝系統?換電腦?唔怕。容器喺度,配置喺度。
  • 多實例共存:同一部 Mac 可以同時行三個 OpenClaw 容器——一個日常生產、一個演示、一個測試——互不幹擾。裸機安裝幾乎做唔到。
  • 安全邊界:AI 代理有 shell 權限,Docker 幫佢畫一條邊界。容器內嘅 AI 可以做咩,由你掛載邊啲目錄、開放邊啲端口決定,唔係由 AI 自己決定。

Help Net Security 喺 2026 年 2 月報道,AI 代理框架被用嚟自動化涉及工具、文件同外部服務嘅工作,呢類自動化引發咗代理能訪問咩、能改變咩嘅安全問題。Docker 嘅作用就係畀呢種權限畫一條邊界。

整理重點

一個好技能包長點樣——同埋我踩過嘅四個坑

我寫咗一個 openclaw-docker-setup 技能包,發佈上 ClawHub,結構審查拎到 33/33 滿分通過。呢個技能包將 Docker 環境搭建拆成 9 個步驟,每一步都有明確嘅輸入、輸出同判斷邏輯。以下係幾個設計決策,同埋我踩過嘅坑。

Step 0 係防禦性設計:自動執行 docker ps 列出所有已運行嘅容器同佔用端口,建議下一個可用嘅名同端口組合。端口衝突喺部署前係一行報錯,喺部署後係半個鐘嘅排查。

工具選擇方面,郵件集成用 HimalayaGoogle Drive 集成用 gog。點解唔用一個工具搞掂?因為 gog 根本唔支持下載 Gmail 附件,佢係為 Google Drive 同文檔設計嘅。Himalaya 專為郵件協議設計,附件支援完整。呢個唔係偏好問題,係功能邊界問題。我喺技能包入面寫清楚呢個理由,令後人唔使再踩同一個坑。

CPU 默認值係一種價值觀:我揀默認 2 個 CPU,因為當 AI 代理同時處理郵件、調用 API、執行腳本時,1 個 CPU 會成為瓶頸。默認值係對使用者隱含嘅承諾。

  1. 1 坑一LICENSE 檔案冇副檔名被平台拒絕。平台報錯「Only text-based files are allowed」,解決方法係改名做 LICENSE.md。
  2. 2 坑二:官方 CLI 發佈超時,哪怕檔案得 72KB。CLI 有約 15 秒超時,但伺服器處理 embedding 需要 40-50 秒。繞過方法係直接用 curl 調用 API。
  3. 3 坑三:自動安全掃描將 /home/node/ 誤報為「可疑路徑」。呢個係 Docker 容器內部嘅標準路徑,掃描器只做字符匹配,最終判斷要靠人。
  4. 4 坑四:預覽伺服器默認綁定 localhost,手機睇唔到。解決方法係加 --bind 0.0.0.0 監聽所有網絡接口,然後用 LAN IP 訪問。

圖片件事係咁開始嘅。

一個週末嘅下晝,我開咗 Claude Code 嘅終端,打咗一句嘢:「幫我在 Docker 裏面將 OpenClaw 行起嚟,set 好電郵同 Google Drive。」

然後我幾乎冇點鬱過手。

AI 自己探路,遇到 port 衝突就自己轉 port;遇到 Python 亂碼就自己改 parameters;遇到網頁認證過唔到 Docker,就自己揾到繞過嘅方法;遇到 LICENSE 檔案被 reject,就自己加返個 extension。成個過程大約用咗一個下晝,我主要係睇住佢做嘢,間中答幾個問題。

set 好之後,我做咗一樣更重要嘅嘢:叫佢將成個操作流程同踩過嘅坑,pack 成一個可以重用嘅技能包,發佈上 ClawHub。

呢篇文章就係記錄呢件事——點解要咁做,同埋你可以點樣做。

正式展開之前,先將結論擺喺度:

Dockerized OpenClaw 嘅核心優勢,四句說話:

  • 隨開隨用:容器一開就搞掂,唔使理本機環境,換電腦都係一條 command 嘅事
  • 互不幹擾:演示、測試、生產三套環境並存,任意切換,主機系統零污染
  • 安全邊界:AI agent 有 shell 權限,Docker 限制佢掂到啲乜——你話事,唔係佢話事
  • 配置可遷移:環境 pack 曬喺容器入面,重裝系統唔會 reset,每個坑只踩一次

記住呢四點。後面嘅技術細節,都係解釋點解呢四句說話係真嘅。

圖片


你花咗三個鐘頭,將 OpenClaw set 到妥妥當當。電郵駁通咗,日曆 sync 咗,Discord 都接好咗。你嘅 AI 助手終於可以開工。

然後你重裝咗系統。

三個鐘頭歸零。所有配置、所有工具鏈、所有你踩過嘅坑,又要再踩一次。呢種經歷,set 過開發環境嘅人都明。

問題嚟喇:你嘅 AI 助手個「家」,應該係你嘅操作系統,定係一個獨立嘅、可以打包帶走嘅容器?

技能包裝唔止係一個配置文件

先講一個成日被忽略嘅概念:技能包(skill)。

喺 OpenClaw 嘅體系入面,技能係 Markdown 檔案,包含咗俾 AI agent 完成特定任務嘅完整指令。聽落簡單,但關鍵字係「完整」——唔係一段筆記,唔係一個 memo,而係一個承諾:任何人拎到呢份技能包,都可以重複做到同樣嘅操作。

ClawHub 上面目前有超過 2,857 個技能包。呢個數字唔係偶然。當一個生態系統裏面有差唔多三千個可重用嘅操作單元喺度流通,佢已經過咗「玩具」嘅階段,進入咗基礎設施嘅領域。

諗嚇呢個分別:冇技能包嘅時候,安裝同配置係一次性嘅手工藝。你花三個鐘頭搞掂,呢三個鐘頭嘅經驗只係存在你個腦入面。有咗技能包,同樣嘅操作變成咗可交付嘅知識。

打個比喻——一餐飯同一份食譜嘅分別。一餐飯幾好食都好,食完就冇。食譜可以傳播,可以改良,可以俾一千個人煮出同一道菜。技能包就係 AI agent 世界嘅食譜。

Docker:AI agent 嘅正確居所

返去開頭個問題。你嘅 AI 助手應該住喺邊度?

我嘅答案係 Docker container。理由有四個,每一個都好實際。

隔離性。 你嘅 AI agent 唔應該同你嘅日常工作環境住埋一齊。依賴衝突、權限混亂、某個工具升級之後另一個工具突然死咗——呢啲「莫名其妙嘅 bug」,根源通常係環境污染。Docker 俾 AI agent 一個乾淨、獨立嘅運行空間,你嘅主系統唔受影響。

可遷移性。 由 MacBook 到雲伺服器,一條 command 重建成個環境。重裝系統?換電腦?唔怕。容器喺度,配置就喺度。

多實例共存。 呢一點成日俾人低估。你可以喺同一部 Mac 上面同時行三個 OpenClaw container——一個用嚟日常生產,一個用嚟演示,一個用嚟測試——互相唔幹擾,各有各做:

# 生產環境
docker run -d --name openclaw-prod -p 19001:19001 --cpus=2 ghcr.io/openclaw/openclaw:latest

# 演示環境

docker run -d --name openclaw-demo -p 19003:19001 --cpus=2 ghcr.io/openclaw/openclaw:latest

# 測試環境

docker run -d --name openclaw-test -p 19004:19001 --cpus=1 ghcr.io/openclaw/openclaw:latest

三個 container,三個 port,彼此完全隔離。呢個喺裸機安裝入面幾乎冇可能做到。

圖片

安全邊界。 呢一點一定要認真對待。Help Net Security 喺 2026 年 2 月嘅一篇報導指出,AI agent framework 正被用嚟自動化涉及工具、檔案同外部服務嘅工作,呢類自動化「引發咗關於 agent 可以掂到啲乜、可以改變啲乜嘅安全問題」。AI agent 係有 shell 權限㗎——佢可以執行 command、讀寫檔案。Docker 嘅作用,係俾呢種權限畫一條界線。container 入面嘅 AI 可以做啲乜,由你掛載邊啲目錄、開放邊啲 port 決定,而唔係由 AI 自己決定。

一個好嘅技能包係點——同埋我踩過嘅四個坑

返去技能包裝。抽象咁討論「技能包好重要」冇乜說服力,不如睇一個具體例子——加上真實嘅教訓。

我自己寫咗一個 openclaw-docker-setup 技能包,發佈咗上 ClawHub,經過結構審查拎到 33/33 滿分通過。呢個技能包將 Docker 環境搭建拆成 9 個步驟,每一步都有明確嘅 input、output 同判斷邏輯。幾個設計決策,同埋我踩過嘅坑。


Step 0:先搞清楚你已經有啲乜。

喺你動手建立任何嘢之前,技能包會自動行呢條 command:

docker ps --format '{{.Names}}\t{{.Ports}}' | grep openclaw

佢列出所有已經喺度行嘅 OpenClaw container 同佢哋用緊嘅 port,然後建議你用下一個可用嘅名同 port 組合。例如已經有 openclaw-isolated 用咗 19002,佢會建議你用 openclaw-demo 加 19003。

呢個唔係花巧嘅功能,係防禦性設計。Port 衝突喺部署之前係一行 error,喺部署之後係半個鐘頭嘅排查。防禦性設計嘅本質,係令錯誤喺最平嘅時候發生。


工具選擇:一個工具做一樣嘢,因為冇工具可以做曬兩樣。

電郵整合用 Himalaya,Google Drive 整合用 gog。

點解唔用一個工具搞掂?因為 gog 根本唔支援下載 Gmail 附件。佢係為 Google Drive 同文件設計嘅,唔處理 IMAP/SMTP 電郵附件。Himalaya 專門為電郵協議設計,附件支援好完整。

呢個唔係偏好問題,係功能界線問題。如果你嘅 workflow 需要「AI 讀取電郵附件並處理」,用 gog 係死路一條。我喺技能包入面將呢個理由寫清楚,因為之後嘅用家唔應該再踩同一個坑。


cpus=2:預設值係一種價值觀。

好多 Docker 配置預設俾 1 個 CPU。我選擇預設 2 個。

當你嘅 AI agent 同時處理電郵、call API、執行 script 嘅時候,1 個 CPU 會變成瓶頸,回應延遲會明顯上升。呢個唔係隨手填嘅數字,係對生產場景嘅基本尊重。預設值係你對用家隱含嘅一個承諾。


「你需唔需要喺 Mac 面前?」——將限制寫清楚。

技能包入面專登有一節回答呢個問題:邊啲步驟可以用 SSH 遠端完成,邊啲需要掂到部機。

好嘅技能包唔會隱瞞限制。用家唔應該做到第六步先發現要坐喺部機前面。將限制寫清楚,唔係展示缺點,係尊重用家嘅時間。

四個真實踩過嘅坑

圖片

寫技能包嘅過程係不斷撞板嘅過程。呢度列出四個實際遇到嘅問題,唔係為咗投訴,係因為呢啲坑好大機會都等你踩。

坑一:LICENSE 檔案俾平台 reject。

發佈技能包上 ClawHub 嗰陣,一個檔案名叫 LICENSE(冇 extension)會俾平台報錯:

Only text-based files are allowed

解決方法:將個檔案改名做 LICENSE.md。呢個唔係文件入面寫嘅規則,係撞板先發現。寫技能包嘅人通常習慣用標準開源慣例放 LICENSE 檔案,但平台係按 extension 判斷檔案類型。

坑二:官方 CLI 發佈超時,就算個檔案得 72KB。

clawhub publish 用 command 發佈技能包,會出呢個錯:

invalid multi-part form: stream size exceeded limit: 20971520 bytes

見到「20MB limit exceeded」以為係檔案太大,但 72KB 嘅目錄點可能超過 20MB?問題係 CLI 有大約 15 秒超時,而伺服器處理技能包嘅 embedding 需要 40-50 秒。時間到咗,連線斷咗,CLI 誤報咗一個流量限制嘅錯誤。

解決方法:繞過 CLI,直接用 curl call API:

curl -X POST https://clawhub.ai/api/v1/skills \
  --header "Authorization: Bearer $CLAWHUB_TOKEN" \
  --form 'payload={"displayName":"OpenClaw Docker Setup","tags":["docker","setup"]}' \
  --form "files=@SKILL.md" \
  --form "files=@README.md"

curl 冇 15 秒超時限制,伺服器有足夠時間處理。呢個方法而家係我發佈所有技能包嘅標準流程。

坑三:自動安全掃描嘅 false positive。

技能包發佈前會經過 OPSEC 安全掃描,自動檢查有冇可疑路徑或憑證。掃描器將 /home/node/ 標記為「可疑路徑」。

呢個係 Docker container 內部嘅標準路徑——node 係 container 入面行 Node.js 進程嘅用戶,路徑完全合理。但掃描器唔理解 context,只做 string match。

呢個 false positive 需要人工判斷先可以排除。自動化掃描嘅侷限性喺呢度好清楚:佢可以發現明顯嘅問題,但冇辦法分辨「合理嘅 /home/node/」同「可疑嘅 /home/node/」嘅分別。最終判斷,始終要靠人。

坑四:預覽伺服器只 bind localhost,手機睇唔到。

行完 format script 之後,用 Python 開咗一個本地預覽伺服器:

python3 -m http.server 8899

喺 Mac 瀏覽器入面開 http://localhost:8899/formatted.html 一切正常。

然後喺手機輸入同一個地址——空白頁。

原因:預設唔加 parameters 嗰陣,Python 嘅 http.server 只監聽 127.0.0.1(本機回環地址),區域網絡入面嘅其他裝置根本連唔到。

解決方法:加 --bind 0.0.0.0,監聽所有網絡接口:

python3 -m http.server 8899 --bind 0.0.0.0

然後用 Mac 嘅區域網絡 IP 來 access(唔係 localhost):http://192.168.0.193:8899/formatted.html

呢個坑每次都中,因為開發嗰陣習慣用 localhost,直到第一次拎手機驗證排版先發現。

知識嘅基礎設施化

寫文檔同寫技能包有乜嘢分別?

文檔係被動嘅。佢話俾你知要做啲乜,然後等你自己去搞。你睇完,可能漏咗一步,可能理解錯咗一個 parameter,可能喺第三步同第四步之間迷路。

技能包係主動嘅。佢唔單止話俾你知要做啲乜,佢幫你做,同時記錄點解要咁做。AI agent 讀取技能包之後,可以自主執行每一步,遇到分支條件識得自己判斷。

更加重要係社羣維度。我喺加州發佈一個技能包,你喺上海安裝佢,我同事喺慕尼黑安裝佢。三個人在三個時區,得到嘅係同一個配置好嘅環境——包括嗰四個坑嘅解法。呢個唔係「分享經驗」,呢個係將個人經驗變成基礎設施。知識從一個人嘅腦入面,變咗成個社羣可以依賴嘅嘢。

OpenClaw 本身嘅設計亦喺度推動呢件事。佢係 model 無關、私隱優先、喺本地系統運行嘅。啟用 ClawHub 之後,agent 可以自動搜尋同拉取新技能。技能生態唔係需要人手維護嘅目錄,而係一個活嘅、可以自動發現嘅知識網絡。

誠實嘅代價

Docker 唔係冇門檻。

佢有學習曲線。如果你從來未用過容器技術,第一次上手需要時間。初始設定確實需要你坐喺 Mac 面前——SSH 遠端可以完成一部分工作,但有啲操作綁死咗本地環境,呢個係事實。技能包亦唔係寫一次就永遠有效,工具版本更新、依賴變化,都要維護。

呢啲代價係真實嘅,我唔想假裝佢哋唔存在。

但換個角度諗:呢啲代價係一次性嘅、可以分攤嘅。而「三個鐘頭配置歸零」嘅代價,每次重裝、每次換機、每次環境 crash,都要重新俾。一次性投入起好基礎設施,定係不斷俾重複勞動嘅成本?呢條數唔難計。

AI agent 需要文明,唔止係能力

最後講一個大少少嘅觀點。

冇技能包裝嘅 AI agent 係一個強大嘅工匠。佢能力好強,但只係存在你部機度,得你先識用。你嘅配置、你嘅工具鏈、你踩過嘅坑,全部鎖死喺你一個人嘅環境入面。

有咗技能包裝,工匠嘅手藝變咗可以傳授嘅工藝。你嘅經驗唔再只屬於你,佢可以被重現、被檢驗、被改進。

技能生態系統係 AI agent 由「個人工具」走向「共享基礎設施」嘅關鍵一步。如果話 AI agent 嘅能力係蠻力,咁技能包裝就係文明——佢令知識可以累積、傳遞、迭代,而唔係每個人由零開始重新發明輪子。

Docker 俾咗 AI agent 一個安全、可遷移嘅家。技能包俾咗呢個家可複製嘅建造圖紙。嗰四個坑,而家係文檔,唔再係陷阱。

下次 set AI 助手之前,先問自己一個問題:今次嘅配置,可唔可以俾其他人都用得?如果唔得,可能值得花多少少時間,將佢變成可以傳遞嘅知識。


返去最開頭嗰四句說話,換個方式講:

裸機安裝嘅代價:
每次換機重新嚟過,每個坑重新踩過,每次配置只係活喺你一個人個腦入面。

Docker + 技能包嘅代價:
一次安裝,一份文檔,一個技能包——之後嘅每個人都企喺你膊頭上面出發。

呢個唔係技術選擇,係對自己時間嘅態度。

圖片


技能包下載:

openclaw-docker-setup 技能包已經發佈上 ClawHub,免費下載:

https://clawhub.ai/chunhualiao/openclaw-docker-setup

安裝方式:clawhub install openclaw-docker-setup

                 

 

圖片事情是這樣開始的。

一個週末的下午,我打開Claude Code的終端,輸入了一句話:"幫我在Docker裏把OpenClaw跑起來,配好郵件和Google Drive。"

然後我就基本沒怎麼動手了。

AI自己探路,遇到端口衝突,自己換端口。遇到Python中文亂碼,自己改參數。遇到網頁認證無法穿越docker,自己找到了繞過的方法。遇到LICENSE文件被拒,自己把擴展名加上。整個過程大概花了一個下午,我主要做的事情是看着它工作,偶爾回答幾個問題。

配置完成之後,我做了一件更重要的事:讓它把這一路的操作流程和踩過的坑,打包成一個可複用的技能包,發佈到ClawHub。

這篇文章就是這件事的記錄——為什麼這樣做,以及你也可以怎麼做。

在正式展開之前,先把結論擺在這裏:

Dockerized OpenClaw 的核心優勢,四句話:

  • 隨開隨用:容器啓動秒級完成,不依賴本機環境,換電腦也是一條命令的事
  • 互不干擾:演示、測試、生產三套環境並存,任意切換,主機系統零污染
  • 安全邊界:AI代理有shell權限,Docker限制它能碰什麼——你說了算,不是它
  • 配置可遷移:環境打包在容器裏,重裝系統不歸零,坑只踩一次

記住這四點。後面的技術細節,都是在解釋為什麼這四句話是真的。

圖片


你花了三小時,把OpenClaw配置得妥妥帖帖。郵件連上了,日曆同步了,Discord也接好了。你的AI助手終於能幹活了。

然後你重裝了系統。

三小時歸零。所有配置、所有工具鏈、所有你踩過的坑再踩一遍。這種經歷,配過開發環境的人都懂。

問題來了:你的AI助手的"家",應該是你的操作系統,還是一個獨立的、可以打包帶走的容器?

技能包裝不只是一個配置文件

先說一個容易被忽略的概念:技能包(skill)。

在OpenClaw的體系裏,技能是Markdown文件,包含了讓AI代理完成特定任務的完整指令。聽起來簡單,但關鍵詞是"完整"——不是一段筆記,不是一個備忘錄,而是一個承諾:任何人拿到這份技能包,都能復現同樣的操作序列。

ClawHub上目前有超過2,857個技能包。這個數字不是偶然的。當一個生態系統裏有近三千個可複用的操作單元在流通,它已經越過了"玩具"的階段,進入了基礎設施的領域。

想想這個區別:沒有技能包時,安裝和配置是一次性的手工藝術。你花三小時搞定了,這三小時的經驗只存在於你腦子裏。有了技能包,同樣的操作變成了可交付的知識。

打個比方——一頓飯和一份菜譜的區別。一頓飯再好吃,吃完就沒了。菜譜可以傳播,可以改進,可以讓一千個人做出同一道菜。技能包就是AI代理世界的菜譜。

Docker:AI代理的正確居所

回到開頭的問題。你的AI助手應該住在哪?

我的答案是Docker容器。理由有四個,每一個都很實際。

隔離性。 你的AI代理不應該和你的日常工作環境住在一起。依賴衝突、權限混亂、某個工具升級後另一個工具突然掛了——這些"莫名其妙的bug",根源往往是環境污染。Docker給AI代理一個乾淨的、獨立的運行空間,你的主系統不受影響。

可遷移性。 從MacBook到雲服務器,一條命令重建整個環境。重裝系統?換電腦?不怕。容器在,配置在。

多實例共存。 這一點常被低估。你可以在同一台Mac上同時跑三個OpenClaw容器——一個用於日常生產,一個用於演示,一個用於測試——互不干擾,各司其職:

# 生產環境
docker run -d --name openclaw-prod -p 19001:19001 --cpus=2 ghcr.io/openclaw/openclaw:latest

# 演示環境

docker run -d --name openclaw-demo -p 19003:19001 --cpus=2 ghcr.io/openclaw/openclaw:latest

# 測試環境

docker run -d --name openclaw-test -p 19004:19001 --cpus=1 ghcr.io/openclaw/openclaw:latest

三個容器,三個端口,彼此完全隔離。這在裸機安裝裏幾乎不可能實現。

圖片

安全邊界。 這一點必須認真對待。Help Net Security在2026年2月的一篇報道中指出,AI代理框架正在被用來自動化涉及工具、文件和外部服務的工作,這類自動化"引發了關於代理能訪問什麼、能改變什麼的安全問題"。AI代理是有shell權限的——它能執行命令、讀寫文件。Docker的作用,是給這種權限畫一條邊界。容器內的AI能做什麼,由你掛載哪些目錄、開放哪些端口決定,而不是由AI自己決定。

一個好技能包長什麼樣——以及我踩過的四個坑

說回技能包裝。抽象地討論"技能包很重要"沒什麼說服力,不如看一個具體的例子——加上真實的教訓。

我自己寫了一個openclaw-docker-setup技能包,發佈在ClawHub上,經過結構審查拿到了33/33的滿分通過。這個技能包把Docker環境搭建拆成了9個步驟,每一步都有明確的輸入、輸出和判斷邏輯。幾個設計決策,以及我踩過的坑。


Step 0:先搞清楚你已經有什麼。

在你動手創建任何東西之前,技能包會自動運行這條命令:

docker ps --format '{{.Names}}\t{{.Ports}}' | grep openclaw

它列出所有已在運行的OpenClaw容器和它們佔用的端口,然後建議你用下一個可用的名字和端口組合。比如已有 openclaw-isolated 佔用了19002,它會建議你用 openclaw-demo 加19003。

這不是花哨的功能,是防禦性設計。端口衝突在部署前是一行報錯,在部署後是半小時的排查。防禦性設計的本質,是讓錯誤在最便宜的時候發生。


工具選擇:一個工具幹一件事,因為沒有工具能幹兩件事。

郵件集成用Himalaya,Google Drive集成用gog。

為什麼不用一個工具搞定?因為gog根本不支持下載Gmail附件。它是為Google Drive和文檔設計的,不處理IMAP/SMTP郵件附件。Himalaya專門為郵件協議設計,附件支持完整。

這不是偏好問題,是功能邊界問題。如果你的工作流需要"AI讀取郵件附件並處理",用gog是死路。我在技能包裏把這個理由寫清楚了,因為後來的使用者不應該再踩同一個坑。


cpus=2:默認值是一種價值觀。

很多Docker配置默認分配1個CPU。我選擇默認2個。

當你的AI代理同時處理郵件、調用API、執行腳本時,1個CPU會成為瓶頸,響應延遲會明顯上升。這不是隨手填的數字,是對生產場景的基本尊重。默認值是你對使用者隱含的一個承諾。


"你需要在Mac前面嗎?"——把侷限性寫清楚。

技能包裏專門有一節回答這個問題:哪些步驟可以SSH遠程完成,哪些需要物理接觸機器。

好的技能包不掩蓋侷限性。用戶不應該執行到第六步才發現需要坐在那台機器前面。把約束寫清楚,不是在展示缺點,是在尊重用戶的時間。

四個真實踩過的坑

圖片

寫技能包的過程是反覆碰壁的過程。這裏列出四個實際遇到的問題,不是為了抱怨,是因為這些坑大概率也等着你。

坑一:LICENSE文件被平台拒絕。

發佈技能包到ClawHub時,一個文件名為 LICENSE(沒有擴展名)會被平台報錯:

Only text-based files are allowed

解決方法:把文件重命名為 LICENSE.md。這不是文檔裏寫的規則,是碰壁才發現的。寫技能包的人通常習慣用標準開源慣例放置LICENSE文件,但平台按擴展名判斷文件類型。

坑二:官方CLI發佈超時,哪怕文件只有72KB。

clawhub publish 命令發佈技能包,會報這個錯:

invalid multi-part form: stream size exceeded limit: 20971520 bytes

看到"20MB limit exceeded"以為是文件太大,但72KB的目錄怎麼可能超過20MB?問題在於CLI有約15秒的超時,而服務器處理技能包的embedding需要40-50秒。時間到了,連接斷掉,CLI誤報了一個流量限制的錯誤。

解決方法:繞過CLI,直接用curl調用API:

curl -X POST https://clawhub.ai/api/v1/skills \
  --header "Authorization: Bearer $CLAWHUB_TOKEN" \
  --form 'payload={"displayName":"OpenClaw Docker Setup","tags":["docker","setup"]}' \
  --form "files=@SKILL.md" \
  --form "files=@README.md"

curl沒有15秒超時的限制,服務器有足夠時間處理。這個方法現在是我發佈所有技能包的標準流程。

坑三:自動安全掃描的誤報。

技能包發佈前會經過OPSEC安全掃描,自動檢查是否含有可疑路徑或憑證。掃描器把 /home/node/ 標記為"可疑路徑"。

這是Docker容器內部的標準路徑——node 是容器裏運行Node.js進程的用戶,路徑完全合理。但掃描器不理解上下文,只做字符串匹配。

這個誤報需要人工判斷才能排除。自動化掃描的侷限性在這裏很清楚:它能發現明顯的問題,但無法區分"合理的 /home/node/"和"可疑的 /home/node/"。最終的判斷,還是需要人。

坑四:預覽服務器只綁定 localhost,手機看不到。

跑完格式化腳本之後,用 Python 啓動了一個本地預覽服務:

python3 -m http.server 8899

在 Mac 瀏覽器裏打開 http://localhost:8899/formatted.html 一切正常。

然後在手機上輸入同樣的地址——空白頁。

原因:默認不加參數時,Python 的 http.server 只監聽 127.0.0.1(本機迴環地址),局域網內的其他設備根本連不上。

解決方法:加 --bind 0.0.0.0,監聽所有網絡接口:

python3 -m http.server 8899 --bind 0.0.0.0

然後用 Mac 的局域網 IP 訪問(不是 localhost):http://192.168.0.193:8899/formatted.html

這個坑每次都會踩,因為開發時習慣用 localhost,直到第一次拿手機驗證排版才發現。

知識的基礎設施化

寫文檔和寫技能包有什麼區別?

文檔是被動的。它告訴你該做什麼,然後等你自己去做。你讀完了,可能漏了一步,可能理解錯了一個參數,可能在第三步和第四步之間迷路了。

技能包是主動的。它不只告訴你該做什麼,它幫你做,同時記錄為什麼要這樣做。AI代理讀取技能包後,能自主執行每一步,遇到分支條件能自己判斷。

更重要的是社區維度。我在加州發佈一個技能包,你在上海安裝它,我的同事在慕尼黑安裝它。三個人在三個時區,得到的是同一個配置好的環境——包括那四個坑的解法。這不是"分享經驗",這是把個人經驗變成了基礎設施。知識從一個人的腦子裏,變成了整個社區可以依賴的東西。

OpenClaw本身的設計也在推動這件事。它是模型無關的、隱私優先的、運行在本地系統上的。啓用ClawHub之後,代理可以自動搜索和拉取新技能。技能生態不是需要人工維護的目錄,而是一個活的、可自動發現的知識網絡。

誠實的代價

Docker不是沒有門檻。

它有學習曲線。如果你從來沒用過容器技術,第一次上手需要時間。初始設置確實需要你坐在Mac前面——SSH遠程可以完成一部分工作,但有些操作綁定了本地環境,這是事實。技能包也不是寫一次就永遠有效,工具版本更新、依賴變化,都需要維護。

這些代價是真實的,我不想假裝它們不存在。

但換個角度想:這些代價是一次性的、可分攤的。而"三小時配置歸零"的代價,每一次重裝、每一次換機器、每一次環境崩潰,都要重新支付。一次性投入建好基礎設施,還是反覆支付重複勞動的成本?這筆賬不難算。

AI代理需要文明,不只是能力

最後說一個稍微大一點的觀點。

沒有技能包裝的AI代理,是一個強大的工匠。它能力很強,但只存在於你的機器上,只有你會用。你的配置、你的工具鏈、你踩過的坑,全部鎖在你一個人的環境裏。

有了技能包裝,工匠的手藝變成了可以傳授的工藝。你的經驗不再只屬於你,它可以被複現、被檢驗、被改進。

技能生態系統是AI代理從"個人工具"走向"共享基礎設施"的關鍵一步。如果說AI代理的能力是蠻力,那麼技能包裝就是文明——它讓知識可以積累、傳遞、迭代,而不是每個人都從零開始重新發明輪子。

Docker給了AI代理一個安全的、可遷移的家。技能包給了這個家可複製的建造圖紙。那四個坑,現在是文檔,不再是陷阱。

下次配置AI助手之前,先問自己一個問題:這次的配置,能不能讓別人也用上?如果不能,也許值得多花一點時間,把它做成可以傳遞的知識。


回到最開始那四句話,換一種方式說:

裸機安裝的代價:
每次換機器重來一遍,每個坑重踩一遍,每次配置只活在你一個人的腦子裏。

Docker + 技能包的代價:
一次安裝,一份文檔,一個技能包——之後的每個人都站在你的肩膀上出發。

這不是技術選擇,是對自己時間的態度。

圖片


技能包下載:

openclaw-docker-setup 技能包已發佈到 ClawHub,免費下載:

https://clawhub.ai/chunhualiao/openclaw-docker-setup

安裝方式:clawhub install openclaw-docker-setup