Hermes Agent SOUL.md自定义人格详解:让你的AI拥有独特性格和行为方式

维护咨询 大模型部署 问题解决 技能定制 大模型训练

站长交流微信: aixbwz

为什么两个用Hermes Agent的人,聊出来的感觉完全不一样?

因为Hermes Agent不像普通AI那样只有一套固定的说话风格。它允许你用一个文件定义AI是谁、怎么想、怎么说话。这个文件叫SOUL.md。

它是Hermes Prompt系统里的第一优先级内容,会直接影响AI的所有输出风格和行为逻辑。

## SOUL.md是什么

SOUL.md是一个放在~/.hermes/目录下的Markdown文件。它定义了Hermes Agent的”灵魂”——AI的身份、性格、说话方式、价值观和行为准则。

当Hermes启动时,它会按固定顺序组装系统提示词:

第一层:SOUL.md(身份定义)
AI是谁,以什么身份和视角回答问题。

第二层:AGENTS.md(项目背景)
当前项目的上下文和目标。

第三层:Skills索引
已安装的技能列表。

第四层:上下文文件
.cursorrules、CLAUDE.md等项目级配置。

SOUL.md排在最前面,因为它定义的是AI的”本质”——其他所有层都在这个基础上叠加。

## SOUL.md的工作原理

从代码层面看,SOUL.md是这样被加载的:

当你启动Hermes Agent时,`prompt_builder.py`里的`load_soul_md()`函数会读取`~/.hermes/SOUL.md`文件。如果文件存在,内容会被读取、处理(扫描敏感词、截断超长内容),然后直接注入到系统提示词的最开头。

# 查找SOUL.md的位置
soul_path = get_hermes_home() / "SOUL.md"

# 读取并清理内容
content = soul_path.read_text(encoding="utf-8").strip()
content = _scan_context_content(content, "SOUL.md")  # 安全扫描
content = _truncate_content(content, "SOUL.md")      # 长度截断

# 注入到系统提示词的第一位(身份槽)
# 然后不会再在Context Files里出现(避免重复)

这就是为什么SOUL.md的内容会”渗透”到你和AI的每一次对话里——它不是某一次对话的提示词,是整个AI的底层设定。

## 创建你的第一个SOUL.md

基础位置:

~/.hermes/SOUL.md

最简单的SOUL.md:

# 我是谁

你是一个热情的技术博主,擅长用简单的话解释复杂的技术问题。
你讨厌过度使用专业术语,喜欢用生活中的例子打比方。
你的读者是普通用户,不是工程师。

这个AI就会一直以”技术博主”的身份回答问题,不会突然变成冷淡的工程师语气。

## SOUL.md的实战写法

写法一:定义专业角色

如果你想做一个专属的代码审查助手:

# 身份设定

你是一个严格的代码审查专家,代号"CR-7"。
你专注于代码安全性、性能和可维护性。
你不会拐弯抹角,发现问题会直接说出来。

## 审查原则

1. 任何用户输入直接拼接到SQL立刻指出
2. 没有参数校验的函数立刻指出
3. 命名不清晰的变量要求重命名
4. 发现优点也要表扬,不要只批评

## 说话风格

- 简洁,直接,不废话
- 发现严重问题用"【严重】"前缀
- 发现改进建议用"【建议】"前缀
- 每次审查结束给一个总体评分(1-10)

这样配置之后,AI每次做代码审查都会按照这个框架输出,不会跳脱。

写法二:定义多语言助手

如果你需要AI同时处理中英文内容:

# 身份设定

你是一个专业的中英双语技术翻译,擅长技术文档的精准翻译。

## 翻译原则

- 技术术语第一次出现时,在中文后面括号标注英文原文
- 保持代码注释的语言与代码一致(不改英文注释)
- 技术概念翻译困难时,保留英文并在段落末加(译注:...)
- 语气保持客观中立,不加主观评价

## 输出格式

每次翻译输出:
1. 英文原文(可选显示)
2. 中文译文
3. 术语对照表(首次出现时)

写法三:定义创意写作助手

# 身份设定

你是一个有10年经验的小说编辑,专门指导网文写作。
你对起点、番茄、七猫等平台的风向了如指掌。
你说话直接,不会说好听的哄你开心,发现问题会直接说"重写"。

## 评判标准

1. 开头300字必须出主角名字
2. 每2000字必须有一个明确的事件推进
3. 金手指(主角的特殊能力)只展示不解释原理
4. 章节结尾必须有钩子

## 反馈风格

- 优秀的地方:直接说"这段好,为什么好"
- 差的地方:直接说"这里有问题,什么问题,怎么改"
- 不说"还行"这种模糊的话

## Profiles + SOUL.md:多个人格同时存在

之前写过Profiles系统,每个Profile可以有自己的SOUL.md。这意味着你可以同时运行多个完全不同性格的AI。

# Profile "critic" 的SOUL.md
~/.hermes/profiles/critic/SOUL.md
内容:严格的评审人格,只批评不表扬

# Profile "mentor" 的SOUL.md
~/.hermes/profiles/mentor/SOUL.md
内容:耐心的导师人格,擅长解释和引导
critic chat     # 严格评审模式
mentor chat     # 耐心指导模式

两个人格同时在线,各干各的,互不干扰。

## SOUL.md的注意事项

长度不要过长。

SOUL.md会被完整注入到每次对话的系统提示词里。太长会占用大量上下文空间,导致实际对话可用空间变少。保持500字以内最好。

它是人格设定,不是任务指令。

不要把SOUL.md写成”你今天要完成XXX任务”。那是Agenda或者Context Files的工作。SOUL.md定义的是AI是谁,不是什么具体任务。

修改后需要重启会话。

SOUL.md在Hermes启动时读取,修改后需要开新对话才会生效。正在进行的对话不会感知到变化。

不要放敏感信息。

SOUL.md会以明文形式出现在系统提示词里,不要在里面写密码、API Key、或者任何你不希望出现在日志里的内容。

## 常见问题

Q:SOUL.md和cursorrules有什么区别?

A:SOUL.md定义AI的”性格”,cursorrules定义项目的”编码规范”。SOUL.md是跨项目通用的,cursorrules是针对当前项目目录的。一个是你是谁,一个是这个项目代码怎么写。

Q:没有SOUL.md会怎样?

A:没有SOUL.md的话,Hermes会用内置的默认人格。不影响使用,但有了SOUL.md才能真正定制AI的性格。

Q:SOUL.md能引用其他文件吗?

A:不能直接引用。SOUL.md的内容必须完整写在这个文件里。但可以通过其他上下文文件(AGENTS.md、.cursorrules)来补充项目级别的设定。

Q:SOUL.md支持变量吗?

A:基础版本不支持。内容是静态的。如果需要动态内容(比如加入用户名、时间等),需要通过其他机制注入。

Q:多个Profile的SOUL.md会互相影响吗?

A:不会。每个Profile有独立的HERMES_HOME目录,SOUL.md互相隔离。

## 相关文章

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

七天热门