Skip to main content

个性与 SOUL.md

Hermes Agent 的个性是可以完全自定义的。SOUL.md 是它的核心身份,位于系统提示的最前面,用来定义代理到底“是什么样的人”。

  • SOUL.md —— 持久的人格文件,存放在 HERMES_HOME 中,作为代理的身份基线(系统提示中的第 1 个槽位)
  • 内置或自定义的 /personality 预设 —— 会话级的系统提示覆盖层

如果你想改变 Hermes 的身份,或者用完全不同的代理人格替换它,请编辑 SOUL.md

SOUL.md 现在如何工作

Hermes 现在会自动在以下位置生成默认的 SOUL.md

~/.hermes/SOUL.md

更准确地说,Hermes 实际读取的是当前实例对应的 HERMES_HOME。所以如果你使用自定义主目录运行 Hermes,它会改为使用:

$HERMES_HOME/SOUL.md

重要行为说明

  • SOUL.md 是代理的核心身份。 它占据系统提示中的第 #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 如何处理不确定性、分歧或模糊情况

尽量不要把下面这些内容塞进 SOUL.md

  • 一次性项目指令
  • 文件路径
  • 仓库规范
  • 临时工作流程细节

这些内容应放在 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

SOUL.md 的内容会直接进入系统提示的第 1 个槽位,也就是代理身份所在的位置,不会再额外套一层包装说明。

内容会经过:

  • 提示注入扫描
  • 若内容过长则进行截断

如果文件为空、只包含空白字符,或者无法读取,Hermes 就会回退到内置默认身份(“你是 Hermes Agent,由 Nous Research 创建的智能 AI 助手……”)。当 skip_context_files 被启用时,例如子代理或委派场景中,也会触发这一回退逻辑。

安全扫描

SOUL.md 在纳入提示词前,会像其他上下文文件一样,经过提示注入模式扫描。

这意味着你仍应保持其聚焦于角色/语气,而不是试图偷偷塞入奇怪的元指令。

SOUL.md vs AGENTS.md

这是最重要的区别。

SOUL.md

适用于:

  • 身份
  • 语调
  • 风格
  • 沟通默认设置
  • 个性层面的行为

AGENTS.md

适用于:

  • 项目架构
  • 编码规范
  • 工具偏好
  • 仓库特定工作流
  • 命令、端口、路径、部署说明

一个实用规则:

  • 如果它应该伴随你到处走,就放在 SOUL.md
  • 如果它属于某个项目,就放在 AGENTS.md

SOUL.md vs /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

推荐工作流程

一个强大的默认设置是:

  1. ~/.hermes/SOUL.md 中保留一个深思熟虑的全局 SOUL.md
  2. 将项目指令放入 AGENTS.md
  3. 仅在需要临时模式切换时使用 /personality

这样你可以获得:

  • 稳定的语气
  • 属于项目的特定行为
  • 必要时的临时控制

个性如何与完整提示词交互

从高层次看,提示词堆栈包括:

  1. SOUL.md(代理身份 —— 或当 SOUL.md 不可用时的内置回退)
  2. 工具感知行为指引
  3. 记忆/用户上下文
  4. 技能指引
  5. 上下文文件(AGENTS.md, .cursorrules
  6. 时间戳
  7. 平台特定格式提示
  8. 可选的系统提示覆盖层,如 /personality

SOUL.md 是基础 —— 其余所有内容都建立在其之上。

相关文档

CLI 外观与对话个性的区别

对话个性和 CLI 外观是两套不同的东西:

  • SOUL.mdagent.system_prompt/personality 影响 Hermes 的说话方式
  • display.skin/skin 影响 Hermes 在终端中的外观

关于终端外观,请参阅 皮肤与主题