mirror of https://gitee.com/dromara/liteFlow
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> |
||
|---|---|---|
| .. | ||
| src/main/java/com/yomahub/liteflow/agent | ||
| pom.xml | ||