OpenClaw 翻車實錄 | 10 分鐘設定安全防護指南 | 防止 Indirect Prompt Injection !
減少 Compacted History
由 4 個方向落手。根據 OpenClaw 文件,COMPACTED HISTORY 係因為 session 接近 model context window,系統就會自動將舊對話摘要化,保留最近訊息繼續跑。
- 同一個 session 傾好耐
- 經常 read 大檔案/貼長內容
- 有好多工具輸出
就好容易觸發 compaction。
最有效減少出現的方法:
1. 少啲喺同一個 session 累積太多嘢
最簡單直接。
做法:
- 一個大主題開一個新 session
- 任務做完就
/new - 唔好乜都塞入同一條長命對話
適合你:
- debug 一單野開一個 session
- 寫文、做 config、查資料,各自分開
2. 減少大段工具輸出同長文灌入 context
文件講得好清楚,工具結果、讀檔內容、附件都會計入 context。
所以盡量:
- 唔好一次 read 成個超大檔
- 用較細 offset / limit 分段睇
- command output 太長時,只攞重點
- 唔好成段 log / transcript 原封不動貼入對話
即係:
- 要睇 log:先 grep 關鍵字
- 要睇 code:先讀 relevant block
- 要分析文章:先摘要,再深挖局部
3. 用 /compact 主動壓縮,而唔係等佢爆
文件建議可以手動做 compaction,而且可以加指示。
例如:
/compact Focus on API design decisions/compact 保留而家 debug 到嘅根因、已試過嘅方法同未解決問題
咁好處係:
- 你控制摘要重點
- 唔會等到 context 太滿先被動壓
- 壓完之後 session 仲可以繼續,但重點較穩
如果你知自己開始傾長咗,主動 compact 其實幾好用。
4. 把重要規則移出對話,寫入持久檔
文件區分得好清:
- context = 今次 run 送畀 model 睇嘅內容
- memory / files = 可以落地保存,之後再載入
即係話,重要但長期有效嘅嘢,唔好淨係留喺聊天紀錄。
你可以放去:
MEMORY.md- 專案說明檔
- 任務 notes
- checklist / spec
咁之後就算 compact 咗,我都仲可以由檔案重新抓返重點,而唔使靠長對話尾巴硬撐。
5. 如你成日用好多工具輸出,可以考慮 pruning
OpenClaw 文件有提:
- compaction = 摘要舊對話
- pruning = 修剪舊 tool results
如果你個問題主要係工具輸出太大,pruning 會比單純 compaction 更對症。文件甚至直接講:如果 compact 得太頻密,試下開 session pruning。
6. 檢查 workspace 注入檔案有冇太大
文件講每次 run 都會注入:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.md
如果其中某啲檔好大,會長期食 context。尤其 TOOLS.md、MEMORY.md 類型如果日積月累變肥,context 壓力會大。
你可以做:
- 保持呢啲檔精簡
- 長資料搬去專門 notes
- 只保留真正會每次都用到嘅內容喺 injected files
7. 如果你想從根本改善,要改 config
文件提到 compaction 相關設定喺:agents.defaults.compaction
而且如果 compaction 太頻繁,文件明講可能係:
- model context window 細
- tool output 太大
- 應考慮 session pruning
如果你想,我可以幫你再查你本機 config,睇下有冇:
- pruning 可開
- compaction keepRecentTokens 可調
- notifyUser 可開
- 甚至有冇其他 session/context 設定可以優化
我嘅實際建議排序係:
- 分 session
- 減少長輸出進 context
- 主動
/compact,加明確 focus - 重要資訊寫入檔案
- 再研究 pruning / config