跳到主要内容

内置插件

Hermes 自带一小组随仓库一起分发的插件。它们位于 <repo>/plugins/<name>/ 下,并会与安装在 ~/.hermes/plugins/ 里的用户插件一起被发现。它们和第三方插件使用的是同一套插件接口:hooks、tools、slash commands,只是这些插件由仓库内部维护。

通用插件系统见 Plugins,自己编写插件请参考 Build a Hermes Plugin

发现机制

PluginManager 会按以下顺序扫描四类来源:

  1. Bundled<repo>/plugins/<name>/(本页所描述的对象)
  2. User~/.hermes/plugins/<name>/
  3. Project./.hermes/plugins/<name>/(需设置 HERMES_ENABLE_PROJECT_PLUGINS=1
  4. Pip entry pointshermes_agent.plugins

若发生同名冲突,后面的来源会覆盖前面的来源。例如,一个名为 disk-cleanup 的用户插件会替换掉 bundled 版本。

plugins/memory/plugins/context_engine/ 会被刻意排除在 bundled 扫描之外,因为这两类目录有自己的发现路径;记忆大模型提供商(provider)和上下文引擎都是单选型 provider,需要通过 hermes memory setupcontext.engine 配置进行选择。

Bundled 插件是 opt-in 的

Bundled 插件默认随仓库分发,但不会自动启用。发现系统会识别它们,因此它们会显示在 hermes plugins list 和交互式 hermes plugins UI 中;但在你明确启用前,它们不会加载:

hermes plugins enable disk-cleanup

或者通过 ~/.hermes/config.yaml

plugins:
enabled:
- disk-cleanup

这与用户安装的插件采用相同机制。Bundled 插件永远不会被自动启用,无论是全新安装,还是已有用户升级到新版本 Hermes,都必须由你显式 opt in。

要再次关闭某个 bundled 插件:

hermes plugins disable disk-cleanup
# 或者:把它从 config.yaml 的 plugins.enabled 中移除

当前附带的插件

disk-cleanup

自动跟踪并清理会话中产生的临时文件,例如测试脚本、临时输出、cron 日志、过期 Chrome profile,而不需要智能体自己记得去调用清理工具。

工作方式:

Hook行为
post_tool_callwrite_file / terminal / patchHERMES_HOME/tmp/hermes-* 下创建符合 test_*tmp_**.test.* 模式的文件时,会静默将其作为 test / temp / cron-output 记录下来。
on_session_end如果本轮中有测试文件被自动跟踪,就执行安全的 quick 清理,并记录一行摘要日志;否则保持静默。

删除规则:

类别阈值是否需要确认
test每次会话结束从不
temp跟踪后超过 7 天从不
cron-output跟踪后超过 14 天从不
HERMES_HOME 下的空目录始终从不
research超过 30 天且不在最新 10 条内总是(仅 deep 模式)
chrome-profile跟踪后超过 14 天总是(仅 deep 模式)
大于 500 MB 的文件从不自动删除总是(仅 deep 模式)

Slash command/disk-cleanup 在 CLI 和网关会话中都可用:

/disk-cleanup status                     # breakdown + top-10 largest
/disk-cleanup dry-run # preview without deleting
/disk-cleanup quick # run safe cleanup now
/disk-cleanup deep # quick + list items needing confirmation
/disk-cleanup track <path> <category> # manual tracking
/disk-cleanup forget <path> # stop tracking (does not delete)

状态文件 — 所有状态都保存在 $HERMES_HOME/disk-cleanup/

文件内容
tracked.json已跟踪路径及其类别、大小、时间戳
tracked.json.bak上述文件的原子写备份
cleanup.log所有 track / skip / reject / delete 操作的追加式审计日志

安全边界 — 清理逻辑只会操作 HERMES_HOME/tmp/hermes-* 下的路径。Windows 挂载路径(如 /mnt/c/...)会被拒绝。像 logs/memories/sessions/cron/cache/skills/plugins/disk-cleanup/ 自身这类顶层状态目录,即使为空也不会被删除,因此新安装实例不会在第一次会话结束时被“清空”。

启用方式: hermes plugins enable disk-cleanup(或在 hermes plugins 中勾选)。

再次关闭: hermes plugins disable disk-cleanup

添加新的 bundled 插件

Bundled 插件和其他 Hermes 插件写法完全一致,参见 Build a Hermes Plugin。不同点仅在于:

  • 目录位于 <repo>/plugins/<name>/,而不是 ~/.hermes/plugins/<name>/
  • hermes plugins list 中,manifest 来源会显示为 bundled
  • 同名用户插件会覆盖 bundled 版本

以下情况适合把插件作为 bundled 插件随仓库发布:

  • 它没有可选依赖(或者依赖已包含在 pip install .[all] 中)
  • 该行为对大多数用户有价值,而且更像 opt-out,而不是 opt-in
  • 它依赖生命周期 hooks,而这些逻辑否则需要智能体自己记得手动触发
  • 它补充了某项核心能力,但不会扩大模型可见的工具面

反例:更适合保留为用户自装插件而非 bundled 的情况包括:第三方集成(需要 API key)、小众工作流、依赖树很大的方案,以及任何会显著改变智能体默认行为的插件。