從OpenClaw到Hermes:一個非程序員的24小時遷移實錄

作者:Ruiqin袁鋭欽
日期:2026年4月17日 上午10:26
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

非程序員用24小時由OpenClaw搬到Hermes:搬知識庫、改技能包、接平台嘅完整實錄

整理版摘要

袁鋭欽係一個用AI編程嘅實踐者,用咗OpenClaw三星期,寫咗三十幾篇公眾號文章、一個出海項目同整套知識庫。但佢發現OpenClaw唔會自己變強,每次踩完坑都要重新教過。直到佢見到Hermes嘅自改進循環:做完一件事自動總結經驗,寫成可複用技能,下次直接用。呢個概念令佢決定嘗試遷移。

OpenClawHermes核心差異在於:OpenClaw係被動嘅Gateway設計,你話佢做乜佢就做乜,唔會主動改善;Hermes嘅自改進循環令佢會自己學着幹活。搬遷過程分三步:先搬知識庫(注意read_file會帶行號,要用cat讀原始內容)、再改技能包(砍重複、補缺失、脱敏個人資訊)、最後接平台(飛書加crontab自動重連,公眾號API最順利)。每一步都踩咗唔少坑,例如bun install SSL錯誤要改用npm、Playwright路徑硬編碼要改動態檢測。

24小時後成個系統成功運行,Hermes仲自動將踩坑經驗寫成技能,並將36篇文章按系列整理好。但作者唔盲目推薦:初學者應該先用OpenClaw,佢開箱即用;如果你已經用咗一段時間,覺得每次都要重複教AI,先至適合轉用Hermes。選工具係揀階段,唔係揀最好。

  • OpenClawHermes最大分別:前者係被動執行指令,後者有自改進循環,會自動總結經驗並複用。
  • 搬知識庫最易忽略read_file嘅行號格式,要用cat取代直接write_file,避免文件污染。
  • 技能包遷移有三個常見坑:bun install SSL錯誤(改用npm)、Playwright瀏覽器路徑硬編碼(改動態檢測)、個人資訊硬編碼(改環境變量同佔位符)。
  • 接平台時飛書WebSocket易斷線,要靠crontab每10分鐘健康檢查自動重連;公眾號API最簡單,只係搬.env同驗證白名單。
  • 遷移完成後,Hermes自動將踩坑經驗寫成可複用技能,並將文章分類整理,真正做到「AI自己學着幹活」。
整理重點

點解要搬:OpenClaw唔會自己變強

凌晨一點,我啱啱用AI寫完一篇公眾號文章,問佢「總結嚇今日犯嘅錯」,佢畀咗段靚仔總結。我再問「聽日仲記唔記得?」佢話「唔會。」呢個就係用OpenClaw三星期嘅寫照:佢好穩定,似個培訓好嘅助理,但唔會自己變強。今日踩嘅坑,聽日要重新教;昨日犯嘅錯,後日再犯多次。

OpenClaw核心係Gateway,所有消息經佢調度,設計圍繞「你點控制AI

然後我見到Hermes,佢有個叫自改進循環嘅功能:做完一件事,自動總結經驗,寫成可複用嘅技能,下次直接用。呢個概念令我好想試——「AI自己學着變強」呢件事,值得搏一鋪。

OpenClaw嘅好處係穩定、開箱即用、社區成熟;但佢係被動嘅,你唔出聲佢唔會鬱。Hermes就主動好多,越用越明你嘅習慣。

整理重點

先搬最重嘅傢俱:知識庫

OpenClawHermes嘅文件結構完全唔同,唔係換個文件夾名咁簡單。OpenClaw將所有嘢平鋪喺一個workspace目錄下,而Hermes係wiki式按功能分目錄。我要先做一張映射表,逐個對應。

OpenClaw workspace 結構 text
workspace/
├── memory/          → 個人檔案、日記、選題庫
├── shared/          → 跨Agent共享內容
├── articles/公眾號/  → 36篇已發佈文章,全平鋪
└── tools/           → HTML排版器等工具

搬文件時我踩咗第一個大坑:行號污染。OpenClaw嘅read_file返還內容帶行號(例如 5|xxx),我用write_file直接寫返過去,結果所有文件都多咗堆數字同豎線,完全冇得睇。解決方法超簡單:用cat命令讀原始內容,唔帶行號,再寫過去。

36篇文章全部被行號污染,如果冇發現,後面所有操作都會錯

搬完之後,Hermes順手幫我將36篇文章按系列整理好,由原本平鋪嘅一堆變成分類目錄(BRD系列、出海系列、AI工具教程等)。呢步唔係必須,但做咗之後管理內容順手好多。經驗:搬家唔係倒箱,係趁機整理。

整理重點

最折騰嘅零件:技能包

