<!-- ARGI-ENT-20261008:T27 --> ## 目标 运行状态与已提交事件可跨实例查询/断线重连,不依赖 JVM 内存广播或日志猜测。 ## 优先级与归属 - 优先级:P3;任务标识:T27。 - 责任仓库:`agentic-ai-java/argi-extensions`。 - 总览:https://github.com/agentic-ai-java/argi/issues/117。 - 这是单一交付任务;以中立接口/reference tests 隔离依赖,可单独提交评审。 ## 范围与落地方案 - 实现 per-run sequence/cursor 查询与 outbox 重投递去重,事件和进度保持权威提交关系。 - 在可选 runtime service adapter 中扩展 IN_DOUBT 核对/显式 resolve、失败详情、审计查询及 retention。 - 控制命令必须身份授权与 expected revision,不伪造 Worker owner,payload 默认脱敏。 ## 前置依赖 - https://github.com/agentic-ai-java/argi-extensions/issues/9 (T12) - https://github.com/agentic-ai-java/argi-extensions/issues/11 (T16) ## 验收条件 - [ ] API/Worker 重启后 cursor replay 返回所有已提交范围的事件,无隐式漏段。 - [ ] 重复事件按 runId/sequence 去重,跨租户 cursor/resolve 请求被拒绝。 - [ ] IN_DOUBT resolve 有授权审计且不自动重放未知写;token live stream 与持久事件边界明确。 - [ ] 支持的 cursor/receipt retention 窗口文档化,过期 cursor 明确错误而非悄悄丢事件。 ## 非目标 - 不建设管理 UI,不把 live token streaming 宣称为持久化流。 ## 兼容与验证约束 - Java 17;新增路径显式启用,保留既有 API、默认行为、checkpoint/Store 格式及配置前缀。 - Core 不引入 Redis/Extensions 依赖;存储实现归 Extensions,应用接线归可选运行层。 - 首阶段无 MQ、整 Run Worker,不做节点分片,不承诺通用 exactly-once 或 Redis HA RPO0。 - 先用模型无关单测/reference 验证本任务,再按范围运行现有 API/格式门禁;涉及 Redis 用真实存储测试,涉及接管用独立 JVM。 ## 当前实现依据 - [Observation wiring/exporter boundaries](https://github.com/agentic-ai-java/argi/blob/6324f53d7b6337cc9238a8cc5314dfef75f3548b/spring-boot-starters/argi-starter-graph-observation/README.md#L3). - [Redis retained-history/failover and excluded runtime guarantees](https://github.com/agentic-ai-java/argi-extensions/blob/ed07835729405e7c8b97772d5b478d63ac1f9760/graph-persistence/argi-graph-persistence-redis/README.md#L162). 分析基线:Core `6324f53`、Extensions `ed07835`;AgentScope 参考 `c95eb1f`。本 Issue 是待完成任务,不代表能力已经实现。
Activity