awesome-codex-subagents-opencode

中文文档
0.2.1发布于 2026/11/03MITES Module零依赖

174 Codex subagent definitions adapted for OpenCode, with locale-aware descriptions in 5 languages

原始使用文档
文档目录25 节
  1. 它解决什么问题
  2. 覆盖范围
  3. 快速开始
  4. 或者从仓库安装
  5. 参数
  6. 用 npm 脚本(在仓库根目录)
  7. 预设
  8. 三个设计取舍
  9. 项目来源
  10. 描述语言:随系统自动选择,可随时切换
  11. 安装时自动检测
  12. 随时切换
  13. 添加新语言
  14. 为什么只翻译 description
  15. 设计细节
  16. 1. 不写死模型
  17. 2. MCP 依赖去厂商化
  18. 3. 权限映射
  19. 字段映射
  20. CLI 参数
  21. 对非 GPT 与开源模型的说明
  22. 已知限制
  23. 仓库结构
  24. 校验
  25. 许可证

awesome-codex-subagents → OpenCode

English | 简体中文

174 个专家 agent,一条命令装进 OpenCode。

OpenCode 的 @ 菜单,显示 reviewer、debugger 等 agent 及其权限

OpenCode 自带的 subagent 只有 general 和 explore 两个。当你需要一次真正到位的 PR 级代码审查、一份能落地的威胁建模、一次跨文件的架构重构规划,往往只能靠主 agent 一边读上下文一边现编 —— 既占上下文,质量也不稳定。

这个仓库把它变成了开箱即用的东西:

npx awesome-codex-subagents-opencode --global

装完重启 OpenCode,敲 @reviewer 就能让一个只读的审查者独立跑完整个 diff,只把结论 带回你的对话。它不会污染主上下文,也不会顺手改你的文件。不需要 clone,也不需要先装依赖。

它解决什么问题

痛点这个仓库的做法
长任务把主上下文塞满每个 agent 在独立子会话里跑,只回传结论
审查类工作容易越界改代码99 个只读 agent 用 permission 硬性限制,连写文件都不允许
换模型就得改一堆配置一个模型都不写死,subagent 自动继承你当前的模型
@ 菜单全是英文看不懂中文系统自动装中文描述,也可随时切换
不知道自己该用哪个按领域分组,从 debugger 到 hipaa-compliance 都有

覆盖范围

174 个 agent,覆盖 13 个领域:

领域代表 agent
核心开发backend-developer frontend-developer code-mapper
语言与框架python-pro typescript-pro golang-pro rust-engineer …31 个
基础设施kubernetes-specialist terraform-engineer docker-expert
质量与安全reviewer security-auditor debugger test-automator
数据与 AIdata-engineer ml-engineer eval-engineer
LLM 工程llm-architect prompt-engineer mcp-developer
设计与产品ui-designer product-manager ux-researcher
专项领域fintech-engineer payment-integration blockchain-developer
合规法务hipaa-compliance gdpr-ccpa-compliance license-engineer

完整清单见 agents/。


快速开始

最快的方式不需要 clone:

npx awesome-codex-subagents-opencode --global

把 174 个 agent 装进 ~/.config/opencode/agents,重启 OpenCode 后即可用 @agent名 调用。

包名就是命令。 npx ocagents 这类简写不能用 —— npm 会去找同名包并失败。 请始终使用上面的完整包名。

只想装一部分?174 个会让 @ 菜单很长,也会稀释模型的自动选择:

npx awesome-codex-subagents-opencode --global --preset minimal

或者从仓库安装

想读源码或自己改的话。下面所有命令都假定你已经在仓库目录内:

git clone https://github.com/He-Xun/awesome-codex-subagents-opencode.git
cd awesome-codex-subagents-opencode

node install.mjs            # -> 在运行命令的项目里创建 ./.opencode/agents
node install.mjs --global   # -> ~/.config/opencode/agents(所有项目生效)

零依赖,只需 Node 18+。

脚本会自己解析路径,所以从任意目录执行 node /path/to/repo/install.mjs --global 也可以, 不需要先 cd。

参数

-g, --global          装到 ~/.config/opencode/agents
    --dir <path>      装到指定目录
    --lang <code>     描述语言(默认跟随系统)
    --preset <name>   只装预设子集(minimal / web / backend)
    --only <a,b>      只装指定 agent
    --skip <a,b>      排除指定 agent
    --list-presets    查看预设
    --dry             只预览,不写文件
-h, --help            查看帮助

--flag value 和 --flag=value 两种写法都支持。

用 npm 脚本(在仓库根目录)

