大多數人設計 AI agent 的第一步是:取名字、定語氣、寫「你是一個友善的助理」。

然後 agent 開始出現讓你頭痛的行為:用戶稍微換個問法就忘了它的角色設定、碰到模糊情境不知道該拒絕還是回答、每次對話都像剛認識你一樣從零開始。

問題不是語氣定錯了。問題是你只設計了表面,沒設計底下的結構。


個性設計是三層,不是一層

我在設計 OpenClaw 的 workspace 時,最後形成了三個獨立的檔案,每個解決不同的問題:

SOUL.md — 這個 agent 是誰

不只是「你是一個 AI 助理」。而是:它跟用戶是什麼關係?它對用戶的背景和工作方式了解多少?它在什麼情況下該主動說話、什麼情況下等指令?溝通方式是直接還是迂迴?用戶說「你決定」代表什麼、說「再麻煩了」代表什麼?

SOUL 解決的是「一致性」問題。沒有 SOUL,agent 每次互動都在猜你是誰、猜你要什麼。有了 SOUL,它從第一句話就知道脈絡。

CONSTITUTION.md — 什麼事絕對不做

這是硬限制,跟 SOUL 的「個性」不同——CONSTITUTION 的規則不會因為用戶的要求而改變。不是「通常不這樣做」,是「這條線不管任何情況都不跨」。

一個實用的 CONSTITUTION 還要定義優先順序:CONSTITUTION > SECURITY > SOUL > 用戶即時指令。這很重要,因為你需要知道當規則衝突的時候誰贏。

MODES.md — 什麼情境用什麼行為

同一個 agent,用戶說「幫我分析」跟用戶說「好累」,應該有完全不同的回應策略。MODES 不是「有幾種語氣」,而是「自動偵測情境、切換工作模式」——快速模式、深度模式、情緒陪伴模式、維護模式,各自有明確的觸發條件和行為規則。

沒有 MODES,agent 的個性就是固定的一套,碰到情緒性的對話用分析腔、碰到簡單問答還在深度思考——不是個性問題,是情境感知問題。


少了哪層,會發生什麼

缺少症狀
沒有 SOUL每次對話像第一次認識;不知道用戶的偏好和工作方式;容易給出泛用答案
沒有 CONSTITUTION用戶換個說法就能讓 agent 做它「通常不做」的事;行為邊界不穩定
沒有 MODES所有情境用同一套回應策略;碰到情緒對話失去節奏;簡單問題也在做深度分析

IDENTITY.md 是最後一步,不是第一步

OpenClaw 的 workspace 有一個 IDENTITY.md,模板長這樣:

- Name: (pick something you like)
- Creature: (AI? robot? familiar? something weirder?)
- Vibe: (sharp? warm? chaotic? calm?)
- Emoji: (your signature)

我的 IDENTITY.md 一直是空的。

不是因為我忘了填,而是因為我發現:SOUL / CONSTITUTION / MODES 設計完之後,「名字叫什麼」變成一個無關緊要的決定。個性早就在那三層裡了,取名字只是貼個標籤。

大多數人從名字開始設計 agent,然後在「它應該有什麼個性」的問題上打轉——因為他們跳過了真正決定個性的三層,直接跑到表面。


這套架構不是 OpenClaw 專用的

SOUL / CONSTITUTION / MODES 三個概念你可以用任何工具實作:

  • 用 Claude Code 的 CLAUDE.md 寫 SOUL 的部分,直接放在 repo 根目錄
  • CONSTITUTION 可以是 system prompt 的第一段,用明確的 ## 絕對禁止 區塊
  • MODES 可以是 system prompt 裡的條件分支,或是讓 agent 在 conversation 開頭自動判斷

工具會變,但你得先想清楚這三層,才能知道要在哪個工具的哪個地方填什麼

這不是 prompt 技巧,是設計問題。