Skip to content

docs(rfc): codex phase-2 二次实测 — passthrough 推迟 / askuser schema 捕获#2220

Merged
KevinZhao merged 3 commits into
masterfrom
feat/codex-askuser
Jun 21, 2026
Merged

docs(rfc): codex phase-2 二次实测 — passthrough 推迟 / askuser schema 捕获#2220
KevinZhao merged 3 commits into
masterfrom
feat/codex-askuser

Conversation

@KevinZhao

Copy link
Copy Markdown
Owner

概述

并行深挖 codex backend 剩余两个 Phase-2 feature(passthrough + askuser)后,初判结论翻转。本 PR 仅文档(codex-backend-phase2-feasibility.md §7/§8),把实证发现沉淀下来,并阻止 ship 一个会丢消息的 passthrough。

§7 passthrough → 推迟(实测否定)

初判(§2)"原语齐备、适配器可行"——但只验证了 clientUserMessageId round-trip + turn/steerACK,没验证 steer 对模型输出的实际效果。补做 3 组效果探针(Bedrock gpt-5.5):

探针 steer 结果
长文中途 "IGNORE…输出 PIVOT" ACK 成功 ❌ 继续原输出,无 pivot
"数完后说 PIVOT" ACK 成功 ❌ 无 PIVOT,无第二 turn
tool 占用 9s 中途 steer ACK 成功 {turnId} ❌ 无 PIVOT

turn/steer ACK 成功但模型不采纳 steered 输入(silent no-op)。 开 passthrough 会让 /urgent/并发消息被 codex 静默丢弃 —— 比现有 Collect 模式更差(Collect 可靠排队+投递)。决策:不 ship,codex 保持 Collect。

教训:协议原语的"ACK 成功"≠"语义生效"。可行性必须测端到端效果,不止 RPC 返回码。

§8 askuser → 可实现(schema 已 live 捕获)

初判 "BLOCKED:schema 未验证" —— 现已 live 捕获补全:

  • 方法名 item/tool/requestUserInput(需 --enable default_mode_request_user_input;旧猜名 request_user_input 错误致 server 启动退出)
  • 请求 {questions:[{id,header,question,options:[{label,description}],isOther,isSecret}]}
  • 响应 {result:{answers:{qid:{answers:[label]}}}}(按 id 键控;label 即值)
  • 阻塞确认:turn 挂起直到回答;空/错答案致模型重发死循环(校验宽松不报错)

难点:codex 真阻塞,要加回 claude askuser RFC 明确删掉的 pending 表/TTL/RPC 回写(claude 是 fire-and-forget)。~2-3d,独立 PR。

推荐顺序更新

  1. ✅ embedded_context(已交付 feat(codex): enable embedded_context (@file mention) — phase 2 #2219
  2. askuser(可实现,schema 齐备)
  3. passthrough推迟(Bedrock steer 实测无效;非-Bedrock 未测,可能 per-provider 复活)

测试计划

  • 纯文档,go build ./... 通过(无代码改动)
  • 所有探针针对本机 codex 0.141 + gpt-5.5 实跑

🤖 Generated with Claude Code

并行深挖 passthrough + askuser 后,初判结论翻转(§7/§8):

§7 passthrough → 推迟(实测否定):
  §2 只验了 clientUserMessageId round-trip + turn/steer 的 ACK,没验效果。
  补做 3 组效果探针(Bedrock gpt-5.5):长文 pivot / 数数追加 / tool 占用中
  steer —— turn/steer 全部 ACK 成功但模型不采纳 steered 输入(silent
  no-op)。开 passthrough 会让 /urgent/并发消息被 codex 静默丢弃,比现有
  Collect 模式更差。决策:不 ship,保持 Collect。教训:协议 ACK≠语义生效。

§8 askuser → 可实现(schema 已 live 捕获):
  方法名 item/tool/requestUserInput(需 --enable default_mode_request_user_input,
  旧猜名 request_user_input 错误致 server 退出)。请求/响应 schema、阻塞性、
  空答案致 re-ask 死循环全部实测确认。难点:codex 真阻塞,要加回 claude
  askuser RFC 删掉的 pending 表/TTL/RPC 回写(~2-3d,独立 PR)。

推荐顺序更新:embedded_context(已交付#2219) → askuser → ~~passthrough~~推迟。
@KevinZhao KevinZhao enabled auto-merge (squash) June 21, 2026 14:01
@KevinZhao KevinZhao merged commit fc87b8a into master Jun 21, 2026
7 checks passed
@KevinZhao KevinZhao deleted the feat/codex-askuser branch June 21, 2026 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant