先给你一个总判断:
- features 更像是 CLI 本身能力的总开关
- -c, —config 更像是 一次运行的行为注入器
- -p, —profile 则是 把一组常用 -c 配置命名复用
对你这个 QROS 项目,真正最有价值的是:
- 用 features 识别哪些能力当前可用、稳定不稳定
- 用 -c 做单次任务的行为切换
- 用 profile 把不同工作流固化成“模式”
———
1. features 到底是什么
你本机 codex features list 当前能看到很多 feature flag, 比如:
- multi_agent = true
- apps = true
- shell_tool = true
- shell_snapshot = true
- plugins = true
- fast_mode = true
- child_agents_md = true
也有很多是 under development、experimental、removed。
这意味着什么
这些 flag 不是你项目自己的 feature,而是 Codex CLI 自己 的功能开关。 它们决定的是:
- 某个工具链是否启用
- 某种交互模式是否启用
- 某种实验能力是否开放
- 某些旧能力是否已经废弃
features 有三种用法
1. 查看当前能力
codex features list
用途:
- 看哪些能力现在能用
- 看哪些能力是稳定版,哪些还是实验版
- 判断你后面设计 harness 或 AGENTS 的时候能不能依赖某能 力
2. 持久开启某个能力
codex features enable <feature_name>
3. 持久关闭某个能力
codex features disable <feature_name>
这类修改通常会写进你的 ~/.codex/config.toml,所以是 长期 生效 的。
———
2. 对你项目,features 怎么用才合理
适合做什么
- 做 受控实验
- 评估某个 Codex 能力是否会影响:
- AGENTS.md 的行为
- MCP server 的调用体验
- shell / sandbox 行为
- multi-agent 工作流
不适合做什么
- 不适合把项目流程直接绑死在 under development 的 feature 上
- 不适合为了单次任务,长期改动全局 feature
对 QROS 的实际建议
建议 1:把 features list 当成“能力盘点”
比如你准备设计:
- QROS 子 agent 流程
- harness 模式
- MCP 接 research registry
那先看:
codex features list
你现在本机能确认:
- multi_agent = true
- child_agents_md = true
- plugins = true
- shell_tool = true
这说明:
- 多 agent / 子 agent 这条线是可用的
- shell 工具是可用的
- 你可以基于这些能力设计流程
但像:
- tool_search = false
- memories = false
- undo = false
就说明这些不该被你当前 workflow 默认依赖。
建议 2:实验能力用临时开关,不要先全局 enable
如果以后你想测某个实验能力,优先用:
codex —enable <feature_name> …
而不是先:
codex features enable <feature_name>
原因:
- 前者只影响这一次运行
- 后者会污染你以后所有仓库的默认行为
———
3. -c, —config 到底强在哪
这是 Codex CLI 最有工程味的能力之一。
它允许你在 不改全局配置文件 的前提下,对某一次运行临时注 入配置。
例如你本机 help 里明确支持:
-c model=“gpt-5.4” -c ‘sandbox_permissions=[“disk-full-read-access”]’ -c shell_environment_policy.inherit=all
你可以用它改什么
按你本机帮助和配置结构,常见包括:
- 模型
- model=“gpt-5.4”
- 沙箱
- sandbox_mode=“workspace-write” 这类
- feature flag
- features.multi_agent=true
- 环境继承策略
- shell_environment_policy.inherit=all
- 其他 config.toml 里已有字段
它为什么比直接改配置文件更重要
因为它让你可以把不同任务模式变成“临时运行配置”。
也就是说,你不用把 Codex 只有一种人格和一种执行方式。
———
4. -c 和 features 的关系
这是最容易混淆的点。
features enable/disable
- 改的是长期状态
- 更像“修改默认设置”
—enable/—disable
- 改的是单次运行的 feature
- 更像“本次临时打开/关闭某能力”
-c features.xxx=true
- 本质上也是单次运行临时覆盖
- 只是写法更通用
所以优先级上,你可以这样理解:
- 想长期改变默认行为:codex features enable/disable
- 想某次任务临时试验:—enable/—disable 或 -c features.xxx=true
———
5. profile 是什么
你本机 codex exec —help 明确支持:
-p, —profile <CONFIG_PROFILE>
这意味着 Codex 支持在 ~/.codex/config.toml 里定义命名配 置组。
虽然你当前配置文件里还没看到 [profiles.xxx],但 CLI 已经 支持这个机制。
它的意义
就是把一组常用配置起个名字。
比如你不用每次都写:
codex exec
-m gpt-5.4
-s workspace-write
—enable multi_agent
-C /path/to/repo
”…”
你可以用 profile 把它固化成:
codex exec -p qros-stage-audit ”…”
———
6. 你提到的 4 个场景,怎么设计 profile
下面我按你这个项目讲。
———
A. docs-review
适合什么
- 改文档
- 对齐 runtime 字段说明
- 检查 README / SOP / experience 文档一致性
你需要的特点
- 模型强一点
- 沙箱风险低
- 一般不需要太激进的执行权限
- 可以偏向只读或轻编辑
思路:
- workspace-write
- 保持默认模型
- 不一定需要 multi-agent
- 强调文档一致性
适合你项目的用途:
- 改 stage-freeze-group-field-guide.md
- 改 docs/experience/*
- 补入口文档链接
- 做字段一一对应说明
———
B. runtime-edit
适合什么
- 改 tools/
- 改 scripts/
- 改 scaffold / build / runtime 逻辑
你需要的特点
- 允许写工作区
- 更强调测试
- 对 shell/tool 使用要求更高
思路:
- workspace-write
- 强一些的模型和 reasoning
- shell/tool 能力必须可用
- 跑最小相关测试
适合你项目的用途:
- 改 tools/csf_*_runtime.py
- 改 scripts/run_research_session.py
- 改 artifact 命名或 freeze draft shape
———
C. harness-test
适合什么
- 专门验证 Codex 自己的行为
- 测 AGENTS.md 加载链
- 测不同目录启动时的指令发现
- 测 CLI 行为和 feature 影响
你需要的特点
- 关注 CLI 本身,不只是仓库代码
- 需要可重复切换目录、模式、feature
- 更适合短任务、对照实验
思路:
- 用 -C 在不同目录下运行
- 用 —enable/—disable 做 feature 对照
- 尽量 —ephemeral
- 把输出落文件或用 —json
适合你项目的用途:
- 验证 root AGENTS.md 和 harness/AGENTS.md 的发现机制
- 测某 feature 是否影响 instruction chain
- 做你现在这种“CLI harness engineering”实验
———
D. qros-stage-audit
这个最值得展开。
它适合:
- 审某个 stage 的合同、产物、测试和文档是否一致
- 不一定改代码,更多是做“阶段一致性核查”
- 很适合 QROS 这种流程仓
这个 profile 应该解决什么问题
在 QROS 里,一个 stage 经常同时有这些对象:
- runtime draft 字段
- skill 里的 group 名
- docs 里的字段说明
- tests 里的 fixture 形状
- build/scaffold 实际生成的 artifact
最容易出的问题是:
- 文档字段和 runtime 字段不一致
- skill 术语和测试里的真实 draft 名称不一致
- artifact 名字变了,但文档没改
- review 规则还在旧命名上
qros-stage-audit 就是专门做这个。
它应该具备的行为
- 在某个 stage 上做横向对账
- 默认先读:
- skills/qros-*-author/SKILL.md
- 对应 tools/*runtime.py
- 对应 tests/test_*runtime.py
- 对应 docs/main-flow-sop/*
- 对应 docs/experience/*
- 输出重点不是代码修改,而是:
- 发现不一致
- 建议修正点
- 必要时自动补文档或测试
很适合你项目的场景
比如你说:
- “审一下 csf_signal_ready 的字段、artifact、文档、测试 是不是一套东西”
- “检查 holdout_validation 主线和 CSF 路线命名有没有漂 移”
- “看看 delivery_contract 在所有 stage 里是不是表述一致”
这就是典型的 qros-stage-audit
———
7. qros-stage-audit profile 我建议怎么配
运行目标
让 Codex变成“阶段一致性审计器”,而不是普通写代码助手。
核心要求
- 模型强
- 允许工作区写入
- 默认跑局部测试
- 适合读大量文档和测试文件
- 不一定需要子 agent,但可以保留
典型任务形式
codex exec -p qros-stage-audit
-C /Users/mac08/workspace/web3qt/quant-research-os
“审计 csf_signal_ready:字段名、artifact、skill、
runtime、tests、docs 是否一致。先报不一致项,再修。“
它的最佳输出
不是“总结一下”,而是:
- stage 的事实来源有哪些
- 当前有哪些命名/契约不一致
- 哪些是 runtime 真值
- 哪些文档和测试要改
- 改完后跑哪些验证
———
8. 你现在这个项目,最值得先做哪几个 profile
如果你真要落地,我建议先做这 3 个,不要一下配太多:
docs-review
因为你现在文档密集,而且字段说明很重要。
runtime-edit
因为你有很多 tools/*runtime.py 和 stage scaffold。
qros-stage-audit
因为这是你这个仓库最有特色、也最容易产生价值的 profile。
harness-test 我会放第四个,因为它更偏 Codex 本身实验,不 是你主仓日常最高频任务。
———
9. 一个非常实际的建议
先不要急着长期 features enable。
你应该先做的是:
- 定义几个 profile
- 每个 profile 里把模型、sandbox、偏好固定住
- feature 只在确实需要时临时开
也就是:
- profiles 是工作流
- features 是实验能力
不要反过来。
———
10. 如果你要继续,我建议下一步做这个
我可以直接帮你产出一份适合你本机的 ~/.codex/config.toml 片段,包含:
- docs-review
- runtime-edit
- harness-test
- qros-stage-audit
四个 profile 的具体配置草案。
这样你下一步就不是抽象讨论,而是可以直接上手跑。