我有5個公眾號技能包,搬之前先砍咗兩個冇用嘅:一個功能重複,一個得文件冇實際腳本。剩下3個核心技能先係真正要搬嘅。然後坑一個接一個。

  1. 1 bun install SSL錯誤:macOS證書鏈同bun兼容有衝突,換成npm install一次過。
  2. 2 Playwright截圖技能報「找不到Chromium」,因為路徑寫死咗Linux路徑。改成動態檢測系統類型,自動揾對應路徑。
  3. 3 技能文件入面硬編碼咗我嘅AppIDAppSecret同個人名。全部改為環境變量同佔位符,技能變成任何人都用得。

涉及系統路徑嘅代碼永遠唔好硬編碼,用動態檢測

技能文件唔應該包含個人資訊,需要個性化嘅內容運行時動態讀取

呢步改完,技能包由「只能喺一個人機器上跑」變成「任何人拎到都用得」。遷移唔單止係令嘢行到,係令佢哋可以複用同分享。

整理重點

最後收尾:接平台

飛書機器人最陰濕:睇落好簡單,十分鐘搞掂配置,但發現WebSocket斷線重連只試一次,萬一SSL錯誤就卡死,冇任何通知。解決方案係用系統crontab每10分鐘行healthcheck腳本,檢查Gateway進程同WebSocket連接,唔正常就自動重啟。

healthcheck crontab bash
*/10 * * * * /path/to/feishu-healthcheck.sh

飛書機器人失聯可以幾個鐘冇人知,crontab健康檢查係低成本但有效嘅方法

公眾號API反而最順利:搬.env、確認白名單、跑一次發佈測試,15分鐘搞掂。經驗:平台接入放最後做,因為前面嘅知識庫同技能包正常咗,呢步出問題先容易定位。

整理重點

24小時後嘅體會:AI自己學着幹活

全部搞掂後,我檢查咗所有功能:公眾號發佈、寫作流程、配圖設計、飛書機器人、知識庫、選題庫——全部正常。然後我叫Hermes總結今日踩嘅坑,佢唔單止畀咗總結,仲將啲坑寫成一個可複用嘅技能檔,存喺技能庫入面。下次有人問遷移,佢自己會答,唔使我重新教。

不過我唔係勸你換。如果你啱啱接觸AI Agent,OpenClaw更好,開箱即用社區成熟。Hermes適合另一類人——已經用過一段時間,開始覺得「每次都重複教AI」嘅人。你想佢記住你上次犯嘅錯,下次自動避開。選工具係揀階段,唔係揀最好。

袁鋭欽 · AI編程實踐者


凌晨一點嘅崩潰

凌晨一點,我啱啱用AI寫完一篇公眾號文章,睇住佢將篇文推到草稿箱,鬆返一口氣。

然後問咗一句:「總結一下今日犯嘅錯。」

佢畀咗我一段靚嘅總結。我接着問:「你聽日仲記唔記得?」

佢話:「唔會。」

呢個係用OpenClaw嘅第三個星期。30幾篇公眾號文章、一個出海項目、成套知識庫——全部都係佢幫我搞掂嘅。佢好穩定,好似一個你訓練好咗嘅助理,你講咩佢做咩。

但有一樣嘢佢做唔到:變強。

今日踩嘅坑,聽日仲要重新教一次。昨日犯嘅錯,後日佢又再犯一次。我要一次又一次手寫配置、手動調教,好似一個老師傅帶新徒弟咁。

然後我見到Hermes。

佢有一個叫「自改進循環」嘅功能:做完一件事,自動總結經驗,寫成可以重用嘅技能,下次遇到類似嘅事直接用得。

我唔肯定呢樣嘢靠唔靠得住。但「AI自己學住變強」呢件事——我想試下。


OpenClaw同Hermes到底有咩分別

講遷移之前,先講清楚呢兩樣嘢究竟係咩關係。

好多人以為佢哋係競爭對手——其實唔算。更加似係同一件事嘅兩種思路。

OpenClaw嘅核心係Gateway。 一個大管家,所有消息都經佢調度。你喺飛書講一句說話,Gateway收到之後分配畀對應嘅Agent去處理,處理完再回覆畀你。成個系統圍繞「你點樣控制呢個AI」來設計。

佢嘅好處係穩定、開箱即用、社羣生態成熟。你裝好之後,跟住範本寫幾個設定檔,就可以運行。寫作、發佈、配圖,都有現成嘅技能包可以裝。對新手來講,呢個體驗好友好。

但有一個問題:佢係被動嘅。 你講咩佢做咩,唔講就唔鬱。今日踩咗一個坑,你手把手教佢改咗。聽日換個場景,佢仲係唔識。

Hermes嘅思路完全唔同。 佢嘅核心係一個自改進循環:

做完一件事 → 自動總結邊度做得好邊度做得差 → 將經驗寫成可以重用嘅技能 → 下次遇到類似嘅事直接調用。

