2026-10-20 · 基础 · 扩展

Codex 插件入门:
技能、脚本和工具的打包方式

很多人把插件当成一种新能力。其实它是个盒子:真正干活的东西在盒子里, 盒子负责把东西装好、标上版本、递到别人手上。

先分清四种东西

层它是什么什么时候用
规则文件每次会话都要遵守的底线和偏好「永远别动这个目录」这类要求
技能一类活的做法,写成一份说明步骤固定、会重复出现的任务
脚本确定性的动作,跑一次得一个结果检查状态、批量改名、生成文件
MCP 服务器给模型的新工具接口要查外部数据、调外部系统
插件把上面几样打包的盒子要复用、要分发、要版本管理

判断顺序是从上往下的:先问这是不是规矩,再问是不是做法,再问要不要新工具, 最后才问值不值得打包。多数需求停在技能这一层就够了。

盒子里长什么样

一个最简单的插件,目录结构大致是这样:

my-plugin/
├─ .codex-plugin/
│  └─ plugin.json        # 名字、版本、说明、入口
├─ skills/
│  └─ my-skill/
│     └─ SKILL.md        # 这类活怎么做
└─ scripts/
   └─ status.py          # 可选:确定性的动作

plugin.json 里最要紧的是三项:名字、版本、技能目录。 名字决定装好以后怎么被引用,版本决定更新时会不会换成新内容。

如果插件还需要给模型新工具,就在清单里指向一份 MCP 配置;不需要的话,完全可以不写。 一个只有技能的插件也是完整合法的。

安装与查看

codex plugin list                    # 看有哪些可用、哪些已装
codex plugin add 名字@市场            # 安装
codex plugin remove 名字@市场         # 卸载
codex plugin marketplace list        # 看配置了哪些市场

装好之后,插件里的技能会出现在新会话的技能列表里,名字通常是「插件:技能」两段式。 这个命名方式本身就在提醒你:盒子有盒子的名字,手有手的名字。

什么时候值得打包

  • 同一套做法要在多个项目里反复用。
  • 要装到另一台机器,或者给别人用。
  • 需要版本管理,改了之后能回退。

反过来说,如果只是自己这台机器上偶尔用一次,写一份技能就够了。 打包本身不产生能力,只产生便利。

三个实际会踩的坑

装完没反应。插件配置在应用启动时读取,装完要重启应用;命令行的「已安装」不等于当前会话已加载。

改了内容却没变化。安装是把文件复制到缓存目录。改了源码必须升版本号再装一次,同版本重装不会换文件。

把私有信息打进包里。插件会被复制、被分享。路径、账号、内部地址在打包前就该清掉。

一个小例子

假设你有一套「把课程整理成笔记」的流程:先采集,再转写,再摘要,最后入库。 流程是固定的,但每一步用什么工具会变。

合理的拆法是:技能里写五步流程和判断标准;脚本只做「查进度」这种确定性动作; 真正需要连外部服务时,再单独做一个 MCP 服务器。三样东西各归各位,谁也不替谁干活。

五问收尾

  1. 这是每次都要遵守的规矩吗?写进规则文件。
  2. 这是一类活的做法吗?写成技能。
  3. 这是确定性的动作吗?写成脚本。
  4. 需要新工具、新数据源吗?才上 MCP。
  5. 要装给别人、要版本管理吗?最后才打包成插件。

五问走完,答案通常会自己浮出来。

上一篇:《MCP 入门》。 回到笔记