# Force 模式实现方案 ## 功能需求 在 force 模式下,Agent 应强制使用配置列表中的 MCP 工具,而不是自主选择是否使用工具。 ## 实现方案 ### 1. 修改 Agent 执行逻辑 在 `ToolCallAgent` 中添加强制工具调用的逻辑: 1. **检测 MCP 模式**:在执行前检查当前的 MCP 模式 2. **强制执行逻辑**:当模式为 `force` 且存在 MCP 工具时,跳过 Agent 的自主选择,直接调用工具 3. **工具选择策略**: - 可以按顺序调用所有配置的 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. **步骤 1**:修改 `ToolCallAgent` 类,添加强制模式的执行逻辑 2. **步骤 2**:修改 `ForceMcpStrategy` 类,添加获取工具列表的方法 3. **步骤 3**:修改 `AgentFactory` 类,传递 MCP 模式信息给 Agent 4. **步骤 4**:测试 force 模式的功能 5. **步骤 5**:确保其他模式的功能不受影响 ### 6. 预期行为 当配置为 `force` 模式时: - Agent 不会使用本地工具 - Agent 会强制使用配置列表中的 MCP 工具 - Agent 会根据任务需求选择合适的 MCP 工具进行调用 - 执行结果会返回给用户 ### 7. 注意事项 - 确保工具调用的错误处理 - 考虑工具调用的超时设置 - 保持与现有代码的兼容性 - 提供清晰的日志信息