跳到內容

使用 SOUL Evil Hook 動態切換 Agent 的系統提示詞

開發 Agent 的時候,最煩人的就是手動調整系統提示詞來測試不同的反應。如果你想讓 Agent 在特定時間段表現得不一樣,或者想隨機測試一些「黑化」後的行為模式,手動修改檔案不僅效率低,還很容易在切換過程中出錯。

你可能希望 Agent 在深夜時段自動切換性格,或者在某些對話中隨機出現不同的特質,而這一切最好都能自動完成,且不要真的改動到磁碟上的原始文件。

  • OpenClaw 執行環境
  • 專案中的 SOUL.md 文件
  • 你想替換成的 SOUL_EVIL.md 文件(放在 Agent 工作區根目錄)
  • 基礎的 agent:bootstrap 流程
  1. 啟用 Hook 在終端機輸入以下指令:

    Terminal window
    openclaw hooks enable soul-evil
  2. 設定設定檔 在你的設定中加入以下 JSON 配置:

    {
    "hooks": {
    "internal": {
    "enabled": true,
    "entries": {
    "soul-evil": {
    "enabled": true,
    "file": "SOUL_EVIL.md",
    "chance": 0.1,
    "purge": { "at": "21:00", "duration": "15m" }
    }
    }
    }
    }
    }
  3. 準備替換文件 在 Agent 工作區根目錄(SOUL.md 旁邊)建立一個 SOUL_EVIL.md。

  4. 執行 Agent 當 agent:bootstrap 執行時,Hook 會根據設定自動在記憶體中替換內容。

你可以透過以下參數調整 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

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。