跳到主要內容

人格與 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~
pirateHermes船長,精通技術的海盜
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

一個強大的默認設置是:

  1. ~/.hermes/SOUL.md 中保持一個深思熟慮的全局 SOUL.md
  2. 將項目說明放在 AGENTS.md
  3. 僅在需要臨時模式切換時使用 /personality

這樣可以實現:

  • 穩定的語音風格
  • 項目特定的行為,放在其應處的位置
  • 必要時的臨時控制

人格如何與完整提示交互

從高層次來看,提示棧包含以下部分:

  1. SOUL.md(Agent 身份 —— 若 SOUL.md 不可用,則使用內置回退)
  2. 工具感知的行為指導
  3. 記憶/用戶上下文
  4. 技能指導
  5. 上下文文件(AGENTS.md.cursorrules
  6. 時間戳
  7. 平臺特定的格式化提示
  8. 可選的系統提示覆蓋層,如 /personality

SOUL.md 是基礎 —— 其餘所有內容都建立在其之上。

命令行外觀與對話人格的區別

對話人格與命令行外觀是兩個獨立的概念:

  • SOUL.mdagent.system_prompt/personality 影響 Hermes 的說話方式
  • display.skin/skin 影響 Hermes 在終端中的外觀

關於終端外觀,請參閱 皮膚與主題