☰
Hermes Agent 自我进化实战:用 SOUL.md 与 AGENTS.md 搭建可迭代的 AI 智能体
2026/9/27 13:59:45 网站建设 项目流程

1. 为什么你的 Hermes Agent 用了一周还是「原地踏步」

很多人第一次跑 Hermes Agent 的感受是:装完挺新鲜,聊两天就发现它跟普通对话工具没差——换个会话照样失忆,项目背景还得重新贴一遍。问题不在模型,而在你还没把它的「自我进化」开关打开。

Hermes Agent 是 Nous Research 开源的一套 AI 智能体框架,和一次性问答工具最大的区别在于:它把「人格」「记忆」「项目规则」「技能」拆成独立文件,让智能体在多轮任务里持续沉淀经验。核心就是两个文件——SOUL.md定义它是谁、怎么说话;AGENTS.md定义它在当前项目里该守什么规矩。前者是全局人格,后者是项目说明书,两者配合才能让智能体越用越顺手。

这篇不聊虚的,直接给你可复制的SOUL.md/AGENTS.md骨架,再走一遍用 TaoToken 统一 Key 接入模型、跑通一轮「自我进化」验证的完整流程。适合已经在本地或 WSL2 里装好 Hermes Agent、但还没搞明白怎么让它「长记性」的开发者。如果你还没装,先把安装跑通再回来,本文默认你已经有可用的hermes命令。

我试过把 SOUL.md 写成一大段「你是一个乐于助人的助手」,结果智能体回答依旧四平八稳、毫无个性。后来才明白:人格文件不是许愿池,它需要具体到语气、边界、拒绝方式,智能体才会真的按这个「人设」行动。

2. 前置准备:TaoToken 统一 Key 与 Hermes 模型接入

Hermes Agent 本身不带大模型,它需要一个「大脑」。你可以接任意兼容 OpenAI 协议的服务,但如果你同时跑多个智能体、多个项目,最省心的做法是用一个统一入口管理 Key,避免每个工具各配一套、轮换时到处改。

TaoToken 提供的就是这样一个统一接入层:一个 Key 走通对话、编码、Agent 场景,模型切换在控制台完成,不用改本地配置。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,注册后在控制台生成 API Key 即可。

接入前你需要准备三样东西:

  • 一个可用的 TaoToken API Key(在控制台 API Keys 页面创建)
  • Hermes Agent 已安装并能执行hermes --version
  • 一个测试项目目录,用来放AGENTS.md

TaoToken 的 API 基地址是https://taotoken.net/api,兼容 OpenAI 的/v1/chat/completions协议,所以 Hermes 里凡是让你填base_url的地方,都指向它。Key 的创建入口在控制台的 API Keys 页面,建议单独建一个给 Hermes 用,方便日后按工具排查用量。

注意:不要把 Key 硬编码进SOUL.md或AGENTS.md,这两个文件是给模型读的上下文,不是配置。Key 只放.env或config.yaml。

3. 可复制配置:SOUL.md 与 AGENTS.md 骨架

3.1 写一份「有脾气」的 SOUL.md

SOUL.md默认位于~/.hermes/SOUL.md,全局生效,不管你在哪个项目里启动 Hermes 都会加载。它的作用是定义人格层:语气、沟通风格、遇到不确定时的处理方式。下面这份骨架可以直接抄,改掉里面的角色描述即可:

# Personality 你是一名务实的资深后端工程师,重视事实、清晰和可执行性, 不喜欢客套话和填充式表达。 ## Style - 直接但不冷漠,先给结论再给理由 - 优先给可运行的命令和代码,而不是泛泛而谈 - 遇到明显糟糕的方案要直接指出,并说明原因 - 不确定时明确说「不确定」,不要编造 ## Boundaries - 不擅自执行破坏性命令(rm -rf、DROP、强制推送) - 修改生产相关配置前必须先说明影响 - 涉及密钥、令牌时只引用变量名,不回显明文 ## Output - 代码块必须标注语言 - 步骤类回答用有序列表,每步一句话说清做什么

