Skip to content

fix(antigravity): 修复重复原生 Turn 身份导致持久化失败 - #763

Merged
BytePioneer-AI merged 1 commit into
BytePioneer-AI:mainfrom
zhou199604:fix/antigravity-turn-identity
Nov 7, 2026
Merged

BytePioneer-AI merged 1 commit into
BytePioneer-AI:mainfrom
zhou199604:fix/antigravity-turn-identity

Conversation

@zhou199604

Copy link
Copy Markdown
Contributor

问题

Antigravity 的 result.num_turns 在会话恢复或异常情况下会重复。例如已经持久化过 turn:1,恢复后的 Turn 再次返回 num_turns: 1,Host 持久化 Turn 映射时报 External Turn identity could not be persisted,并因为一次失败永久阻断后续 Turn。

修复

  • Antigravity 适配器对重复的 Native Turn Key 生成 turn:N:2 等后缀,checkpoint 使用同一个 key。
  • Host 不再因为一次持久化失败永久阻断后续 Turn;后续成功持久化时清除 persistenceError。
  • 持久化失败日志保留原始异常原因,便于定位。

验证

  • npx tsc -b --pretty false 通过。
  • 71 个测试文件、299 个用例全部通过。
  • 使用安装后的真实 Antigravity 插件验证重复 num_turns:turn:1 -> turn:1:2,checkpoint 同步一致。
  • 本机安装新版 Host Runtime 后,真实 Antigravity Thread 完成 Turn 21;mapping 共 21 条且无重复 Native Turn Key,新 Host 日志无持久化错误。

Copilot AI balanced review requested due to automatic review settings November 6, 2026 12:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • 问题修复
    • 修复连续对话中回合编号重复的问题,确保每个回合及其检查点都能保持独立身份。
    • 终端身份保存失败后,后续事件仍会尝试保存;重试成功时会清除错误状态,失败时则提供更具体的错误信息。

此 PR 更新 Antigravity 的 Native Turn key 生成逻辑,并调整 ExternalThreadRuntime 的终端身份持久化重试和错误状态处理。新增测试覆盖重复 Turn 编号及持久化失败后重试成功的情况。

Changes: Antigravity Turn 唯一键

Layer / File(s) Summary
唯一键生成与回归测试
packages/adapters/antigravity/src/antigravity-adapter.ts, packages/adapters/antigravity/test/antigravity-adapter.test.ts
处理结果根据 num_turns 或历史 Turn 数生成基础键;若基础键已存在,则追加递增后缀。测试验证重复的 num_turns: 1 产生 turn:1 和 turn:1:2,并检查对应的 checkpoint ID 和 Session snapshot。

终端身份持久化

Layer / File(s) Summary
重试与错误状态更新
packages/host-runtime/src/external-thread-runtime.ts, packages/host-runtime/test/external-thread-runtime.test.ts
已有 persistenceError 时,persistTerminalIdentity 仍继续尝试持久化。失败时,新错误保留原始异常作为 cause,并传给诊断回调;成功时清除 persistenceError。测试覆盖失败后重试成功,并导入相关 schema 标识符。

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Possibly related PRs

  • BytePioneer-AI/codex-host#687:涉及活动 Turn 恢复时的终态身份一致性检查和持久化故障记录,与本 PR 的终端身份持久化错误处理相关。

Suggested labels: 范围:适配器

Suggested reviewers: gy212, bytepioneer-ai

Merge Risk: Minimal · up to 93a5c

The reported changes address duplicate Turn identities and persistence retry state. No confirmed issue in the supplied evidence prevents merging after normal checks.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed 标题准确概括了重复原生 Turn 身份导致持久化失败的问题。
Description check Passed 描述涵盖了唯一 Turn key、持久化重试和错误原因保留,符合变更内容。
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 39c9565 and 93a5c04.

Files selected for processing: 4

  • packages/adapters/antigravity/src/antigravity-adapter.ts
  • packages/adapters/antigravity/test/antigravity-adapter.test.ts
  • packages/host-runtime/src/external-thread-runtime.ts
  • packages/host-runtime/test/external-thread-runtime.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

Recent review details

Context from checks skipped due to timeout: 4

  • GitHub Check: CodeRabbit
  • GitHub Check: Check macos-26
  • GitHub Check: Check windows-latest
  • GitHub Check: Check ubuntu-22.04
Additional context used

Code guidelines: 2

CLAUDE.md — auto-discovered
AGENTS.md — auto-discovered
Path-based instructions: 3

Source excerpt: Host Runtime loads installed plugins through public contracts, not direct imports of concrete Adapter packages.

CodeRabbit inference engine (CLAUDE.md)

Files:

  • packages/host-runtime/test/external-thread-runtime.test.ts
  • packages/host-runtime/src/external-thread-runtime.ts
Source excerpt: Harness-specific protocol details must remain inside the corresponding Adapter.

CodeRabbit inference engine (CLAUDE.md)

Files:

  • packages/adapters/antigravity/test/antigravity-adapter.test.ts
  • packages/adapters/antigravity/src/antigravity-adapter.ts
Source excerpt: `codexhost` runs external Agent Harnesses as independent Threads inside Codex Desktop, preserving the official shell and native Codex path.

CodeRabbit inference engine (AGENTS.md)

Files:

  • packages/host-runtime/test/external-thread-runtime.test.ts
  • packages/adapters/antigravity/test/antigravity-adapter.test.ts
  • packages/adapters/antigravity/src/antigravity-adapter.ts
  • packages/host-runtime/src/external-thread-runtime.ts
Additional comments: 4

packages/host-runtime/test/external-thread-runtime.test.ts: 1

93-151: LGTM!

packages/host-runtime/src/external-thread-runtime.ts: 1

797-803: Security & Privacy

生产诊断输出不会序列化 cause。已检查的持久化路径未建立敏感值进入日志的具体情况,也未建立长度导致的具体问题。

packages/adapters/antigravity/test/antigravity-adapter.test.ts: 1

1572-1672: LGTM!

packages/adapters/antigravity/src/antigravity-adapter.ts: 1

1067-1067: Functional Correctness

恢复路径不会因所述旧映射触发重复键冲突。

非空 sidecar 可能遗漏 knownTurnRefs,但 Host 会先按快照移除遗漏的映射,再使用恢复的 session。因此,所述映射不会在后续持久化时造成重复键冲突。删除 null 检查也没有已证实的行为收益。

@BytePioneer-AI
BytePioneer-AI merged commit e62eef2 into BytePioneer-AI:main Nov 7, 2026
5 checks passed
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.

3 participants