翻譯成人話:OpenClaw係你教AI做嘢,Hermes係AI自己學住做嘢。

舉個例子。我用OpenClaw發佈公眾號文章,每次都要手動揀主題、手動檢查格式、手動上傳封面圖。用咗三十幾次,流程完全一樣,但佢從來唔記住。

轉到Hermes之後,第一次發佈完,佢自動將呢個流程總結成一個技能。第二次我話「發佈」,佢直接跟上次嘅參數做,只問我要唔要改。

呢個就叫做「越用越明你」。


搬屋唔係打包行李

決定遷移之後,我做的第一件事係列清單。

發現要搬嘅唔止係聊天記錄。係三樣嘢:

知識庫 — 36篇公眾號文章、個人檔案、選題庫、讀書筆記,全部存在OpenClaw嘅檔案系統裏便。

技能包 — 公眾號發佈、寫作系統、配圖設計,5個訂製好嘅工作流程技能。

平台接入 — 飛書機械人、微信網關、公眾號API憑證。

三件事串埋一齊。少搬一樣,成個系統就運行唔到。

我先俾自己畫咗一張路線圖:

  1. 1. 先搬知識庫(最重但最簡單)
  2. 2. 再改技能包(最麻煩,要逐個適配)
  3. 3. 最後接平台(收尾驗證)

就係呢三步。但每一步都踩咗坑。


先搬最重嘅傢俬:知識庫

OpenClaw同Hermes嘅檔案結構完全唔同。唔係轉個資料夾名咁簡單,係成個組織邏輯變咗。

OpenClaw嘅結構係圍繞「一個workspace」設計嘅——所有嘢都放喺 /root/.openclaw/workspace/ 下面,平鋪展開:

workspace/
├── memory/          → 個人檔案、日記、選題庫
├── shared/          → 跨Agent共享內容
├── articles/公眾號/  → 36篇已發佈文章,全平鋪在一個目錄
└── tools/           → HTML排版器等工具

Hermes嘅思路係wiki式,按功能分目錄:

~/wiki/
├── 1-我/            → 個人檔案
├── 2-創作/公眾號/    → 文章、草稿、選題庫
├── 3-學習/          → 深度學習、讀書筆記
├── 4-項目/          → 出海、KB_pngtrid
├── 5-人脈/          → 聯繫人
└── 6-原始資料/      → 源文件備份

我要先做一張對應表:

  • • workspace/ → ~/wiki/
  • • workspace/memory/ → ~/wiki/ 下按功能分嘅子目錄
  • • workspace/articles/公眾號/ → ~/wiki/2-創作/公眾號/已發佈/
  • • /root/.openclaw/.env → ~/.hermes/.env

睇落唔複雜,係咪?搬檔案啫,cp過去就得。

然後我踩咗第一個坑。

行號污染。

OpenClaw嘅 read_file 返回嘅內容帶行號——每行前面有個 5|xxx 咁嘅標記。睇落幾貼心,方便你睇行數。

但問題係:我喺Hermes裏直接用 write_file 將呢啲內容寫返去,結果所有檔案都被行號污染咗。每行前面多咗一堆數字同豎線,文章根本睇唔到。

「心諗咁都得?」

36篇文章,每篇都被污染咗。如果我冇發現就繼續行落去——後面所有基於呢啲檔案嘅操作全部會出錯。

解決方案:用 cat 指令讀原始內容,唔帶行號,再寫過去。就係咁簡單嘅一個操作。但如果你唔知道呢兩個工具嘅返回格式唔一樣,你會喺呢一步浪費兩個鐘。

搬完之後,Hermes順手做咗一件事:將36篇文章按系列整理咗一下。

原本喺OpenClaw裏,36篇文章全部平鋪喺同一個目錄下。冇分類,冇結構。揾一篇BRD系列嘅文章,你要喺36個檔案裏便逐個揾。

搬到Hermes之後,我建立咗子目錄:

  • • BRD系列 5篇
  • • 出海系列 9篇
  • • AI工具教學 7篇
  • • 覆盤 6篇
  • • 散文 9篇

由一團平鋪變成有結構嘅創作庫。以後揾文章,直接按系列入目錄就得。

呢步唔係必須。但做咗之後,後面用Hermes管理內容會順手好多。

經驗:搬屋唔係將嘢由舊箱倒落新箱。係趁搬屋嘅機會,將本來懶得整理嘅嘢整理一次。


最麻煩嘅零件:技能包

呢個係成個搬遷入面花最多時間嘅部分。

先講下我有啲咩技能包。我嘅公眾號工作流程有5個技能,係由OpenClaw社羣度揾返嚟訂製嘅:

