feat(hermes): 新增 Hermes Agent 插件市场支持,含独立 memcore-hermes

- huanxi/huanxi-admin/obsidian/zentao 新增裸 plugin.json(Agent Plugins v1.0.0 标准),复用同一份 skills/
- 凭证类插件不打包 mcp.json(规范禁止内嵌密钥),改为 README 里的 ~/.hermes/config.yaml 手动配置指引
- memcore-hermes:记忆目录复用优先级 .claude/memory → .codex/memory → 新建 .agents/memory,显式规避与 Hermes 原生全局 MEMORY.md/USER.md 重复记录
- 后续将追加 packs/*.yaml(hermes plugins pack install 用),需要本次 commit 的 SHA

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015D4xWG3gRWkUKJDgyvtyJw
This commit is contained in:
SkyJourney
2026-08-25 15:39:31 +08:00
co-authored by Claude Sonnet 5
parent 42f8e9f483
commit 56ae43f6d3
14 changed files with 903 additions and 24 deletions
+60 -10
View File
@@ -1,6 +1,6 @@
# 蚁熊技能市场
蚁熊团队内部的插件市场,同时支持 **Claude Code****Codex(含 ChatGPT 桌面应用与 CLI 两种形态)**——汇聚团队在真实业务场景里打磨出来的技能与工作流插件,从项目管理到知识库协作,从代码审查到数据工程,装上它,让 AI 编程助手更懂蚁熊。
蚁熊团队内部的插件市场,同时支持 **Claude Code****Codex(含 ChatGPT 桌面应用与 CLI 两种形态)**和 **Hermes Agent**——汇聚团队在真实业务场景里打磨出来的技能与工作流插件,从项目管理到知识库协作,从代码审查到数据工程,装上它,让 AI 编程助手更懂蚁熊。
## 快速安装
@@ -61,15 +61,37 @@ codex plugin marketplace add https://gitea.rk-health.com/yixiong/yixiong-claude-
> Codex 侧的插件清单独立维护在 [`.agents/plugins/marketplace.json`](./.agents/plugins/marketplace.json)。除 `memcore` 外,其余四个插件与 Claude Code 版共用同一份 `skills/``memcore` 因为架构差异(会话入口、记忆目录约定、有无远程同步都不同)走的是独立目录 [`plugins/memcore-codex/`](./plugins/memcore-codex),两边分开维护。
### Hermes Agent
HermesNous Research 开源的本地 Agent)没有像 Claude/Codex 那样的"注册市场源"命令,但官方支持一个跨客户端开放标准 [Agent Plugins v1.0.0](https://agent-plugins.org/)`plugin.json` + `skills/`),且 `hermes plugins pack install` 支持 `subdir` 定位 monorepo 子目录——所以我们没有另开仓库,而是在每个插件根目录放一份裸 `plugin.json`,复用同一份 `skills/`,用一组 [`packs/`](./packs) 里的 pack manifest 文件做选装。
**安装(想装哪个装哪个,互不影响):**
```bash
git clone https://gitea.rk-health.com/yixiong/yixiong-claude-marketplace.git
cd yixiong-claude-marketplace
hermes plugins pack show ./packs/zentao.yaml # 先看会装什么
hermes plugins pack install ./packs/zentao.yaml # 确认后装(想装别的插件换文件名)
```
想一次装全部五个:`hermes plugins pack install ./packs/all.yaml`。
> ⚠️ **`ref` 是手动维护的定长 commit SHA,不会像 Claude Code 那样自动追新**——Hermes 的 pack manifest 要求精确 40 位 commit SHA,不接受分支名,我们每次发布都会同步 bump `packs/*.yaml` 里的 `ref`;如果你 clone 下来的代码比 pack 文件新,装的仍是 pack 里锁定的那个旧版本,想要最新内容就 `git pull` 到对应 commit 或等我们下一次发布。
>
> ⚠️ **凭证类插件(`huanxi`/`huanxi-admin`/`zentao`)不含 MCP 声明**——Agent Plugins v1 的 `mcp.json` 规范明文禁止内嵌密钥,所以这三个插件只打包了技能,MCP Server 需要你在 `~/.hermes/config.yaml` 里手动加几行(下面各插件小节有具体片段),比 Claude 的"装插件时弹窗填 Token"体验差一点,这是协议本身的限制,不是我们没做完。
>
> ⚠️ **两处我没能用真实 Hermes 验证、需要你实测反馈的点**:① `hermes plugins pack install` 是否支持直接传 raw 链接(不用先 clone);② `subdir` 指向的目录是纯 `plugin.json`(没有原生 `plugin.yaml`)时能否被正确识别——文档都没写明,等你的 Hermes 装一次就知道了。
## 插件一览
| 插件 | 技能数 | 适用场景 | 谁需要装 | Claude Code | Codex |
|---|---|---|---|:---:|:---:|
| [`huanxi`](./plugins/huanxi) | 7 | 寰汐企业管理系统个人端——日报、负责人日报、任务、议题、会议、组织检索 | 全员 | ✅ | ✅ |
| [`huanxi-admin`](./plugins/huanxi-admin) | 4 | 寰汐管理端——汇报盘点、模块与成员配置、运维简报 | 需要后台管理员发放 `hxa_` Token 的管理岗 | ✅ | ✅ |
| [`memcore`](./plugins/memcore) / [`memcore-codex`](./plugins/memcore-codex) | 4 | 项目记忆体系核心引擎——跨会话记忆的同步/增量更新/健康校验 | 用 Claude Code Codex 做长期项目的开发者 | ✅ | ✅ |
| [`obsidian`](./plugins/obsidian) | 10 | Obsidian 知识库全套协作工作流——vault 管理、搜索图谱、Bases、Canvas、每日笔记等 | 用 Obsidian 做知识管理的人 | ✅ | ✅ |
| [`zentao`](./plugins/zentao) | 8 | 禅道项目管理——项目集/产品/项目/执行、需求(story/epic/requirement)、Bug、任务、测试、计划与发布、反馈工单 | 用禅道管项目/需求/Bug/任务的人 | ✅ | ✅ |
| 插件 | 技能数 | 适用场景 | 谁需要装 | Claude Code | Codex | Hermes |
|---|---|---|---|:---:|:---:|:---:|
| [`huanxi`](./plugins/huanxi) | 7 | 寰汐企业管理系统个人端——日报、负责人日报、任务、议题、会议、组织检索 | 全员 | ✅ | ✅ | ✅ |
| [`huanxi-admin`](./plugins/huanxi-admin) | 4 | 寰汐管理端——汇报盘点、模块与成员配置、运维简报 | 需要后台管理员发放 `hxa_` Token 的管理岗 | ✅ | ✅ | ✅ |
| [`memcore`](./plugins/memcore) / [`memcore-codex`](./plugins/memcore-codex) / [`memcore-hermes`](./plugins/memcore-hermes) | 4 | 项目记忆体系核心引擎——跨会话记忆的同步/增量更新/健康校验 | 用 Claude Code / Codex / Hermes 做长期项目的开发者 | ✅ | ✅ | ✅ |
| [`obsidian`](./plugins/obsidian) | 10 | Obsidian 知识库全套协作工作流——vault 管理、搜索图谱、Bases、Canvas、每日笔记等 | 用 Obsidian 做知识管理的人 | ✅ | ✅ | ✅ |
| [`zentao`](./plugins/zentao) | 8 | 禅道项目管理——项目集/产品/项目/执行、需求(story/epic/requirement)、Bug、任务、测试、计划与发布、反馈工单 | 用禅道管项目/需求/Bug/任务的人 | ✅ | ✅ | ✅ |
### huanxi / huanxi-admin
@@ -91,16 +113,31 @@ codex plugin marketplace add https://gitea.rk-health.com/yixiong/yixiong-claude-
- **ChatGPT 桌面应用(图形界面启动,不经过 shell)**:`export` 对它无效,要设成系统级持久变量:
- macOS:终端里跑一次 `launchctl setenv HUANXI_TOKEN hxp_你的token``huanxi-admin` 同理换成 `HUANXI_ADMIN_TOKEN`),然后重新打开桌面应用;这个设置只在当前登录会话有效,重启电脑要重新执行,长期用建议放进登录项脚本
- Windows:「系统属性 → 环境变量」里新增用户变量 `HUANXI_TOKEN` / `HUANXI_ADMIN_TOKEN`,保存后重新打开应用
4. **Hermes Agent**:装完插件包(只含技能,不含 MCP 声明)后,在 `~/.hermes/config.yaml` 里手动加一段,`${VAR}` 会在连接时从环境变量解析,不会明文写死在文件里:
```yaml
mcp_servers:
huanxi:
url: "https://huanxi.office.yixiong-tech.com/mcp/"
headers:
Authorization: "Bearer ${HUANXI_TOKEN}"
huanxi-admin: # 只有装了 huanxi-admin 才需要这段
url: "https://huanxi.office.yixiong-tech.com/admin-mcp/"
headers:
Authorization: "Bearer ${HUANXI_ADMIN_TOKEN}"
```
再设置环境变量(Hermes 是本地长驻进程,跟终端应用同源,`export` 写法同 Codex CLI 那节):`export HUANXI_TOKEN=hxp_你的token`。
### memcore
给 AI 编程助手加一套跨会话持久记忆的引擎:`memory-sync` 做全量同步、`memory-update` 做增量写入、`memory-lint` 做健康校验(孤儿引用、断链、内容矛盾、过期检测)。不依赖 MCP,纯技能实现,**无需任何配置,安装即用**。
Claude Code 版([`plugins/memcore`](./plugins/memcore))以 `.claude/memory/` 为唯一权威,`memory-sync` 会额外和 `~/.claude/projects/*/memory/` 做远程镜像同步,支持多机协作。Codex 版([`plugins/memcore-codex`](./plugins/memcore-codex))架构不同:会话入口是 `AGENTS.md` 而非 `CLAUDE.md`,记忆目录优先复用已有的 `.claude/memory/`、否则落在 `.codex/memory/`,且**不做远程同步**——Codex 没有等价的跨机器 auto memory 层,记忆只落在当前仓库内。个版本共享同一套 `SYNTHESIS_THRESHOLD`、过期检测速度分档等常量设计,但各自独立维护。
Claude Code 版([`plugins/memcore`](./plugins/memcore))以 `.claude/memory/` 为唯一权威,`memory-sync` 会额外和 `~/.claude/projects/*/memory/` 做远程镜像同步,支持多机协作。Codex 版([`plugins/memcore-codex`](./plugins/memcore-codex))架构不同:会话入口是 `AGENTS.md` 而非 `CLAUDE.md`,记忆目录优先复用已有的 `.claude/memory/`、否则落在 `.codex/memory/`,且**不做远程同步**——Codex 没有等价的跨机器 auto memory 层,记忆只落在当前仓库内。Hermes 版([`plugins/memcore-hermes`](./plugins/memcore-hermes))会话入口同样是 `AGENTS.md`,记忆目录复用优先级是 `.claude/memory/` → `.codex/memory/` → 都没有则新建 `.agents/memory/`(目录名不绑定单一工具,方便未来第三个工具接入);Hermes 自己有一套按 profile 隔离的全局记忆(`~/.hermes/memories/MEMORY.md`/`USER.md`),跟项目级记忆是两回事,memcore-hermes 会在同步时提醒这个边界,避免同一份项目事实两处漂移。三个版本共享同一套 `SYNTHESIS_THRESHOLD`、过期检测速度分档等常量设计,但各自独立维护。
### obsidian
检测到项目里有 `.obsidian/` 目录会自动激活,覆盖 vault 管理、全文与图谱搜索、frontmatter、任务、每日笔记、Bases 数据库、Canvas 视觉层、版本历史、插件配置、PKM 编排十个技能,对标社区里比较成熟的 Obsidian 技能实现后做了扩展。**无需任何配置**,Claude CodeCodex CLI 共用同一份技能内容。
检测到项目里有 `.obsidian/` 目录会自动激活,覆盖 vault 管理、全文与图谱搜索、frontmatter、任务、每日笔记、Bases 数据库、Canvas 视觉层、版本历史、插件配置、PKM 编排十个技能,对标社区里比较成熟的 Obsidian 技能实现后做了扩展。**无需任何配置**,Claude CodeCodex CLI、Hermes Agent 共用同一份技能内容。
### zentao
@@ -125,6 +162,17 @@ Claude Code 版([`plugins/memcore`](./plugins/memcore))以 `.claude/memory/`
- **命令行**`export ZENTAO_TOKEN=你的token`,建议写进 `~/.zshrc` / `~/.bashrc`
- **ChatGPT 桌面应用**macOS 用 `launchctl setenv ZENTAO_TOKEN 你的token`,Windows 走「系统属性 → 环境变量」新增用户变量 `ZENTAO_TOKEN`,设置后需重新打开应用
6. **Hermes Agent**:装完插件包后在 `~/.hermes/config.yaml` 里加一段(注意 zentao-mcp 网桥认的 header 字段是 `token`,不是标准 `Authorization: Bearer`):
```yaml
mcp_servers:
zentao:
url: "https://pm.ops.yixiong-tech.com/mcp"
headers:
token: "${ZENTAO_TOKEN}"
```
再 `export ZENTAO_TOKEN=你的token`。
## 开发
@@ -132,6 +180,8 @@ Claude Code 版([`plugins/memcore`](./plugins/memcore))以 `.claude/memory/`
Codex 插件的 `.codex-plugin/plugin.json` 有几个硬性约束(用本机 `plugin-creator` 技能自带的 `validate_plugin.py` 校验):`skills` 字段必须精确指向 `./skills`、`mcpServers` 字符串路径必须精确指向 `./.mcp.json`(都在插件根目录,不能嵌套在 `.codex-plugin/` 里),且顶层 `interface` 块(`displayName`/`shortDescription`/`longDescription`/`developerName`/`category`/`capabilities`/`defaultPrompt`)是必填项。
Hermes 插件走开放标准 [Agent Plugins v1.0.0](https://agent-plugins.org/specification)`plugin.json` 是裸文件(不嵌套在点前缀目录里),必需字段只有 `$schema` + `name``name` 限定 `[a-z0-9.-]`164 字符,不能有连续 `-`/`.`),`skills/` 目录下每个直接子目录含 `SKILL.md` 即被识别为一个技能。规范本身禁止在 `mcp.json` 里内嵌密钥,所以带 Token 的插件不打包 `mcp.json`MCP 配置走 README 里各插件小节的手动指引。新增/修改 Hermes 相关内容后,同步维护 [`packs/`](./packs) 里对应的 pack manifest`ref` 手动 bump 到最新 commit SHA)。
## 更新记录
见 [CHANGELOG.md](./CHANGELOG.md)。