Codex 技能能不能被读到,先看文件放在哪。它读技能的位置分四类,范围不一样。

仓库级:从当前目录往上爬
在仓库里启动 Codex。它会从当前工作目录开始往上扫,一直扫到仓库根目录里的 .agents/skills。
三层可以放。当前工作目录下的 .agents/skills,适合只服务一个微服务或者一个模块的技能。
上一级目录里的 .agents/skills,适合仓库里多个子目录共用一套。
仓库根目录的 .agents/skills,整个仓库的人都能用。下面任何子目录都吃得到。
用户级、管理员级:跟人走,跟机器走
用户级放在自己的主目录下。不管你进哪个仓库,它都能用。适合攒自己那套顺手的技能。
管理员级在机器或者容器层面,运维脚本、SDK 自动化这类要统一下发的放这儿。
还有一类是随 Codex 一起内置的系统技能,所有用户都能用,比如后面要讲的 skill-creator。
名字撞了会怎样
两个技能用了同一个 name,Codex 不会把它们的指令揉成一份。两个都留着,都进技能选择器。
团队里各人带各人的技能,撞名挺常见。装之前先扫一眼名字。
改完没动静,重启一次
Codex 会自动检测技能变更。改了 SKILL.md,界面上却像什么都没发生,重启一次,它会把目录重扫一遍。
技能目录支持符号链接,扫描的时候会顺着链接往里读。
装太多会挤占提示词吗
Codex 管上下文的方式叫按需展开。启动阶段,它只读每个技能的名字、description 和文件路径。等它判定这个技能真要用了,才把完整的 SKILL.md 读进上下文。
初始那张技能列表有预算:最多占模型上下文窗口的 2%。窗口大小不清楚的时候,上限是 8000 字符。
装得太多,它先把技能描述缩短。再挤,可能直接从初始列表里省掉一部分技能,界面上给一句警告。
这个预算只管初始列表。技能一旦被选中,完整指令该读还是读。
所以那句 description 写得准不准,比写得长不长要紧。
