Hermes上下文系统通过静态上下文文件(如SOUL.md和AGENTS.md)定义全局人格与项目规范,结合动态上下文引用(@语法实时注入文件、目录或Git差异),精准控制智能体行为。两者协同可避免回答偏离项目意图,提升效率。上下文有大小与安全限制,确保合规使用。
智能体总是不听话,回答也总跟项目规范对着干?问题八成出在“上下文”上。Hermes Agent 的上下文系统,就是控制智能体行为的“中枢神经”。它分为两块:上下文文件和上下文引用。前者定规矩,后者实时喂料。两者一结合,智能体就能精准理解项目意图,工作效率翻倍。这篇文章就把这玩意儿拆开揉碎了讲清楚,从文件配置到具体用法,再到安全规范和实战技巧,一篇搞定。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
说白了,上下文系统就是给智能体“画个圈”,告诉它什么能做、什么不能做:
上下文文件(Context Files):静态配置文件,定义全局人格、项目规范,会话启动时自动加载,相当于智能体的“出厂设置”。
上下文引用(Context References):动态注入语法,通过 @ 符号实时加载文件、目录、URL 等内容——需要什么就调什么,活得很。
图1:上下文系统架构

上下文文件是静态配置的载体,分两类:全局人格文件(SOUL.md)和项目规范文件(.hermes.md/AGENTS.md 等)。会话启动时,Hermes 会自动扫描并加载,不用你手动操心。
Hermes 扫描项目目录时,有一套优雅的优先规则——高优先级文件覆盖低优先级文件的冲突指令,但所有文件的内容都会注入上下文,不会漏掉任何一条规则:
.hermes.md / HERMES.md:Hermes 专属,排第一。除了它谁都不能抢。AGENTS.md:多智能体通用配置文件,兼容性好,适用范围广。CLAUDE.md:兼容 Claude Code 的上下文文件。.cursorrules:兼容 Cursor IDE 编码规则。固定路径:~/.hermes/SOUL.md(只从 Hermes 主目录加载,不扫描项目目录)。作用就是定义智能体的整体风格和禁区:比如“回答必须简洁”或者“不能用无意义的废话”。所有会话默认生效,一以贯之。
首次使用 Hermes 时会自动生成默认文件,免去了手动创建的麻烦。
# Hermes 全局人格## 沟通风格- 中文回复(英文提问除外),简洁直接,无冗余客套。- 优先提供可执行代码/命令,避免空泛解释。- 歧义处主动确认,不猜测用户意图。## 工作原则- 代码优先:安全、可维护、有单元测试。- 诚实透明:不懂不编造,主动提示风险。- 高效务实:聚焦问题,不额外推荐无关工具。## 禁止行为- 不添加无意义感叹词,不过度解释简单任务。- 不修改受保护文件(如 .env、迁移脚本)。
这个文件负责定义项目的技术栈、编码规范、架构规则、禁止事项。它的加载机制非常聪明:会话启动时加载当前目录的 AGENTS.md,进入子目录(比如 frontend/)时自动加载子目录的 AGENTS.md。也就是说,只有当你真的需要那部分上下文时,它才会被注入,避免了一股脑儿全塞进去导致的上下文膨胀。
# 项目上下文:Go 后端服务## 技术栈- Go 1.22 ,Gin 框架,GORM ORM。- 数据库:SQLite(开发)/ PostgreSQL(生产)。- 部署:Docker Compose,端口 8000。## 编码规范- 严格 PEP8,全量类型注解。- API 响应统一 {code, data, msg} 格式。- 禁止直接拼接 SQL,优先 GORM 方法。## 禁止事项- 不提交 .env 文件到 Git。- 不直接修改数据库迁移脚本。
大型项目可以按目录拆分规范,Hermes 会逐级加载,就像模块化设计一样清晰:
my-project/├── AGENTS.md # 根目录全局规范。├── frontend/│ └── AGENTS.md # 前端专属规范。└── backend/└── AGENTS.md # 后端专属规范。
单文件上限:根目录文件 20000 字符,子目录文件 8000 字符,超出自动截断——这不光是性能考虑,也是为了避免信息过载。安全方面,自动检测提示注入、凭证外泄、恶意指令,一旦发现风险文件直接拦截,省心又安全。
上下文引用是动态注入语法,通过 @ 符号实时加载文件、目录、Git 差异、URL 等内容。你不用手动复制粘贴,直接输入 @ 加路径就行,而且 CLI 还支持自动补全,用起来很方便。
| 语法 | 说明 | 示例 |
|---|---|---|
@file:路径 |
注入完整文件内容 | @file:src/main.go |
@file:路径:起始-结束 |
注入指定行范围(1 索引) | @file:src/main.go:10-25 |
@folder:路径 |
注入目录树与文件元数据 | @folder:src/components |
@diff |
注入 Git 未暂存变更 | @diff |
@staged |
注入 Git 已暂存变更 | @staged |
@git:N |
注入最近 N 次提交(最多 10) | @git:5 |
@url:链接 |
注入网页正文 | @url:https://xxx.com/doc |
审查 @file:src/main.go:10-50,检查 SQL 注入风险 —— 这样就不用把整个文件拉进去,只给关键部分就行。
对比 @file:dev.yaml 和 @file:prod.yaml 的数据库配置差异 —— 两个文件一比较,哪里不一样一目了然。
总结 @url:https://xxx.com/api-doc 的核心接口 —— 直接扔个链接,智能体自动帮你总结精华。
在交互式 CLI 中输入 @,自动触发补全:输入 @file:,自动补全当前目录文件;输入 @git:,提示可输入的提交数量。操作非常顺滑。
软限制:引用内容不超过上下文 25%,超出警告但继续——它能跑,但你会收到提醒。硬限制:不超过 50%,超出直接拒绝注入。目录最多 200 个文件,Git 最多 10 次提交,不会让你乱塞东西导致性能问题。
禁止引用 ~/.ssh/、~/.env、~/.aws/ 等凭证目录。自动检测二进制文件(.exe、.so 等)并拒绝注入。路径遍历也被禁止——也就是说,你不能引用工作目录以外的文件,安全底限很稳。
想知道 Hermes 到底吃了哪些文件?用 --debug-context 参数跑一次就行:
hermes chat --debug-context
输出示例:
[Context] Loaded SOUL.md (1234 chars)[Context] Loaded /my-project/AGENTS.md (3456 chars)
一次输出,一目了然——哪个文件生效了、多少字符,全都清清楚楚。
Hermes 的上下文系统,说白了就三板斧:静态文件定规矩,动态引用喂内容,两者结合让智能体行为精准可控。SOUL.md 统一全局人格,AGENTS.md 规范项目开发,@ 语法实时注入动态内容——这三样捏在一起,能让 Hermes 真正成为贴合你项目需求的专属助手。合理配置、严守安全规范,那就不是“智能体听不听话”的问题,而是“它还能干多少活”的问题了。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述