技能
功能
用嘅技術
baoyu-post-to-wechat
公眾號文章發佈
TypeScript + bun + Chrome CDP
wechat-writing-system
寫作全流程(選題→標題→正文→審查)
純Markdown指令
infographic-design
公眾號配圖設計
Python + HTML/CSS + Playwright截圖
wechat-mp-publish
簡化版發佈(阿策寫嘅)
Python腳本
wechat-mp-cn
公眾號監控
純概念文件,冇代碼

搬之前先做咗一件事:砍咗冇用嘅。

wechat-mp-publish 功能完全被 baoyu-post-to-wechat 覆蓋——兩個都可以發佈文章,但baoyu支援更多主題、更完善嘅排版。留低只會混淆。

wechat-mp-cn 更加離譜,打開一睇得功能列表同幾個API連結,冇任何可以執行嘅腳本。裝咗等於冇裝。

砍完淨返3個核心技能,先係真正要搬嘅。

然後坑嚟喇,一個跟一個。

坑一:bun install 無啦啦報 SSL 錯誤

公眾號發佈技能 baoyu-post-to-wechat 用 TypeScript 寫嘅,依賴 bun 運行。先裝依賴:

cd skills/baoyu-post-to-wechat/scripts/
bun install

直接報錯:

UNKNOWN_CERTIFICATE_VERIFICATION_ERROR

我第一反應係網絡問題。換網絡、掛VPN、清快取——全部冇用。

然後去查先知:呢個唔係代碼嘅問題,係 macOS 嘅證書鏈同 bun 嘅相容性有衝突。bun 自己有一套證書驗證邏輯,同 macOS 系統證書對唔上就會報呢個錯。

「算啦唔諗咁多。」直接轉用 npm install,一次過。

功能完全一樣,只係套件管理員轉咗一個。後續執行都冇任何問題。

經驗:遇到工具鏈報 SSL 錯誤,先轉第二個工具試下,唔好死撐。

坑二:截圖工具揾唔到瀏覽器喺邊

配圖技能 infographic-design 嘅原理係:先用 Python 生成 HTML,再用 Playwright 打開 HTML 截圖,輸出 PNG。

聽落好順暢。一執行就報錯:揾唔到 Chromium。

打開 screenshot.py 一睇,路徑寫死咗:

/root/.cache/ms-playwright/chromium-1208/chrome-linux64/chrome

呢個係 Linux 嘅路徑。我部機係 macOS。Playwright 喺 macOS 上嘅安裝路徑完全唔同:

~/Library/Caches/ms-playwright/chromium-*/chrome-mac/Chromium.app/Contents/MacOS/Chromium

唔單止路徑唔同,連目錄結構都唔一樣。Linux 係直接一個 chrome 二進制檔案,macOS 係收埋喺 .app 套件裏便。

修正方案:改成自動偵測系統類型。先判斷係 Linux 定 macOS,然後動態揾 Playwright 嘅安裝路徑。咁樣無論喺咩系統上都可以執行。

經驗:涉及系統路徑嘅代碼,永遠唔好硬編碼。用動態偵測。

坑三:技能檔案入面寫死咗我嘅個人資料

呢個坑最隱蔽。

OpenClaw 嘅技能包入面有唔少地方直接寫咗用戶名、AppID、檔案路徑。例如公眾號發佈嘅技能入面,直接寫死咗我嘅公眾號 AppID 同 AppSecret。寫作系統嘅技能入面,寫死咗選題庫嘅絕對路徑。

Hermes 嘅設計原則是:技能檔案本身唔可以包含任何個人資料。 需要個人化嘅內容,執行時動態讀取。

點解?因為技能係有可能被分享嘅。你將技能畀人,入面仲夾住你嘅 AppID——咁樣唔合適。

所以我要做三件事:

  1. 1. 所有硬編碼路徑改成相對路徑或環境變數
  2. 2. 所有憑證(AppID、AppSecret)搬去 .env 檔案,技能執行時讀取
  3. 3. 所有「袁鋭欽」「Ruiqin」呢類個人資料改成佔位符,執行時從個人檔案讀取

呢步改完,技能包由「只能喺一個人部機上執行」變咗「任何人拎到都用得」.

經驗:搬遷唔止係令啲嘢可以執行。係令佢哋變得可以重用、可以分享。


最後嘅收尾:接平台

知識庫同技能都搬完,最後係接平台。呢一步涉及兩樣嘢:飛書機械人同公眾號API。

飛書機械人:睇落簡單,坑最陰濕

OpenClaw 嘅飛書接入係透過 Gateway 設定檔管理嘅。你喺設定檔填好 App ID、App Secret,啟動 Gateway,就通咗。

Hermes 用嘅係 WebSocket 模式。設定寫喺 config.yaml 裏,邏輯差唔多——填憑證、揀模式、啟動。

睇落就係換個地方寫設定嘅事。我十分鐘就搞掂咗。

然後發現咗一個問題:WebSocket 斷線重連。

