跳到主要内容

策展器

策展器(Curator)是**Agent 创建的技能(Skills)**的后台维护程序。它追踪每个技能的查看、使用和修补频率,将长期未使用的技能经历 active → stale → archived 状态转换,并定期生成一个简短的辅助模型审查,提出合并或修复漂移的建议。

它的存在是为了防止通过自我改进循环创建的技能无限堆积。每次 Agent 解决新问题并保存技能时,该技能就会落在 ~/.hermes/skills/ 中。没有维护,最终会产生数十个范围狭窄的近似重复品,污染目录并浪费 token。

策展器绝不触碰随仓库附带的捆绑技能或通过 agentskills.io 安装的 Hub 技能。它只审查 Agent 自身创作的技能。策展器也绝不自动删除——最坏的结果是归档到 ~/.hermes/skills/.archive/,这是可恢复的。

追踪议题 #7816

运行方式

策展器由非活跃检查触发,而非 cron 守护进程。在 CLI 会话启动时,以及网关的 cron 计时线程中的周期性触发时,Hermes 会检查:

  1. 自上次策展器运行以来是否已过足够长时间(interval_hours,默认 7 天),以及
  2. Agent 是否已闲置足够长时间(min_idle_hours,默认 2 小时)。

如果两者都满足,它会生成一个 AIAgent 的后台 fork——与记忆/技能自我改进提示使用的模式相同。该 fork 在其自己的提示缓存中运行,从不触碰活跃对话。

首次运行行为

在全新安装时(或预策展器安装在 hermes update 后首次触发时),策展器不会立即运行。首次观察将 last_run_at 设置为"现在",并将第一次真正的运行推迟一个完整的 interval_hours。这给你一个完整的间隔时间来审查技能库,固定重要内容,或在策展器接触它之前完全退出。

如果你想在策展器真正运行之前查看它做什么,运行 hermes curator run --dry-run——它会生成相同的审查报告,但不会修改库。

一次运行有两个阶段:

  1. 自动转换(确定性,无 LLM)。超过 stale_after_days(30)天未使用的技能变为 stale;超过 archive_after_days(90)天未使用的技能被移至 ~/.hermes/skills/.archive/
  2. LLM 审查(单次辅助模型通过,max_iterations=8)。fork 的 Agent 调查 Agent 创建的技能,可以用 skill_view 读取任何技能,并逐技能决定是保留、修补(通过 skill_manage)、合并重叠技能,还是通过终端工具归档。

被固定的技能对策展器的自动转换和 Agent 自身的 skill_manage 工具都不可操作。参见下方固定技能

配置

所有设置位于 config.yamlcurator: 下(不在 .env 中——这不是密钥)。默认值:

curator:
enabled: true
interval_hours: 168 # 7 days
min_idle_hours: 2
stale_after_days: 30
archive_after_days: 90

要完全禁用,设置 curator.enabled: false

在更便宜的辅助模型上运行审查

策展器的 LLM 审查通过是一个常规辅助任务插槽——auxiliary.curator——与 Vision、压缩、会话搜索等并列。"Auto"意味着"使用我的主聊天模型";覆盖插槽可以为审查通过指定特定的提供商 + 模型。

最简单方式——hermes model

hermes model # → "Auxiliary models — side-task routing"
# → pick "Curator" → pick provider → pick model

Web 仪表板的 Models 标签页中也提供相同的选择器。

直接修改 config.yaml(等效):

auxiliary:
curator:
provider: openrouter
model: google/gemini-3-flash-preview
timeout: 600 # generous — reviews can take several minutes

保留 provider: auto(默认值)会将审查通过路由到你的主聊天模型,与所有其他辅助任务的行为一致。

旧版配置

早期版本使用一次性的 curator.auxiliary.{provider,model} 块。该路径仍然有效,但会输出弃用日志行——请迁移到上面的 auxiliary.curator,这样策展器就与所有其他辅助任务共享相同的管道(hermes model、仪表板 Models 标签、base_urlapi_keytimeoutextra_body)。

CLI 命令

hermes curator status # last run, counts, pinned list, LRU top 5
hermes curator run # trigger a review now (blocks until the LLM pass finishes)
hermes curator run --background # fire-and-forget: start the LLM pass in a background thread
hermes curator run --dry-run # preview only — report without any mutations
hermes curator backup # take a manual snapshot of ~/.hermes/skills/
hermes curator rollback # restore from the newest snapshot
hermes curator rollback --list # list available snapshots
hermes curator rollback --id <ts> # restore a specific snapshot
hermes curator rollback -y # skip the confirmation prompt
hermes curator pause # stop runs until resumed
hermes curator resume
hermes curator pin <skill> # never auto-transition this skill
hermes curator unpin <skill>
hermes curator restore <skill> # move an archived skill back to active

备份与回滚

在每次真正的策展器运行之前,Hermes 会在 ~/.hermes/skills/.curator_backups/<utc-iso>/skills.tar.gz 处创建 ~/.hermes/skills/ 的 tar.gz 快照。如果某次运行归档或合并了你不想被触碰的内容,可以用一条命令撤销整个运行:

hermes curator rollback # restore newest snapshot (with confirmation)
hermes curator rollback -y # skip the prompt
hermes curator rollback --list # see all snapshots with reason + size

回滚本身是可逆的:在替换技能树之前,Hermes 会另取一个标记为 pre-rollback to <target-id> 的快照,因此误操作的回滚可以通过 --id 前进到该快照来撤销。

