Force 模式实现方案
功能需求
在 force 模式下,Agent 应强制使用配置列表中的 MCP 工具,而不是自主选择是否使用工具。
实现方案
1. 修改 Agent 执行逻辑
在 ToolCallAgent 中添加强制工具调用的逻辑:
- 检测 MCP 模式:在执行前检查当前的 MCP 模式
- 强制执行逻辑:当模式为
force 且存在 MCP 工具时,跳过 Agent 的自主选择,直接调用工具
- 工具选择策略:
- 可以按顺序调用所有配置的 MCP 工具
- 或根据任务描述选择最合适的工具
- 或优先调用特定工具
2. 利用现有配置
基于现有的 mcp.policy.mode: force 设置来触发强制行为,不需要新增配置字段。
3. 保持兼容性
确保其他模式(auto、disabled、intelligence)的行为不受影响。
4. 技术实现要点
修改 ToolCallAgent
- 在
execute 方法中添加强制模式的检测和处理逻辑
- 当检测到 force 模式时,直接执行工具调用流程
- 处理工具调用的结果并返回
修改 ForceMcpStrategy
- 保持现有的
includeLocalTools() 返回 false 的逻辑
- 可以添加一个方法来获取配置的 MCP 工具列表,供 Agent 使用
集成到 AgentFactory
- 在创建 Agent 时,传递 MCP 模式信息
- 确保 Agent 能够获取到当前的 MCP 策略
5. 实现步骤
- 步骤 1:修改
ToolCallAgent 类,添加强制模式的执行逻辑
- 步骤 2:修改
ForceMcpStrategy 类,添加获取工具列表的方法
- 步骤 3:修改
AgentFactory 类,传递 MCP 模式信息给 Agent
- 步骤 4:测试 force 模式的功能
- 步骤 5:确保其他模式的功能不受影响
6. 预期行为
当配置为 force 模式时:
- Agent 不会使用本地工具
- Agent 会强制使用配置列表中的 MCP 工具
- Agent 会根据任务需求选择合适的 MCP 工具进行调用
- 执行结果会返回给用户
7. 注意事项
- 确保工具调用的错误处理
- 考虑工具调用的超时设置
- 保持与现有代码的兼容性
- 提供清晰的日志信息