Hermes 嘅飛書 Gateway 喺網絡波動嘅時候,ping 會超時。超時之後佢嘗試重連——但只重連1次。如果撞到 SSL 錯誤(例如網絡啱啱震咗一下),佢就會卡住,唔再重試。

你唔會收到任何通知。等你發現嘅時候,機械人已經「失聯」咗好幾個鐘。有人傳訊息畀你,你冇回——你根本唔知。

解決方案好暴力但有效:用系統 crontab 每10分鐘行一次 healthcheck 腳本。

*/10 * * * * /path/to/feishu-healthcheck.sh

腳本做嘅嘢好簡單:檢查 Gateway 程序係咪生還、WebSocket 連接係咪正常。唔正常就自動重啟。

唔需要調 LLM,零成本執行。穩陣。

公眾號API:最順利嘅一步

公眾號 API 嘅搬遷就三步:

  1. 1. 將 AppID 同 AppSecret 由舊嘅 .env 搬去新嘅位置
  2. 2. 確認伺服器 IP 仍然喺公眾號白名單內
  3. 3. 行一次發佈測試,驗證 token 可以正常獲取

由操作到驗證通過,15分鐘。

經驗:平台接入睇落係小事,但佢決定咗你成個系統「通唔通」。放到最後做,因為前面兩步都正常,呢一步出問題先容易定位。


24小時後嘅樣

全部搞掂。我檢查咗一次所有功能:

功能
狀態
備註
公眾號文章發佈
✅ 正常
baoyu技能,支援13種排版主題
公眾號寫作流程
✅ 正常
選題→標題→正文→三輪審查
配圖設計
✅ 正常
HTML+CSS+Playwright截圖
飛書機械人
✅ 在線
WebSocket模式,crontab自動重連
知識庫
✅ 完整
36篇文章分5個系列歸檔
選題庫
✅ 搬遷
新路徑,寫作技能可以正常讀取

然後我叫Hermes幫我做咗一件事——總結今日搬遷過程中踩嘅坑。

佢唔單止畀咗總結。佢將呢啲坑寫成咗一個可以重用嘅技能檔案,存咗入技能庫度。

下次有人問我「點樣由OpenClaw搬到Hermes」,佢唔需要我再教一次。

佢自己識咗。

就係呢一刻,我覺得呢24個鐘值咗。

然後佢仲做咗一件事令我更加意外——佢唔單止總結咗坑,仲將36篇文章按系列整理好。我冇叫佢咁做。但佢見到檔案平鋪喺同一個目錄度,覺得「咁樣唔好用」,就自己建立咗子目錄、按內容分類、將檔案搬咗入去。

呢個咪係我一直喺度揾嘅「AI自己學住做嘢」?


但我唔係勸你轉

講真話:如果你啱啱接觸 AI Agent,OpenClaw 係更好嘅選擇。

開箱即用,社羣成熟,踩坑成本低。你遇到任何問題,喺 Group 問一句就有人答。技能包又多,直接裝就用得。

Hermes 適合另一類人——已經用過一段時間,開始覺得「我每次都喺度重複教AI」嘅人。

你想讓AI記住你上次犯嘅錯。你想讓佢下次自動避開。你想讓佢越用越明你。

去到呢個階段,你需要嘅唔係一個聽話嘅助手,而係一個會自己成長嘅拍檔。

揀工具唔係揀最好嘅。係揀你到咗邊個階段。

功能機穩定好用。但到咗你想讓手機自己裝 App 嘅嗰一日——路已經有人幫你踩過。

搬遷清單:

  1. 1. 搬知識庫:留意 read_file 嘅行號格式差異,用 cat 讀原始內容
  2. 2. 改技能包:砍掉重複嘅、補齊缺失嘅、脱敏個人資料
  3. 3. 接平台:飛書加 crontab 自動重連、公眾號搬遷 .env 驗證白名單

就係呢三步。每一步嘅具體操作同踩坑記錄,我都寫咗喺呢篇文章度。

如果你都考慮緊搬遷,希望呢篇可以幫你慳返我踩過嗰啲坑。


袁鋭欽 · AI編程實踐者關注公眾號「Ruiqin 袁鋭欽」,回覆「搬遷」,獲取飛書 healthcheck 腳本 + 環境變數設定範本 + 完整路徑對應表

袁鋭欽 · AI編程實踐者


凌晨一點的崩潰

凌晨一點,我剛用AI寫完一篇公眾號文章,看着它把文章推到草稿箱,長出一口氣。

然後問了一句:"總結一下今天犯的錯。"

它給了我一段漂亮的總結。我接着問:"你明天還記得嗎?"

它說:"不會。"

這是用OpenClaw的第三週。30多篇公眾號,一個出海項目,整套知識庫——全是它幫我乾的。它很穩,像個你培訓好的助理,你說什麼它做什麼。

