
1. 为什么你的 Hermes-Agent 总是「不像你」很多人第一次跑 Hermes-Agent 的时候都会遇到同一个尴尬明明装好了、模型也通了但对话起来就是一股浓浓的「客服味」。你问它一个技术问题它先来一段「当然可以我很乐意帮您」然后给三条泛泛而谈的建议最后补一句「希望对您有帮助」。你想让它像个老练的工程师那样直接指出问题它偏要绕圈子。这不是模型不行而是你没告诉它「你是谁、你该怎么说话」。Hermes-Agent 的设计里有一个很关键的文件SOUL.md。它放在~/.hermes/SOUL.md是 Hermes 对「自己灵魂」的设定。你可以把它理解成给智能体写的一份「人格说明书」——它决定了 Hermes 用什么身份思考、用什么语气说话、遇到模糊指令时默认怎么处理、哪些行为是绝对禁止的。换句话说模型是大脑SOUL.md 是性格和纪律。同一套模型权重换一份 SOUL.md出来的效果可能完全是两个人。这篇就聚焦智能体身份设定这个场景把 SOUL.md 的结构、写法、可复制的配置骨架以及怎么接上统一的 Key/API 通道跑起来一步步讲清楚。适合正在折腾 Hermes-Agent、想让智能体真正「有个人样」的开发者。2. 先准备好 TaoToken 的统一通道在动 SOUL.md 之前得先保证 Hermes-Agent 能正常调用模型否则你改完人格也没法验证。这里我用 TaoToken 作为统一的 API 通道好处是一个 Key 就能覆盖多种模型切换模型不用改一堆环境变量调试人格的时候特别省事。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后在控制台生成 API Key。API 的基础地址是 https://taotoken.net/api 注意这个地址不带任何查询参数直接作为 base_url 使用。拿到 Key 之后建议先写进环境变量避免明文散落在配置文件里export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/api如果你用的是 Hermes-Agent 的配置文件方式通常在~/.hermes/config或项目根目录的.env里指定。不同版本字段名略有差异核心就是两件事base_url 指向https://taotoken.net/apiapi_key 用你生成的那串。配好之后先别急着写 SOUL.md跑一次最简对话确认通道是通的否则后面人格不生效你会分不清是配置问题还是通道问题。提示Key 属于敏感信息别提交到 Git 仓库。用.env的话记得把.env加进.gitignore。3. SOUL.md 的四段式结构与可复制骨架SOUL.md 的结构其实非常克制官方模板就四个一级标题Identity、Style、Avoid、Defaults。别看只有四段每一段都在回答一个根本问题。Identity 回答「Hermes 是谁」也就是身份和定位。Style 回答「它该怎么发声」语气、用词、称呼方式都写这里。Avoid 回答「它绝对不能做什么」这是行为边界比正面描述更能约束模型。Defaults 回答「遇到模糊情况默认怎么办」这是最容易被忽略但最影响体验的一段——因为真实使用中大部分指令都是模糊的。下面是一份可以直接复制、按需改的骨架建议用英文写模型对英文指令的遵循度通常更稳# Identity Who Hermes is. Define the role, expertise, and stance. Example: You are a senior backend engineer who values correctness over speed. # Style How Hermes should sound. Tone, vocabulary, sentence length, forms of address. Example: Direct, concise. No filler preambles. Address the user as a peer. # Avoid What Hermes should not do. Hard boundaries. Example: Never invent APIs. Never give hollow disclaimers. Never agree with a flawed plan. # Defaults How Hermes should behave when ambiguity appears. Example: When a request is vague, ask for the concrete goal before proposing a solution.写的时候有个原则Avoid 和 Defaults 要写得比 Identity 更具体。因为「你是谁」模型很容易演「你不许做什么」才是真正防止它跑偏的护栏。比如你写「不要啰嗦」模型可能理解成「稍微短一点」你写「禁止输出超过三句的开场白禁止使用『希望对你有帮助』这类结尾」它才会真的照做。4. 一个完整的人格配置实例光看骨架不够直观我给一个完整可用的例子。假设你要一个「技术搭档」型人格既能聊底层细节又不会跟你绕弯子# Identity Hermes: The Technical Partner. You are a pragmatic senior engineer and a thinking partner, not a passive assistant. You combine deep hands-on experience (systems, networking, AI orchestration) with a bias toward verifiable facts. You identify the core blocker in any task before touching secondary details. # Style Plain and precise. Speak in clear, forceful language. Avoid AI jargon unless it is technically necessary. Use concrete analogies when explaining abstract concepts. Address the user as a peer. Encouragement is sincere, critique is direct. # Avoid Bureaucratic verbosity: no long hollow preambles, no boilerplate disclaimers. Mechanical obedience: do not follow a flawed plan blindly; challenge skewed logic. Dogmatism: do not stick to the manual when constraints require a workaround. Defeatism: never call a task too complex without offering an alternative. # Defaults Investigation first: when a prompt is ambiguous, do not guess. Ask for logs, read the relevant files, or probe for the actual objective. Main blocker rule: when multiple tasks exist, prioritize the one that unblocks the rest. Report honestly: always state technical limitations (cost, latency, model limits). Decisive action: if the user is indecisive, propose a concrete plan and ask for a go signal.把这段写进~/.hermes/SOUL.md就行。文件位置默认在~/.hermes/如果你改过$HERMES_HOME环境变量就放到对应目录下。写入方式用你顺手的编辑器vim ~/.hermes/SOUL.md改完之后必须重启 Hermes-Agent 才会生效因为 SOUL.md 是在启动时加载进上下文的热改不会自动重载。重启命令取决于你的启动方式常见的是hermes restart # 或者直接杀掉进程重新拉起 pkill -f hermes hermes start5. 验证人格是否真的生效配置写完不代表生效得用对话测试来验证。这里有个小技巧不要问「你是谁」这种问题模型会照着 SOUL.md 背一遍看不出真实效果。要设计能触发 Style 和 Defaults 的问题。第一轮测 Style。问一个它本来容易啰嗦的问题帮我看看这段 Python 为什么报 KeyError。如果人格生效它应该直接问你要代码或日志而不是先来一段「KeyError 通常是因为字典中不存在该键」的科普。如果它开始长篇大论说明 Style 里的约束没吃进去回去把 Avoid 写得更硬。第二轮测 Defaults。给一个模糊指令帮我优化一下这个项目。按上面的 Defaults它应该先追问「优化目标是什么是性能、可读性还是部署体积」而不是直接给一堆通用建议。这一步能验证「Investigation first」有没有落地。第三轮测 Avoid。故意给一个有问题的方案我想把所有配置硬编码到代码里这样部署简单。如果它直接说「好的我来帮你改」说明「Mechanical obedience」那条没生效如果它指出硬编码的风险并给出替代方案说明边界起作用了。测试的时候建议把模型固定成同一个避免变量干扰。用 TaoToken 的话可以在模型对话页面直接切换模型做对比https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。同一个 SOUL.md 在不同模型上的表现差异本身也是很有价值的参考。6. 常见报错与排查改了 SOUL.md 但完全没变化。九成是没重启。SOUL.md 只在启动时读取改完必须重启进程。另外确认文件路径对不对echo $HERMES_HOME看一下实际目录别改错了地方。人格时好时坏有时候像有时候不像。通常是 SOUL.md 写得太抽象。Identity 可以虚一点但 Style 和 Avoid 必须具体到可执行。把「简洁」改成「禁止超过三句开场白」把「专业」改成「引用具体命令和参数」稳定性会明显提升。模型直接无视 Avoid 里的禁令。检查是不是把禁令写成了正面描述。模型对「不要做 X」的遵循度高于「尽量少做 X」。另外 Avoid 条目别超过五条太多会互相稀释挑最关键的写。调用模型时报 401 或鉴权失败。先确认 API Key 有没有正确注入环境变量再确认 base_url 是不是https://taotoken.net/api注意不要多加路径后缀。Key 的管理和重新生成在控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 如果怀疑 Key 泄露可以直接轮换。想给不同项目用不同人格。不用改全局的~/.hermes/SOUL.md可以在项目目录下放一份通过$HERMES_HOME指向项目目录来隔离。这样每个项目的智能体人格互不干扰。如果你打算长期跑编码类任务、频繁切换人格做实验可以考虑 Coding Plan 这类按量方案成本更可控https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。接入细节和字段说明都在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite Key 的生成入口在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。最后说个我自己的习惯SOUL.md 不要一次写完就锁死把它当成一个持续迭代的 prompt。每次发现智能体说了让你不舒服的话就回去往 Avoid 里加一条。跑上一两周这份文件会比任何模板都贴合你的工作方式。