关键点在于Boundaries这一段。人格文件不只是「说话风格」,它同时是行为约束。你把「不擅自执行破坏性命令」写进去,智能体在触发危险操作时会更倾向于先确认,而不是直接跑。

写完保存,下次启动 Hermes 时它会自动读取。想临时换风格,可以在会话里用/personality concise之类的命令切换内置预设,会话结束自动恢复,不会污染SOUL.md。

3.2 写一份「项目说明书」AGENTS.md

AGENTS.md放在项目根目录,Hermes 启动时会自动发现并加载,作用范围仅限当前项目。它告诉智能体:这个项目是什么技术栈、有哪些约定、哪些文件不能碰。骨架如下:

# 项目说明 ## 技术栈 - Python 3.12 + FastAPI + SQLAlchemy 2.x - 数据库 PostgreSQL 16,迁移用 Alembic - 测试用 pytest + pytest-asyncio ## 目录结构 - app/api/ 路由层,只做参数校验和调用 service - app/service/ 业务逻辑 - app/models/ ORM 模型 - tests/ 测试,文件名 test_*.py ## 约定 - 所有接口统一返回 {data, error, meta} 结构 - 日志用 logging,禁止 print 调试 - 不要直接改 migrations 下的历史迁移文件,新增用 alembic revision ## 禁止事项 - 不要读取或提交 .env.local - 不要修改 CI 配置文件 .github/workflows/

这份文件的价值在于「一次写、长期省」。以前你每次开新会话都要重复「我用的是 FastAPI、返回格式是 data/error/meta」,现在智能体进项目目录就自动知道。AGENTS.md支持渐进式子目录发现——当智能体进入app/service/操作时,如果那里也放了AGENTS.md,会额外加载,适合大型项目分层管理。

3.3 配置模型走 TaoToken

在~/.hermes/config.yaml或.env里配置模型提供商,把base_url指向 TaoToken:

# ~/.hermes/config.yaml provider: name: openai-compatible base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY model: your-preferred-model

对应的环境变量写在~/.hermes/.env:

TAOTOKEN_API_KEY=sk-你的key

这样配置的好处是:模型名和 Key 分离,换模型只改config.yaml一行,Key 不动;多个工具共用同一个TAOTOKEN_API_KEY,轮换时只改一处。如果你要跑长期编码或 Agent 任务,可以在控制台开 Coding Plan,用量和额度集中管理,比每个工具单独充值省事。

4. 验证一轮「自我进化」:从任务到技能沉淀

配置写完不算完,得跑一轮完整流程,确认智能体真的会「记住」并「复用」。下面这套验证动作,能让你亲眼看到它从「一次性执行」变成「可复用技能」。

4.1 第一步:让它记住环境事实

启动 Hermes,在会话里直接告诉它你的环境:

记住:我的开发机是 Ubuntu 22.04,Python 3.12, 项目在 ~/code/myapi,数据库是本地 PostgreSQL 16。

智能体会把这条写进~/.hermes/memories/MEMORY.md。你可以直接打开这个文件确认:

cat ~/.hermes/memories/MEMORY.md

应该能看到类似「开发机 Ubuntu 22.04 / Python 3.12 / 项目路径 ~/code/myapi」的条目。注意记忆是冻结快照——本次会话中途写入的内容,要到下一次会话开始才会注入系统提示词,这是为了保留前缀缓存、降低成本,属于正常行为。

4.2 第二步:完成一个多步任务

进入项目目录,让智能体做一个 5 步以上的任务,比如:

在 app/service/ 下新增一个 user_service.py, 实现按邮箱查询用户、创建用户两个函数, 补上对应的 pytest 测试,然后运行测试确认通过。

它会读AGENTS.md知道返回格式和目录约定,读MEMORY.md知道技术栈,然后动手写代码、跑测试。这一步是「经验产生」的过程。

4.3 第三步:把流程沉淀为技能

任务成功后,直接说:

把你刚才新增 service + 补测试 + 跑测试的完整流程, 保存为名为 add-service-with-test 的 skill。