但有一個事它做不到:變強。

今天踩的坑,明天還得重新教一遍。昨天犯的錯,後天它再犯一次。我得一遍一遍手寫配置、手動調教,像個老師傅帶新徒弟。

然後我看到了Hermes。

它有一個東西叫"自改進循環":做完一件事,自動總結經驗,寫成可複用的技能,下次遇到類似的事直接用上。

我不確定這玩意兒靠不靠譜。但"AI自己學着變強"這件事——我想試試。


OpenClaw和Hermes到底有什麼區別

聊遷移之前,先說清楚這兩個東西到底是什麼關係。

很多人以為它們是競品——其實不算。更像是同一件事的兩種思路。

OpenClaw的核心是Gateway。 一個大管家,所有消息都經過它調度。你在飛書說一句話,Gateway收到後分配給對應的Agent去處理,處理完了再回復給你。整個系統圍繞"你怎麼控制這個AI"來設計。

它的好處是穩定、開箱即用、社區生態成熟。你裝好之後,按照模板寫幾個配置文件,就能跑起來。寫作、發佈、配圖,都有現成的技能包可以裝。對新手來說,這個體驗很友好。

但有一個問題:它是被動的。 你說什麼它做什麼,不說它就不動。今天踩了一個坑,你手把手教它改了。明天換個場景,它還是不會。

Hermes的思路完全不同。 它的核心是一個自改進循環:

做完一件事 → 自動總結哪裏做得好哪裏做得爛 → 把經驗寫成可複用的技能 → 下次遇到類似的事直接調用。

翻譯成人話:OpenClaw是你教AI幹活,Hermes是AI自己學着幹活。

舉個例子。我用OpenClaw發佈公眾號文章,每次都得手動選主題、手動檢查格式、手動上傳封面圖。用了三十多次,流程完全一樣,但它從來不記住。

換到Hermes之後,第一次發佈完,它自動把這個流程總結成一個技能。第二次我說"發佈",它直接按上次的參數走,只問我要不要改。

這就叫"越用越懂你"。


搬家不是打包行李

決定遷移之後,我做的第一件事是列清單。

發現要搬的不只是聊天記錄。是三樣東西:

知識庫 — 36篇公眾號文章、個人檔案、選題庫、讀書筆記,全存在OpenClaw的文件系統裏。

技能包 — 公眾號發佈、寫作系統、配圖設計,5個定製好的工作流技能。

平台接入 — 飛書機器人、微信網關、公眾號API憑證。

三件事串在一起。少搬一樣,整個系統就跑不起來。

我先給自己畫了一張路線圖:

  1. 1. 先搬知識庫(最重但最簡單)
  2. 2. 再改技能包(最折騰,要逐個適配)
  3. 3. 最後接平台(收尾驗證)

就這麼三步。但每一步都踩了坑。


先搬最重的傢俱:知識庫

OpenClaw和Hermes的文件結構完全不同。不是換個文件夾名字那麼簡單,是整個組織邏輯變了。

OpenClaw的結構是圍繞"一個workspace"設計的——所有東西都放在 /root/.openclaw/workspace/ 下面,平鋪展開:

workspace/
├── memory/          → 個人檔案、日記、選題庫
├── shared/          → 跨Agent共享內容
├── articles/公眾號/  → 36篇已發佈文章,全平鋪在一個目錄
└── tools/           → HTML排版器等工具

Hermes的思路是wiki式的,按功能分目錄:

~/wiki/
├── 1-我/            → 個人檔案
├── 2-創作/公眾號/    → 文章、草稿、選題庫
├── 3-學習/          → 深度學習、讀書筆記
├── 4-項目/          → 出海、KB_pngtrid
├── 5-人脈/          → 聯繫人
└── 6-原始資料/      → 源文件備份

我得先做一張映射表:

  • • workspace/ → ~/wiki/
  • • workspace/memory/ → ~/wiki/ 下按功能分的子目錄
  • • workspace/articles/公眾號/ → ~/wiki/2-創作/公眾號/已發佈/
  • • /root/.openclaw/.env → ~/.hermes/.env

看着不復雜對吧?搬文件嘛,cp過去就行了。

然後我踩了第一個坑。

行號污染。

OpenClaw的 read_file 返回的內容帶行號——每行前面有個 5|xxx 這樣的標記。看起來挺貼心的,方便你看行數。

但問題是:我在Hermes裏直接用 write_file 把這些內容寫回去,結果所有文件都被行號污染了。每行前面多了一堆數字和豎線,文章根本沒法看。

"心想這也行?"

36篇文章,每篇都被污染了。如果我沒發現就繼續往下走——後面所有基於這些文件的操作全都會出錯。

