总览:https://github.com/agentic-ai-java/argi/issues/180 ## 代码依据 https://github.com/agentic-ai-java/argi/blob/f45b2cf7a2fb301744fa61ef423795f6d30b65da/argi-agent-framework/src/main/java/io/github/agentic/ai/graph/agent/result/StructuredOutputFinalizer.java#L128 ## 问题、范围与验收 修复得到 ChatResponse 后仅提取 ChatMessage;最终 validateAgainst 仍使用原 usage,修复响应的 usage 未进入返回结果。当前有节点级用量合并工具,不应称为全框架没有用量统计;问题是额外修复调用未进入交付统计。 ## 验收 - [ ] 明确 AgentResult.usage 是整次交付总用量还是分段用量,并提供足以区分主调用与修复的归集方式。 - [ ] 成功修复、修复后仍不合法,以及已收到模型响应但无法提取有效消息时,按已发生调用统计其用量。 - [ ] 未提供 usage、部分字段未知时保留未知语义,不把 null 当零或返回伪精确总量;仅能估算时明确来源。 - [ ] callResult/streamResult 对相同调用序列统计一致,原响应和修复响应不重复计数。 - [ ] 覆盖已知/未知字段、无修复、修复一次和失败路径测试;不能凭异常猜测供应商实际消耗。 - [ ] 若调整公共结果字段或统计语义,说明消费者影响与版本;本单不实现价格模型或成本结算。 与 OPT-15 协调;复用 #142 交付及现有 NodeUsage 的合理语义。 ## 验证与变更约束 代码基线 Core f45b2cf7a2fb301744fa61ef423795f6d30b65da。本单来自静态审查,尚未运行针对性复现或实现。先补行为验证,复用已有能力;破坏性调整逐项说明收益、兼容替代、消费者影响、迁移成本和版本。局部修复不等待 Agent/Workflow/Loop 全局重构,新增通用契约不反向依赖 Loop。 ## 关联任务 - https://github.com/agentic-ai-java/argi/issues/206
Activity
Aias00 commentedon Oct 23, 2026
当前版本复验:修复调用 usage 仍未归集
Core
76d44429fdaa6a69320e21a1cb77119d0889d792已 clean install;使用实际编译的 StructuredOutputFinalizer 验证:{"status":"ok"},usage 为 input=10/output=20/total=30。usage.totalTokens()仍为 3,修复请求的已知消耗未计入。本次复现将此前静态判断升级为实际调用证据。预期按原单确定的总量/分段契约归集,并保留未知字段语义;若采用总量语义,该案例应为 33,不能重复计算或将缺失 usage 当作零。
XianReallyHot-ZZH commentedon Nov 11, 2026
你好,我想认领这个问题 @Aias00
复现确认(代码走读,基线 main 4077074;实现时先写红的行为测试钉死)
您的可执行复现在当前 main 仍成立:
StructuredOutputFinalizer.attemptRepair拿到修复 ChatResponse 后只提取 assistant 消息,response.usage()被丢弃;修复后的所有 AgentResult(成功修复 / REPAIRED_STILL_INVALID / 响应已到但提取不到 assistant 消息的 REPAIR_CALL_FAILED)都只携带修复前 usage。另有一处连带缺口:独立 ReAct 的 finish() 用修复前的累计 usage 发 Finished 事件,修复消耗不会进入流式消费者的最终用量,与 AgentResult.usage 自相矛盾。修复方案
兼容边界
测试范围
模型无关行为测试:已知/未知字段组合、无修复、成功修复一次、修复后仍不合法、响应已到无 assistant 消息、修复客户端异常;独立 ReAct 的 UsageUpdate/Finished 一致性;Graph callResult/streamResult 相同调用序列统计一致的回归。完成后提交 PR。
XianReallyHot-ZZH commentedon Nov 11, 2026
已在最新 main(407707442)实现:#366。
关键语义决定:
测试:finalizer 层 9 个新用例(成功/仍不合法/无消息/响应前失败/未知字段/无修复/null 主 usage)+ 独立 ReAct 事件层 4 个(流式/非流式 × 成功/失败)+ Graph callResult/streamResult 一致性回归,agent-core 248/248、agent-framework 相关套件全绿。
fix(agent): keep repair-failed totals unknown and publish merged usag…
test(agent): assert repair failure exception type explicitly (agentic…
fix(agent): fold structured-output repair usage into delivery totals (#…
Merge pull request #366 from XianReallyHot-ZZH/feat/issue-207-repair-…