Skip to content

fix(web): recover unknown prompt admissions - #492

Open
qwertvgty wants to merge 4 commits into
openpi-dev:mainfrom
qwertvgty:codex/fix-463-admission-unknown
Open

fix(web): recover unknown prompt admissions#492
qwertvgty wants to merge 4 commits into
openpi-dev:mainfrom
qwertvgty:codex/fix-463-admission-unknown

Conversation

@qwertvgty

Copy link
Copy Markdown
Contributor

Problem

修复 #463

网络异常后,Web 会复用原来的 commandId 重试消息。如果 Host 已经找不到这条请求的接收记录,会返回 COMMAND_ADMISSION_UNKNOWN。此前前端会继续保留旧请求身份,后续重试一直失败,同时界面可能停留在“正在准备任务”。

用户既无法判断上一条消息是否真正送达,也无法从当前界面安全地继续操作。

Value

让接收状态不确定的消息有明确的处理出口,同时保留现有的防重复执行保护。

前端不会再把 UNKNOWN 当成任务正在运行,也不会自动生成新身份重新发送。是否重新发送由用户决定,并明确提示可能产生重复消息。

Approach

  • 单独处理 COMMAND_ADMISSION_UNKNOWN
  • 清除 Host 已无法识别的旧 admission identity。
  • 自动刷新当前 Session 的权威历史和运行状态。
  • 根据权威快照恢复正确的 idle/running 状态,不再一直显示“正在准备任务”。
  • 保留输入框中的原消息,并暂时禁用普通发送按钮。
  • 提供两个明确选择:
    • “暂不重新发送”:不发送新请求,保留草稿并关闭提示。
    • “作为新消息发送”:生成新的 commandId 后重新发送,并提示可能产生重复消息。
  • 保留正常情况下使用同一 identity 恢复回执的幂等行为。
  • Host 侧的 fail-closed 逻辑保持不变。
  • 切换 Session 或收到与原请求匹配的确切事件后,清理恢复状态。
  • 调整提示框布局,使其与输入框保持相同的水平对齐。

Validation

  • Web Store 和组件测试:58 个通过。
  • Playwright Web E2E:10 个通过。
  • E2E 覆盖首次请求中断、同 identity 重试返回 UNKNOWN、权威快照刷新,以及用户明确选择使用新 identity 发送。
  • Web 类型检查和生产构建通过。
  • bun run test:1351 个通过,9 个跳过,4 个无关的并发或环境时序用例失败;对应文件隔离重跑均通过。
  • bun run check 中配置检查、纪律检查、Web 类型检查和构建通过;全仓格式检查仍受当前 Windows 工作区已有 CRLF 问题影响,共报告 118 个无关文件。
实机验证1

Impact

  • 用户可见行为:UNKNOWN 后会显示说明和两个处理选项
  • 模型上下文和工具:无变化。
  • Runtime/lifecycle:只调整 Web 前端的 admission 恢复状态;Host 接收和幂等保护不变。
  • 持久化配置和数据:无变化。
  • 兼容性和风险:不影响正常消息发送路径;主要风险集中在 UNKNOWN 状态下的前端状态切换和提示展示,已有状态测试和浏览器 E2E 覆盖。

@qwertvgty
qwertvgty force-pushed the codex/fix-463-admission-unknown branch from a5547ae to 82ee3ff Compare September 8, 2026 10:42
@qwertvgty qwertvgty changed the title Codex/fix 463 admission unknown fix(web): recover unknown prompt admissions Sep 8, 2026
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