修复宿主继续请求重复发送原始用户输入 #500
Reference in New Issue
Block a user
Delete Branch "fix/ga"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
区分首次用户请求与宿主反馈,继续时发送实际验收或错误信息
固定 GUI 和 CLI 的原始用户条目,保留历史与回合身份关联
补充结构化输入、反馈发送、图片输入和历史去重的定向回归测试
同步更新实施计划与排障记录,保持交付验收条件和预算不变
代码审查(fix/ga → master)
结论
修复方向正确,逻辑闭环,测试覆盖到位,建议合并(CI 目前全部 Waiting,合并前等绿)。
正确性核对(已逐条验证)
turn_kind翻转时机安全:两条反馈循环里,任何重试发生前feedback_prompt都已被改写为验收反馈或错误反馈文本,不存在「原始用户 prompt + HostFeedback」的组合,不会出现首次结构化输入被跳过的情况(direct_runtime/mod.rs:5300、:5360)。state.client_turn_id与direct_game_creator_codex_chat_at_with_optional_observer内部effective_client_turn_id的回退来源同为 execution ledger snapshot,itemId 口径一致(codex_app_server/mod.rs:5129-5143)。append_direct_project_history_item_once对同 ID 内容一致的条目跳过、内容冲突则硬报错。冻结原始条目正好消除了反馈轮「同 ID 写不同内容」的冲突路径,新增的两个 tokio 测试(GUI 式结构化输入 + CLI 式历史去重)直接钉住了这两条语义。建议知悉的行为变化(不阻塞)
execution_session.snapshot()失败现在会让回合在 CodeGeneration 阶段直接失败(direct_runtime/mod.rs:5120-5131),而此前direct_user_item=None可继续。snapshot 失败概率很低,可接受。thread/inject_items,注入历史中将不含反馈上下文——属既定取舍,文档已声明,提示一下即可。PlatformSegmentedTabs.tsx、gameDistribution.ts、home.suite.ts),建议以后拆出,便于回溯。文档(实施计划 + pitfalls)已同步,符合仓库规范。