一句话概览
![]()
很多人一聊到 agent 配置,第一反应是换模型、加上下文、接更多工具。
但在 Hermes Agent 里,真正影响长期使用体验的,经常是一个更小的文件:SOUL.md
它决定代理先把自己理解成什么角色,再去读技能、项目指令、记忆和工具说明。模型再强,如果身份、语气、边界写得散,输出还是容易泛、飘、贵。
1.SOUL.md 是什么
SOUL.md 是 Hermes 的身份文件。它会替换默认的通用助手人格,定义代理是谁、怎么说话、按什么原则执行、哪些边界不能碰。
启动新会话时,Hermes 会先从 HERMES_HOME 读取 SOUL.md,做安全扫描和必要截断,然后把它放进 system prompt 的最前面。
如果这个文件缺失、为空或读不到,Hermes 就会退回默认身份。结果就是:它能干活,但不太像“你的代理”。
修改 SOUL.md 后要开新会话。旧会话可能还保留旧的 prompt 状态。
2.它为什么排在第一层
可以把 Hermes 的提示词栈理解成三层:
稳定层:SOUL.md、工具与模型指导、skills 索引、环境提示
项目层:AGENTS.md、.hermes.md、CLAUDE.md、.cursorrules
易变层:MEMORY.md、USER.md、外部记忆、时间戳和会话信息
SOUL.md 在最前面,所以它不是普通偏好,而是解释框架。
同样一份 AGENTS.md,一个“严谨代码审查员”会读出风险和边界;一个“内容策略顾问”会更关注表达、受众和叙事节奏。身份不同,后续上下文的使用方式也不同。
3.什么该写进 SOUL.md
适合写进去的是长期稳定的行为设定:
身份:它是谁,和你是什么关系
语气:回答长短、直接程度、表达风格
价值取向:优先真实、速度、成本、质量,还是其他目标
行为边界:哪些事必须先确认,哪些事不能做
操作原则:什么时候主动执行,什么时候停下来问
这些内容应该跨项目稳定存在。换一个仓库、换一个任务,它们依然成立。
4.什么不该写进去
SOUL.md 不应该变成万能垃圾桶。
项目指令应该进 AGENTS.md
编码规范应该进 AGENTS.md 或 .cursorrules
多步骤工作流应该做成 skill
关于你的事实应该进 MEMORY.md / USER.md
工具、模型和供应商配置应该进 config.yaml
一句话:SOUL.md 负责“它是谁”,不要让它背项目杂务。
5.为什么建议控制在 50-80 行
SOUL.md 会进入每一轮对话,所以它既影响行为,也持续消耗上下文。
粗略估算:
50 行:约 400-500 tokens
80 行:约 700-800 tokens
200 行:可能到 1500-2000 tokens
跑一个 20 轮 /goal 时,臃肿 soul 会被重复带入很多次。即使有 prompt caching,过长的身份文件也会让系统更贵、更慢、更难维护。
更好的标准是:每一行都应该改变代理行为。如果删掉一行没有任何影响,那一行就该删。
6.最小结构怎么写
一份稳定的 SOUL.md 不需要复杂模板,四段就够:
Soul:它是谁
Voice:它怎么说话
Operations:它怎么执行、怎么做决策
Restrictions:它绝不能做什么
示例结构:
# Soul
你是一个务实的高级工程协作者,优先解决真实问题。
## Voice
直接、简洁、指出不确定性。
复杂问题先给结论,再给必要依据。
## Operations
能从本地上下文确认的事先确认。
改代码前先理解现有模式。
任务完成后给出验证结果。
## Restrictions
不擅自删除用户文件。
不输出密钥。
不可逆操作前必须确认。
重点不是照抄这个模板,而是保持短、稳、可验证。
7.几种常见角色写法
战略合伙人型
适合创业者、产品 owner、需要经常做取舍的人。
重点写清楚:它要挑战假设、追问证据、按 90 天目标排序、不要为了附和而同意。
深度研究员型
适合行业扫描、竞品研究、资料汇总。
重点写清楚:事实要有来源,估计要标注,证据弱就直接说明无法确认。
自治 DevOps 型
适合巡检、部署、告警、自动化运维。
重点写清楚:先观测后修改,生产环境先确认,危险操作要可回滚。
内容策略型
适合写作、发布、品牌内容。
重点写清楚:目标读者是谁,语气怎么统一,哪些表达不要出现,什么算合格输出。
/personality overlay 怎么用
SOUL.md 是长期基线,/personality 更像临时工作模式。
今天需要它短一点,可以临时切成 concise;需要代码审查,可以临时切成 code reviewer。任务结束后清掉 overlay,回到 SOUL.md 的默认人格。
不要把临时需求塞进 soul。长期身份和临时姿态分开,后面维护会轻很多。
8.多 Profile 时更要认真写 soul
多 profile 的价值不是“复制多个助手”,而是让不同代理真的承担不同工作。
比如:
Scout:只找信号
Analyst:只综合分析
Coder:只写代码
Briefer:只做每日摘要
每个 profile 都应该有自己的 SOUL.md。如果只是复制同一份身份文件,再换个模型名,本质上还是一个泛化代理。
9.最常见的坑
把项目说明、工作流、个人资料全塞进 SOUL.md
写到 200 多行,每轮都烧 token
写得太空,只剩“请专业、请简洁”
修改后不重开会话,以为没生效
试图用人格设定绕过安全边界
直接的行为边界可以写,比如“未经确认不要发消息”;但不要把绕过安全机制伪装成人格要求。
10.怎么测试你的 SOUL.md
写完不要只看文本,要看表现。
身份检查:问“你是谁、你负责什么”
语气检查:让它解释同一个概念,看风格是否一致
边界检查:让它做一件被禁止的事,看是否会拒绝或先确认
体积检查:运行 hermes prompt-size
漂移检查:隔一段时间开新会话,确认长期记忆没有把身份带偏
一个好 soul 的标准不是“看起来高级”,而是能稳定改变行为。
11.SOUL.md、Memory、Obsidian 各管什么
这三层不要混用。
SOUL.md:定义代理是谁,怎么思考,怎么表达
MEMORY.md:保存当前阶段重要事实和偏好,但容量有限
Obsidian / 外部知识库:保存长期研究、项目资料、会议笔记和交叉链接
Soul 管人格,Memory 管短中期上下文,知识库管长期沉淀。
12.最后怎么落地
不要一开始就写 200 行。
先写 20-40 行能真正改变行为的设定,用一两周,观察它哪里跑偏,再迭代。等你和代理协作过一段时间,再让它基于真实反馈重写自己的 soul,通常会比闭门造模板更准。
如果一个 agent 总是不像你的人、总在关键地方跑偏,先别急着换模型。先检查 SOUL.md。
更多游戏资讯请关注:电玩帮游戏资讯专区
电玩帮图文攻略 www.vgover.com
