跳到主要内容

将 SOUL.md 与 Hermes 配合使用

SOUL.md 是你的 Hermes 实例的主要身份标识。它是系统提示词中的首要内容——它定义了智能体是谁、如何说话以及应该避免什么。

如果你希望 Hermes 在每次对话中都感觉像是同一个助手——或者你想用自己的角色完全替换 Hermes 的默认角色——那么就应该使用这个文件。

SOUL.md 的用途

使用 SOUL.md 来定义:

  • 语气
  • 个性
  • 沟通风格
  • Hermes 应该有多直接或多热情
  • Hermes 在风格上应该避免什么
  • Hermes 应如何对待不确定性、分歧和模糊性

简而言之:

  • SOUL.md 关乎 Hermes 是谁以及 Hermes 如何说话

SOUL.md 的误用

不要用它来定义:

  • 特定仓库的编码规范
  • 文件路径
  • 命令
  • 服务端口
  • 架构说明
  • 项目工作流程指令

这些内容属于 AGENTS.md

一个好的规则是:

  • 如果它应该在任何地方都适用,就放在 SOUL.md
  • 如果它只属于一个项目,就放在 AGENTS.md

文件位置

Hermes 现在只使用当前实例的全局 SOUL 文件:

~/.hermes/SOUL.md

如果你使用自定义主目录运行 Hermes,则路径变为:

$HERMES_HOME/SOUL.md

首次运行行为

如果 SOUL.md 不存在,Hermes 会自动为你创建一个初始版本。

这意味着大多数用户现在一开始就有一个可以立即阅读和编辑的真实文件。

重要提示:

  • 如果你已经有一个 SOUL.md,Hermes 不会覆盖它
  • 如果文件存在但为空,Hermes 不会从中提取任何内容添加到提示词中

Hermes 如何使用它

当 Hermes 启动一个会话时,它会从 HERMES_HOME 读取 SOUL.md,扫描其中是否有提示词注入模式,必要时进行截断,并将其用作智能体身份——系统提示词中的第一个位置。这意味着 SOUL.md 完全取代了内置的默认身份文本。

如果 SOUL.md 缺失、为空或无法加载,Hermes 将回退到内置的默认身份。

文件内容不会被添加任何包装语言。内容本身很重要——按照你希望智能体思考和说话的方式来写。

一个好的首次编辑

如果你什么都不想做,只需打开文件并修改几行,让它感觉更像你。

例如:

你直接、冷静且技术精确。
注重实质内容而非客套。
当想法薄弱时,清晰地提出反对意见。
除非更深的细节有用,否则保持回答简洁。

仅此一点就能显著改变 Hermes 给人的感觉。

风格示例

1. 务实的工程师

你是一位务实的资深工程师。
你更关心正确性和操作现实,而不是听起来很厉害。

## 风格
- 直接
- 简洁,除非复杂性需要深入探讨
- 明确指出某个想法不好
- 倾向于实用的权衡,而非理想化的抽象

## 避免
- 阿谀奉承
- 夸张的语言
- 过度解释显而易见的事情

2. 研究伙伴

你是一位深思熟虑的研究合作者。
你充满好奇心,对不确定性保持诚实,并对不寻常的想法感到兴奋。

## 风格
- 探索可能性,但不假装确定
- 区分推测和证据
- 当想法空间定义不清时,提出澄清性问题
- 倾向于概念的深度,而非肤浅的完整性

3. 教师 / 讲解者

你是一位耐心的技术教师。
你关心的是理解,而不是表现。

## 风格
- 解释清晰
- 在有助于理解时使用示例
- 除非用户表明,否则不假设先验知识
- 从直觉构建到细节

4. 严格的评审者

你是一位严格的评审者。
你很公平,但不会软化重要的批评。

## 风格
- 直接指出薄弱的假设
- 将正确性置于和谐之上
- 明确说明风险和权衡
- 倾向于直率的清晰,而非模糊的外交辞令

什么是强大的 SOUL.md?

一个强大的 SOUL.md 应该是:

  • 稳定的
  • 广泛适用的
  • 在风格上是具体的
  • 没有塞满临时指令

一个薄弱的 SOUL.md 往往是:

  • 充满了项目细节
  • 自相矛盾的
  • 试图微观管理每一个回答的形式
  • 大部分是像“乐于助人”和“清晰”这样的通用填充词

Hermes 已经努力做到乐于助人和清晰。SOUL.md 应该添加真正的个性和风格,而不是重申显而易见的默认值。

建议的结构

你不需要标题,但它们会有所帮助。

一个简单且有效的结构:

# 身份
Hermes 是谁。

# 风格
Hermes 听起来应该怎样。

# 避免
Hermes 不应该做什么。

# 默认行为
当出现模糊性时,Hermes 应如何表现。

SOUL.md 与 /personality

它们是互补的。

使用 SOUL.md 作为你持久的基线。 使用 /personality 进行临时的模式切换。

示例:

  • 你的默认 SOUL 是务实且直接的
  • 然后在一个会话中使用 /personality teacher
  • 之后切换回来,而无需更改你的基础风格文件

SOUL.md 与 AGENTS.md

这是最常见的错误。

把这些放在 SOUL.md 里

  • “要直接。”
  • “避免夸张的语言。”
  • “倾向于简短回答,除非深度有帮助。”
  • “当用户错误时,要提出反对。”

把这些放在 AGENTS.md 里

  • “使用 pytest,而不是 unittest。”
  • “前端代码在 frontend/ 目录。”
  • “不要直接编辑迁移文件。”
  • “API 运行在 8000 端口。”

如何编辑它

nano ~/.hermes/SOUL.md

或者

vim ~/.hermes/SOUL.md

然后重启 Hermes 或开始一个新的会话。

一个实用的工作流程

  1. 从自动生成的默认文件开始
  2. 删减任何不符合你想要的声音的内容
  3. 添加 4–8 行来明确定义语气和默认行为
  4. 与 Hermes 交谈一段时间
  5. 根据仍然感觉不对劲的地方进行调整

这种迭代方法比试图一次性设计出完美个性效果更好。

故障排除

我编辑了 SOUL.md,但 Hermes 听起来还是一样

检查:

  • 你编辑的是 ~/.hermes/SOUL.md$HERMES_HOME/SOUL.md
  • 而不是某个仓库本地的 SOUL.md
  • 文件不是空的
  • 编辑后你重启了会话
  • 没有 /personality 覆盖层主导了结果

Hermes 忽略了我的 SOUL.md 中的部分内容

可能的原因:

  • 更高优先级的指令覆盖了它
  • 文件中包含了相互矛盾的指导
  • 文件太长被截断了
  • 部分文本类似于提示词注入内容,可能被扫描器阻止或修改

我的 SOUL.md 变得过于项目特定

将项目指令移到 AGENTS.md 中,并保持 SOUL.md 专注于身份和风格。

相关文档