跳转到内容
17.5k

Codex 提示词层

Codex 会分层组装提示词:它自己的基础指令、你的项目文档、权限与环境上下文、 你安装的技能,以及更多内容。Codex Set → Prompt 会显示这个层叠结构,告诉你 每一层占用多少空间,并让你关闭不需要的部分。

每一行都会显示它在组装顺序中的位置、控制它的配置键(如果有),以及它实际 发送内容的大小。

位置编号之间会有空缺。这是有意为之:这些数字是真实的组装索引,其中两个会在 下方的 过渡通知 中列出。如果把每组都从一开始重新编号,显示的就会是 Codex 实际并未使用的顺序。

类型 你可以做什么
可在此切换 一个真正的开关。会在 config.toml 中写入一个键。
功能开关控制 确实存在,但要从功能设置中更改,而不是在此页面。
始终启用 Codex 中任何地方都没有关闭开关。
变更时发送 通知状态过渡,因此只有内容发生变化时才会出现。
扩展层 无法列出。Codex 不会公开它们。

没有关闭开关的层根本不会显示开关,而不是显示一个禁用的开关。灰显控件会暗示 这项能力存在、只是暂时不可用,但实际并非如此。

点击层名称即可查看它发送的文本。对话框会从 codex debug prompt-input 读取内容, 所以显示的是真实内容,而不是描述。

有时没有内容可显示,对话框会说明具体原因:

  • 文件存在但为空。 你的 ~/.codex/AGENTS.md 是零字节,因此该层没有内容可发送。 对话框会显示路径。
  • 在我们读取的这一轮中,它没有发送任何内容。 各层只有在发生变化时才会重新发送, 所以未变化的层不会出现在单次样本中。
  • 基础提示词来自模型目录。 Codex 在可读列表之外发送它,因此对话框会从所选模型的 目录条目中读取;如果你设置了 model_instructions_file,则从该文件读取。如果目录中 只有尚未展开的模板,对话框会说明不予显示,因为那并不是 Codex 实际发送的文本。
  • 无法读取提示词。 此机器上的探测失败。

读取内容来自你的全局 Codex 主目录(~/.codex),而不是仪表板碰巧运行的目录。

+ Add layer 会追加你自己的指令。自定义层会组合到 developer_instructions 中, 它采用追加方式——Codex 会保留自己的指令,并把你的指令添加进去。

自定义层会在它们自身之间编号,因为它们会按该顺序合并为一个区段——它们不会 与内置层交错排列。

可以使用行上的箭头重新排序,也可以在行内任意位置按 Alt + Up / Alt + Down。 顺序就是组合顺序。

面板会显示已启用层的合计大小(对照 developer_instructions 的 128 KiB 上限), 以及合并后文本的可折叠预览——会把该区段推过上界的层,在保存前就能看到,而不是 保存之后。

删除某一层会先确认,然后提供几秒钟的撤销时间:该层会回到原来的位置,对顺序 敏感的列表因此不会因为一次误删而丢失。

+ Add layer 提供五个起点:精简输出、编辑前规划、解释推理、先测试,以及使用韩语 回复。每一个都会打开普通编辑器,预先填入内容且可完全编辑——预设只是起点,你保存的 内容会成为普通的自定义层。

这些预设是我们自己的文本,旨在提炼一种方法,而不是复制任何人的提示词。每个预设都会 注明来源。

编辑器提供上一层/下一层控件和位置指示器。移动时会保留未保存的编辑,因此你可以在编辑 途中比较两层,再返回原处,而不会丢失已输入的内容。

如果某一层包含无法按原文生效的内容,编辑器会发出警告——例如声称自己具有不同身份、 指定注册表已定义的工具、使用不会被任何机制展开的模板占位符,或陈述 Codex 稍后才会 生成的环境事实。它还会标出粘贴进来的凭据(层里的 API 密钥会在每次请求中以明文发给模型)、 让模型丢弃先前指令的措辞,以及用韩语声称的非 Codex 身份。

这些只是警告,绝不会阻止保存。如果你确实想覆盖 Codex,也可以这样做;警告只是让它成为 一个有意的决定,而不是意外。

提交署名 这一行会让模型在它写的提交里加上 Co-authored-by: Codex 尾注,并在它开的 拉取请求里加上 Generated with Codex. 这一行。

这里没有开关,[features] 里也没有:Codex 会从你账号的署名策略中解析该项。在账号层面 关掉它并不会移除这一层——Codex 会改为发送相反的指令,告诉模型不要添加尾注。无论哪种 情况都会发送内容,所以这一行标注为由你的账号决定,而不是始终启用。

