插件
插件能打包的组件、codex plugin 与 marketplace 子命令、插件目录结构与清单文件,以及本地开发、测试与分发的流程。
插件(plugin) 是 Codex 的打包与分发单元:把 skills、MCP 服务器、应用连接器和 hooks 装进一个目录,通过 marketplace 安装、启用和更新。ChatGPT 与 Codex 共用同一个公共插件目录;Codex CLI 和 ChatGPT 桌面端支持插件,IDE 扩展不支持。概念上对应 Claude Code 的 Plugins。
还在打磨个人流程时先写成技能;需要分享、打包多个技能或连接外部服务时,再做成插件。
插件能打包什么
| 组件 | 默认位置 | 清单字段 |
|---|---|---|
| Skills | skills/ | skills(路径或路径数组) |
| MCP 服务器 | .mcp.json | mcpServers(路径,或内联的服务器对象) |
| 应用连接器 | .app.json | apps |
| Hooks | hooks/hooks.json | hooks(路径、路径数组、内联对象或对象数组) |
| 展示信息 | — | interface |
清单为某个组件写了路径,就只读清单指定的位置,不再读默认位置。路径必须以 ./ 开头、不能含 ..、不能跑出插件根目录,否则该字段会被忽略并记录警告。
- 插件技能的名字带命名空间,形如
插件名:技能名。 - 不是 Agent Plugins 格式的插件如果带有
commands/目录(也可以在清单里用commands字段指定路径),安装时会把其中写了descriptionfrontmatter 的命令 Markdown 转换成技能,名字形如source-command-<命令名>;用到$ARGUMENTS、$1这类参数占位符的命令不会转换。 - 插件 hook 运行时可以读取环境变量
PLUGIN_ROOT(插件安装目录)和PLUGIN_DATA(插件可写的数据目录),为兼容已有插件还会设置CLAUDE_PLUGIN_ROOT与CLAUDE_PLUGIN_DATA;命令字符串里的${PLUGIN_ROOT}这类写法会被替换成实际路径。 - 安装或启用插件不会自动信任它的 hooks,要在
/hooks中审阅并信任后才会运行。 - 插件 MCP 服务器的启动方式由插件决定,用户只能在
config.toml里控制开关和工具策略,见 MCP 集成。
目录结构与清单
meeting-follow-up/
├── .codex-plugin/
│ └── plugin.json # 清单
├── skills/
│ └── meeting-follow-up/
│ └── SKILL.md
├── hooks/
│ └── hooks.json # 可选
├── .mcp.json # 可选
└── assets/ # 可选:图标、截图Codex 按以下顺序查找清单:
- 插件根目录的
plugin.json,且其$schema指向https://agent-plugins.org/schemas/...(可移植的 Agent Plugins 格式),此时.codex-plugin/plugin.json可作为 Codex 专用的补充。这种格式的插件只提供技能与 MCP 服务器,其中的 hooks 与应用连接器不会加载 .codex-plugin/plugin.json,$plugin-creator生成的就是这种.claude-plugin/plugin.json.cursor-plugin/plugin.json
{
"name": "meeting-follow-up",
"version": "1.0.0",
"description": "Turn meeting notes into decisions and next steps",
"keywords": ["meetings", "notes"],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Meeting Follow-up",
"shortDescription": "Decisions, owners and next steps",
"category": "Productivity",
"defaultPrompt": ["Summarize my latest meeting notes"],
"composerIcon": "./assets/icon.png"
}
}| 字段 | 说明 |
|---|---|
name | 插件标识,建议用 kebab-case;为空时取目录名,同时是插件技能的命名空间 |
version | 版本号,安装缓存按版本分目录;本地开发时靠修改它触发重新安装 |
description、keywords | 描述与检索标签 |
skills、mcpServers、apps、hooks | 组件位置,规则见上文 |
extensions | 各平台的扩展字段。v0.156.0 起 Codex 读取 extensions["com.openai"].onboardingSkill:指向插件里的一个技能(相对路径,./ 可省略),作为插件的上手引导技能显示在插件详情中;路径必须在插件目录内,且对应一个已加载的技能 |
interface | 展示信息:displayName、shortDescription、longDescription、developerName、category、capabilities、websiteURL、privacyPolicyURL、termsOfServiceURL、defaultPrompt(最多 3 条,每条最长 128 字符)、brandColor、composerIcon、logo、logoDark、screenshots |
author、homepage、repository、license 等字段可以写进清单,但 Codex 运行时不解析它们。
安装与管理
在 TUI 中运行 /plugins 打开插件浏览器:按 marketplace 分标签浏览,打开插件查看详情、安装或卸载,在已安装的插件上按 Space 启用或停用。插件功能由 features.plugins 控制,默认开启。
会话中要点名使用某个插件,就在输入框输入 @,从菜单里选择已安装并启用的插件;Codex 会把这个插件的技能前缀、MCP 服务器和应用告诉模型。
命令行用 codex plugin,插件以 插件名@marketplace名 标识:
| 命令 | 作用 |
|---|---|
codex plugin add <插件>@<市场> | 安装插件;也可写成 codex plugin add <插件> -m <市场> |
codex plugin list | 按 marketplace 列出插件、状态与版本;-m 只看一个 marketplace |
codex plugin remove <插件>@<市场> | 卸载插件并删除本地缓存 |
codex plugin marketplace add <来源> | 添加 marketplace,来源可以是本地目录、owner/repo[@ref]、HTTPS 或 SSH 的 Git URL;--ref 固定 Git ref,--sparse PATH 可重复,用于稀疏检出 |
codex plugin marketplace list | 列出当前生效的 marketplace 及其根目录 |
codex plugin marketplace upgrade [名字] | 刷新 Git marketplace 的快照,省略名字则全部刷新 |
codex plugin marketplace remove <名字> | 移除 marketplace |
这些命令都支持 --json;codex plugin list --json 默认只输出已安装的插件,加 --available 才会带上未安装的。
CLI 没有 enable 或 disable 子命令。停用插件用 /plugins,或直接写配置:
[plugins."meeting-follow-up@personal"]
enabled = false- 安装的插件会复制到
~/.codex/plugins/cache/<市场>/<插件>/<版本>/,插件数据目录位于~/.codex/plugins/data/下。 codex plugin marketplace add会在用户配置里写入[marketplaces.<名字>],包含source_type(git或local)、source、ref、sparse_paths。- 远程目录
openai-curated-remote需要用 ChatGPT 账号登录,v0.153.0 起 CLI 可以从中列出、安装和移除插件。用 API key 登录也能使用受支持的 OpenAI 精选插件,但连接流程依赖 OAuth 能力、API key 不支持的插件不可用。 - 插件自带的技能在新会话中可用。v0.154.0 起,已打开的会话也能拿到新安装插件的工具;插件在外部升级或回滚后,会话中的 skills 与 hooks 会随之刷新。
插件可以带 hooks 和 MCP 服务器,它们以你的用户权限运行代码。只安装可信来源的插件,添加 marketplace 前确认来源,并在 /hooks 中逐条审阅插件 hook 后再信任。
Marketplace 文件
marketplace 是一份插件清单,放在 marketplace 根目录的 .agents/plugins/marketplace.json,也识别 .agents/plugins/api_marketplace.json、.claude-plugin/marketplace.json 与 .cursor-plugin/marketplace.json(同一目录有多个时按这个顺序取第一个)。OpenAI 官方精选目录在不经 ChatGPT 账号(例如用 API key)登录时,读取的就是其中的 api_marketplace.json。
- 个人 marketplace
~/.agents/plugins/marketplace.json总会被自动发现。 - TUI 的
/plugins还会检查当前目录,找不到时再看所在 Git 仓库的根目录;codex plugin命令行不会自动扫描它们。 - 除个人 marketplace 外,要用命令行安装,都得先
codex plugin marketplace add。
{
"name": "team-tools",
"interface": { "displayName": "Team Tools" },
"plugins": [
{
"name": "meeting-follow-up",
"source": { "source": "local", "path": "./plugins/meeting-follow-up" },
"policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
"category": "Productivity"
}
]
}| 字段 | 说明 |
|---|---|
name | marketplace 名,即 插件@市场 的后半段 |
plugins[].source | 插件来源:./ 开头的相对路径字符串,或对象形式,source 为 local(配 path)、url(Git URL,可带 path、ref、sha)、git-subdir(url 与 path,也可带 ref、sha)、npm(package、version、registry) |
plugins[].policy.installation | AVAILABLE(默认)、INSTALLED_BY_DEFAULT 或 NOT_AVAILABLE |
plugins[].policy.authentication | ON_INSTALL(默认,安装时认证)或 ON_USE(首次使用时认证) |
plugins[].category | 展示分类 |
本地路径相对于 marketplace 根目录,也就是包含 .agents/ 的那一层。例如个人 marketplace 里的 ./plugins/x 指向 ~/plugins/x。
本地开发与测试
-
生成脚手架:运行
$plugin-creator并描述要做的插件,它会生成.codex-plugin/plugin.json与skills/等目录,默认登记到个人 marketplace(默认名personal)。也可以手工创建,最小的可移植格式只需根目录的plugin.json加一个技能:{ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "meeting-follow-up", "version": "1.0.0", "description": "Turn meeting notes into decisions and next steps" } -
安装:在 marketplace 文件里登记后运行
codex plugin add meeting-follow-up@personal,然后新开会话,用有代表性的请求测试。 -
迭代:安装是把插件复制进缓存,改了源码不会自动生效。把
version改成1.0.0+codex.local-20260915-101500这样带新后缀的版本,再运行一次codex plugin add,然后新开会话测试。 -
排查:
codex plugin list能看出是哪个 marketplace 在提供这个插件、装的是哪个版本;hooks 不运行时,到/hooks看是否待信任。
团队内分发时,把 marketplace 与插件目录推到 Git 仓库,协作者运行 codex plugin marketplace add owner/repo 后即可安装,之后用 codex plugin marketplace upgrade 获取更新。要上架公共插件目录,按 OpenAI 插件开发文档中的提交流程提审。