openinterpreter 的 Codex 技能设计:latest-model.md 作为模型指引的受控回退快照
【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter
在 openinterpreter 仓库中,codex-rs/skills打包了一个名为openai-docs的示例技能,用于让 Agent 回答 OpenAI 模型、API 与 Codex 相关问题。本篇以该技能中的回退快照文件 latest-model.md 为主体,讲解一个工程化设计问题:当"最新模型"这类时效性信息随官方文档持续漂移时,如何为 Agent 设计一份"紧凑、非权威、必须披露"的本地兜底资料,并配合动态解析脚本保证官方来源始终优先。读完本文,你将掌握该快照文件的完整内容与使用边界、技能内部的来源优先级机制,以及配套解析器的源码级工作方式。
文件定位:一份紧凑且自我声明为"非权威"的回退快照
latest-model.md 全文只有一页,开头第一句就定义了它自身的性质:
This is a compact, non-authoritative fallback, not a source for current availability, prices, aliases, or defaults.
这句话确立了三条使用边界:
- 它不是权威来源:不能从中获取当前的可用性、价格、别名或默认值;
- 官方文档优先:应先搜索并抓取当前的官方模型指引页(官方 latest-model 指南页及相应官方模型页),本快照仅作为兜底;
- 漂移时以官方为准:若快照与抓取的官方文档不一致,官方文档获胜;
- 必须披露:一旦使用了这份回退快照,就要向用户披露("Disclose any use of this fallback")。
这种写法把一个静态 Markdown 文件从一个"可能被当成事实的数据表"重新定义为"有明确降级语义的缓存"。这是整份文件最核心的设计意图:不禁止快照过期,而是把"过期风险"显式编码进使用规则里。
快照内容继承:GPT-5.6 家族表与遗留模型边界
下面完整继承原文档的两张表,它们是快照的唯一实体内容。
GPT-5.6 家族
原文档为 GPT-5.6 家族给出了"对照当前模型页验证"的分工表:
| 模型 ID | 文档标注的工作负载(需对照当前模型页验证) |
|---|---|
gpt-5.6 | GPT-5.6 家族别名;需验证其当前文档记录的路由与可用性 |
gpt-5.6-sol | 质量优先的旗舰,负责推理与高难度编码任务 |
gpt-5.6-terra | 质量、延迟与成本的均衡型 |
gpt-5.6-luna | 高吞吐、低延迟的工作负载 |
原文档同时要求:在进行真实的 GPT-5.6 迁移时,使用官方的 upgrading-to-gpt-5p6-sol 指南;在被要求给出 GPT-5.6 提示词建议时,使用官方的 prompt-guidance-gpt-5p6 页面;并且"在推荐请求形态、推理设置、端点、工具行为或迁移方案之前,先打开并阅读相应官方页面"。这与后文 upgrading-to-gpt-5p6-sol.md 中"以线上文档为模型 ID、参数、限额、定价与功能可用性的权威"的表述一致——快照文件只负责"家族角色分工"这一相对稳定、而具体数值则被刻意留给线上文档。
被显式请求的既有模型
| 模型 ID | 边界 |
|---|---|
gpt-4.1 | 仅当用户显式请求该模型或既有迁移目标时保留;需搜索并抓取它自己的当前官方指南 |
gpt-5.4 | 仅当用户显式请求该模型或既有迁移目标时保留;需搜索并抓取它自己的当前官方指南 |
围绕该表,原文档给出三条禁止性规则,值得逐条保留:
- 不得把遗留模型宣传为当前默认("Do not promote a legacy model as the current default");
- 不得把遗留模型替换进不相关的任务,也不得用 GPT-5.6 去替换一个被显式请求的遗留目标——这一条与 model-migration.md 中"显式目标必须原样保留,包括显式请求的 GPT-4.1 或 GPT-5.4 迁移,不得运行 latest-model 解析器、不得替换为更新模型"的规则互相印证;
- 专用模型(图像、音频、实时、编码、审核、向量)只在对照当前官方文档验证了所请求的模态之后才推荐。
GPT-5.6 Pro 的表述纪律
原文档最后一行是一条专门针对 Pro 的验证规则:描述模型 ID、推理模式、请求参数或账号可用性之前,须先对照当前的官方 Responses 与模型文档核验 GPT-5.6 Pro;不得凭空发明一个独立的gpt-5.6-pro模型 slug。这一点在 upgrading-to-gpt-5p6-sol.md 中得到更完整的展开:Pro 是"基座模型 + 推理模式"的组合(reasoning: { "mode": "pro", ... },且仅走 Responses 端点,支持的 effort 从medium起),因此快照文件把它单列出来,是为了防止 Agent 把"模式"误当成"新模型"。
技能内部机制:latest-model.md 在来源优先级中处于什么位置
单看 25 行的快照文件并不完整,它的真正价值来自技能根文件 SKILL.md 中规定的来源顺序。该文件对 Agent 的"首个实质性动作"有硬性要求:
- 用 2~6 个关键词的简短查询,搜索用户所请求的确切官方文档主题与被显式点名的模型;
- 若已有可直接调用的官方文档搜索与页面抓取能力,先用它:先搜索,再打开匹配的官方页面;否则立即使用官方域名的网页搜索,并真正打开或抓取相关页面,而不是依赖搜索摘要;
- 只有在"完成上述官方来源顺序之后",才允许阅读本地 references、检查仓库文件、运行模型解析脚本、起草计划或凭记忆作答;
- 保留用户显式请求的模型,永远不得替换为更新模型("Preserve the exact requested model; never substitute a newer model")。
在此前提下,SKILL.md 的"Source and execution boundaries"一节明确给出 latest-model.md 的启用条件:
Use
references/latest-model.mdonly as a disclosed fallback after current official model guidance does not answer the question.
即:只有当当前官方模型指引无法回答问题时,才以"已披露的回退"身份读取它。同一条款还规定了另外两份参考的启用条件——upgrading-to-gpt-5p6-sol.md 仅用于真实被请求的 GPT-5.6 家族迁移;prompting-guide.md 仅用于被请求的提示词工作。
再看 model-selection.md,它给出了同一规则的选型侧表述:模型选择推荐的第一、二步是搜索并抓取当前官方文档(当前/最新家族指引指向官方 latest-model 指南页),"不要基于搜索摘要、猜测的默认值或打包快照做推荐";只有在"抓取到的当前官方来源无法回答"时才读references/latest-model.md,且要披露"打包的回退指引可能已经过期"。
把这三处放在一起,可以看到该技能对"时效性知识"的完整处理链:官方实时抓取(首选)→ 打包快照(兜底,必须披露)→ 用户显式请求(最高优先级,不可被新模型替换)。latest-model.md 正是这条链路的第三级缓存。
动态解析器:resolve-latest-model-info 如何解析"当前模型"
既然官方来源优先,那么"当前模型到底是什么"是如何动态确定的?技能目录下的 scripts/resolve-latest-model-info 是一个 POSIX shell 引导脚本,scripts/resolve-latest-model-info.cjs 是真正的 Node.js 实现。从源码看,其工作方式如下:
运行时探测(shell 引导层)。引导脚本通过process.versions.node的主版本号判断候选解释器是否满足 Node 18+,按以下顺序寻找可用运行时:环境变量NODE、PATH中的node、Codex 自带运行时缓存路径(~/.cache/codex-runtimes/codex-primary-runtime/dependencies/...)、/opt/homebrew/bin/node、/usr/local/bin/node、/usr/bin/node;全部失败则向 stderr 打印 "No usable Node.js 18+ runtime found" 并以退出码 127 结束。这个"不假设可执行位、通过sh调用"的写法(见 model-migration.md 中"在 POSIX shell 中通过sh调用解析器,不要假设可执行位"的说明)保证了技能被复制进不同仓库后的可移植性。
数据源读取与重试(cjs 层)。readSource支持file://、本地相对路径和 http(s) 三种来源,默认源为官方 latest-model 的 Markdown 页面(DEFAULT_URL常量,可用LATEST_MODEL_URL环境变量或--source/--url参数覆盖)。抓取采用最多 3 次尝试、每次间隔 250ms 递增退避的策略;对 4xx(除 429)不重试,直接失败。请求头设置accept: text/markdown,text/plain,*/*,说明它依赖官方文档站对同一页面提供 Markdown 表示的能力。
元信息块解析。脚本在抓回的 Markdown 中查找两种等价形式之一:
- 顶层
latestModelInfo:行,其后跟 2 空格缩进的key: value列表(parseIndentedInfo); - HTML 注释块
<!-- latestModelInfo ... -->内的扁平key: value行(parseFlatInfo)。
normalizeInfo强制要求model、migrationGuide、promptingGuide三个字段齐全,否则抛错;相对路径形式的指南 URL 会按baseUrl解析为绝对 URL(LATEST_MODEL_BASE_URL可覆盖)。同时modelToSkillSlug把模型 ID 中的.替换为p(如gpt-5.6→gpt-5p6),这与仓库中 upgrading-to-gpt-5p6-sol.md 的文件名及官方指南 URL 的命名风格一致——从源码结构看,该 slug 用于在文件系统层面安全地引用含点号的模型名。
成功判据与降级。model-migration.md 规定:解析成功必须产出model、migrationGuideUrl、promptingGuideUrl三个非空字段的 JSON;不得抑制或重定向 stdout;命令失败或字段缺失时,先按平台重试一次(Windows 下改用node <skill-dir>\scripts\resolve-latest-model-info.cjs),仍失败则回落到"当前官方文档 → 已披露的打包参考"。也就是说,解析器输出的是迁移与提示词指南的坐标,而 latest-model.md 这类打包快照是这条链路的最后一级。
与其他参考文件的分工
把 references 目录整体来看,latest-model.md 与兄弟文件构成清晰的职责切分:
| 文件 | 触发条件 | 职责 |
|---|---|---|
| latest-model.md | 官方来源无法回答模型问题 | 非权威家族快照,必须披露使用 |
| model-selection.md | 选型/对比需要更多指导 | 官方搜索→抓取→按模态/质量/延迟/成本匹配的推荐流程 |
| model-migration.md | 真实迁移或提示词升级 | 显式目标保留、动态目标解析、指南 URL 当作不透明句柄 |
| upgrading-to-gpt-5p6-sol.md | 真实被请求的 GPT-5.6 迁移 | 迁移判断:角色映射、推理档位保持、Chat Completions/工具兼容、缓存与多模态陷阱 |
| official-docs.md | 官方页面仍未解决来源选择或 API 形态 | 官方文档检索方法与引用纪律 |
其中 upgrading-to-gpt-5p6-sol.md 与 latest-model.md 互补:快照文件回答"家族里有哪些角色",迁移指南回答"换模型时哪里会坏"——它明确列出 5.6 迁移的主要风险(把 Sol 选给原本刻意低成本的路线、继承medium默认推理导致原none行为改变、Chat Completions 带函数工具时未显式设为none、提示缓存命中丢失、图像/PDF 输入 token 增长等),并要求把"线上文档视为模型 ID、参数、限额、定价、功能可用性的权威,本文件只提供迁移判断"。两份文件共同体现了同一原则:事实数据外置到官方实时来源,本地文件只保留行为规则与判断框架。
设计要点小结
以 latest-model.md 为核心的这套机制,可以提炼为四条可复用的工程实践:
- 快照自我声明降级语义:文件第一句就声明自己"紧凑、非权威、不回答可用性/价格/别名/默认值",把使用边界写进数据文件本身,而不是依赖外部约定;
- 官方优先 + 快照兜底 + 强制披露:SKILL.md 把"先官方搜索抓取、后本地参考"的顺序写成 Agent 的首个实质性动作规则,快照只在官方无法回答时启用,且使用即披露;
- 显式请求不可被新模型替换:无论快照还是解析器,都不得把用户显式请求的遗留模型(如
gpt-4.1、gpt-5.4)悄悄升级为最新家族,这是三条规则在 SKILL.md、model-migration.md、latest-model.md 中反复出现的不变量; - 解析器输出坐标而非事实:resolve-latest-model-info 解析官方页中的
latestModelInfo元数据块,返回模型名与两份指南 URL,让 Agent 抓取指南正文;解析失败时沿"重试 → 官方文档 → 已披露快照"逐级降级。
对维护 Codex 技能或类似 Agent 资料包的开发者而言,这套"实时来源 + 受控快照 + 披露义务"的组合,给出了处理模型这类高频漂移信息的直接范式:让静态文件永远只承担它仍然稳定的那部分信息(角色分工、行为边界、验证纪律),把易变数值交给运行时抓取,并对每一次兜底使用保持透明。
【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考