liteFlow/liteflow-react-agent
everywhere.z a37df41628 feat(agent): Hook→Middleware(Logging/ChatUsage/SkillTracking)+ 恢复 ctx.getChatUsage()/usedSkills() + 旧 Hook 经 builder.hooks() 桥接
Task 5.1:用 v2 RC3 的 MiddlewareBase 重建 Task 0 删除的三个 1.0 Hook 能力。

新增 middleware 包(com.yomahub.liteflow.agent.middleware):
- LoggingMiddleware:onReasoning/onActing 打印 reason/act/error 日志(替代
  ReActLoggingHook,格式对齐 1.0),由 cmp.enableReActLogging() 控制。
- ChatUsageMiddleware:onModelCall 订阅 ModelCallEndEvent.getUsage() 累加(替代
  ChatUsageTrackingHook)。per-invocation ThreadLocal 累加器,process() 入口 bind、
  出口 unbind;snapshot() 静态读累计值。
- SkillTrackingMiddleware:onActing 跟踪 load_skill_through_path 工具调用(替代
  SkillTrackingHook)。构造期从注入的 AgentSkillRepository 建 skillId→name 映射,
  per-invocation ThreadLocal 集合,usedSkills() 静态读。

探针结论(findings R-skill-track,已追加):"技能被使用"的最干净可观测信号是
onActing 的 ActingInput.toolCalls()——load_skill_through_path 工具名固定、
input.skillId 即 AgentSkill.getSkillId()。未降级,usedSkills() 真实落地。

接入与恢复:
- ReActAgentComponent:process() 入口 ChatUsageMiddleware.bind() +
  SkillTrackingMiddleware.bind(),出口 finally unbind;新增 protected
  middlewares()(默认空);hooks() 标 @Deprecated(since=2.16.0, forRemoval=true),
  指引改用 middlewares();新增 protected final usedSkills()。
- ReActAgentContext:getChatUsage() 恢复为 ChatUsageMiddleware.snapshot();
  删除 stub setChatUsageTrackingHook;class javadoc 从"迁移期"改为"v2(RC3)"。
- ReactAgentFactory.build:组装 [LoggingMiddleware(if enabled), ChatUsageMiddleware,
  SkillTrackingMiddleware(repo), ...cmp.middlewares()] 逐个 builder.middleware(),
  再 builder.hooks(cmp.hooks()) 直接桥接旧 Hook(RC3 Hook 软弃用但 builder.hooks
  仍存在,无需 adapter)。
- SkillRepositoryResolver.configure 签名 void→AgentSkillRepository(返回注册的
  repo 供 SkillTrackingMiddleware 建映射)。

un-stub:SkillsAgentCmp.handleReply 的 USED_SKILLS_SNAPSHOT 从 List.of() stub
改回 usedSkills();ChatUsageAgentCmp/HookAgentCmp 无需改源(随核心恢复自动生效)。

校验:core compile + test-compile SUCCESS;
-Dtest=ChatUsageMiddlewareTest,ProcessIntegrationTest,ShellPermissionBehaviorTest,
SkillLoadingTest → 14 用例全绿;ReactAgentFactoryTest 2 用例无回归。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-20 11:07:45 +08:00
..
liteflow-react-agent-anthropic liteflow-react-agent pom 添加 name 2026-06-05 00:15:33 +08:00
liteflow-react-agent-core feat(agent): Hook→Middleware(Logging/ChatUsage/SkillTracking)+ 恢复 ctx.getChatUsage()/usedSkills() + 旧 Hook 经 builder.hooks() 桥接 2026-06-20 11:07:45 +08:00
liteflow-react-agent-dashscope liteflow-react-agent pom 添加 name 2026-06-05 00:15:33 +08:00
liteflow-react-agent-gemini liteflow-react-agent pom 添加 name 2026-06-05 00:15:33 +08:00
liteflow-react-agent-openai liteflow-react-agent pom 添加 name 2026-06-05 00:15:33 +08:00
pom.xml liteflow react agent pom adjust 2026-04-30 23:52:19 +08:00