Codex插件是什么?技能、MCP、应用与Hook的组合设计指南

编程狮 2026-09-21 14:17:33 浏览数 (17)
反馈

Codex 插件是一个可安装的扩展包:它用 manifest 声明身份,再按需组合技能、应用连接器、MCP 服务、命令、Agent 和 Hook。你不必把所有能力都塞进一个插件;正确做法是先确定用户任务,再选择最小的能力面。

技能、MCP、应用应该怎么组合?

本文依据 2026 年 9 月 20 日核验的 OpenAI 官方插件仓库,解释当前目录结构与职责边界。看完后,你应能读懂一个插件、判断功能该放在哪层,并在安装前检查权限。今天这篇文章,编程狮不讨论抽象“生态”,而是直接拆一个最小目录。

一、先看结论:各能力面负责什么

能力面 职责 适合放什么 不适合放什么
manifest 插件身份证 名称、版本、描述 业务逻辑、长篇教程
skill 任务方法与规范 步骤、模板、脚本 长期密钥、远端会话
app 授权入口与产品连接 用户授权、账号连接 大段写作规范
MCP 结构化工具 查询、创建、更新 仅供人阅读的教程
command 显式可复用入口 用户主动触发的操作 隐蔽副作用
hook 生命周期检查与自动动作 提交前检查、通知 未告知的外部写入
assets 辅助资源 示例图、模板、词典 运行时代码

一句话:先确定用户任务,再选择最小的能力面;目录越多不代表质量越高。

二、Codex 插件先从最小 manifest 开始

官方仓库把每个示例放在 plugins/<name>/,必需文件是 .codex-plugin/plugin.json。这份 manifest 是插件的身份证,而不是业务实现。站内的 Codex 插件参考 可以搭配本文查字段。

my-plugin/
├─ .codex-plugin/
│  └─ plugin.json      # 插件身份证:名称、版本、描述
├─ skills/             # 技能:任务说明、规范、模板、脚本
├─ .app.json           # 应用连接器:授权入口与产品连接
├─ .mcp.json           # MCP 服务:结构化工具配置
├─ agents/             # Agent:可复用的代理配置
├─ commands/           # 命令:用户显式触发的入口
├─ hooks.json          # Hook:生命周期事件与自动动作
└─ assets/             # 辅助资源:图片、模板、词典

plugin.json 外,其余目录都应按需出现。一个只提供写作规范的插件可能只有技能;连接外部服务的插件才需要应用或 MCP。空目录不会让插件更完整,只会让维护者误判能力范围。

目录/文件 是否必需 说明
.codex-plugin/plugin.json 必需 插件身份声明
skills/ 可选 固定流程与规范
.app.json 可选 产品授权与连接
.mcp.json 可选 外部工具配置
agents/ 可选 代理配置
commands/ 可选 显式操作入口
hooks.json 可选 生命周期钩子
assets/ 可选 静态资源

三、技能、应用与 MCP 分别解决什么

Codex 技能是一组任务说明和本地资源,适合固定流程、格式规范和脚本调用。应用连接器负责受控访问某个产品或账号。MCP 则提供结构化工具,让模型调用外部服务。三者关系可以理解为“做事方法、授权入口、可调用动作”。

能力面 适合放什么 不适合放什么
skill 步骤、规范、模板、脚本 长期密钥、远端账号会话
app 用户授权、产品连接 大段写作规范
MCP 查询、创建、更新等工具 仅供人阅读的教程
command 可复用的显式入口 隐蔽的副作用
hook 生命周期检查和自动动作 未告知用户的外部写入

如果你还没装好客户端,应先完成 Codex 安装说明,再研究扩展。基础运行环境都不稳定时,插件报错很难区分是安装、权限还是插件自身问题。

四、用任务边界决定插件目录

假设要做一个“审查 Markdown 并输出报告”的插件,可以按下面顺序判断:

  1. 规则是否固定?若固定,写入 skill
  2. 是否需要访问外部文档库?需要时再加入 appMCP
  3. 是否要让用户显式运行某个动作?可以提供 command
  4. 是否必须在提交前自动检查?确认副作用后再考虑 hook
  5. 是否需要示例图、模板或词典?放进 assets

// plugin.json 示例:只声明身份,不包含业务逻辑
{
  "name": "markdown-review",
  "version": "0.1.0",
  "description": "Review Markdown structure and produce a local report"
}

上面只是说明 manifest 的职责,并非保证与未来版本字段完全一致。创建插件时必须以仓库内最新示例为准。想理解技能如何承载稳定流程,可以继续阅读 AI 编程技能教程

任务需求 推荐能力面 原因
固定写作规范 skill 方法与模板
访问 Notion、Figma app 或 MCP 需要授权与外部工具
用户主动运行检查 command 显式入口
提交前自动检查 hook 生命周期事件
提供示例图 assets 静态资源
组合多个步骤 agent 代理流程

五、安装前先检查权限和副作用

