Skip to content

v7.15.3:新版 Hermes 认得出 Nyx 是记忆插件(--enable 会设好 memory.provider);安装后说明改为英文在前 - #24

Merged
sixgodgit merged 2 commits into
mainfrom
claude/intelligent-hawking-oeyjx8
Oct 25, 2026
Merged

sixgodgit merged 2 commits into
mainfrom
claude/intelligent-hawking-oeyjx8

Conversation

@sixgodgit

Copy link
Copy Markdown
Owner

问题

提交 Hermes 插件目录前,我在主线版 Hermes 上用 PyPI 上的 7.15.2 做了一次真实安装。结果 hermes plugins install sixgodgit/nyx/hermes-plugin --enable 之后,memory status 显示 Provider: (none — built-in only):Nyx 装上了,但没有启用。安装时还打出了「✓ Plugin nyx enabled.」,用户会以为它已经在工作。

原因:主线版 Hermes 判断记忆插件的方式变了。它解析插件目录里 .py 文件的语法树,寻找真实的 register_memory_provider(...) 调用(plugins/memory/__init__.py 的 _defines_memory_provider),注释和文档字符串里出现这个词不算。我们的入口文件只是把调用转给 nyx-memory,这个词只出现在注释里,所以被当成了普通插件:只写进 plugins.enabled,没有设置 memory.provider。我用 Hermes 主线版自己的这个函数验证过,钉住的 v7.15.2 提交返回 False,新提交返回 True。

稳定版(v0.21.5 / 2026.9.24)仍按字面匹配这个词,所以能识别,但它安装时本来就不会设置 memory.provider。

另一个问题:after-install.md 写的是「没加 --enable 才需要执行 hermes config set memory.provider nyx」。这在两个版本上都不对,照着做的用户 Nyx 不会启用。

改动

  • hermes-plugin/__init__.py、hermes-plugin-vector/__init__.py:入口文件自己调用 ctx.register_memory_provider(NexSandglassProvider()),在此之前先调用 apply_data_dir(),按当前 profile 的 nyx.json 定数据目录。
    • 行为和原来的 nexsandglass_hermes.register 完全一样。
    • 用到的接口 7.15.2 里都有,所以依赖下限保持 nyx-memory>=7.15.2,<8。
  • install.py 的 SHIM:给老版本 Hermes 的安装路径写出的入口文件,做了同样的改动。
  • after-install.md:
    • 改成英文在前、中文在后;
    • 把设置 memory.provider 写成必做步骤(重复执行也没有影响);
    • 列出 hermes nyx … 终端命令。
  • 版本号升到 7.15.3,补上 CHANGELOG 和 README。
  • 新测试 test_new_hermes_recognises_memory_provider:按主线版 Hermes 的语法树规则,检查两个插件目录和 install 写出的入口文件。改动之前这个测试失败,改动之后通过。

验证

  • 本地 pytest:665 passed,2 skipped。
  • 主线版 Hermes,全新的 HERMES_HOME:hermes plugins install sixgodgit/nyx/hermes-plugin --ref ec7aa40… --enable --yes-deps 输出「✓ nyx set as memory.provider」,config.yaml 里有 provider: nyx,memory status 显示 Provider: nyx。依赖从 PyPI 解析到 7.15.2,说明新入口文件在下限版本上也能工作。
  • 稳定版 Hermes v0.21.5,全新的 HERMES_HOME:同样安装,再执行 config set memory.provider nyx,memory status 显示 Provider: nyx,hermes nyx doctor --json 返回 ok。

之后

合并后 Hermes 插件目录的条目会钉在这次的合并提交上。依赖下限还是 7.15.2,所以目录的 CI 不需要等 7.15.3 发布;但请照常发布 v7.15.3,让版本号和老版本 Hermes 的安装路径保持一致。


Generated by Claude Code

…英文在前

Hermes 主线版按语法树里的 register_memory_provider(...) 调用认记忆插件,注释里的字不算;
v7.15.2 的入口文件只在注释里提到它,被当成普通插件,--enable 不设 memory.provider。
入口文件现在自己调用 ctx.register_memory_provider;after-install.md 把设 memory.provider 写成必做。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ZZeQFn5F6mEbmX8vPsf4g
@sixgodgit
sixgodgit merged commit b7418cc into main Oct 25, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants