Codex是能读取、修改、执行代码的AI智能体,Skill是包含说明、脚本、模板和参考资料的操作手册,Plugin是可安装的打包单元。通过命令行安装后,在项目目录运行codex即可使用。Skill目录需包含SKILL.md,复杂Skill可附带脚本、模板等文件。
这是一次在学习 Codex、Skill、Plugin、MCP 过程中的整理。不少人一开始可能会觉得 Skill 就是个“提示词模板”,但实际摸一圈下来会发现,它其实没那么简单:简单的 Skill 确实可以只写一段说明,但复杂的 Skill 还能带上 Python、Shell 脚本、模板文件,甚至配合 MCP 去调外部系统。
如果只用一句话来概括:
长期稳定更新的攒劲资源: >>>点此立即查看<<<
Codex 是一个能动手干活的 AI 智能体,而 Skill 就是给 Codex 配备的一套“做事方法和工具包”。
说得再直白一点:
官方文档也明确讲了,Codex Skill 可以把说明、资源和可选脚本打包在一起,让 Codex 更稳定地执行某类重复性工作;而 Plugin 则是 Codex 里可安装的分发单元,能打包 Skill、App 集成和 MCP Server。
Codex 可不是普通的聊天机器人。
普通聊天机器人的工作模式通常是:
你问一句 ↓ AI 回一句
而 Codex 的工作流程更像这样:
你交代一个任务 ↓ Codex 制定计划 ↓ 读文件 / 改文件 / 执行命令 / 调用脚本 ↓ 观察执行结果 ↓ 如果失败,就根据报错继续修正 ↓ 直到完成,或者遇到需要你确认的问题
根据官方 Codex CLI 文档的描述,Codex CLI 可以在终端里运行,并且能够读取、修改、运行你指定目录里的代码。
如果你用的是 macOS 或 Linux,官方提供的 Codex CLI 安装方式如下:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
安装完成后,运行:
codex
首次运行时,系统会提示你登录。登录成功后,就可以在终端里使用 Codex 了。
如果你已经装过 Codex,那就不需要再重复安装,直接进入你的项目目录执行:
codex
有一点要注意:Codex 的版本迭代很快,安装命令和目录规则可能会随时调整,一切以官方文档和你本机 Codex 的具体提示为准。
一开始,我理解的 Skill 就是“固定提示词”。这个理解说对了一半。
简单的 Skill 确实可以只是一个 SKILL.md 文件,里面写上规则,比如:
遇到日报时: 1. 语言自然,不要太官方。 2. 不要夸大工作量。 3. 按 1、2、3 分点输出。 4. 适合发领导或客户群。
这种 Skill 就像一个固定的系统提示词。
但复杂的 Skill 还可以带上:
SKILL.md 说明书,告诉 Codex 什么时候用、怎么用 scripts/ Python、Shell 等脚本 references/ 参考文档 assets/ 模板、图片、示例文件 agents/ 依赖配置,比如 MCP 等
所以更准确的定义是:
Skill = 做事说明书 + 可选脚本 + 可选模板 + 可选参考资料。
官方文档也指出,一个 Skill 就是一个目录,里面必须包含 SKILL.md,而且 SKILL.md 需要提供 name 和 description,同时可以附带可选脚本、参考资料和资源文件。
当第一次进入本机的 Skill 目录时,看到的是这样:

可以看到,当时目录下只有一个:
codex-primary-runtime
这里要特别提醒:自己新建的 Skill 不要放进 codex-primary-runtime 里面,而应该和它平级。
也就是说,正确的目录结构应该是这样的:
~/.codex/skills/
├── codex-primary-runtime
└── daily-report-polisher
└── SKILL.md
不过,不同版本的 Codex,其 Skill 路径可能不一样。新版的文档里也提到了用户级 Skill 路径可以是:
$HOME/.agents/skills
目前是基于本机实际识别到的目录 ~/.codex/skills 进行测试的。最稳妥的做法是:先看看你本机的 /skills 目录是否能被 Codex 识别。
举例来说,如果想创建一个日报优化 Skill,可以这样操作:
cd ~/.codex/skills mkdir -p daily-report-polisher cat > daily-report-polisher/SKILL.md <<'EOF' --- name: daily-report-polisher description: 用于优化中文日报、周报、客户群回复、工作进展说明。适合把粗糙工作内容改成自然、简洁、适合发领导或客户群的表达。 --- # 日报和工作说明优化 Skill ## 适用场景 当用户提供日报、周报、客户沟通内容、工作进展说明、领导汇报草稿时,帮助用户优化表达。 ## 输出要求 1. 语言自然,不要太官方。 2. 不要写得太复杂。 3. 不要夸大用户没有做过的工作。 4. 适合发领导、客户群或工作群。 5. 优先按 1、2、3 分点输出。 6. 如果是客户群回复,语气要稳妥,不要指定某一个人回复。 7. 如果涉及技术可实现但管理规则待确认,要体现"需要业务/管理侧确认规则"。 ## 输出风格 简洁、稳妥、像正常工作沟通,不要像宣传稿。 EOF
然后启动 Codex:
codex
进入 Codex 后,可以输入:
/skills
或者直接用 $ 调用:
$daily-report-polisher 今天看了AIP部署文档,改了架构图,和测试环境升级,解决登录问题。
测试后,Codex 回复里会出现蓝色的 Daily Report Polisher 标签,这就说明 Skill 已经被成功调用了:

这个对比非常直观:安装前只是普通对话;安装后,Codex 就能识别并调用这个 Skill,用我们预先写好的规则来整理日报。
很多人会误以为 Skill 就是提示词,其实不然。
如果 Skill 里面包含了 Python,它就更像一个组合体:
比如,一个工作记录整理 Skill 可以这样设计:
work-log-python-helper/
├── SKILL.md
└── tools/
└── worklog_report.py
SKILL.md 里可以写:
--- name: work-log-python-helper description: 用 Python 拆分和分类中文工作记录,适合把杂乱工作流水整理成日报初稿。 --- # 工作记录整理 Skill 当用户提供一段杂乱工作记录,并要求整理日报时,优先运行: python3 tools/worklog_report.py --text "用户输入内容" 运行脚本后,根据脚本输出继续润色成自然的日报。
Python 脚本可以简单地写成:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
import re
DONE_KEYWORDS = ["完成", "处理", "解决", "整理", "更新", "修改", "测试", "验证", "部署"]
ISSUE_KEYWORDS = ["问题", "报错", "异常", "失败", "无法"]
PLAN_KEYWORDS = ["后续", "计划", "继续", "明天", "下一步"]
def split_items(text: str):
parts = re.split(r"[。;;n]+", text)
return [p.strip() for p in parts if p.strip()]
def classify(item: str):
if any(k in item for k in PLAN_KEYWORDS):
return "后续计划"
if any(k in item for k in ISSUE_KEYWORDS):
return "问题处理"
if any(k in item for k in DONE_KEYWORDS):
return "今日完成"
return "今日完成"
def main():
parser = argparse.ArgumentParser(description="工作记录整理工具")
parser.add_argument("--text", required=True, help="需要整理的工作记录文本")
args = parser.parse_args()
groups = {
"今日完成": [],
"问题处理": [],
"后续计划": [],
}
for item in split_items(args.text):
groups[classify(item)].append(item)
for title, items in groups.items():
if not items:
continue
print(f"## {title}")
for i, item in enumerate(items, 1):
print(f"{i}. {item}")
print()
if __name__ == "__main__":
main()
这里有几点需要特别留意:
main(),但加上它会让 Codex 更容易通过命令行调用。SKILL.md,再判断当前任务是否需要运行 Python。python3 以及相关的依赖包。Codex 能执行 Python,并不是大模型自己在脑子里运行代码,而是因为 Codex 客户端具备执行本地命令的能力。
简单来说:
如果你是在本机终端里运行 Codex CLI,那么 Python 通常就在你的本机上执行。比如:
python3 ~/.codex/skills/work-log-python-helper/tools/worklog_report.py --text "今天处理AIP环境升级"
这条命令是在你当前 Codex 所在的系统环境里执行的。
但如果你用的是远程环境、服务器或者 Codex Cloud,那么执行位置就可能是对应的远程环境或云端容器。
更准确地说:Python 脚本是在 Codex Agent 当前所在的运行环境中执行的。
确实存在这样的风险。
因为如果 Codex 执行了:
pip install pandas pip install openpyxl
这些依赖就会被安装到当前的 Python 环境里。
如果装到系统 Python 环境中,可能导致依赖冲突;如果每个项目都创建 .venv,虽然不容易冲突,但磁盘空间可能会慢慢变大。
所以,建议在 Skill 里明确写上:
## Python 依赖规则 1. 不允许使用 sudo pip install。 2. 不允许向系统 Python 全局环境安装依赖。 3. 如需安装依赖,优先使用当前项目的 .venv。 4. 如果当前项目没有 .venv,先询问用户是否创建。 5. 优先使用 Python 标准库。 6. 不要重复创建多个虚拟环境。
对于简单的 Skill,尽量只使用 Python 标准库,比如:
argparse
re
pathlib
json
这样最安全,也最省心。
Codex 启动后,会扫描已安装的 Skill。
但它不会一开始就把所有 Skill 的完整内容都塞进上下文里,而是先查看每个 Skill 的:
name
description
file path
官方文档把这种机制称为 progressive disclosure(渐进式加载)。
也就是说,它的工作流程是:
先看 Skill 名称和描述 ↓ 判断任务是否匹配 ↓ 匹配后才读取完整的 SKILL.md ↓ 需要时再读取参考资料或运行脚本
所以,description 字段的编写质量特别重要。
比如,下面这个描述就比较容易触发匹配:
用于优化中文日报、周报、客户群回复、工作进展说明。
但如果只写:
一个文本工具。
Codex 就很难判断到底什么时候该用它。
Codex 调用 Skill 有两种方式:
$skill-name。这是很多人一开始最困惑的地方。
后来会发现,Codex 的核心并不是“特别能循环”,而是一个带反馈的智能循环。
可以把它记成:
目标 → 计划 → 执行 → 观察 → 修正 → 再执行 → 停止
比如你让 Codex 修复一个项目启动问题:
第 1 轮:运行 npm run dev 结果:报错,缺少 axios 第 2 轮:安装 axios 结果:又报端口占用 第 3 轮:检查端口 结果:发现 8080 被占用 第 4 轮:修改端口并重新启动 结果:启动成功
这不是死循环。
死循环是:
执行 执行 执行 执行
而 Codex 的循环是:
执行 看结果 判断哪里错了 换办法 再执行
所以,Codex 能反复执行,靠的是四件事:
官方文档也提到,Codex 使用沙箱和审批机制来控制它能做什么:在默认权限下,它可以在当前 workspace 里读写文件、运行常规命令;如果需要越界、联网或进行高风险操作,则会走审批流程。
这个地方确实容易混淆。
目前的理解是:
| 概念 | 通俗理解 | 作用 |
|---|---|---|
| Skill | 做事说明书 + 小工具箱 | 告诉 Codex 按什么流程干活,可以带脚本 |
| Plugin | 可安装的大礼包 | 可以打包 Skill、App 集成、MCP Server |
| MCP | 外部系统连接接口 | 让 Codex 连接 GitHub、数据库、Figma、内部系统等 |
举个例子:
如果只是优化日报,只需要一个 Skill:
日报 Skill:规定输出风格、格式、注意事项
但如果要根据 GitHub 提交记录生成日报,那就可能需要 MCP 或 GitHub 插件:
GitHub MCP / 插件:拿到提交记录 日报 Skill:把提交记录整理成日报
所以最简单的区分方法是:
Skill 解决“怎么做”,MCP 解决“连谁、查谁、调用谁”,Plugin 解决“把一套能力打包安装”。
下面这张截图是 Codex 里的插件页面,可以看到其中包含了 GitHub、Google Drive、PDF、Spreadsheets 等能力:

能实现一部分,但两者并不是一回事。
Dify 工作流里也有:
LLM 节点:相当于写提示词规则 Code 节点:可以执行 Python / Ja vaScript Tool 节点:可以调用外部工具或 API Agent 节点:可以让模型自主选择工具 Loop 节点:可以做循环和多轮修正
Dify 官方文档也说明,Agent 节点可以让 LLM 自主控制工具并迭代决定什么时候用工具;Code 节点可以执行 Python 或 Ja vaScript;Loop 节点可以做多轮循环。
但 Dify 和 Codex 的本质差别在于:
Codex 天然支持 Skill 文件夹机制;Dify 则更像一个可视化流程编排工具。
简单的 Skill 完全可以在 Dify 里用一个 LLM 节点复刻。
但复杂的 Skill 如果硬要拆到 Dify 里,工作流可能会变得非常庞大:
开始节点 ↓ 分类节点 ↓ Code 节点 ↓ 工具节点 ↓ LLM 润色节点 ↓ 循环判断节点 ↓ 结束节点
所以更合理的做法是:
简单规则:放 Dify 提示词节点 复杂处理:封装成 API 或工具 Dify:负责调用和编排 Codex Skill:更适合本地、代码、文件处理类的自动化
经过这一轮测试,可以这样来总结:
1. Skill 并不是什么神秘功能,它本质上是把重复的做事方法沉淀下来。
比如日报、客户群回复、部署文档整理、Excel 统计,这些都可以做成 Skill。
2. 简单的 Skill 就像固定提示词。
一个 SKILL.md 文件就能搞定。
3. 复杂的 Skill 则像一个能力包。
它可以包含 Python、Shell、模板、参考资料等。
4. Codex 并不是盲目执行的。
它会根据 Skill 的 description 判断是否要使用,使用时才会读取完整内容。
5. Python 脚本不会自动乱跑。
Skill 被选中后,Codex 会根据 SKILL.md 和当前任务来判断是否需要执行 Python。
6. Codex 的核心是智能循环。
它不是普通的死循环,而是:计划 → 执行 → 看结果 → 修正 → 再执行。
7. 用 Codex 跑代码一定要注意安全。
不要随便让它全局安装依赖,不要轻易使用 sudo pip install,最好使用项目自身的 .venv。
如果你是刚开始接触,建议先不要想得太复杂。
先记住这个版本:
Codex 是会动手干活的 AI 智能体;Skill 是给它安装的做事方法;Python 脚本是 Skill 里的小工具;MCP 是连接外部系统的接口;Plugin 是把一整套能力打包安装的工具。
真正用起来以后,你会发现 Skill 最适合沉淀那些每天都要重复说明的要求,比如:
帮我优化日报 帮我改客户群回复 帮我整理部署文档 帮我检查项目目录 帮我把杂乱工作记录生成周报
这些东西一旦写成 Skill,后面就再也不用每次都重复交代了。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述