# 蚁熊技能市场
蚁熊团队内部的插件市场,同时支持 **Claude Code**、**Codex(含 ChatGPT 桌面应用与 CLI 两种形态)**和 **Hermes Agent**——汇聚团队在真实业务场景里打磨出来的技能与工作流插件,从项目管理到知识库协作,从代码审查到数据工程,装上它,让 AI 编程助手更懂蚁熊。
## 快速安装
### Claude Code
```
/plugin marketplace add https://gitea.rk-health.com/yixiong/yixiong-claude-marketplace.git
```
添加市场源之后,按需安装具体插件:
```
/plugin install huanxi@yixiong-claude-hub
/plugin install huanxi-admin@yixiong-claude-hub
/plugin install memcore@yixiong-claude-hub
/plugin install obsidian@yixiong-claude-hub
/plugin install zentao@yixiong-claude-hub
```
已安装的插件会在会话启动时自动检测更新——本仓库不走语义化版本号,每次推送 `main` 分支即视为新版本。
### Codex CLI / ChatGPT 桌面应用
Codex 的桌面客户端已经并入 **ChatGPT 桌面应用**(原先叫 Codex App),插件市场和技能在 CLI、桌面应用、VS Code 插件三端共用同一套 `.agents/plugins/marketplace.json`。
**第一步——注册市场源(仅命令行,桌面应用没有输入市场 URL 的图形入口):**
```
codex plugin marketplace add https://gitea.rk-health.com/yixiong/yixiong-claude-marketplace.git
```
没有终端环境,或者只想用桌面应用的话,也可以手动把同样的条目写进配置文件,效果等价:
- 只想在这台机器全局生效:`~/.agents/plugins/marketplace.json`
- 只想在某个仓库生效:`<仓库根目录>/.agents/plugins/marketplace.json`(本仓库已经自带一份,克隆下来就有)
写完保存后,**完全退出并重新打开 ChatGPT 桌面应用**(不是切后台,是完全退出进程)才会生效,官方文档目前没有提供"设置里粘贴 URL"这种图形化入口。
**第二步——安装插件:**
- **命令行**:
```
codex plugin add huanxi@yixiong-codex-hub
codex plugin add huanxi-admin@yixiong-codex-hub
codex plugin add memcore@yixiong-codex-hub
codex plugin add obsidian@yixiong-codex-hub
codex plugin add zentao@yixiong-codex-hub
```
- **ChatGPT 桌面应用(图形界面)**:市场源注册生效后,打开 **设置(Settings)→ 插件(Plugins)**,或侧边栏的 **Plugins** 入口,就能看到我们的市场和这五个插件,点击安装即可,不用碰命令行。
安装完成后开一个新会话,Codex 才会加载新装的技能和 MCP 工具。
> ⚠️ **桌面应用读不到 shell 里 `export` 的环境变量**:`huanxi`/`huanxi-admin`/`zentao` 的 Token 走环境变量注入(见下一节),但 macOS/Windows 上从 Dock/开始菜单启动的图形应用不会继承 `~/.zshrc` 里 `export` 的变量——这是终端应用和图形应用两种不同的启动路径决定的,不是我们插件的问题。桌面应用场景要设置成**系统级/用户级持久环境变量**才行,具体见下一节。
>
> ⚠️ **插件级 Token 配置目前是 Codex 官方还没定案的能力**:截至本文写作时,插件打包的 MCP server 没有类似 Claude 侧「安装时弹窗填 Token」的正式支持(见 [openai/codex#24401](https://github.com/openai/codex/issues/24401)),环境变量是目前唯一现实可用的路径。装完插件连不上 MCP,先检查 Token 环境变量是不是在 Codex/ChatGPT 启动**之前**就已经生效。
> Codex 侧的插件清单独立维护在 [`.agents/plugins/marketplace.json`](./.agents/plugins/marketplace.json)。除 `memcore` 外,其余四个插件与 Claude Code 版共用同一份 `skills/`;`memcore` 因为架构差异(会话入口、记忆目录约定、有无远程同步都不同)走的是独立目录 [`plugins/memcore-codex/`](./plugins/memcore-codex),两边分开维护。
### Hermes Agent
Hermes(Nous 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
# 方式一:先看会装什么,再装(本地路径,需要先 clone)
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
# 方式二:不用 clone,直接传 raw 链接(已验证可用)
hermes plugins pack install https://gitea.rk-health.com/yixiong/yixiong-claude-marketplace/raw/branch/main/packs/zentao.yaml
```
想一次装全部五个:`hermes plugins pack install ./packs/all.yaml`。
装的插件是**用户/profile 级**的,不是项目级——Hermes 的 `plugins install`/`pack install` 都没有 `--scope`/`--project` 之类的参数,固定装进 `$HERMES_HOME/plugins/`(默认 profile 就是 `~/.hermes/plugins/`),装完之后在这台机器的哪个目录开 Hermes 会话都能用,跟"只在这个仓库目录里生效"的直觉不一样。
> ⚠️ **`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"体验差一点,这是协议本身的限制,不是我们没做完。
>
> ⚠️ **`plugin.json` 的 `description` 不要写配置路径字面量**——Hermes 对 community source(非官方审核)插件的安装前安全扫描是"零容忍"策略,任意 1 个 finding 就直接 BLOCKED、`--force` 也无法覆盖;早期版本我们在 description 里写了 `~/.hermes/config.yaml` 这种点前缀路径字符串,被误判成 persistence(持久化)类危险模式挡了下来。现在 description 只放一句话简介,配置指令都放在这份 README 里,不会再触发。
>
> ⚠️ **已知问题(非我们插件的锅,等 Hermes 上游修复)**:`huanxi`/`huanxi-admin`/`zentao` 走 HTTP 类型 MCP Server,实测在 Hermes 上会卡在 `initialize` 握手之后——网桥正确返回了 `mcp-session-id`(Streamable HTTP 协议的有状态会话标识),但 Hermes 客户端没有正确捕获/回传这个 session id,导致后续请求被判定为无效、报 400,最终连接被 park。这跟 [NousResearch/hermes-agent#20349](https://github.com/NousResearch/hermes-agent/issues/20349) 描述的现象一致,用 curl 直连网桥验证过网桥本身没问题(认证、握手响应都正常)。装完插件后如果 MCP 连不上,先去这条 issue 底下看有没有新版本修复,`protocol: legacy` 试过没用(握手本身不是问题所在);`obsidian`/`memcore-hermes` 不受影响(不含 MCP)。
## 插件一览
| 插件 | 技能数 | 适用场景 | 谁需要装 | 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
寰汐是蚁熊内部的项目管理与团队协同系统。`huanxi` 以你本人的身份操作,权限与网页端一致;`huanxi-admin` 是全量管理视角,高危操作(账号启停、提权、删除)不在这个端点里,普通员工不需要装。
**配置步骤:**
1. 去寰汐「个人中心 → MCP Token 管理」自助生成一个 `hxp_` 开头的 Token(`huanxi-admin` 的 `hxa_` Token 由后台管理员单独发放,普通员工无需申请)。
2. **Claude Code**:执行 `/plugin install` 时会提示输入 Token,直接粘贴即可——存放在系统钥匙链,不会明文写入配置文件。
3. **Codex CLI / ChatGPT 桌面应用**:Codex 没有等价的钥匙链机制,Token 走环境变量注入,两种运行方式的设置方法不一样:
- **命令行**:启动前 `export` 即可,建议写进 shell 启动脚本(`~/.zshrc` / `~/.bashrc`),避免每次开新终端都要重新导出:
```bash
export HUANXI_TOKEN=hxp_你的token # huanxi 个人端
export HUANXI_ADMIN_TOKEN=hxa_你的token # huanxi-admin 管理端
```
- **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 层,记忆只落在当前仓库内。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 Code、Codex CLI、Hermes Agent 共用同一份技能内容。
### zentao
禅道是蚁熊内部的项目/需求/Bug/任务管理系统。插件覆盖项目集(program)/产品/项目/执行的层级管理、需求条线(story 用户故事 / epic 业务需求 / requirement 用户需求三种类型及其状态机)、Bug 全流程、任务状态机、测试用例与测试单、产品计划/版本/发布、反馈与工单、附件改名,共 8 个工作流技能。
**配置步骤:**
1. 登录禅道,头像下拉菜单点「获取凭证」:
2. 点击「生成凭证」——注意提示:生成新凭证会让旧凭证立即失效,且明文只在生成后展示一次,务必当场保存;有效期 14 天,到期需重新获取:
3. 弹窗会给出「API 地址」和「Token」两项,Claude Code / Codex 安装时都只需要 Token(API 地址已经写死在插件的 MCP 配置里,不用手动填):
4. **Claude Code**:执行 `/plugin install` 时会提示输入 Token,直接粘贴即可——存放在系统钥匙链,不会明文写入配置文件。
5. **Codex CLI / ChatGPT 桌面应用**:Token 走环境变量注入,设置方式同 `huanxi`:
- **命令行**:`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`。
## 开发
给这个市场新增插件、技能实现规范、`marketplace.json`/`plugin.json` 格式说明,见 [CLAUDE.md](./CLAUDE.md)。
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.-]`,1–64 字符,不能有连续 `-`/`.`),`skills/` 目录下每个直接子目录含 `SKILL.md` 即被识别为一个技能。规范本身禁止在 `mcp.json` 里内嵌密钥,所以带 Token 的插件不打包 `mcp.json`,MCP 配置走 README 里各插件小节的手动指引。新增/修改 Hermes 相关内容后,同步维护 [`packs/`](./packs) 里对应的 pack manifest(`ref` 手动 bump 到最新 commit SHA)。
## 更新记录
见 [CHANGELOG.md](./CHANGELOG.md)。