<!-- ARGI-ENT-20261008:T41 --> ## 目标与优先级 较大工具集需要分组/检索而不是把每套工具全集都交给选择模型;检索不是执行授权。 - 优先级:P2;责任仓库:`agentic-ai-java/argi`;补充任务:T41。 - 总览:https://github.com/agentic-ai-java/argi/issues/117。 ## 当前证据与判断边界 - ToolSelectionInterceptor 对可用工具names/descriptions构造选择prompt;AgentLlmNode维护动态ToolCallback registry。 - 现有能力支持工具筛选/动态披露,但没有统一tool-level摘要检索、按需完整Schema和执行snapshot的数据契约。 以上是源码观察;能力补充结论是基于这些路径的推断,不等同生产故障或漏洞已经复现。框架已有ReAct/Hook、摘要、Todo、Schema声明、工具拦截及可选Sandbox,本任务是在其基础上补齐边界。 ## 范围与落地方案 - 提供backend-neutral catalog/provider adapter,表达qualified toolId、domain/tag、轻量摘要、版本与完整Schema解析。 - 允许关键词/规则/现有LLM selector作为初版检索策略;embedding/vector是可选Extensions适配,不强加新数据库。 - 检索前使用可信授权过滤;Schema获取时再验权限并记录本次offered definition snapshot,执行仍走 #120/#123/T31。 - 规范同名跨server工具、catalog变更/失效、empty result、topK上限与可缓存摘要边界;不缓存永久allow。 ## 前置依赖 - https://github.com/agentic-ai-java/argi/issues/123 (T07) ## 间接或集成依赖(不单独阻塞) - https://github.com/agentic-ai-java/argi/issues/120 (T03):执行授权消费目录结果,但目录检索、snapshot 与按需 Schema 契约可并行推进。 ## 已有任务与去重边界 - https://github.com/agentic-ai-java/argi/issues/139 (T36) - https://github.com/agentic-ai-java/argi/issues/125 (T14) - https://github.com/agentic-ai-java/argi/issues/129 (T21) 这些是关联/集成位置,不是额外硬阻塞。仅前置依赖要求先交付;持久化和跨实例能力继续由原任务承担。 ## 验收条件 - [ ] 无权候选连摘要也不召回;猜测toolId拉Schema被拒绝,执行层仍独立授权。 - [ ] 多个provider相同name使用稳定qualified identity,能解析本次offered版本。 - [ ] 无结果/检索异常不会静默公开全部工具,动态披露数量有界。 - [ ] 可用reference catalog和规则检索测试,旧tools builder/ToolSelection/Skills动态registry保持兼容。 ## 非目标 - 不重复 #123 的版本resolver,不声称MCP原生有tools/get_schema;MCP适配由T42处理。 ## 兼容与验证 - Java 17,新增路径opt-in;保留现有公开API、默认行为与历史state/checkpoint格式。不引入MQ或节点级分片。 - Core不导入Redis/Extensions;优先复用已有API、reducer和组件,不直接添加新依赖。 - 先模型无关单测,再按本任务范围运行模块测试/API与格式fixture;跨adapter路径用stub contract tests,真实Docker测试注明环境要求。 - 当前main的兼容文档/CI曾调整,新任务不引用已删除文档或自行恢复CI;遵循实施时实际有效门禁,保留兼容回归目标。 ## 源码依据(固定版本) - [Existing LLM tool selection](https://github.com/agentic-ai-java/argi/blob/f3bcbef24aa79e1e265a7d0d2011274982ac2978/argi-agent-framework/src/main/java/io/github/agentic/ai/graph/agent/interceptor/toolselection/ToolSelectionInterceptor.java#L128) - [Existing dynamic registry](https://github.com/agentic-ai-java/argi/blob/f3bcbef24aa79e1e265a7d0d2011274982ac2978/argi-agent-framework/src/main/java/io/github/agentic/ai/graph/agent/DefaultBuilder.java#L148) - [Model tool descriptions](https://github.com/agentic-ai-java/argi/blob/f3bcbef24aa79e1e265a7d0d2011274982ac2978/argi-agent-framework/src/main/java/io/github/agentic/ai/graph/agent/node/AgentLlmNode.java#L205) 分析基线:Core `f3bcbef24aa79e1e265a7d0d2011274982ac2978`、Extensions `1ba3048f16d48c9f41dab171eed9a91148b45758`。只读compare确认相对上次分析没有生产Java变更,主要是release/build/docs更新;本Issue不表示能力已实现。
Activity
feat(agent): add pluggable tool catalog retrieval and on-demand schem…