个性与 SOUL.md
Hermes Agent 的个性完全可自定义。SOUL.md 是主要身份标识——它是系统提示中的第一部分,定义了代理的身份。
SOUL.md—— 存在于HERMES_HOME中的持久化人格文件,作为代理的身份标识(系统提示中的第 #1 个槽位)- 内置或自定义的
/personality预设 —— 会话级别的系统提示覆盖层
如果你想改变 Hermes 的身份,或用完全不同的代理人格替换它,请编辑 SOUL.md。
当前 SOUL.md 的工作方式
Hermes 现在会自动在以下位置生成默认的 SOUL.md:
~/.hermes/SOUL.md
更准确地说,它使用当前实例的 HERMES_HOME,因此如果你使用自定义主目录运行 Hermes,它将使用:
$HERMES_HOME/SOUL.md
重要行为
- SOUL.md 是代理的主要身份。 它占据系统提示中的第 #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 文件具备以下特点:
- 在不同上下文中保持稳定
- 足够广泛,适用于多种对话场景
- 足够具体,能实质性地塑造语音风格
- 聚焦于沟通与身份,而非任务特定指令
示例
# 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 个槽位——即代理身份位置。不会为其添加任何包装语言。
内容在注入前会经过:
- 提示注入扫描
- 若内容过长则进行截断
如果文件为空、仅包含空白字符,或无法读取,Hermes 将回退到内置的默认身份(“你是一个由 Nous Research 创建的智能 AI 助手 Hermes Agent……”)。当设置 skip_context_files 时(例如在子代理/委派上下文中)也会应用此回退。
安全扫描
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 | 赫尔墨斯船长,精通技术的海盗 |
| 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(代理身份 —— 若 SOUL.md 不可用,则使用内置回退)
- 工具感知的行为指导
- 记忆/用户上下文
- 技能指导
- 上下文文件(
AGENTS.md、.cursorrules) - 时间戳
- 平台特定的格式化提示
- 可选的系统提示覆盖层,如
/personality
SOUL.md 是基础 —— 其余所有内容都建立在其之上。
相关文档
命令行外观与对话人格的区别
对话人格与命令行外观是两个独立的概念:
SOUL.md、agent.system_prompt和/personality影响 Hermes 的说话方式display.skin和/skin影响 Hermes 在终端中的外观
关于终端外观,请参阅 皮肤与主题。