插件能组合外部连接和自动动作,审查时不能只看名称。至少检查四处:manifest 声明、MCP 工具、应用权限、Hook 触发条件。

# 只列出关键配置文件,不执行插件
Get-ChildItem -Recurse -File .\my-plugin |
  Where-Object { $_.Name -match 'plugin\.json|\.mcp\.json|\.app\.json|hooks\.json' } |
  Select-Object FullName

这条命令只列出关键配置,不会执行插件。随后逐项回答:工具是只读还是写入?会访问哪些域名?密钥从哪里取得?Hook 何时触发?失败后是否能回滚?如果答案不清楚,先不要安装。

插件权限审查最好形成一张表,而不是凭文件名做判断:

检查项 可接受证据 需要暂停的信号
外部访问 域名与用途明确 任意域名或用途不明
写入动作 目标、确认与回滚清楚 后台静默写入
凭据 系统授权或环境注入 密钥写进仓库
Hook 触发时机和失败策略可见 每次运行都产生副作用
MCP 工具 只读/写入范围明确 工具名称模糊、权限过大
应用授权 用户可撤销、范围最小 请求无关账号权限

官方 OpenAI 插件仓库 展示了 Figma、Notion、Web、iOS 等较完整示例。仓库只能证明官方示例在核验日采用这些结构,不代表第三方插件天然可信。

六、常见设计错误与修正

常见错误 问题 修正方向
把教程全文写进 manifest manifest 应短小稳定 任务细节放 skill
为了“功能齐全”同时加 app 与 MCP 重复授权、排错困难 确认职责不重复
Hook 默认执行外部写入 用户无法预期副作用 改为显式 command 或增加确认
空目录占位 误判能力范围 按需出现,不建空目录
权限说明模糊 安装后才发现越权 安装前逐项审查
版本升级不复查 能力面悄悄扩大 对比 manifest、MCP、app、hooks

调试时先退回最小插件:保留 manifest 和一个 skill,确认能被识别;再逐个恢复 MCP、应用和 Hook。每恢复一层就记录新增权限和实际结果。这样出现失败时,变更范围只有一层。

七、用最小验收确认目录与行为一致

验收不能停在“插件被识别”。按以下顺序逐步验证:

步骤 操作 验证目标
1 执行纯本地、只读的技能任务 说明与资源路径可用
2 单独调用一个 MCP 查询工具 工具配置正确、只读
3 测试需要授权的应用写入 授权范围与回滚明确
4 测试 Hook 触发 时机、副作用、失败策略可见
5 记录输入、调用、输出、外部变化 目录与行为一致

若插件声称只做 Markdown 审查,却在首次运行请求日历、邮箱或代码仓库写权限,目录设计与任务边界已经不一致。此时应删掉无关能力,或拆成另一个由用户显式安装的插件,而不是在说明里用一句“可能需要”掩盖权限扩张。

版本升级也按同样方法复查:对比 manifest、MCP 配置、应用权限和 hooks.json 的变化,再运行最小任务。不能只看版本号或更新日志,因为真正影响用户风险的是能力面与副作用是否改变。

升级检查项 对比内容
manifest 名称、版本、描述是否变化
MCP 配置 工具、域名、权限是否扩大
应用权限 授权范围是否增加
hooks 触发时机、写入动作是否改变
最小任务 实际行为是否与说明一致

Codex 插件各能力面的职责对照

总结

Codex 插件不是单个提示词,而是一个带 manifest 的能力包。Codex 技能负责方法,应用负责授权入口,MCP 提供工具,命令提供显式操作,Hook 处理生命周期事件。目录越多不代表质量越高;能通过插件权限审查、目录与行为一致、每层都可单独验证的最小组合,才更容易维护。

延伸学习

  1. AI Coding 新范式解析 可补充 AI 编程工具的整体背景;
  2. Agentic Coding 入门 解释 Agent 式任务与普通补全的差异。
  3. 职场提效:小白 AI 办公实战课程
  4. 零基础AI编程:7天做出第一个真正能用的小工具
  5. 零基础AI手绘配图:从选画风到完成一组作品
  6. 不会Python也能写脚本:7天用AI自动化5件重复工作

常见问题

Q:一个 Codex 插件必须同时有技能和 MCP 吗?

A:不必须。官方结构把它们列为可选能力面。只需本地流程规范时,一个 manifest 加 skill 就可能足够。

Q:应用连接器和 MCP 能不能同时存在?

A:可以,但要确认职责不重复。应用偏向授权和产品连接,MCP 偏向结构化工具;重复能力会增加权限与排错成本。

Q:从 GitHub 下载的插件可以直接信任吗?

A:不能。先检查 manifest、外部服务、写入工具和 Hook,再决定安装。仓库热度和作者名称都不能替代权限审查。

Q:Hook 和 command 有什么区别?

A:command 是用户显式触发的入口,hook 是生命周期事件自动触发。需要用户主动运行时用 command;需要在提交前自动检查时再考虑 hook,并确保副作用可预期。

0 人点赞