解決方案:用 cat 命令讀原始內容,不帶行號,再寫過去。就這麼簡單的一個操作。但如果你不知道這兩個工具的返回格式不一樣,你會在這一步浪費兩個小時。

搬完之後,Hermes順手做了一件事:把36篇文章按系列整理了一下。

原來在OpenClaw裏,36篇文章全平鋪在一個目錄下。沒有分類,沒有結構。找一篇BRD系列的文章,你得在36個文件裏一個個翻。

搬到Hermes之後,我建了子目錄:

  • • BRD系列 5篇
  • • 出海系列 9篇
  • • AI工具教程 7篇
  • • 覆盤 6篇
  • • 散文 9篇

從一團平鋪變成有結構的創作庫。以後找文章,直接按系列進目錄就行。

這步不是必須的。但做了之後,後面用Hermes管理內容會順手很多。

經驗:搬家不是把東西從舊箱子倒進新箱子。是趁搬家的機會,把原來懶得整理的東西理一遍。


最折騰的零件:技能包

這是整個遷移裏花時間最多的部分。

先說說我有哪些技能包。我的公眾號工作流有5個技能,是從OpenClaw社區裏找來定製的:

技能
功能
用的技術
baoyu-post-to-wechat
公眾號文章發佈
TypeScript + bun + Chrome CDP
wechat-writing-system
寫作全流程(選題→標題→正文→審查)
純Markdown指令
infographic-design
公眾號配圖設計
Python + HTML/CSS + Playwright截圖
wechat-mp-publish
簡版發佈(阿策寫的)
Python腳本
wechat-mp-cn
公眾號監控
純概念文檔,沒代碼

搬之前先做了一件事:砍掉沒用的。

wechat-mp-publish 功能完全被 baoyu-post-to-wechat 覆蓋——兩個都能發佈文章,但baoyu支持更多主題、更完善的排版。留着只會混淆。

wechat-mp-cn 更離譜,打開一看只有功能列表和幾個API連結,沒有任何可執行的腳本。裝了等於沒裝。

砍完剩下3個核心技能,才是真正要搬的。

然後坑來了,一個接一個。

坑一:bun install 莫名其妙報 SSL 錯誤

公眾號發佈技能 baoyu-post-to-wechat 用 TypeScript 寫的,依賴 bun 運行。先裝依賴:

cd skills/baoyu-post-to-wechat/scripts/
bun install

直接報錯:

UNKNOWN_CERTIFICATE_VERIFICATION_ERROR

我第一反應是網絡問題。換網絡、掛梯子、清緩存——全沒用。

然後去查了才知道:這不是代碼的問題,是 macOS 的證書鏈和 bun 的兼容性有衝突。bun 自己有一套證書驗證邏輯,跟 macOS 系統證書對不上就會報這個錯。

"算了不想了。"直接換成 npm install,一次通過。

功能完全一樣,只是包管理器換了一個。後續運行也沒任何問題。

經驗:遇到工具鏈報 SSL 錯誤,先換個工具試,別死磕。

坑二:截圖工具找不到瀏覽器在哪

配圖技能 infographic-design 的原理是:先用 Python 生成 HTML,再用 Playwright 打開 HTML 截圖,輸出 PNG。

聽起來很順滑。跑起來直接報錯:找不到 Chromium。

打開 screenshot.py 一看,路徑寫死了:

/root/.cache/ms-playwright/chromium-1208/chrome-linux64/chrome

這是 Linux 的路徑。我的機器是 macOS。Playwright 在 macOS 上的安裝路徑完全不同:

~/Library/Caches/ms-playwright/chromium-*/chrome-mac/Chromium.app/Contents/MacOS/Chromium

不光路徑不同,連目錄結構都不一樣。Linux 是直接一個 chrome 二進制文件,macOS 是藏在 .app 包裏的。

修復方案:改成自動檢測系統類型。先判斷是 Linux 還是 macOS,然後動態查找 Playwright 的安裝路徑。這樣不管在什麼系統上都能跑。

經驗:涉及系統路徑的代碼,永遠不要硬編碼。用動態檢測。

坑三:技能文件裏寫死了我的個人信息

這個坑最隱蔽。

OpenClaw 的技能包裏有不少地方直接寫了用戶名、AppID、文件路徑。比如公眾號發佈的技能裏,直接寫死了我的公眾號 AppID 和 AppSecret。寫作系統的技能裏,寫死了選題庫的絕對路徑。

Hermes 的設計原則是:技能文件本身不能包含任何個人信息。 需要個性化的內容,運行時動態讀取。

為什麼?因為技能是可能被分享的。你把技能發給別人,裏面還夾着你的 AppID——這不合適。

所以我要做三件事:

  1. 1. 所有硬編碼路徑改成相對路徑或環境變量
  2. 2. 所有憑證(AppID、AppSecret)移到 .env 文件,技能運行時讀取
  3. 3. 所有"袁鋭欽""Ruiqin"這類個人信息改成佔位符,運行時從個人檔案讀取

