AI使用笔记 116

面向高级用户的 Hermes Agent 配置治理手册

仓库里有 AGENTS.md,本机有 ~/.hermes/config.yaml,网关再挂一个 bot——三套东西要是从来不一起看,Hermes Agent 忽好忽坏,很容易被误会成「模型不稳」。下面按文档里能对上的部分,把全局配置、项目上下文、SOUL、网关和安全拆开聊;示例片段你可以直接复制改。

先把配置面分层:全局、项目、身份

先记住一句话:配置放哪儿,决定了规则跟谁走。

全局都在 ~/.hermes/config.yaml 管模型、终端、TTS、压缩、审批、工具开关这些「非密钥」;密钥老老实实放 .env。目录大概长这样:

text
~/.hermes/
├── config.yaml
├── .env
├── auth.json
├── SOUL.md
├── memories/
├── skills/
├── cron/
├── sessions/
└── logs/

顺手记下几条常用命令:

bash
hermes config              # 查看
hermes config edit         # 编辑 config.yaml
hermes config set KEY VAL  # API key 会进 .env,其余进 yaml
hermes config check
hermes config migrate

优先级(高→低):CLI 参数 → config.yaml.env → 内置默认。非密钥一般以 config.yaml 为准;密钥归 .env。yaml 里可以用 ${VAR_NAME} 引用环境变量(只支持 ${VAR} 这种写法)。

项目上下文跟 SOUL 是两条线(别混在一起记):同一会话里只会选中 一种 项目上下文类型,顺序是 .hermes.mdAGENTS.mdCLAUDE.md.cursorrules(表格里常把 .hermes.mdHERMES.md 写成一类)。子目录里的那些文件要等工具真的摸到路径才进场;启动时加载的单文件最多 20000 字符,子目录提示单个文件 8000,太长就头尾掐一段。

身份只看 HERMES_HOME/SOUL.md,不在仓库里乱找——省得你「一进项目就像换了个人」。它在 slot #1;文件空着就走内置默认人设。

弄不清往哪写时,看下表就够了:

放进 SOUL 放进 AGENTS
语气、直接程度、犹豫时怎么说 架构、约定、路径、端口、命令
跨项目稳定的沟通默认值 仓库专属流程与临时事项

想临时换口气,用 /personality(内置或自定义都行)。自定义可以先写在 config.yaml,再 /personality <name>

yaml
agent:
  personalities:
    codereviewer: >
      You are a meticulous code reviewer. Identify bugs, security issues,
      performance concerns, and unclear design choices. Be precise and constructive.

文档里那一摞提示栈,大意就是:SOUL.md → 工具侧约定 → memory/user → skills → 上下文文件 → 时间戳 → 平台格式 → 再来一层可选的 /personality。说白了:SOUL 改长期人设,AGENTS 改工程事实,/personality 改当下模式

按场景调策略:终端、模型、网关与语音

终端后端决定命令在哪跑:localdockersshmodaldaytonavercel_sandboxsingularity。本地就是跟你同一个用户权限;仓库不放心就换容器系后端,镜像和挂载自己收紧。顺便提醒:并行子任务如果蹭同一个 Docker 容器,cd、环境变量、写文件都可能打架;真要隔离,去看文档里的任务级镜像覆盖之类做法。

网关跟 CLI 完全是两套授权逻辑,别混着背。顺序大概是:每平台 allow-all → DM 已通过列表 → 各平台 allowlist → GATEWAY_ALLOWED_USERS → 全局 GATEWAY_ALLOW_ALL_USERS → 默认拒绝。.env 里随手可以这样写:

bash
TELEGRAM_ALLOWED_USERS=123456789,987654321
DISCORD_ALLOWED_USERS=111222333444555666
GATEWAY_ALLOWED_USERS=123456789

带终端能力的 bot,别开成「谁都能进来」。陌生人想聊:DM → 拿 8 位码 → 你在机器上 hermes pairing approve <platform> <CODE>,完事。

