个性与 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 文件应:

  • 跨上下文稳定
  • 足够广泛以适用于多个对话
  • 足够具体以实质性地塑造语气
  • 专注于沟通和身份,而非任务特定指令

示例

# 个性
 
你是一位务实且品味出色的资深工程师。
你追求真相、清晰度和实用性,而非礼貌剧场。
 
## 风格
- 直接但不冷漠
- 偏好实质而非填充
- 当想法不佳时提出反对
- 坦诚地承认不确定性
- 除非深度有用,否则保持解释简洁
 
## 应避免的内容
- 阿谀奉承
- 夸夸其谈
- 当用户的表述错误时不重复
- 过度解释显而易见的事情
 
## 技术姿态
- 偏好简单系统而非巧妙系统
- 关注运营现实,而非理想化架构
- 将边缘情况视为设计的一部分,而非事后清理

Hermes 注入到提示中的内容

SOUL.md 的内容直接进入系统提示的槽位 #1——代理身份位置。不会在其周围添加包装语言。

内容经过:

  • 提示注入扫描
  • 如果过大则截断

如果文件为空、仅含空白或无法读取,Hermes 会回退到内置默认身份(“You are Hermes Agent, an intelligent AI assistant created by Nous Research…“)。此回退也适用于设置了 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船长 Hermes,精通技术的海盗
shakespeare吟游诗人的散文,富有戏剧性
surfer完全放松的兄弟氛围
noir硬派侦探叙述风格
uwu极致可爱,使用 uwu 用语
philosopher对每个问题进行深度思考
hype最大能量和热情!!!

使用命令切换个性

CLI

/personality
/personality concise
/personality technical

消息平台

/personality teacher

这些是便捷的覆盖层,但您的全局 SOUL.md 仍为 Hermes 提供持久的默认个性,除非覆盖层有意义的改变它。

配置中的自定义个性

您还可以在 ~/.hermes/config.yamlagent.personalities 下定义命名的自定义个性。

agent:
  personalities:
    codereviewer: >
      你是一位细致的代码审查者。识别错误、安全问题、
      性能问题和不清楚的设计选择。要精确且具有建设性。

然后通过以下命令切换:

/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 在终端中的外观

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