存在较多tools时 description和schema占据token很多 且模型输出的准确性会下降 在接入mcp时尤其明显 因此需要渐进式加载工具
Anthropic和openai默认提供了渐进式加载工具的能力 这是最优先的选择
如果存在需要调用其他模型的情况 agent也可以实现类似能力。初始tools为即时工具+tool_search(用于发现工具) 根据情况在系统提示词中对延迟加载的工具做简单描述
对于"模型如何调用新发现的工具"如何 一般有两种方式:
a. 发现的工具在后续模型调用时进入tools(qwen code实现)
b. tool_search返回工具名称和schema 统一通过DeferExecuteTool(toolname,params)进行调用 tools不改变 (workbuddy实现)
a的问题是状态机复杂 逻辑维护困难 无关工具可能导致工具集膨胀;b的问题是新tool非原生 且shcema被额外包装一层 更容易出错。可以根据场景取舍 如果需要根据领域 调用不同的mcp可以选择a 更加精确;如果新工具的schame相对简单 可以采用b 实现更简单 更不易出错。