Hermes 会调用skill_manage工具,在~/.hermes/skills/下生成一个SKILL.md。你可以查看:

ls ~/.hermes/skills/ cat ~/.hermes/skills/*/SKILL.md

生成的技能会自动注册为斜杠命令。下次你只要输入/add-service-with-test,完整流程就会加载,不用再一步步教。这就是「自我进化」的实质——不是模型变强了,而是它积累的可复用流程变多了。

4.4 第四步:验证跨会话记忆

关掉当前会话,重新启动 Hermes,问一句:

我的项目用什么数据库?

如果它直接答出「PostgreSQL 16」而不用你重复,说明MEMORY.md生效了。再问:

帮我按项目约定新增一个接口。

如果它自动遵守{data, error, meta}返回格式,说明AGENTS.md也生效了。两个都通过,这一轮自我进化验证就算完成。

5. 本篇常见报错排查

配置和验证过程中,最容易卡在下面几个点,逐个对照排查。

报错一:AuthenticationError: Invalid API key

Key 没读到或写错了。先确认环境变量是否真的加载:

echo $TAOTOKEN_API_KEY

如果为空,检查~/.hermes/.env是否被正确读取,或者 Key 是否复制时带了空格。也可以运行hermes config list看当前生效的配置。Key 本身在 TaoToken 控制台的 API Keys 页面重新生成一个即可。

报错二:context length exceeded

长会话把上下文撑爆了。直接在会话里运行:

/compress

它会压缩对话历史、保留关键上下文。日常也可以/usage看当前 token 用量,发现增长过快就及时压缩。需要并行调研多个方案时,用delegate_task让子 Agent 各自跑,只把摘要返回主会话,能显著降低主对话的 token 消耗。

报错三:hermes: command not found

PATH 没刷新。执行:

source ~/.bashrc

或者直接重开终端。这不是安装失败,别急着重装。

报错四:技能生成了但/技能名调不出来

技能名和斜杠命令不一致,或者技能文件格式有问题。检查SKILL.md头部的 frontmatter 是否有name和description字段,缺了这两个,技能不会被正确注册。重新让智能体保存一次,或者手动补上。

报错五:RateLimitError: Too many requests

调用频率超限。如果你有多个 Key,可以在config.yaml里配凭证池轮换:

credential_pool: - provider: taotoken key: "sk-key1..." - provider: taotoken key: "sk-key2..."

触发限流时自动切换下一个 Key。长期高频使用的话,直接在 TaoToken 控制台看用量、按需调整额度更省心。

报错六:危险命令审批不知道选哪个

当智能体触发rm -rf、DROP TABLE这类命令时,会弹出 once / session / always / deny 四个选项。不熟悉的情况下选session,本次会话内放行、下次重新确认。always会永久加白名单,慎用。生产环境不要关掉这个审批机制。

6. 把 Key 和文档收进一个入口

走到这里,你已经有了可迭代的SOUL.md人格、AGENTS.md项目规则,以及一轮验证过的技能沉淀流程。接下来要做的,是把模型接入这件事也标准化——一个 Key 管所有工具,换模型不改代码。

具体动作分三步:

第一,去 TaoToken 控制台创建或复用你的 API Key,入口在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。建议给 Hermes 单独建一个,方便按工具看用量。

第二,把接入细节对照官方文档核对一遍,尤其是base_url和模型名的写法,文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。遇到协议不兼容的报错,先查这里。

第三,如果你打算让 Hermes 长期跑编码或 Agent 任务,去 Coding Plan 页面看额度方案 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,把用量集中管理,比每个工具单独充值清晰得多。

想先验证模型对话是否通,可以直接在模型对话页试一条请求 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite ,确认返回正常再回 Hermes 里配。

最后提醒一句:SOUL.md和AGENTS.md是活的文件,不是写完就锁死。每次你发现智能体某个行为不对,就回去改对应文件——人格问题改SOUL.md,项目规则问题改AGENTS.md,流程问题存成技能。改完重启会话验证,这才是「可迭代」的真正含义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询