iT邦幫忙

2026 iThome 鐵人賽

DAY 28
0
AI 自動化

AI Agent:OpenClaw 從入門到自動化流程系列 第 28 篇

D28 四個零件接成一條線,然後發現模型跟不上

  • 分享至 

  • xImage
  •  

前面 SKILL、MCP、hook、排程都各自講過了。今天接起來做一個會動的。

情境:社團管器材借用。有人借了東西就在 borrow.md 丟一行字。每天固定時間 agent 自己去讀,整理成一張關係圖,之後你就可以直接問「麥克風在誰手上」。

borrow.md 只是我們自己建的資料檔,名字隨便取;它會被讀到,是因為排程的提示裡寫了要讀它。後面的 BOOT.md 不一樣,那是 OpenClaw 自己會去找的固定檔名。

四個零件各管一件事:

排程   什麼時候做
SKILL  怎麼做
MCP    存到哪
hook   開機時檢查

排程在 WebUI → 自動化新增一條,工作階段選「隔離」,傳送選「無(內部)」。傳送那欄預設是「公告」,意思是把結果發到聊天室 —— 這條任務是寫進圖譜,不用發給誰。沒改的話它每天失敗一次,而且你不會知道。

https://ithelp.ithome.com.tw/upload/images/20261012/20177920nmQdcUUNVA.png

SKILL 規定步驟:人和器材都要建成實體、每次借每次還都是一條關係、relationType 只能用中文「借用」或「歸還」。

MCP 是那台知識圖譜 server,也是四個零件裡唯一一個 OpenClaw 原本沒有的能力(D27)。結果存在檔案裡、不留在對話裡 —— 排程每次都開新 session,留在對話裡下次就沒了。另外 Gateway 要先 cd ~ 再啟動,不然 MCP 起不來(D25)。

hook 用內建的 boot-md:Gateway 一啟動,就把 workspace 裡的 BOOT.md 交給 agent 執行。

hook 本身其實是一個資料夾裡的 HOOK.md 加 handler.js。boot-md 是 OpenClaw 內建的其中一個,它的程式剛好就是去讀 BOOT.md,所以寫 BOOT.md 等於用自然語言寫了一個 hook,細節在 D22。

要注意它是在一個臨時對話裡跑,做完就丟掉 —— 所以不能拿來「開機時把圖譜讀回來」,讀了也留不下來。它適合做開機檢查,並且把結果寫成檔案:

檢查 ~/.openclaw/kg-memory.jsonl 在不在、目前有幾條關係。
把結果寫進 ~/.openclaw/workspace/boot-check.txt。

第二行一定要寫。臨時對話照設計跑完就會被丟掉,不能指望在對話裡看到結果,寫出來的檔案才會留下。

重開 Gateway 之後大約 30 秒,boot-check.txt 出現了:

File exists.
Total lines (entries): 26

檔案在,但 26 是整個檔案的總行數,不是關係數 —— 圖譜裡實際只有 12 條關係。它做了該做的動作,卻在「只數關係那幾行」這一步算錯了。後面 SKILL 遇到的,是同一件事。


跑完之後

排程跑完,圖譜檔裡有東西了,很容易就以為成功了。拿輸出去對 SKILL 的規則,有三個地方沒照做:relationType 寫成英文 borrowed、器材的描述裡寫「由阿明在 3/5 借走」(那是關係,規定不能放描述)、「3/7 還了」沒建成「歸還」關係。

我把 SKILL 改直接一點 —— 明文列出「borrowed、returned 都是錯的」,再加一條自我檢查「有英文就重做」。然後重跑:

relationType  borrowed → 借用過
器材的描述    「由阿明借走」 → 空的
歸還那條關係  還是沒建

英文修好了,關係塞進描述也修好了。但「借了又還要建兩條關係」,改兩次都沒改動。


上一篇
D27 接 MCP 前先看有沒有重複功能
系列文
AI Agent:OpenClaw 從入門到自動化流程 共 28 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言