使用 SOUL Evil Hook 動態切換 Agent 的系統提示詞
開發 Agent 的時候,最煩人的就是手動調整系統提示詞來測試不同的反應。如果你想讓 Agent 在特定時間段表現得不一樣,或者想隨機測試一些「黑化」後的行為模式,手動修改檔案不僅效率低,還很容易在切換過程中出錯。
你可能希望 Agent 在深夜時段自動切換性格,或者在某些對話中隨機出現不同的特質,而這一切最好都能自動完成,且不要真的改動到磁碟上的原始文件。
需要準備的東西
Section titled “需要準備的東西”- OpenClaw 執行環境
- 專案中的
SOUL.md文件 - 你想替換成的
SOUL_EVIL.md文件(放在 Agent 工作區根目錄) - 基礎的
agent:bootstrap流程
-
啟用 Hook 在終端機輸入以下指令:
Terminal window openclaw hooks enable soul-evil -
設定設定檔 在你的設定中加入以下 JSON 配置:
{"hooks": {"internal": {"enabled": true,"entries": {"soul-evil": {"enabled": true,"file": "SOUL_EVIL.md","chance": 0.1,"purge": { "at": "21:00", "duration": "15m" }}}}}} -
準備替換文件 在 Agent 工作區根目錄(
SOUL.md旁邊)建立一個SOUL_EVIL.md。 -
執行 Agent 當
agent:bootstrap執行時,Hook 會根據設定自動在記憶體中替換內容。
Options
Section titled “Options”你可以透過以下參數調整 Hook 的行為:
file: 替換用的 SOUL 檔名(預設為SOUL_EVIL.md)chance: 每次執行時使用替換文件的隨機機率(0–1 之間)purge.at: 每日自動切換的開始時間(使用 24 小時制,例如21:00)purge.duration: 切換持續的時間長度(例如30s,10m,1h)
優先級: 當處於 purge 時段內,系統會強制切換,這時會忽略隨機機率的設定。
時區設定: 系統會優先使用 agents.defaults.userTimezone;如果沒有設定,則會使用主機的時區。
SOUL_EVIL.md遺失或內容是空的: OpenClaw 會記錄一則警告,並繼續使用原本正常的SOUL.md。- 對 Sub-agent 沒有效果: 這是正常現象,因為 Sub-agent 在執行時不會將
SOUL.md包含在 bootstrap 文件中,所以這個 Hook 對它們無效。 - 磁碟檔案沒有變化: 這是設計使然,Hook 只會在記憶體中替換內容,不會寫入或修改磁碟上的任何檔案。
需要幫忙設定嗎?試試 AI Setup Assistant
OpenClaw Expert
還是卡住了?
如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。