跳到主要内容

人格与 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
  • 现有用户 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 回退到内置默认身份("You are Hermes Agent, an intelligent AI assistant created by Nous Research...")。当设置 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耐心的教育者 with clear examples
kawaii可爱的表达方式,闪闪发光和热情 ★
catgirl带有猫一样表达的 Neko-chan,nya~
pirate船长 Hermes,科技海盗
shakespeare带戏剧性 flair 的 Bardic 散文
surfer完全酷的兄弟 vibes
noir硬汉侦探 narration
uwu最大化可爱与 uwu-speak
philosopher对每个查询进行深度思考
hype最大能量和热情!!!

用命令切换人格

CLI

/personality
/personality concise
/personality technical

消息平台

/personality teacher

这些是方便的覆盖,但你的全局 SOUL.md 仍然赋予 Hermes 持久的默认人格,除非覆盖明确改变了它。

配置中的自定义人格

你也可以在 ~/.hermes/config.yamlagent.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 外观 vs 对话人格

对话人格和 CLI 外观是分开的:

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

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