你也可以随时用 hermes curator backup --reason "before-refactor" 手动创建快照。--reason 字符串会记录在快照的 manifest.json 中,并显示在 --list 中。

快照被修剪至 curator.backup.keep(默认 5)以限制磁盘使用:

curator:
backup:
enabled: true
keep: 5

设置 curator.backup.enabled: false 可禁用自动快照。手动 hermes curator backup 命令仅在你先设置 enabled: true 时才在禁用状态下有效——该标志对两条路径进行对称控制,因此不可能在变更运行中意外跳过预运行快照。

hermes curator status 还会列出五个最近最少使用的技能——快速查看接下来可能变为过期的技能。

相同的子命令也可作为运行中会话(CLI 或网关平台)内的 /curator 斜杠命令使用。

"Agent 创建"的含义

如果技能的名称不在以下列表中,则被视为 Agent 创建的技能:

  • ~/.hermes/skills/.bundled_manifest(安装时从仓库复制的技能),以及
  • ~/.hermes/skills/.hub/lock.json(通过 hermes skills install 安装的技能)。

~/.hermes/skills/ 中的其他所有技能都是策展器的操作范围。包括:

  • Agent 在对话中通过 skill_manage(action="create") 保存的技能。
  • 你用手写 SKILL.md 手动创建的技能。
  • 通过你指向 Hermes 的外部技能目录添加的技能。
你手写的技能看起来与 Agent 保存的技能一样

这里的来源是二元的(捆绑/Hub 对比其他所有)。策展器无法区分你依赖的私有工作流手写技能和自我改进循环在会话中途保存的技能。两者都落在"Agent 创建"桶中。

在第一次真正运行之前(默认在安装后 7 天),请花时间:

  1. 运行 hermes curator run --dry-run 查看策展器会提出什么建议。
  2. 使用 hermes curator pin <name> 保护你不想被触碰的内容。
  3. 或在 config.yaml 中设置 curator.enabled: false,如果你更喜欢自己管理库。

归档始终可通过 hermes curator restore <name> 恢复,但事先固定比事后追查合并更容易。

如果你想保护特定技能不被触碰——例如你依赖的手写技能——使用 hermes curator pin <name>。参见下一节。

固定技能

固定可保护技能不被删除——无论是策展器的自动归档通过还是 Agent 的 skill_manage(action="delete") 工具调用。一旦技能被固定:

  • 策展器在自动转换(active → stale → archived)时跳过它,其 LLM 审查通过也被指示不要触碰它。
  • Agent 的 skill_manage 工具拒绝对其执行 delete,并将用户指引至 hermes curator unpin <name>。修补和编辑仍然可以进行,因此 Agent 可以随着问题出现改进固定技能的内容,而无需频繁地固定/取消固定/重新固定。

使用以下命令固定和取消固定:

hermes curator pin <skill>
hermes curator unpin <skill>

该标志以 "pinned": true 存储在 ~/.hermes/skills/.usage.json 中技能条目上,在会话间持久保存。

只有Agent 创建的技能才能被固定——捆绑和 Hub 安装的技能在第一时间就不受策展器修改,如果你尝试固定它们,hermes curator pin 会拒绝并给出说明性消息。

如果你想要比"不删除"更强的保证——例如在 Agent 仍然读取技能时完全冻结其内容——直接用编辑器编辑 ~/.hermes/skills/<name>/SKILL.md。固定保护工具驱动的删除,而不是你自己的文件系统访问。

使用遥测

策展器在 ~/.hermes/skills/.usage.json 维护一个侧边文件,每个技能一个条目:

{
"my-skill": {
"use_count": 12,
"view_count": 34,
"last_used_at": "2026-04-24T18:12:03Z",
"last_viewed_at": "2026-04-23T09:44:17Z",
"patch_count": 3,
"last_patched_at": "2026-04-20T22:01:55Z",
"created_at": "2026-03-01T14:20:00Z",
"state": "active",
"pinned": false,
"archived_at": null
}
}

计数器在以下情况递增:

  • view_count:Agent 对技能调用 skill_view
  • use_count:技能被加载到对话的提示中。
  • patch_count:对技能运行 skill_manage patch/edit/write_file/remove_file

捆绑和 Hub 安装的技能明确排除在遥测写入之外。

每次运行的报告

每次策展器运行在 ~/.hermes/logs/curator/ 下写入一个带时间戳的目录:

~/.hermes/logs/curator/
└── 20260429-111512/
├── run.json # machine-readable: full fidelity, stats, LLM output
└── REPORT.md # human-readable summary

REPORT.md 是快速查看某次运行做了什么的方式——哪些技能发生了转换,LLM 审查者说了什么,它修补了哪些技能。无需 grep agent.log 即可进行审计。

恢复归档的技能

如果策展器归档了你仍想使用的技能:

hermes curator restore <skill-name>

这会将技能从 ~/.hermes/skills/.archive/ 移回活跃树,并将其状态重置为 active。如果此后安装了同名的捆绑或 Hub 技能(会造成遮蔽),恢复将被拒绝。

按环境禁用

策展器默认启用。要关闭它:

  • 仅针对一个配置文件: 编辑 ~/.hermes/config.yaml(或活跃配置文件的配置)并设置 curator.enabled: false
  • 仅针对一次运行: hermes curator pause——暂停在会话间持久存在;使用 resume 重新启用。

策展器也会拒绝在 min_idle_hours 未经过时运行,因此在活跃的开发机器上,它自然只在安静时段运行。

另请参见