成本与节奏这块可以佛系一点策略、抠一点账单:默认模型定一个,重活用 /model 换强的;/usage/insights 偶尔看一眼;聊太长就 /compress。并行丢给 delegate_task;能写成脚本的一次性跑完就用 execute_code,少来回扯回合。语音、消息入口和 CLI 共用 ~/.hermes,差别主要在谁在网关侧管授权、会话多长、工具露多少——别只在 CLI 调舒服了就以为网关也安全。

抑制漂移:优先级、人格强度、缓存与容量

项目链和 SOUL 会叠在一起生效:有冲突时 first match 只看链上谁先命中,不看谁写得长。

人格:SOUL 写太虚就像客服模板;把具体任务步骤全塞进 SOUL,又会跟 AGENTS 抢位置,仓库一改还容易漏。缓存:老换模型或乱改系统提示,prompt cache 很难友好;上下文文件也别没事全文重写一遍。

Memory 有天花板(默认如下),满了会合并——与其硬堆记忆,不如稳定事实放 AGENTS,套路做成 Skill:

yaml
memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 2200
  user_char_limit: 1375

(会话里刚写入的记忆,要下一轮开局才进系统提示——别指望当下立刻变脸。)

把安全写进默认配置:审批、隔离、出站与 MCP

安全这部分不用当成「额外包袱」,当成默认装机选项就行。

审批manual(默认)、smartoffoff 等于全程撒手,只适合你真信得过自动化那点场景。超时默认 60 秒,超时就算你没答,默认拦。

yaml
approvals:
  mode: manual
  timeout: 60

CLI 碰到危险命令会问你要 once / session / always / denyalways 会写进永久 command_allowlist,不熟的话先用 session 顶一顶。YOLO(--yolo/yoloHERMES_YOLO_MODE)能绕过常规审批,但硬阻断列表还在——特别离谱的命令照样拦。

docker / singularity / modal / daytona / vercel_sandbox 时,危险命令检测会跳过,相当于默认「边界在容器里」。docker_forward_env 塞进去的密钥,容器里进程都看得见,名单越短越好。

上下文会先扫一遍,不对劲就直接拒载,类似:

text
[BLOCKED: AGENTS.md contained potential prompt injection (prompt_injection). Content not loaded.]

MCP:子进程默认不带整机机密钥玩;该给谁,就写在对应 MCP 的 env 里:

yaml
mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_..."

出站:域名黑名单对 web_searchweb_extractbrowser_navigate 这类带 URL 的工具都生效:

yaml
security:
  website_blocklist:
    enabled: true
    domains:
      - "*.internal.company.com"
      - "admin.example.com"

内网 URL 要放行,用 allow_private_urls——只在确实信得过的环境开。

全局关工具:与其每个平台点一遍,不如在 config.yaml 一处关掉:

yaml
agent:
  disabled_toolsets:
    - memory
    - web

密钥文件:顺手执行 chmod 600 ~/.hermes/.env,养成习惯不亏。

长期维护:复盘、版本化与一体化

  • 复盘:有空 /insights 瞄一眼——是 AGENTS 缺料、SOUL 写拧了,还是模型一直选委屈了它。
  • 版本化:仓库交 AGENTS.mdSOUL.md 留在你自己的 HERMES_HOME;网关 secrets 留在部署环境 .env
  • Skill / Memory:五步以上的套路做成 Skill;事实是 Memory,套路是 Skill,别装错抽屉。担心 agent 手痒乱改 Skill,可以打开写入扫描(默认关着,怕误伤正经 skill):
yaml
skills:
  guard_agent_created: true

配置、上下文、人设和安全,不像四块补丁贴上去就完事——更像给 Hermes Agent 这份「整机规格」做联动:动一处,顺手想一圈别处要不要跟着动,反而省心。

感谢阅读,如果这篇文章对你有帮助,欢迎继续浏览同栏目内容。

返回 AI使用笔记