npm run install:global      # 装到全局
npm run install:local       # 装到当前项目
npm run verify              # 校验所有产物
npm run switch -- --to=en   # 切换描述语言
npm run presets             # 查看可用预设

预设

预设数量内容
minimal10审查、定位、改代码、写测试
web15前端 / UI / 可访问性
backend17服务端 / 数据库 / 基础设施

预设就是纯文本名单(presets/*.txt),可以直接改或加新的。

三个设计取舍

这三点决定了它和「直接把文件复制过来」的差别:

1. 不写死模型。 源仓库每个 agent 都绑定了 gpt-6.1-sol,这个模型在你的 provider 上大概率不存在,硬套过去等于 174 个 agent 全部不可用。本仓库完全不输出 model 字段, 让 subagent 继承调用方的模型 —— 换 provider、换模型都不用重新生成。

2. MCP 依赖去厂商化。 源仓库有 agent 绑定 OpenAI 自家的文档服务。这里替换成通用的 websearch + webfetch,任何厂商的文档都能查。

3. 语言只翻描述,不翻正文。 详见下方为什么 —— 中文 反而更费 token,全量汉化是负优化。


项目来源

本仓库是 VoltAgent/awesome-codex-subagents (6.4k star)的 OpenCode 移植版。上游提供的是 Codex 格式的 .toml 定义,本项目将其 转换为 OpenCode 的 Markdown agent 格式,并解决了上述三个移植问题。

只做格式适配,不改写 prompt 语义:正文原文照搬,便于上游更新时重新生成。

上游更新后重新生成:

cd awesome-codex-subagents-opencode      # 切到仓库根目录
git clone --depth 1 https://github.com/VoltAgent/awesome-codex-subagents.git ../src
node tools/codex-subagents-to-opencode.mjs ../src/categories agents

描述语言:随系统自动选择,可随时切换

prompt 正文始终是英文,只有 description(也就是 @ 菜单里显示的那一行)会跟着语言变化。

安装时自动检测

tools/install.mjs 按以下顺序决定语言,没有匹配译表时回退到英语:

  1. --lang=xx 或环境变量 OPENCODE_SUBAGENTS_LANG
  2. LC_ALL / LC_MESSAGES / LANG / LANGUAGE
  3. Intl 报告的系统 locale
  4. 回退 → 英语

内置语言:English (en) · 简体中文 (zh) · Español (es) · Русский (ru) · 한국어 (ko)。

--lang 接收的是语言代码,也就是 ISO 639-1 的两位标签(zh、es、ru、ko、en)。 它同时也是 tools/i18n/ 下译表的文件名,所以两者不会对不上。 完整的系统 locale(zh-CN、es_ES、pt_BR)只是检测时的输入,不是传给 --lang 的值。

当 LANG 或 LC_ALL 已设置但没有对应译表时,结果是英语,而不是再从 Intl 推断另一个 locale。显式设置了环境变量,就按用户意图处理。

node install.mjs                          # 跟随系统 locale
node install.mjs --lang=en                # 强制英文
node install.mjs --lang=zh                # 强制中文
node install.mjs --only=reviewer,debugger # 只装部分

系统 locale 的映射规则:先去掉地区部分,再与已有译表匹配。

系统 locale解析为原因
zh-CN、zh-TWzh基础 zh 有译表
es_ES、es-MXes基础 es 有译表
ru_RUru基础 ru 有译表
ko_KRko基础 ko 有译表
en_USen基础 en 有译表
de_DEen没有 de 译表 → 回退英语

随时切换

--dir 默认是 ./.opencode/agents:

cd awesome-codex-subagents-opencode      # 切到仓库根目录
node tools/switch-lang.mjs --list                                   # 查看可用语言
node tools/switch-lang.mjs --to=zh                                  # 切中文
node tools/switch-lang.mjs --to=en                                  # 切回英文
node tools/switch-lang.mjs --to=zh --dir=~/.config/opencode/agents  # 指定目录
node tools/switch-lang.mjs --to=zh --dry                            # 预演

切换器只改写 frontmatter 里的 description 那一行,正文和权限原样保留,并保持原有的 引号风格,因此中英来回切换不会产生多余 diff(已验证 174 个文件往返 0 差异)。

添加新语言

在 tools/i18n/ 下新建 <lang>.json,<lang> 是 ISO 639-1 语言代码,也就是你传给 --lang 的值(法语用 fr.json,德语用 de.json)。键为 agent 名:

{
  "reviewer": "需要 PR 式评审,聚焦正确性、安全性、行为回归与测试缺失时使用。",
  "debugger": "需要做深度缺陷定位时使用。"
}

无需改代码,install.mjs / switch-lang.mjs 会自动发现,随后即可用 --lang=fr 选择。 缺条目时该 agent 保留英文。

只用基础语言码,不要带地区:文件名必须是 fr.json 而不是 fr-FR.json,因为检测时会先 去掉地区部分再匹配。

内置译表遵循的敬语规范(贡献新语言时请沿用):

语言体裁句式
es仅用正式体 usted,不用 tú/vosotrosÚselo cuando …
ru仅用 вы 敬语,不用 тыИспользуйте, когда …
ko仅用 -십시오 / -합니다 正式体,不用 반말…할 때 사용하십시오.

为什么只翻译 description

先看实测数据。同一份内容的中英对照:

分词器英文中文差值
GPT-4o (o200k)11961479+23.7%
DeepSeek-V213241427+7.8%
GLM-412021307+8.7%
Qwen 2.512031351+12.3%

来源:Chinese vs. English Tokens。

国产模型分词器对中文友好得多(从 +24% 降到 +8%),但方向从未逆转:中文更费 token。 英文可以整词压成单个 token,汉字基本一字一 token 或更多。

换算到本仓库:中文 description 字符数少 66%,但 token 数增加约 50%。全量汉化正文会让 327k 字符的 prompt 再涨约 8%。

所以:语言的价值是可读性和触发准确性,不是省 token。 想省 token 应该精简 agent 数量, 而不是换语言。


设计细节

1. 不写死模型

源文件里的 model = "gpt-6.1-sol" 是 Codex 专用模型,换到 OpenCode 上大概率不存在。 转换器完全不输出 model 字段,让 subagent 继承调用方 agent 的模型 —— 这是 OpenCode 的文档行为,好处是与 provider 无关,换模型不用重跑转换。

需要给特定 agent 钉死模型时:

cd awesome-codex-subagents-opencode      # 切到仓库根目录
node tools/codex-subagents-to-opencode.mjs <src> agents \
  --model-map=gpt-6.1-sol=anthropic/claude-sonnet-5,gpt-6-luna=anthropic/claude-haiku-5

2. MCP 依赖去厂商化

Codex 允许在 agent 文件内联 [mcp_servers.NAME],OpenCode 不允许(必须写在 opencode.json)。仓库里的两个依赖处理如下:

源 MCP处理原因
openaiDeveloperDocs(docs-researcher)替换为 websearch + webfetch无需 API key,但只索引 OpenAI 自家文档,与通用适配相悖
chrome_devtools(browser-debugger)保留依赖本身开源,且无通用替代品

替换规则集中在 MCP_REPLACEMENTS 常量,需要时可扩展。

3. 权限映射

Codex 的 sandbox_mode 是沙箱级强制,OpenCode 的 permission 是 allow/ask/deny 三级:

CodexOpenCode
read-onlyedit: deny, bash: deny
workspace-writeedit: allow, bash: allow

174 个 agent 中 99 个只读、75 个可写。

例外:有 3 个只读 agent 的核心工作离不开执行命令 —— debugger 要看 stack trace 和 失败测试、performance-engineer 要跑测量、security-auditor 要复现问题。它们设成 bash: ask(每条命令仍需你批准),既保持只读语义,又不至于完全不可用。 名单在 READ_ONLY_NEEDS_SHELL 常量里。


字段映射

Codex (.toml)OpenCode (.md)
name文件名 xxx.md(同时是 agent id)
descriptionfrontmatter description
model不输出,继承父 agent(可用 --model-map 覆盖)
model_reasoning_effortfrontmatter reasoningEffort
developer_instructions正文(prompt,原文保留)
sandbox_modefrontmatter permission
[mcp_servers.*]不进入文件,转换报告里列出
分类目录frontmatter color(仅视觉区分)

正文中的 Codex 会被替换为 the parent agent,避免提示词指向另一个产品。


CLI 参数

参数说明
--only=reviewer,debugger只转换指定 agent
--category=04,05按分类目录前缀过滤
--skip=a,b追加要跳过的 agent
--all连 Codex 专用 agent 也一并转换
--dry只打印报告,不写文件
--model-map=k=v,...覆盖模型映射
--lang=zh把 description 本地化成中文,正文保持英文(默认自动检测,见上)
--keep-reasoning保留 reasoningEffort 字段

默认跳过 agent-installer、workflow-orchestrator:它们的 prompt 讲的是 「往 ~/.codex/agents/ 里装文件」,移植到 OpenCode 后语义为空。


对非 GPT 与开源模型的说明

  • reasoningEffort 是 GPT 系专属参数。 只有 OpenAI 风格的接口认识它;Claude、Llama、 Mistral、Gemma、GLM、DeepSeek、Qwen 以及多数开源权重模型都会忽略。 默认不再输出,如果你的 provider 支持,再用 --keep-reasoning 恢复。
  • 若给特定 agent 钉模型,用 --model-map。值的形式是 provider/model-id,provider 前缀取自你自己的 opencode.json:--model-map=gpt-6.1-sol=<provider>/<model-id>。

已知限制

  1. 自动触发很弱(平台机制)。OpenCode 把 subagent 列表以 id: description 拼进 task 工具的 description,只靠文本让模型自行判断。内置 explore 的 description 带具体例句, 更容易被选中。174 个候选会稀释信号 —— 这是 OpenCode 的行为,不是转换问题。 建议要么用 --only 只装常用子集,要么始终 @agent名 手动调用。

  2. 常驻上下文成本。全量安装会让 task 工具描述增加约 7.5k token。

  3. prompt 同质化。源仓库 174 份 prompt 共用一个模板 (Working mode / Focus on / Quality checks / Return),长度 129/174 落在 1–2k 字符区间, 差异主要在领域词汇。不要期待它们之间有精细分工。

  4. browser-debugger 需要 chrome-devtools MCP(默认 localhost:3000/mcp)。 未配置时该 agent 会被加载但缺少工具。


仓库结构

.
├── bin/{cli,lang}.mjs                    # npm 包入口(ocagents / ocagents-lang)
├── tools/
│   ├── install.mjs                       # 安装(系统语言 + 预设)
│   ├── switch-lang.mjs                   # 随时切换 description 语言
│   ├── detect-lang.mjs                   # 语言检测(含回退到英语)
│   ├── validate.mjs                      # 校验产物、译表、预设(CI 用)
│   ├── i18n/{en,zh}.json                 # description 译表,加语言只需加文件
│   ├── codex-subagents-to-opencode.mjs   # 从上游 TOML 重新生成 agents/
│   ├── analyze-subagents.mjs             # 产物分析
│   ├── compare-lang.mjs                  # 中英文 token 成本对比
│   └── verify-load.mjs                   # 验证 OpenCode 能否正确加载
├── presets/{minimal,web,backend}.txt     # 装哪些 agent 的预设名单
├── agents/                                # 174 个 OpenCode agent(英文基准)
├── .github/workflows/validate.yml         # CI
├── package.json
├── README.md                              # English
├── README.zh-CN.md                        # 本文件
└── LICENSE

agents/ 是英文基准版本,可以直接复制到任意 OpenCode 项目使用。 想换描述语言用 switch-lang.mjs,不要手动改。

校验

npm run verify

检查 frontmatter 合法性、mode: subagent、无硬编码 model、权限键有效、prompt 完整且无 Codex 残留、译表与 agent 一一对应、预设引用的 agent 都存在。

CI 在 Node 18 / 20 / 22 上运行,并额外验证「从上游重新生成的结果与提交版本一致」, 防止产物悄悄漂移。


许可证

本仓库的转换脚本与 README 以 MIT 发布。 agents/ 下的内容派生自 VoltAgent/awesome-codex-subagents, 同样为 MIT,版权归原作者及贡献者所有。

版本与发布记录

awesome-codex-subagents-opencode 共发布 6 个版本,首次发布于 2026/11/03;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.2.1latest2026/11/03今天
0.2.02026/11/03今天
0.1.22026/11/03今天
0.1.12026/11/03今天
0.1.02026/11/03今天
0.0.0-stage2026/11/03今天

关于 awesome-codex-subagents-opencode 的常见问题

awesome-codex-subagents-opencode 是什么?

174个Codex子代理定义适用于OpenCode,具有5种语言的语言环境感知描述

如何安装 awesome-codex-subagents-opencode?

在项目目录运行 npm install awesome-codex-subagents-opencode,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 ocagents、ocagents-lang、awesome-codex-subagents-opencode、awesome-codex-subagents-opencode-lang,可以用 npx ocagents 直接运行。

awesome-codex-subagents-opencode 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/awesome-codex-subagents-opencode 是否存在。

awesome-codex-subagents-opencode 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

awesome-codex-subagents-opencode 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

awesome-codex-subagents-opencode 可以商用吗?

awesome-codex-subagents-opencode 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

awesome-codex-subagents-opencode 还在维护吗?

最新版本 0.2.1 发布于 2026/11/03(今天);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/11/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。