-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
背景
在 #321 的首版实现中,本仓为 durable task 引入了 GuardedTaskStore,用于补齐两类当前 a2a-sdk 基础 task store / task manager 尚未内建的保护:
- terminal consistency
- task store failure wrapping
当前位置:
src/opencode_a2a/server/task_store.pyGuardedTaskStoreTaskStoreOperationError
该实现当前放在本仓是合理的,但从抽象归属看,这一层并不强依赖 OpenCode 特性,而更像是对 a2a-sdk task persistence boundary 的通用增强:
- 已 terminal task 的 late overwrite protection
get/save/delete的统一 operation-level failure wrapping- 为上层 handler / runtime 提供稳定的 task store failure 边界
如果未来仍长期保留在本仓,会带来两个问题:
- 其它依赖
a2a-sdk的仓库若也遇到同类 durability 边界问题,可能重复实现类似 wrapper。 - 本仓需要持续维护一层“SDK task store 外围保护层”,而这层能力更像 SDK 级中间层 / policy。
当前问题
GuardedTaskStore的能力具有通用性,但当前只存在于本仓。- terminal consistency 的规则仍是本仓私有实现,而不是 SDK 可复用抽象。
- task store operation failure wrapping 也没有统一的 SDK 级接口或 policy hook。
期望方向
评估并推进以下收敛方向:
- 明确
GuardedTaskStore这类能力是否适合上推为a2a-sdk可复用抽象。 - 如果适合,定义最小抽象边界,例如:
- terminal write policy
- task store middleware / decorator
- operation failure wrapper
- 如果暂时不适合上推,也要在本仓内把它收敛为更稳定、可替换的 persistence boundary,而不是散落为临时补丁层。
非目标
- 不在本 issue 内重新设计 database backend。
- 不在本 issue 内继续扩展更多 task store 配置项。
- 不把 session state repository / interrupt repository 混入本 issue。
建议实施步骤
- 盘点
GuardedTaskStore中哪些行为是通用 A2A persistence concern,哪些是本仓私有 contract。 - 明确最小抽象模型:
- middleware / decorator
- terminal write policy
- operation-level exception wrapper
- 评估:
- 是否应继续留在本仓作为稳定封装;
- 或应准备向
a2a-sdk上推。
- 如需代码改动,再拆实现 issue;如需跨仓协作,再创建上游跟踪项。
验收标准
- 明确
GuardedTaskStore中哪些能力属于可复用抽象。 - 明确本仓后续方案:本地稳定封装,还是准备上推 SDK。
- 若需进一步实现或跨仓推进,形成独立 issue 列表。
关联
- Relates to [Priority: Med] [Reliability] 收敛 durable task 的终态一致性与 task store 异常契约 #321
- Relates to [Architecture] 默认采用 database backend 并将 session binding 收敛为 durable state #308
当前代码快照
git rev-parse HEAD:33b0800403659f4bf8fdf72b27d1001115404d17
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels