人格與 SOUL.md
Hermes Agent 的個性完全可自定義。SOUL.md 是主要身份標識——它是系統提示中的第一部分,定義了 Agent 的身份。
SOUL.md—— 存在於HERMES_HOME中的持久化人格文件,作為 Agent 的身份標識(系統提示中的第 #1 個槽位)- 內置或自定義的
/personality預設 —— 會話級別的系統提示覆蓋層
如果你想改變 Hermes 的身份,或用完全不同的 Agent 人格替換它,請編輯 SOUL.md。
當前 SOUL.md 的工作方式
Hermes 現在會自動在以下位置生成默認的 SOUL.md:
~/.hermes/SOUL.md
更準確地說,它使用當前實例的 HERMES_HOME,因此如果你使用自定義主目錄運行 Hermes,它將使用:
$HERMES_HOME/SOUL.md
重要行為
- SOUL.md 是 Agent 的主要身份。 它佔據系統提示中的第 #1 個槽位,取代硬編碼的默認身份。
- 如果尚未存在
SOUL.md,Hermes 會自動創建一個初始版本。 - 已存在的用戶
SOUL.md文件永遠不會被覆蓋。 - Hermes 僅從
HERMES_HOME加載SOUL.md。 - Hermes 不會在當前工作目錄中查找
SOUL.md。 - 如果
SOUL.md存在但為空,或無法加載,Hermes 將回退到內置的默認身份。 - 如果
SOUL.md包含內容,該內容將在安全掃描和截斷後原樣注入。 - SOUL.md 不會在上下文文件部分重複出現——它僅作為身份出現一次。
這使得 SOUL.md 成為真正的按用戶或按實例的身份標識,而不僅僅是一個附加層。
這種設計的原因
這種設計確保了個性的可預測性。
如果 Hermes 從你啟動時所在的任意目錄加載 SOUL.md,你的個性可能在不同項目間意外變化。通過僅從 HERMES_HOME 加載,個性就歸屬於 Hermes 實例本身。
這也讓教學用戶更加簡單:
- “編輯
~/.hermes/SOUL.md來更改 Hermes 的默認個性。”
如何編輯它
對於大多數用戶:
~/.hermes/SOUL.md
如果你使用自定義主目錄:
$HERMES_HOME/SOUL.md
SOUL.md 中應包含什麼內容?
請將其用於持久的語音與個性指導,例如:
- 語氣
- 溝通風格
- 直接程度
- 默認交互方式
- 風格上應避免的內容
- Hermes 如何處理不確定性、分歧或模糊情況
請儘量避免在其中使用:
- 一次性項目指令
- 文件路徑
- 倉庫規範
- 臨時工作流細節
這些內容應放在 AGENTS.md 中,而非 SOUL.md。
優秀的 SOUL.md 內容
一個優秀的 SOUL 文件具備以下特點:
- 在不同上下文中保持穩定
- 足夠廣泛,適用於多種對話場景
- 足夠具體,能實質性地塑造語音風格
- 聚焦於溝通與身份,而非任務特定指令
示例
# 性格
You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness over politeness theater.
## 風格
- Be direct without being cold
- Prefer substance over filler
- Push back when something is a bad idea
- Admit uncertainty plainly
- Keep explanations compact unless depth is useful
## 避免事項
- Sycophancy
- Hype language
- Repeating the user's framing if it's wrong
- Overexplaining obvious things
## 技術立場
- Prefer simple systems over clever systems
- Care about operational reality, not idealized architecture
- Treat edge cases as part of the design, not cleanup
Hermes 如何注入提示
SOUL.md 的內容會直接插入系統提示的第 #1 個槽位——即 Agent 身份位置。不會為其添加任何包裝語言。
內容在注入前會經過:
- 提示注入掃描
- 若內容過長則進行截斷
如果文件為空、僅包含空白字符,或無法讀取,Hermes 將回退到內置的默認身份(“你是一個由 Nous Research 創建的智能 AI 助手 Hermes Agent……”)。當設置 skip_context_files 時(例如在子 Agent/委派上下文中)也會應用此回退。
安全掃描
SOUL.md 與其他承載上下文的文件一樣,在包含前會進行提示注入模式掃描。
這意味著你仍應保持其聚焦於人格/語音,而非試圖偷偷插入奇怪的元指令。
SOUL.md 與 AGENTS.md 的區別
這是最重要的區別。
SOUL.md
適用於:
- 身份
- 語氣
- 風格
- 溝通默認設置
- 人格層面的行為
AGENTS.md
適用於:
- 項目架構
- 編碼規範
- 工具偏好
- 倉庫特定工作流
- 命令、端口、路徑、部署說明
一個有用的規則:
- 如果它應該伴隨你到處走,就放在
SOUL.md中 - 如果它屬於某個項目,就放在
AGENTS.md中
SOUL.md 與 /personality 的區別
SOUL.md 是你持久的默認人格。
/personality 是一個會話級別的覆蓋層,用於更改或補充當前系統提示。
因此:
SOUL.md= 基線語音/personality= 臨時模式切換
示例:
- 保持務實的默認 SOUL,然後使用
/personality teacher進行教學對話 - 保持簡潔的 SOUL,然後使用
/personality creative進行頭腦風暴
內置人格
Hermes 隨附內置人格,你可以通過 /personality 命令切換至它們。
| 名稱 | 描述 |
|---|---|
| helpful | 友善、通用型助手 |
| concise | 簡潔、直擊要點的回應 |
| technical | 詳細、準確的技術專家 |
| creative | 富有創新性,跳出常規思維 |
| teacher | 耐心的教育者,提供清晰示例 |
| kawaii | 可愛表達、閃爍效果與熱情 ★ |
| catgirl | 貓娘風格,帶有貓系語氣,nya~ |
| pirate | Hermes船長,精通技術的海盜 |
| shakespeare | 詩意的敘述風格,充滿戲劇張力 |
| surfer | 完全放鬆的兄弟氛圍 |
| noir | 硬漢偵探式敘述風格 |
| uwu | 極致可愛,使用 uwu 語調 |
| philosopher | 對每個問題進行深度思考 |
| hype | 極致能量與熱情!!! |
使用命令切換人格
命令行界面(CLI)
/personality
/personality concise
/personality technical
消息平臺
/personality teacher
這些是便捷的覆蓋層,但你的全局 SOUL.md 仍會為 Hermes 提供持久的默認人格,除非覆蓋層實質性地改變了它。
在配置中自定義人格
你還可以在 ~/.hermes/config.yaml 中的 agent.personalities 下定義命名的自定義人格。
agent:
personalities:
codereviewer: >
You are a meticulous code reviewer. Identify bugs, security issues,
performance concerns, and unclear design choices. Be precise and constructive.
然後通過以下命令切換到該人格:
/personality codereviewer
推薦工作流程
一個強大的默認設置是:
- 在
~/.hermes/SOUL.md中保持一個深思熟慮的全局SOUL.md - 將項目說明放在
AGENTS.md中 - 僅在需要臨時模式切換時使用
/personality
這樣可以實現:
- 穩定的語音風格
- 項目特定的行為,放在其應處的位置
- 必要時的臨時控制
人格如何與完整提示交互
從高層次來看,提示棧包含以下部分:
- SOUL.md(Agent 身份 —— 若 SOUL.md 不可用,則使用內置回退)
- 工具感知的行為指導
- 記憶/用戶上下文
- 技能指導
- 上下文文件(
AGENTS.md、.cursorrules) - 時間戳
- 平臺特定的格式化提示
- 可選的系統提示覆蓋層,如
/personality
SOUL.md 是基礎 —— 其餘所有內容都建立在其之上。
相關文檔
命令行外觀與對話人格的區別
對話人格與命令行外觀是兩個獨立的概念:
SOUL.md、agent.system_prompt和/personality影響 Hermes 的說話方式display.skin和/skin影響 Hermes 在終端中的外觀
關於終端外觀,請參閱 皮膚與主題。