基础提示词是唯一无法关闭的层,因为没有基础提示词的模型不是一个能工作的代理。不过你可以 替换它,基础指令 这一行上的开关就是做这件事的。

展开该行即可看到选择器。可以左右滑动、按左右方向键,或使用箭头按钮在各选项之间移动—— 屏幕阅读器朗读的也是这些按钮,因此没有触控板也能操作此页面。

选项 它是什么 可编辑
Codex 自带的基础提示词 你的配置中不存在 model_instructions_file 永不可编辑
你的变体 你自己写的提示词,保存在 ~/.codex/opencodex-prompt-base/ 可以
第二个变体 同上,最多两个 可以

第一个选项没有可编辑的内容,也没有 保存 按钮,对话框会说明原因,而不是显示灰显控件。 默认项并不是我们保存的一份 Codex 提示词副本——它就是该键的缺失状态。所以既没有可修改 的文本,也没有可删除的文本,选择它只是把 model_instructions_file 从你的配置中再次移除。

变体编辑器与自定义层编辑器有相同的保护:在各选项之间移动时未保存的编辑会被保留,带着编辑 内容关闭会先询问是否丢弃,输入时正文会按每个变体 64 KiB 的上限计数。

如果已有其他东西替换了你的基础提示词

Section titled “如果已有其他东西替换了你的基础提示词”

如果 model_instructions_file 指向的文件不是 opencodex 写入的,选择器会拒绝操作,并告知 该键指向何处。它不会静默地把你或其他工具设置的键改指到别处。不过你不必手动清除。导入为变体会转换该文件:预览展示将要安装的 确切文本——带有变体标题的 # 标题行,加上换行与制表符已规范化的正文——且确认前可编辑标题。正文在规范化后最多 可使用 64 KiB(预览中的 bodyBytes);实际写入的完整文件(含标题行)略大(serializedBytes)。确认通过哈希与 预览文本绑定,因此若期间文件或所选标题发生变化,导入会拒绝,而不是安装你从未见过的文本。 如果你更愿意从默认开始,也可以自行清除它。

这与导入 developer_instructions 的原则相同:面板报告它发现的内容,由你来决定。

切换会应用于新启动的会话,与此页面上的其他所有更改一样。

如果 developer_instructions 已经存在,且不是由 opencodex 写入,面板不会覆盖它。 面板会改为提供将文本导入为一层的选项:你会先看到现有值,在确认之前不会写入任何内容。

如果已保存的层与 config.toml 中的值不一致,面板会说明情况并提供 Repair,而不会 静默修复。两种修复路径会重写你写过的文本,因此这些操作始终需要明确执行。一次中断的写入 (“journal present”)只会在持有锁的情况下,使用日志中记录的文件状态进行恢复,不会 重新保存当前列表,也不会凭空补出缺失内容。如果实际文件与任何记录状态都不匹配,恢复会 拒绝执行并保留诊断证据。刷新后的面板会显示仍然存在的不一致。如果某个层文件已经丢失, 修复功能会先写入备份,再进行任何修改。

更改会应用于新启动的会话。已经运行的会话会继续使用启动时的提示词设置。

此页面读取什么,又不读取什么

Section titled “此页面读取什么,又不读取什么”

opencodex 只读取一个配置文件——你的 config.toml。Codex 会从多个层解析设置,因此这里的值 表示的是你的文件所写的内容,不一定是 Codex 最终计算出的值。

这些键位于 Codex 的 config.toml 中,而不是 opencodex 自身的配置。

键 默认值 层
include_permissions_instructions true 权限
include_collaboration_mode_instructions true 协作模式
include_environment_context true 环境上下文
include_apps_instructions true 应用
skills.include_instructions true 技能
developer_instructions 未设置 按顺序连接的自定义层
model_instructions_file 未设置 基础提示词,在选择了变体时

写入采用逐行编辑,你的注释和格式会保留;opencodex 无法识别的键会原样保留,而不会被删除。

缺失的键按默认值读取,而不是按 false。面板显示文件中实际存在的值,并在键未设置时说明这一点。

带有显式值的行还会提供 重置为默认值:它会删除该键行,而不是把默认值写回去。只有这样, 如果 Codex 之后更改默认值,配置才会继续跟随——写入 key = true 会把今天的默认值冻结成覆盖。

单值编辑器会在写入或重置键之前拒绝数组、内联表和多行字符串,保留原始字节。导入会明确报告无法读取的配置。只读标题预览期间仍可编辑输入框,确认仍要求与该标题绑定的预览。测量的 HTTP 或网络错误会显示为失败,而不是声称另一个测量仍在进行。