个性与 SOUL (Personality & SOUL)
> 📖 本文档翻译自 Hermes Agent 官方文档 > 最后更新:2026-04-16
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,替换硬编码的默认身份。
- Hermes 会在
SOUL.md不存在时自动创建一个启动文件 - 已有的用户
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 文件应该是:
- 跨上下文稳定
- 足够广泛以适用于许多对话
- 足够具体以实质性塑造语气
- 专注于沟通和身份,而非特定任务的指令
示例
# Personality
You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness over politeness theater.
## Style
- 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
## What to avoid
- Sycophancy
- Hype language
- Repeating the user's framing if it's wrong
- Overexplaining obvious things
## Technical posture
- 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 会回退到内置的默认身份("You are Hermes Agent, an intelligent AI assistant created by Nous Research...")。此回退也适用于设置了 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 | Neko-chan,带有猫咪般的表情,nya~ |
| pirate | 赫尔墨斯船长,精通科技的海盗 |
| 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 是基础——其他一切都建立在它之上。
相关文档
CLI 外观与对话个性
对话个性和 CLI 外观是分开的:
SOUL.md、agent.system_prompt和/personality影响 Hermes 如何说话display.skin和/skin影响 Hermes 在终端中的外观
关于终端外观,参见皮肤与主题。