Files
frontend-miniapp/docs/CODEX_DUAL_MODEL_WORKFLOW.md
lyf f0d27441d6
Some checks failed
CI / verify (push) Has been cancelled
完善讲解配置与H5构建校验
2026-07-24 22:34:16 +08:00

426 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Codex 双模型审核与执行工作流
> 更新日期2026-07-16
> 适用项目:`frontend-miniapp` 及其他已登记到 Codex App 的本地项目
> 工作模式:`gpt-5.6-sol / xhigh` 审核,`gpt-5.6-terra / medium` 执行
> 文档版本1.1(禁止子代理上下文分叉)
---
## 1. 文档目的
本说明用于处理需要先深入审核、再自动启动独立执行线程实施修复的开发任务。
推荐流程:
```mermaid
flowchart LR
A["整理真实需求"] --> B["手动创建 sol / xhigh 审核线程"]
B --> C["源码审核与浏览器复现"]
C --> D["生成实施级修复方案"]
D --> E["自动创建 terra / medium 执行线程"]
E --> F["修改、测试与浏览器验收"]
F --> G["检查执行报告"]
```
这种方式适合以下任务:
- 问题涉及多个页面、状态管理、异步流程或渲染器生命周期。
- 需要先确认问题是否真实存在,不能直接按用户猜测修改。
- 希望高推理模型负责根因分析,由成本和速度更平衡的模型负责实施。
- 希望分析线程与修改线程职责分离,减少分析过程中误改文件的风险。
简单文案调整、单文件确定性修改或无需调查的小任务通常不需要使用该流程。
---
## 2. 当前环境能力
本机当前已验证的 Codex App 能力:
- `codex_app__list_projects`:获取 Codex App 已登记项目及 `projectId`
- `codex_app__create_thread`:创建带初始提示词的新线程,并立即启动任务。
- `codex_app__read_thread`:读取新线程状态,确认任务是否已接收和执行。
- 创建线程时可以指定项目、运行环境、模型和推理强度。
### 2.1 必须区分的两类机制
| 机制 | 典型工具 | 是否用于本流程 | 原因 |
| --- | --- | --- | --- |
| 协作子代理 | `spawn_agent``fork_turns` | 禁止 | 需要分叉当前线程上下文,可能触发 Responses Lite 的上下文枚举兼容错误 |
| 独立 Codex 线程 | `codex_app__create_thread` | 必须 | 使用完整、自包含的初始提示词启动独立项目会话,不依赖子代理上下文分叉 |
| 历史线程分叉 | `codex_app__fork_thread` | 禁止 | 会复制线程历史,本流程不需要继承上下文,且不能替代明确的模型化执行线程 |
本流程中的“执行线程”始终指 `codex_app__create_thread` 创建的独立 Codex App 项目线程,不是 `spawn_agent` 创建的子代理。
已知错误:
```text
X-OpenAI-Internal-Codex-Responses-Lite requires ***.context to be all_turns.
```
该错误发生在子代理上下文分叉请求进入模型执行之前。即使公开参数传入 `fork_turns: "all"`,部分 Codex App/协作工具版本仍可能没有将其正确转换为内部要求的 `all_turns`。这不是项目源码、Git、目标业务模型或测试命令报错。
本流程的处理原则是彻底绕过该路径:
- 当前审核线程独立完成审核,不启动任何子代理。
- 不设置或传递 `fork_turns`
- 不使用 `codex_app__fork_thread` 复制上下文。
- 审核完成后只调用 `codex_app__create_thread`
- 将审核证据完整写入新线程的初始提示词,使执行线程不依赖父线程上下文。
- `create_thread` 不可用或失败时如实报告阻塞,不得回退到 `spawn_agent`
当前验证可用的组合:
| 阶段 | 模型 | 推理强度 | 创建方式 |
| --- | --- | --- | --- |
| 审核 | `gpt-5.6-sol` | `xhigh`(界面显示为“极高”) | 用户手动创建 |
| 执行 | `gpt-5.6-terra` | `medium`(界面显示为“中”) | 审核线程自动创建 |
注意:模型 ID、推理档位和线程工具属于当前 Codex App 运行环境能力,升级 Codex 后应重新确认。在线 Codex 手册在本文编写时因 HTTP `403` 无法获取,因此上述能力以本机实际暴露的工具定义为准。
---
## 3. 提问前准备
每个新需求至少整理以下信息:
1. 项目绝对路径。
2. 用户实际操作步骤。
3. 当前实际结果。
4. 预期正确结果。
5. 已知影响范围。
6. 不允许修改的内容或架构约束。
7. 可以执行的测试和验收方式。
推荐使用以下需求结构:
```text
业务场景:
[用户在什么状态下执行什么操作]
复现步骤:
1. [步骤一]
2. [步骤二]
3. [步骤三]
实际结果:
[当前发生了什么]
预期结果:
[正确行为是什么]
补充约束:
[H5/小程序范围、性能、兼容性、禁止重构区域等]
```
不要只写“功能有问题,请分析并修复”。缺少操作路径和预期结果时,审核模型可能只能根据源码猜测产品意图。
---
## 4. 标准操作步骤
### 4.1 创建审核线程
在 Codex App 中手动新建项目会话:
1. 选择目标项目。
2. 模型选择 `gpt-5.6-sol`
3. 推理强度选择“极高”,对应 `xhigh`
4. 粘贴第 5 节的通用提示词。
5. 替换其中的项目路径、需求、预期结果和约束。
### 4.2 审核线程职责
审核线程必须只进行以下工作:
- 检查工作区和项目规则。
- 审核源码调用链和状态变化。
- 对比正常路径与异常路径。
- 通过 H5 浏览器或测试复现。
- 判断问题是否真实存在。
- 输出根因、文件位置、修复步骤、测试矩阵和验收标准。
审核线程不得修改、格式化、暂存、提交或回滚项目文件。
审核线程还必须遵守以下工具路由限制:
- 禁止调用 `spawn_agent` 或任何等价的协作子代理工具。
- 禁止传递 `fork_turns`,无论其值是 `all``none` 还是其他值。
- 禁止调用 `codex_app__fork_thread`
- 禁止为了并行审核创建专家子代理;所有审核由当前主线程完成。
### 4.3 自动创建执行线程
审核完成后,审核线程必须在当前回合结束前实际执行:
1. 调用 `codex_app__list_projects`
2. 使用项目绝对路径匹配正确的 `projectId`
3. 调用 `codex_app__create_thread`
4. 指定 `environment.type``local`
5. 指定模型为 `gpt-5.6-terra`
6. 指定推理强度为 `medium`
7. 将完整审核证据和修复方案放入新线程的初始提示词。
8. 调用 `codex_app__read_thread` 检查一次启动状态。
本阶段只允许使用 `codex_app__list_projects``codex_app__create_thread``codex_app__read_thread` 完成交接。不得使用 `spawn_agent``fork_turns``fork_thread` 作为替代方案。
核心创建参数应符合:
```json
{
"target": {
"type": "project",
"projectId": "<通过 list_projects 解析出的真实 ID>",
"environment": {
"type": "local"
}
},
"model": "gpt-5.6-terra",
"thinking": "medium",
"prompt": "<完整审核证据、修复方案、测试矩阵和验收标准>"
}
```
`codex_app__create_thread` 的初始提示词会启动新线程。不能只在回复中展示上述 JSON也不能要求用户再手动复制修复方案。
### 4.4 执行线程职责
执行线程应:
- 直接按照审核结论实施,避免重新进行宽泛分析。
- 保护用户已有未提交修改。
- 优先修复共享状态、数据或架构边界,不使用页面级临时标志掩盖问题。
- 增加与风险匹配的单元测试、集成测试和浏览器流程测试。
- 执行项目要求的类型检查、lint、测试和构建命令。
- 报告修改文件、验证结果和剩余风险。
### 4.5 验收交接
审核线程最终回复至少应提供:
- 审核结论和根因摘要。
- 修复方案摘要。
- 新执行线程 ID。
- 执行模型和推理强度。
- 新线程启动状态。
- 创建失败时的真实错误。
执行线程最终回复至少应提供:
- 实际修改的文件。
- 实施内容和关键设计决策。
- 测试命令及结果。
- 浏览器验证步骤及结果。
- 未完成项和剩余风险。
---
## 5. 新需求通用提示词
将下面的内容粘贴到手动创建的 `gpt-5.6-sol / xhigh` 线程,并替换方括号内容。
```text
这是一个新的开发任务,请按照“高模型审核 -> 新线程执行”的双阶段流程完成。
最高优先级工具路由约束:
1. 本任务禁止使用任何协作子代理或子 Agent。
2. 禁止调用 spawn_agent、followup_task、send_message 或其他 collaboration 子代理工具。
3. 禁止设置、传递或重试 fork_turns包括 fork_turns="all"。
4. 禁止调用 codex_app__fork_thread。
5. 当前主线程必须独立完成全部审核,不得为了并行分析创建专家子代理。
6. 审核完成后的执行任务,只能通过 codex_app__create_thread 创建独立 Codex App 项目线程。
7. create_thread 不可用或调用失败时,必须如实报告阻塞;不得回退到 spawn_agent。
8. 新执行线程必须获得完整、自包含的初始提示词,不能依赖父线程上下文继承。
项目目录:
[项目绝对路径]
需求/问题:
[真实业务场景、复现步骤和异常现象]
预期行为:
[正确结果和验收标准]
补充约束:
[不能修改的模块、运行端范围、数据来源、性能要求等]
第一阶段:当前线程只审核
1. 当前线程只进行源码审核、问题复现和修复方案设计,不修改文件。
2. 先检查项目规则、AGENTS.md、相关 SKILL.md、架构文档和未提交修改。
3. 不要直接接受我的根因判断,必须通过源码证据和实际运行验证问题是否存在。
4. 对比正常路径和异常路径,追踪完整调用链、状态变化、异步请求和生命周期。
5. 尽可能通过浏览器或项目测试复现;不能复现时标记为“仅源码风险”。
6. 输出实施级方案,包括根因、文件/函数/行号、修改步骤、测试矩阵和验收标准。
第二阶段:强制创建并启动独立 Codex App 执行线程
用户明确授权你通过 codex_app__create_thread 创建和启动一个新的独立 Codex 项目线程执行修改。该线程不是协作子代理。
完成审核方案后,不得直接结束当前回合,必须:
1. 实际调用 codex_app__list_projects解析上述项目的 projectId。
2. 实际调用 codex_app__create_thread 创建新线程。
3. 新线程必须使用 environment.type=local。
4. 新线程模型必须使用 gpt-5.6-terra。
5. 新线程推理强度必须使用 medium。
6. 新线程初始提示词必须完整嵌入复现证据、根因、文件位置、修复步骤、测试矩阵和验收标准。
7. 不能只输出线程创建参数或交接提示词,必须实际调用工具。
8. 创建后使用 codex_app__read_thread 检查一次,确认新线程已经收到任务并开始执行。
9. 不得重复创建多个执行线程。
10. 不得调用 spawn_agent、fork_turns 或 codex_app__fork_thread失败时不得切换到子代理方案。
执行线程必须:
1. 直接实施已经审核完成的方案,不重新开始宽泛分析。
2. 保留用户已有未提交修改,不回滚无关变更。
3. 修复真正的共享逻辑或架构边界,避免临时标志和数据特例。
4. 增加与风险相匹配的测试。
5. 运行项目规定的类型检查、lint、测试和构建命令。
6. 对实际用户操作路径进行浏览器验证。
7. 报告修改文件、测试结果、浏览器证据和剩余风险。
当前审核线程最终回复必须包含:
- 审核结论。
- 根因和修复方案摘要。
- 新执行线程 ID。
- 执行模型和推理强度。
- 新线程启动及首次状态检查结果。
- 创建失败时的真实错误。
```
---
## 6. 本项目追加要求
`frontend-miniapp` 中使用该流程时,建议在提示词中继续加入:
```text
开始前完整阅读并遵循:
- .agents/skills/shenzhen-natural-museum-dev/SKILL.md
- 与本任务相关的 references 文档
默认只处理移动端 H5不处理 mp-weixin除非需求明确提出。
验证基线至少包括:
- pnpm type-check
- pnpm lint
- 相关单元测试
- pnpm build:h5
- 受影响用户路径的移动端浏览器验证
```
涉及室内模型初始状态、楼层切换、POI 聚焦或详情返回时,还必须阅读:
```text
.agents/skills/shenzhen-natural-museum-dev/references/guide-model-state-baseline.md
```
---
## 7. 常见问题
### 7.1 出现 Responses Lite `context` / `all_turns` 错误
错误示例:
```text
X-OpenAI-Internal-Codex-Responses-Lite requires ***.context to be all_turns.
```
这表示流程错误地调用了 `spawn_agent` 或其他需要分叉上下文的协作工具。它不是项目代码故障,也不表示子代理已经开始执行。
处理步骤:
1. 停止重试 `spawn_agent`,不要继续传递 `fork_turns: "all"`
2. 由当前主线程直接完成剩余审核。
3. 审核完成后使用 `codex_app__create_thread` 创建独立执行线程。
4. 把审核结果完整写入 `create_thread.prompt`,不要依赖上下文继承。
5. 如果仍然发生该错误,检查实际工具调用记录;正确的流程中不应出现 `spawn_agent``fork_turns`
6. 更新或重启 Codex App 后可重新验证子代理能力,但本工作流仍不需要子代理。
错误发生在模型执行前,因此通常不会修改项目文件或 Git 状态。仍应通过 `git status` 确认工作区没有其他线程产生的变化。
### 7.2 Codex 只输出了修复方案,没有创建线程
通常是提示词没有明确授予创建新线程的权限,或者只要求“生成交接提示词”。
必须明确写出:
```text
用户明确授权你实际调用 codex_app__list_projects 和 codex_app__create_thread。
不能只输出参数或建议,必须在当前回合结束前创建并启动线程。
```
### 7.3 新线程没有拿到完整上下文
新线程不会可靠地自动获得父线程尚未完成的全部分析过程。审核线程必须把关键证据直接写入 `create_thread.prompt`,不能只写“按照父线程方案执行”。
### 7.4 创建到了错误项目
不要猜测 `projectId`。必须先调用 `list_projects`,再根据规范化后的项目绝对路径匹配。
### 7.5 执行线程模型或推理强度不正确
创建线程时显式设置:
```text
model: gpt-5.6-terra
thinking: medium
```
如果 Codex App 升级后不再支持该组合,应以工具返回的可用模型和推理档位为准,并向用户说明差异。
### 7.6 执行线程覆盖了用户修改
提示词必须要求两个线程先检查工作区状态。审核线程保持只读;执行线程只能在任务范围内工作,不得回滚、覆盖或格式化无关改动。
### 7.7 为什么使用 local 而不是 worktree
`local` 让执行线程在已登记项目的当前工作目录中工作,可以看到用户现有未提交修改。使用它时必须避免多个修改线程同时编辑同一文件。
只有在明确需要隔离开发、并且已经决定从哪个 Git 状态开始时,才选择 `worktree`
### 7.8 线程已经创建,是否等于开始执行
带初始 `prompt``codex_app__create_thread` 会创建并启动线程。仍应使用 `codex_app__read_thread` 检查一次,确认任务已被接收。不要高频轮询没有变化的线程状态。
---
## 8. 执行前检查清单
- [ ] 已提供项目绝对路径。
- [ ] 已写清复现步骤、实际结果和预期结果。
- [ ] 已填写任务范围与禁止修改项。
- [ ] 手动审核线程为 `gpt-5.6-sol / xhigh`
- [ ] 提示词明确要求当前线程只审核、不修改。
- [ ] 提示词明确禁止 `spawn_agent``fork_turns``codex_app__fork_thread`
- [ ] 当前审核由主线程独立完成,不创建专家子代理。
- [ ] 提示词明确授权实际创建新线程。
- [ ] 执行线程指定为 `gpt-5.6-terra / medium`
- [ ] 执行环境指定为 `local`
- [ ] 要求把完整审核证据嵌入新线程提示词。
- [ ] 要求创建后读取一次线程状态。
- [ ] 已定义测试命令和浏览器验收路径。
- [ ] 已要求保护用户未提交修改。
---
## 9. 版本维护
Codex App 升级后,建议重新确认:
1. `codex_app__list_projects` 是否仍可用。
2. `codex_app__create_thread` 的参数结构。
3. `codex_app__read_thread` 的状态读取方式。
4. `gpt-5.6-sol``gpt-5.6-terra` 是否仍可选。
5. `xhigh``medium` 是否仍受对应模型支持。
6. 工具调用记录中是否意外出现 `spawn_agent``fork_turns``fork_thread`
如果能力发生变化,应先更新本文第 2 节和第 5 节提示词,再继续使用该工作流。