跳到主要内容

AI Agent 如何按需发现和加载工具与 Skill

一个 AI Agent 可能连接几十甚至数百个工具,同时还拥有大量面向不同任务的 Skill。如果在每次会话开始时把所有工具说明、参数结构、Skill 正文和参考资料全部放进上下文,不仅成本更高,也会让模型更难选择真正适合当前任务的能力。

更合理的方式是让会话只保留少量基础能力,在任务执行过程中根据实际需要发现、筛选并加载新的 Tool 或 Skill。

为什么不能一次加载全部能力

占用上下文

每个工具通常都包含名称、用途、参数、返回结构和调用约束。Skill 还可能包含完整工作流程、示例、模板和参考资料。一次加载全部内容会快速占用模型上下文,挤压用户材料、任务历史和结果验证所需的空间。

增加选择干扰

能力越多,模型越容易在用途相近的工具之间选错,或者因为名称相似而调用不匹配的能力。对当前任务无关的 Skill 也可能干扰执行方法。

放大维护成本

工具、MCP、连接器和 Skill 会持续变化。如果每个会话都固定携带全部能力,新增、下线或调整一项能力都会影响更大的上下文和测试范围。

不能代表真实权限

知道某个工具存在,不等于当前用户已经完成授权,也不等于外部服务在线、密钥可用或操作已经通过审批。能力说明与实际可执行状态必须分开判断。

Tool 和 Skill 的角色不同

类型解决的问题示例
Tool执行一个具体动作读取文件、查询数据库、发送消息、调用网页接口
Skill提供完成某类任务的方法合同审查、市场研究、会议纪要、报告生成

Skill 可以指导 Agent 选择和组合工具,但 Skill 本身不会自动获得工具权限,也不会因为被加载就完成任务。

按需发现和加载的基本流程

1. 识别当前缺少的能力

Agent 先判断下一步需要的是读取、搜索、转换、分析、写入、执行、验证还是外部发送能力。如果当前可见工具已经满足需求,应直接使用,不需要重复查找。

2. 只搜索能力摘要

当当前能力不足时,系统根据任务意图和关键词搜索 Tool 或 Skill 的摘要。搜索阶段只需要返回名称、用途和简要说明,不需要立即加载完整参数结构、Skill 正文或附属资源。

3. 把结果视为候选

搜索结果只是候选列表,不代表工具已经可调用,也不代表 Skill 已经适合当前任务。Agent 应检查候选的用途是否与当前步骤准确匹配。

没有合适候选时,不应为了继续执行而随意加载用途相近但不匹配的能力。更合理的处理是调整方案、缩小任务范围、询问用户补充材料,或者明确报告能力缺口。

4. 加载准确匹配的能力

Agent 只加载已经确认适合当前任务的 Tool 或 Skill。一次任务需要多个相关能力时,可以集中加载,避免反复进行相同查找。

加载是“把能力加入后续会话选择范围”,不是立即执行工具,也不是安装软件或调用外部服务。

5. 在后续步骤确认真正可用

加载成功后,Agent 仍需在后续执行步骤中确认:

  • Tool 是否已经显示为当前可调用能力。
  • Tool 的参数结构是否与任务输入匹配。
  • MCP 或连接器是否在线并完成用户授权。
  • 所需密钥、文件权限和外部账号权限是否具备。
  • 敏感动作是否需要审批。
  • Skill 是否已经进入当前会话,并能看到其主要方法说明。

6. 执行并验证结果

能力加载完成后,Agent 才开始调用工具或按照 Skill 方法执行任务。工具返回成功也不代表目标一定完成,还应检查输出文件、外部系统状态、数据内容或其他可验证结果。

7. 清理不再适用的能力

任务目标、材料类型或交付形式发生明显变化时,应重新评估当前 Skill 是否仍然适用。不再相关的 Skill 可以停止使用或卸载,避免旧方法继续干扰后续任务。

xAgent 如何实现动态能力

xAgent 会话启动时会保留一组基础执行能力,其中包括 Tool 和 Skill 的发现、加载入口。常用文件处理、网络访问、计划、任务和会话协作能力也会根据会话类型与实际状态进入基础能力范围。

当 Agent 遇到当前工具或方法不足的情况时,可以执行以下流程:

  1. 使用 tools_findskills_find 按任务意图搜索当前用户可用的能力摘要。
  2. 检查返回候选是否准确符合当前步骤。
  3. 使用 tools_loadskills_load 接收准确的候选 ID。
  4. 等待后续模型请求装配新的 Tool schema 或 Skill 内容。
  5. 确认能力真正可见后,再继续执行任务。

xAgent 的查找结果不会一次返回全部 Tool schema、Skill 正文和资源内容。Skill 中的模板、示例或详细参考资料也只在任务确实需要时单独读取。

当候选已经被成功加载后,旧的查找结果可以退出后续上下文,减少一次性搜索信息持续占用会话空间。

MCP 和连接器能力如何进入发现范围

Tool 不只来自系统内置能力,也可能来自个人 MCP、管理员配置的 MCP 或已经完成授权的连接器。

这些能力是否能被当前用户发现和使用,会受到实际配置、用户授权、连接状态、工具状态和管理员策略影响。动态发现不会绕过这些条件,只会从当前用户实际可用的能力范围中寻找候选。

连接状态发生变化后,曾经可用的工具也可能暂时不可调用。因此,Agent 在真正执行前仍需以当前轮次显示的工具和返回状态为准。

一个实际例子

用户提出任务:

请分析工作区中的季度销售表,生成带图表的 HTML 报告,并把摘要发送到已经连接的 IM 账号。

Agent 可以分阶段处理:

  1. 确认当前是否具备读取表格和生成报告的能力。
  2. 如果缺少表格分析工具,先查找并加载准确匹配的 Tool。
  3. 查找适合数据分析或 HTML 报告生成的 Skill,只加载与当前交付形式匹配的候选。
  4. 读取销售表并生成报告,在工作区验证文件存在且内容完整。
  5. 检查当前用户连接器是否在线、发送工具是否可用以及是否需要审批。
  6. 获得允许后发送摘要,并根据工具返回结果确认是否成功送达。

整个过程中不需要在会话开始时加载所有表格、报告、MCP 和连接器能力。

动态加载不代表什么

  • 不代表自动获得外部系统权限。
  • 不代表自动跳过审批策略。
  • 不代表候选工具一定在线或可用。
  • 不代表 Skill 可以代替 Tool 执行动作。
  • 不代表加载成功后任务已经完成。
  • 不代表应该加载所有搜索结果。

动态能力的目标是让 Agent 在需要时获得准确能力,同时保持上下文精简和执行边界清晰。

相关概念

下一步操作