Hermes Agent提示词需用SOUL.md和MEMORY.md双文件结构化编写:SOUL.md置于~/.hermes/路径下,定义身份、禁令与必须行为;MEMORY.md全小写无空格,仅载入事实约束与格式规则;二者均须用英文标点、半角空格,禁用中文符号;其他内容应作为User Prompt动态传入。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在外部编辑器里写几百字甚至上千字的提示词,但每次复制粘贴都出错、格式乱掉、中文标点被转义、换行丢失,或者根本不知道该从哪开始组织结构——这不是编辑器的问题,而是缺少一套适配Hermes Agent底层加载逻辑的编写流程。
先建好骨架再填肉:用SOUL.md + MEMORY.md双文件分工
SOUL.md负责身份锚定与行为红线,MEMORY.md承载事实约束与格式强规则,二者不可混写。SOUL.md必须放在~/.hermes/SOUL.md路径下,否则Hermes启动时不会加载;MEMORY.md则需确保文件名全小写、无空格、扩展名是.md。
打开终端执行:mkdir -p ~/.hermes && nano ~/.hermes/SOUL.md,写入角色定义后保存退出(Ctrl+O → 回车 → Ctrl+X)。
【SOUL.md内容不能含中文引号、破折号、全角空格】这些字符会被解析器截断或触发token异常,务必用英文标点和半角空格重写所有内容。
接着创建MEMORY.md:nano ~/.hermes/MEMORY.md,这里只写项目级硬约束,比如“所有输出标题必须加粗”“禁用‘近期’‘目前’等相对时间表述”“公司名统一用全称,不缩写”。
用VS Code写提示词:装插件+关自动格式化
安装插件“Markdown All in One”和“Prettify JSON”,前者支持实时预览,后者帮你校验JSON Schema类输出是否合法。
关键一步:在VS Code设置中搜索“format on paste”,把它设为false。否则你从网页复制一段带缩进的JSON进来,它会自动删空格、改引号,导致Hermes解析失败。
再搜“auto save”,选“afterDelay”,延迟设为1000毫秒——避免边打字边触发保存,防止未写完就同步到~/.hermes目录下被Agent误读。
这一步操作起来很简单,直接把文件拖进去就行。
结构化分块写作:按Hermes系统提示词加载顺序组织
Hermes系统提示词是分12层组装的,你写的外部文件只参与其中两层:SOUL.md(第1层)、MEMORY.md(第6层)。所以提示词内容必须严格对应这两层的语义职责:
① SOUL.md只写三件事:你是谁、你禁止做什么、你必须怎么做。例如:“你是云原生架构师,专精K8s Operator开发;禁止使用‘可能’‘大概’等模糊词;所有技术判断必须标注Kubernetes v1.30官方文档章节号。”
② MEMORY.md只写四类内容:项目基础事实(如“主力模型为Qwen-Max”)、格式硬约束(如“输出禁用分号与破折号”)、来源规范(如“引用必须以Sources:开头,后接超链接”)、工具调用前提(如“调用code_runner前必须先确认Docker daemon已运行”)。
③ 所有其他内容——比如任务步骤说明、参考示例、推理指令——一律不要塞进这两个文件。它们应作为User Prompt的一部分,在每次调用时动态传入,否则会被冻结进长期记忆,无法灵活调整。
④ 每个区块之间用空行隔开,不要用---或***分割线,Hermes解析器不识别这类Markdown分隔符。
验证是否生效:用诊断命令看注入原文
启动Hermes Agent后,输入/debug system_prompt,它会输出当前组装完成的完整系统提示词。滚动查找=== SOUL.md ===和=== Persistent Memory ===两个标记段落,确认你写的文字一字不差出现在对应位置。
如果没出现,立刻检查:ls -l ~/.hermes/看文件权限是否为644,file ~/.hermes/SOUL.md确认编码是UTF-8,grep -n "memory_enabled" ~/.hermes/config.yaml核实配置项是否为true。