這步改完,技能包從"只能在一個人機器上跑"變成了"任何人拿到都能用"。

經驗:遷移不只是讓東西能跑起來。是讓它們變得可以複用、可以分享。


最後的收尾:接平台

知識庫和技能都搬完了,最後是接平台。這一步涉及兩個東西:飛書機器人和公眾號API。

飛書機器人:看起來簡單,坑最陰

OpenClaw 的飛書接入是通過 Gateway 配置文件管理的。你在配置文件裏填好 App ID、App Secret,啓動 Gateway,就通了。

Hermes 用的是 WebSocket 模式。配置寫在 config.yaml 裏,邏輯差不多——填憑證、選模式、啓動。

看起來就是換個地方寫配置的事。我十分鐘就搞定了。

然後發現了一個問題:WebSocket 斷線重連。

Hermes 的飛書 Gateway 在網絡波動的時候,ping 會超時。超時之後它嘗試重連——但只重連1次。如果碰到 SSL 錯誤(比如網絡剛好抖了一下),它就卡住了,不再重試。

你不會收到任何通知。等你發現的時候,機器人已經"失聯"好幾個小時了。有人給你發消息,你沒回——你根本不知道。

解決方案很暴力但有效:用系統 crontab 每10分鐘跑一個 healthcheck 腳本。

*/10 * * * * /path/to/feishu-healthcheck.sh

腳本做的事情很簡單:檢查 Gateway 進程是否活着、WebSocket 連接是否正常。不正常就自動重啓。

不需要調 LLM,零成本運行。穩了。

公眾號API:最順利的一步

公眾號 API 的遷移就三步:

  1. 1. 把 AppID 和 AppSecret 從舊的 .env 搬到新的位置
  2. 2. 確認服務器 IP 仍在公眾號白名單內
  3. 3. 跑一次發佈測試,驗證 token 能正常獲取

從操作到驗證通過,15分鐘。

經驗:平台接入看起來是小事,但它決定了你整個系統"通不通"。放到最後做,因為前面兩步都正常了,這一步出問題才好定位。


24小時後的樣子

全部搞定。我檢查了一遍所有功能:

功能
狀態
備註
公眾號文章發佈
✅ 正常
baoyu技能,支持13種排版主題
公眾號寫作流程
✅ 正常
選題→標題→正文→三輪審查
配圖設計
✅ 正常
HTML+CSS+Playwright截圖
飛書機器人
✅ 在線
WebSocket模式,crontab自動重連
知識庫
✅ 完整
36篇文章分5個系列歸檔
選題庫
✅ 遷移
新路徑,寫作技能能正常讀取

然後我讓Hermes幫我做了一件事——總結今天遷移過程中踩的坑。

它不光給了總結。它把這些坑寫成了一個可複用的技能文件,存到了技能庫裏。

下次有人問我"怎麼從OpenClaw遷到Hermes",它不需要我重新教一遍。

它自己會了。

就這一刻,我覺得這24小時值了。

然後它還做了一件事讓我更意外——它不僅總結了坑,還把36篇文章按系列整理好了。我沒讓它這麼做。但它看到文件平鋪在一個目錄裏,覺得"這樣不好用",就自己建了子目錄、按內容分類、把文件搬進去了。

這不就是我一直在找的"AI自己學着幹活"嗎?


但我不是勸你換

說句實話:如果你剛接觸 AI Agent,OpenClaw 是更好的選擇。

開箱即用,社區成熟,踩坑成本低。你遇到任何問題,羣裏問一句就有人答。技能包也多,直接裝就能用。

Hermes 適合另一類人——已經用過一段時間,開始覺得"我每次都在重複教AI"的人。

你想讓AI記住你上次犯的錯。你想讓它下次自動避開。你想讓它越用越懂你。

到了這個階段,你需要的不是一個聽話的助理,而是一個會自己成長的搭檔。

選工具不是選最好的。是選你到了哪個階段。

功能機穩定好用。但到了你想讓手機自己裝App的那一天——路已經有人替你踩過了。

遷移清單:

  1. 1. 搬知識庫:注意 read_file 的行號格式差異,用 cat 讀原始內容
  2. 2. 改技能包:砍掉重複的、補全缺失的、脱敏個人信息
  3. 3. 接平台:飛書加 crontab 自動重連、公眾號遷移 .env 驗證白名單

就這三步。每一步的具體操作和踩坑記錄,我都寫在這篇文章裏了。

如果你也在考慮遷移,希望這篇能幫你省掉我踩過的那些坑。


袁鋭欽 · AI編程實踐者關注公眾號「Ruiqin 袁鋭欽」,回覆"遷移",獲取飛書 healthcheck 腳本 + 環境變量配置模板 + 完整路徑映射表