Skip to content

fix: deduplicate working task updates#454

Merged
liujuanjuan1984 merged 1 commit intomainfrom
fix/453-diagnose-duplicate-working-status-update
May 2, 2026
Merged

fix: deduplicate working task updates#454
liujuanjuan1984 merged 1 commit intomainfrom
fix/453-diagnose-duplicate-working-status-update

Conversation

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator

概要

  • 修复流式执行中重复发出 indistinguishable working 状态更新的问题。
  • 对齐 a2a-sdk 的非阻塞 SendMessage 语义,补上 returnImmediately=true 时的初始 Task(working) 快照。
  • 同步更新流式/非流式契约文档与回归测试。

变更说明

  • message:stream 首个事件改为 Task(state=working),不再使用通用 TaskStatusUpdateEvent(state=working) 作为初始快照。
  • 普通 progress 仅在协商 urn:opencode-a2a:extension:shared:stream-hints:v1 时才发带 metadata.shared.progressTaskStatusUpdateEvent(state=working)
  • message:send 阻塞模式保持不变;configuration.returnImmediately=true 时先返回 Task(state=working),后续由后台继续完成并持久化。
  • 补充流式首包形态、无扩展去重、非流式非阻塞初始快照等回归测试,并更新 docs/guide.md

验证

  • ./scripts/doctor.sh
  • 结果:620 passed,coverage 91.18%

Issue 关联

Closes #453

@liujuanjuan1984
Copy link
Copy Markdown
Collaborator Author

独立审查结果:本次 PR 未发现阻塞性问题,当前改动方向合理。

代码变动审查:

  • 流式路径把初始工作态从通用 TaskStatusUpdateEvent(working) 调整为首包 Task(working),同时仅在协商 stream-hints 扩展时保留 progress working 状态更新,这和本次 issue 要解决的“未协商扩展时出现两条完全相同 working status-update”是直接对位的,修复面准确,没有继续引入新的重复源。
  • 非流式路径没有做过度扩散式修改:阻塞 message:send 保持原语义,只补齐 configuration.returnImmediately=true 的初始 Task(working) 快照,这与 a2a-sdk 对非阻塞 SendMessage 的首包约束一致,属于必要修正,不是额外重构。
  • 回归测试覆盖了 3 个关键契约点:流式首包形态、无扩展时不重复 working、非流式非阻塞初始快照;文档也同步更新,整体实现是稳健且自洽的。

风险与注意事项:

  • 主要是行为兼容性风险,而不是正确性风险:如果有下游错误依赖了旧行为中的重复 working 事件,升级后它会观察到事件数减少;如果下游使用 returnImmediately=true 却从不跟进 GetTask,现在会先拿到 working 快照。这两点都符合协议方向,属于可接受的契约收敛。

PR 标题与描述审查:

  • 标题 fix: deduplicate working task updates 采用了英文 commit message 风格,和本次代码实质匹配。
  • 描述与本次代码、文档、验证结果一致,信息完整。
  • Closes #453 关系准确,本 PR 的改动已经覆盖该 issue 的诊断结论与修复范围;commit 中使用 Refs #453 也合理,无需补充额外 related issue。

@liujuanjuan1984 liujuanjuan1984 marked this pull request as ready for review May 2, 2026 11:35
@liujuanjuan1984 liujuanjuan1984 merged commit 49eadcb into main May 2, 2026
3 checks passed
@liujuanjuan1984 liujuanjuan1984 deleted the fix/453-diagnose-duplicate-working-status-update branch May 2, 2026 11:35
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.

diagnose duplicate working status-update delivery

1 participant