插件目录
插件目录是一份经过精选、人工审核的 Hermes 插件名录,你可以用一条命令按名安装:
hermes plugins install <name>
在 /docs/plugins 可视化浏览——条目按分类上架(记忆、桌面、平台、Web 与浏览器、工具、语音、自动化、模型),带搜索、层级过滤(官方 / 社区)、能力标签,以及每个条目专属的在 Hermes 桌面端打开按钮和可复制 CLI 命令。
每个条目还有自己的页面 /docs/plugins/<name>(点击卡片):完整描述与任何披露、固定 commit、工具、钩子和环境变量、桌面端安装按钮与 CLI 命令、可选截图,以及来自被审核 commit 的 README,外加一个该作者更多作品货架。维护者有一个 /docs/plugins/by/<maintainer> 页面,列出他们在目录中维护的一切。两者都在构建时从同一目录文件生成,因此合并 PR 是页面变更的唯一途径。
在桌面端,打开能力 → 插件 → 浏览进入原生目录视图。它不是内嵌网站。已安装是独立标签页,由应用的桌面插件注册表和所选 profile 的 agent 插件状态支撑,而非目录元数据。Skills 使用同样的已安装 / 浏览布局;搜索留在顶部,标签切换和操作共享一行。
目录是对既有插件系统的补充——而非替代。你能从目录安装的一切,底层都是普通插件;目录只是在其上增加了发现和审核层。
在桌面端上手引导期间,设置向导也可通过审批卡片提供目录插件和 skill。每行只有在你点击安装时才装入你的 default profile,且固定为本页所述的同一被审核 commit。
已发布的浏览数据
网站和桌面端读取同一份生成的 CDN 快照:
https://hermes-agent.nousresearch.com/docs/api/plugins.json。
桌面端通过 https://nousresearch.github.io/hermes-agent/docs/api/plugins.json 获取;公开文档别名提供同一数据。文档构建读取 plugin-catalog/*.yaml 并加入缓存的仓库 star 数。它还发布安装器的已移除条目列表。两个浏览视图都不爬取源码仓库或实时查询 GitHub API。
此浏览快照不同于安装器的 plugin-catalog.json,后者负责解析目录名和固定版本。
一个条目的内容
每个目录条目是 hermes-agent 仓库 plugin-catalog/ 目录中的一个小 YAML 文件,声明:
| 字段 | 含义 |
|---|---|
name | 你传给 hermes plugins install 的目录键 |
repo | 插件的公开 git 仓库 |
sha | 被审核的精确 40 位十六进制 commit——安装检出此固定版本,而非分支尖端 |
tier | official(由 NousResearch 维护)或 community |
category | 浏览货架:desktop(默认)、memory、platform、web、tools、voice、automation、models 或 general |
maintainer | 插件所有者 |
capabilities | 声明的工具、钩子、中间件和必需环境变量 |
requires_hermes | 最低 Hermes 版本,如 >=0.19(可选) |
platforms | 操作系统限制,空 = 全部(可选) |
title | 卡片上显示的人类可读名称,如 NVIDIA App(可选;默认 name) |
onboarding | true 在桌面端上手引导卡片上、托管连接器旁边、其列出的平台上提供该插件。精选:仅官方条目(可选,默认 false) |
docs_url | 外部文档链接(可选) |
version | 固定 sha 的人类可读标签,如 "1.4.0";在 CLI、目录卡片和桌面端更新到按钮上显示为 1.4.0 @ abcd1234(可选,装饰性) |
image | 目录卡片和插件页头图的横幅图,按 2:1 显示(1200×600 可用;其他形状居中裁剪);raw.githubusercontent.com、github.com 或 *.githubusercontent.com 上的 https URL(可选)。把它固定到条目 commit(raw.githubusercontent.com/owner/repo/<sha>/...),使它在审核下永不变化 |
screenshots | 插件页上作为图库展示的最多 6 张图,主机规则同 image(可选)。同样固定到条目 commit |
readme | 插件页默认渲染仓库 README(优先条目 subdir,否则仓库根)。它在文档构建时从固定 commit 拉取——绝不来自分支——因此页面显示审核者读过的 README,只在固定版本变动时才变。设 false 隐藏。GitHub 和 GitLab 仓库(可选,默认 true) |
信任模型
目录的设计让你确切知道自己在安装什么:
- 人工合并准入。 每个条目(及每次固定版本更新)都经维护者评审的 pull request 落地。没有任何内容自动进入目录。
- 精确 SHA 固定。 条目固定特定 commit,而非分支。插件作者向仓库推送新代码不会改变目录安装的内容——更新固定版本需要另一个经评审的 PR。
- 准入时扫描,安装时信任。 准入 CI 运行与安装器相同的安全扫描器(
hermes plugins validate含security scan检查):dangerous判定使条目失败,caution发现项列给审核者。由于审核者已见过它们,在精确固定 SHA 检出的目录安装不会停下来再次询问caution;dangerous仍会阻断,而从裸 URL 或另一修订安装的任何内容仍走正常提示。 - 桌面插件以应用权限运行——审核是边界。 插件的
desktop/plugin.js在桌面应用内部求值,与应用自身代码同一 realm:没有沙箱,它能做应用能做的一切(网关 RPC、完整window.hermesDesktop桥、其他插件的存储)。保护你的是上述信任模型——人工读过精确固定 commit,安装就是那个 commit——外加两道绊线:准入的desktop surfacelint 拒绝插件 SDK 之外的明显操作(打补丁内置原型、eval、导入@hermes/plugin-sdk/react之外的任何东西、含远程脚本),应用加载器在加载时再次拒绝每个非 SDK 导入。lint 把<script正则——字面量,或直接传给.replace()/.split()/.match()或用作.test()/.exec()的new RegExp(...)模式字符串——当作它本就是的 sanitiser 来读,而非注入;写入 DOM 的<script字符串,包括由new RegExp(...).source构建的那个,仍然失败。把 lint 视为审核辅助而非保证;给桌面端那一半与 Python 那一半同样的审视。 - 能力声明。 条目 upfront 说明插件提供哪些工具、钩子和中间件,以及需要哪些环境变量(API 密钥等),使你能在安装前判断其影响范围。
- 已移除列表。 从目录撤下的插件(例如安全事件后)连同原因和日期进入
plugin-catalog/removed.yaml。按名称或仓库身份匹配——同一仓库的git@、ssh://、http://和www.写法都匹配。安装器拒绝安装已移除列表上的任何内容;在你安装之后才上列表的插件停止更新、不能启用,并在加载时被拒绝(hermes plugins remove <name>,或用--allow-removed知情保留)。 - 已安装 ≠ 已启用。 安装目录插件只是把它放到磁盘上;与任何插件一样,它仍须启用后才加载。见插件 → 启用与禁用。
一个目录条目意味着人工看过固定 commit、核对过能力声明、仓库达到提交门槛。它不是安全审计,也不说明同一仓库中其他 commit 的任何情况。把凭据交给任何东西之前,先审它的代码。
从目录安装
在网站上,在 Hermes 桌面端打开会打开这种形式的协议链接:
hermes://plugin/install?catalog=example-plugin
桌面端按已发布目录解析名称,并请你在确认前审核来源、目标和组件。该链接不会自动安装,也不自带仓库或 commit。未知名称或查询失败显示错误;它绝不会回退到仓库安装。对 agent 插件组件,后端把目录名解析到其被审核固定版本。
目录链接和 Skills Hub 的 hermes://skill/install?identifier=... 路由请使用较新的桌面端构建。卡片保留 CLI 命令,因此你无需桌面端即可按目录名安装:
# 按名安装经审核的目录条目(检出固定 SHA)
hermes plugins install <name>
# 然后启用它,与任何插件一样
hermes plugins enable <name>
安装提示在克隆任何内容之前显示条目的能力摘要——声明的工具、钩子和必需环境变量。
目录名与插件自己的 manifest 名可以不同;hermes plugins install 打印安装后的名称,enable 用那个名字。例如 touchdesigner 条目(一个可移植的 Agent Plugins v1 包,把 twozero MCP 服务器与 touchdesigner-mcp skill 打包在一起)安装为 td,刻意保持简短,使其生成的 MCP 工具名低于提供商函数名限制:
hermes plugins install touchdesigner
hermes plugins enable td
可移植包还可携带一个 stdio MCP 服务器。snyk 条目固定 Snyk CLI(npx -y snyk@<version> mcp)并打包 snyk-security-scan skill,因此一次安装就为 Hermes 提供代码、依赖、容器和 IaC 扫描加使用它的工作流;目录名与 manifest 名一致:
hermes plugins install snyk
hermes plugins enable snyk
更新目录安装
hermes plugins update <name> 对目录安装从不跑 git pull——它把你已安装的固定版本与当前目录固定版本比较,当目录移动了(经评审 PR)时,在发布前准备并校验新 SHA 的依赖。你的启用/禁用状态保留,插件仓库不跟踪的文件(从其 .example 创建的 config.yaml、数据文件、.env)也保留。这些未跟踪文件中的符号链接绝不跟随进入新代码:更新在发布前停下并点名它们,请你把每个替换为普通文件。依赖和缓存目录(.venv/、venv/、node_modules/、工具缓存)一律不携带,包括其中的链接;更新后的插件重建其依赖。monorepo/子目录安装不带本地 Git checkout,更新保留新修订不附带的用户状态文件。插件代码和控制界面仍归修订所有,不从旧安装复活:源文件(Python、JavaScript/TypeScript 含 .mjs/.cjs/.jsx/.tsx、shell、Ruby、Perl、PHP)、顶层 dashboard/、desktop/、skills/、sidecar/ 和 node_modules/ 目录、插件 manifest、mcp.json 和依赖元数据(pyproject.toml、package.json、lockfile)。若某用户状态路径与新树的文件/目录布局冲突,更新在发布前停下,使已安装副本——以及用户数据——保持完好。你对被跟踪文件做的编辑不会带到新代码;副本保存在 ~/.hermes/plugins-backup/<name>-<sha>/ 下,更新会警告你。若新固定版本重命名了插件 manifest,旧目录被移除,你的启用标志跟随新名称。hermes plugins list 把目录安装显示为 catalog:<tier>@<sha>,让你一眼看到来源。
PM 在新代码替换已安装版本前校验活动插件的依赖。版本、扫描、依赖或发布失败都保留正在工作的代码和依赖选择。已禁用插件保持禁用。来源由安装器记录在 ~/.hermes/plugins/.install-metadata.json,位于插件自己的树之外——一个仓库无法附带一个文件让自己看起来像经审核的目录安装。(插件目录内的 .hermes-catalog.json 只是便捷副本。)用 --ref <sha> 安装目录条目会记录你实际检出的 SHA,因此 list、桌面端插件标签页和 update 都把它报告为偏离被审核固定版本。自定义 Git 插件保留其记录的 Git/feed 更新策略,但使用同一 PM 校验和发布路径。
目录中没有的名称
一个裸名若不是目录条目即是错误:不存在第二个未经审核的名称索引。请改用 owner/repo 或 Git URL 安装这类插件(自定义来源,见下),或把它们提交到目录。
实时刷新
文档构建把目录发布为一份 JSON 文档
(https://hermes-agent.nousresearch.com/docs/api/plugin-catalog.json)。
search/install/update 最多每六小时取一次,缓存于 ~/.hermes/cache/,因此新条目和移除无需更新 Hermes 即到达已安装客户端。离线时,缓存副本最多用 24 小时,然后由你 checkout 附带的副本接管(失败的获取被记住一分钟,因此 plugins list 和仪表盘插件页最多付一次连接超时,而非每个已安装插件一次)。当缓存文档与你的 checkout 在某条目的固定版本上不一致时,二者中较新者胜出——一份在文档发布后提交了目录的 git checkout(一次新的 hermes update)安装它自己的固定版本,绝不装缓存中的旧版。树内列表和实时列表中的移除始终都强制,无论缓存多旧。
自定义 git URL 不同
hermes plugins install <git-url> 对任何仓库仍有效,但它完全绕开目录:
- 无审核——你拿到的是分支尖端的内容,而非被审核的固定版本。
- 显示警告横幅,明确代码未经审查。
- 仍查阅已移除列表(已知不良仓库按 URL 拒绝)。
把 git-URL 路径用于你自己的插件和你已信任的仓库;用目录做发现。
向目录提交插件
提交即添加一个 plugin-catalog/<name>.yaml 文件的 pull request。完整清单见
plugin-catalog README;简言之,一个条目必须:
- 所有者提交——PR 作者拥有或维护该插件仓库。维护者也会从经审核的扫库中加入批量社区插件(每个固定版本都在被固定 commit 处校验并扫描);若你的插件被扫入,而你想改或撤,对你的条目开 PR。
- 公开仓库——
repoURL 可公开克隆。 - 已发布——仓库有真实 release/tag,而非只有默认分支。
- 通过校验——目录校验 GitHub Action 在 PR 上为绿(schema、SHA 格式、可达性)。
- 不自更新——目录构建不得下载并替换自己的文件;固定 SHA 是唯一更新路径(一个 SHA 升级 PR 加
hermes plugins update <name>)。
固定版本更新(把 sha 升到更新 commit)遵循同一 PR + 审核流程;在同一 PR 中升 version,使用户看到的标签与代码匹配,并重新固定任何内嵌 sha 的 image / screenshots URL。你的插件页(/docs/plugins/<name>)由同一文件构建:在那里加 screenshots: 即可填充(README 默认渲染)——没有单独的列表要维护。已安装插件把记录的 sha 与实时固定版本比较:hermes plugins list --json 报告 update_available,桌面端插件标签页显示更新到 1.4.0 按钮,hermes plugins update <name> 精确检出新固定版本。
另见
- 插件——插件系统本身:manifest 格式、启用、配置
- 内置插件——随 Hermes 分发的插件
- 构建一个 Hermes 插件——写你自己的
- 插件目录页——可浏览目录