2026年6月28日 星期日

OpenClaw 賦予 Cron 有 Glob 讀取檔案的權限

OpenClaw 賦予 Cron 有 Glob 讀取檔案的權限

預設龍蝦的 cron 能用的內部工具是有限的,如果你有下指令讓她根據最近的對話紀錄的之類得,會需要用到搜尋 memory/2026-*.md 就有機率用到下面的的錯誤

I can’t use the tool “glob” here because it isn’t available. I need to stop retrying it and answer without that tool.


基本大概這幾個基礎指令有用到就給她吧

動作需要的工具原因
找記憶檔案 memory/2026-*.mdGlob找檔案模式匹配
讀記憶檔案內容Read讀檔案
搜尋檔案內容Grep搜關鍵字
執行指令Bash查今日 commit
發報告到 DiscordSendMessage發訊息


給全域權限的指令

openclaw config set tools.alsoAllow '["glob","read","grep"]'


也能針對特定 corn 給權限

openclaw cron edit <cron-id> --tools glob,read,grep


看需求自己添加吧

2026年6月26日 星期五

OpenClaw 如何關閉心跳節省 Token 的成本

OpenClaw 如何關閉心跳

預設心跳是每30分鐘會從 main 會話啟動一次,這會消耗一次對話的 Token,主要是為了定期起來做事。

但如果擁有多台 OpenClaw 的話這個消耗就非常可觀了,看需求可以關掉一些不必要的心跳


設定心跳

關閉心跳

openclaw config set agents.defaults.heartbeat.every "0m"

每30分鐘心跳一次

openclaw config set agents.defaults.heartbeat.every "30m"


確認設定值

openclaw config get agents.defaults.heartbeat.every


設定完記得要重啟才會生效

openclaw gateway restart --safe

重啟完就生效了



Openclaw 讓 session 永遠延續不要每天自動重置

Openclaw 讓 session 永遠延續不要每天自動重置

最初一開始的版本其實不管經過幾天都不會自動刷掉會話重來,從某一版開始就變得每天會自動重置,好處是會話別一直累積,可以減少 Token 的消耗與反應速度快一點

不過缺點也很明顯會話的連續性,具體表現就是過一天之後龍蝦就失憶了,明明 Discord 上還有昨天的對話可是他卻說他不記得了

調整成不過期之後對話滿的時候會自動壓縮,可能要卡個10幾秒左右,遇到了自己有耐心等一下


具體要改的值在這裡,這是快速設定的指令

openclaw config set session.reset '{"mode":"idle","idleMinutes":52596000}' --strict-json


具體表現在 openclaw.json 上長這個樣子

{
  "session": {
    "reset": {
      "mode": "idle",
      "idleMinutes": 52596000
    }
  }
}

簡單的改成 100 年基本上就是不會過期了


設定完記得要重啟才會生效

openclaw gateway restart --safe






2026年6月23日 星期二

如何讓 OpenClaw 的 corn 根據聊天內容判斷決定是否要發送提醒

如何讓 OpenClaw 的 corn 根據聊天內容判斷決定是否要發送提醒

一個最簡單的做法是走心跳,但是心跳不是很穩定,心跳的好處是直接從主會話啟動,可以有主會話的記憶,不過缺點是不可控

再來就只剩下走普通 corn 呼叫一個獨立會話來做事了,第一個問題是他讀不到其他會話,雖然可以走 Discord API 讀到,但是萬一你不是在 DC 上聊呢?

找到最好的解法是用 TaskList() 列出會話並依照時間與類型塞選,然後再用 TaskHistory() 來讀取最新多少則內容,如此一來就可以絕對取得近期所有記錄了

這個做法除了能判斷之外最大的優點是,讓提醒具備對話連續性的能力,才不會只是冷冰冰的固定文字提醒而已


固定的技能流程

取得方法的固定流程可以參考這個
技能包: gist/context-reader.md (進後按右上角raw按鈕可以複製)

技能需要打開兩個能力才能順利運行

1. 使 Agent 有能力讀取其他會話

openclaw config set tools.sessions.visibility agent

2. 使 Agent 有能力自己發到 Discord 中

openclaw config set channels.discord.actions.messages true


設定 corn 的提示詞

傳送的部分選無就可以了不經由內建的傳送
最後在 corn 中輸入這樣的提示詞。(target 那裡記得改成自己的ID)

現在是中午11:45,提醒主人去吃午餐。

步驟:
1. 讀取 cron-skills/context-reader/SKILL.md 並執行,載入主人最近的對話
2. 根據對話內容和發送判斷,決定是否發送午餐提醒

內容要求:
- 簡短、不囉唆
- 語氣輕鬆關心
- 根據今天的狀態調整內容
- 可以用 emoji
- 每天說法稍微不同

**你必須使用 message 工具發送 Discord DM:**
- action: send
- channel: discord
- target: user:{UserID}
- message: 一條簡短溫馨的午餐提醒

**發送判斷:**
- 如果對話中主人已經說過吃飽了、正在吃、或剛吃完 → 不發送
- 如果沒有相關資訊或不確定 → 發送提醒



實際成果

實際成功阻斷的範例,成功獲取信息並像個人一樣思考了