总览:https://github.com/agentic-ai-java/argi/issues/180 ## 代码依据 https://github.com/agentic-ai-java/argi/blob/f45b2cf7a2fb301744fa61ef423795f6d30b65da/argi-graph-core/src/main/java/io/github/agentic/ai/graph/OverAllState.java#L483 ## 问题与目标 `data()` 返回 unmodifiableMap 的 live view,嵌套值仍可变;`keyStrategies()` 直接返回内部 Map,与类注释中 data/strategies 的不可修改视图描述不一致。类已声明非线程安全;本任务不把这一事实直接认定为并发漏洞。 ## 范围与方案 明确 live view、独立 snapshot、状态 patch 与策略注册的边界;盘点调用者对嵌套值和策略 Map 的直接修改,以及节点并行/工具上下文中的实际共享方式。优先补充明确契约和受控入口,比较兼容演进与收紧 API;不默认全面深拷贝或不可变重写。 ## 验收 - [ ] 列出共享与复制路径及调用方依赖,修正注释和实现不一致。 - [ ] 用例覆盖 live view、嵌套可变值、策略修改及快照隔离,明确哪些操作允许、拒绝或复制。 - [ ] 并行分支/工具补丁合并行为回归,防止改变 APPEND、REPLACE 和恢复语义。 - [ ] 收紧返回值前说明消费者影响;如引入复制,测量代表性状态下的分配/延迟成本。 - [ ] 与 #140 的工具补丁边界、#183 的命名调整及 #182 的数据契约协调,避免重复实现。 目标是可预测的状态契约,不因 OverAllState 的名字而要求替换整个状态模型。 ## 变更约束 本单来自静态代码审查,尚未运行复现或性能测试。实施先补充针对性验证;破坏性变更需比较更小/兼容方案,记录收益、消费者影响、迁移成本和版本策略。允许保留有充分理由的现有设计。
Activity