diff --git a/src/lib/core/pouch/commands/ToolCommand.js b/src/lib/core/pouch/commands/ToolCommand.js index 3406e8e..771ab25 100644 --- a/src/lib/core/pouch/commands/ToolCommand.js +++ b/src/lib/core/pouch/commands/ToolCommand.js @@ -97,7 +97,8 @@ ${JSON.stringify(result.result, null, 2)} * @param {Object} args - 命令参数 * @param {string} args.tool_resource - 工具资源引用,格式:@tool://tool-name * @param {Object} args.parameters - 传递给工具的参数 - * @param {Object} args.context - 执行上下文信息(可选) + * @param {boolean} args.forceReinstall - 是否强制重新安装工具依赖(默认false) + * @param {number} args.timeout - 工具执行超时时间(毫秒,默认30000ms) * @returns {Promise} 执行结果 */ async executeToolInternal(args) { @@ -108,12 +109,14 @@ ${JSON.stringify(result.result, null, 2)} // 1. 参数验证 this.validateArguments(args) - const { tool_resource, parameters, context = {} } = args + const { tool_resource, parameters, forceReinstall = false, timeout = 30000 } = args logger.debug(`[PromptXTool] 开始执行工具: ${tool_resource}`) - // 2. 创建ToolSandbox实例 - sandbox = new ToolSandbox(tool_resource) + // 2. 构建沙箱选项并创建ToolSandbox实例 + const sandboxOptions = { forceReinstall, timeout } + logger.debug(`[PromptXTool] 沙箱选项:`, sandboxOptions) + sandbox = new ToolSandbox(tool_resource, sandboxOptions) // 3. 设置ResourceManager const resourceManager = await this.getResourceManager() diff --git a/src/lib/mcp/toolDefinitions.js b/src/lib/mcp/toolDefinitions.js index 8f951db..8613b86 100644 --- a/src/lib/mcp/toolDefinitions.js +++ b/src/lib/mcp/toolDefinitions.js @@ -113,7 +113,7 @@ const TOOL_DEFINITIONS = [ }, { name: 'promptx_tool', - description: '🔧 [工具执行器] 执行通过@tool协议声明的JavaScript工具 - 支持角色配置中定义的专业工具能力,如@tool://calculator数学计算、@tool://send-email邮件发送等。提供安全沙箱执行、参数验证、错误处理和性能监控。', + description: '🔧 [工具执行器] 执行通过@tool协议声明的JavaScript工具 - 支持角色配置中定义的专业工具能力,如@tool://calculator数学计算、@tool://send-email邮件发送等。提供安全沙箱执行、参数验证、错误处理和性能监控。⚠️ **重要提醒**:请务必先查看具体工具的使用说明或通过welcome命令了解可用工具,不要在不了解工具功能和参数的情况下盲目调用。', inputSchema: { type: 'object', properties: { @@ -126,19 +126,15 @@ const TOOL_DEFINITIONS = [ type: 'object', description: '传递给工具的参数对象' }, - context: { - type: 'object', - description: '执行上下文信息(可选)', - properties: { - role_id: { - type: 'string', - description: '当前激活的角色ID' - }, - session_id: { - type: 'string', - description: '会话ID' - } - } + forceReinstall: { + type: 'boolean', + description: '是否强制重新安装工具依赖(默认false)。当工具代码更新但缓存未失效时设为true,用于解决工具开发和调试中的缓存问题', + default: false + }, + timeout: { + type: 'number', + description: '工具执行超时时间(毫秒),默认30000ms', + default: 30000 } }, required: ['tool_resource', 'parameters'] @@ -149,10 +145,10 @@ const TOOL_DEFINITIONS = [ .describe('工具资源引用,格式:@tool://tool-name'), parameters: z.object({}).passthrough() .describe('传递给工具的参数对象'), - context: z.object({ - role_id: z.string().optional().describe('当前激活的角色ID'), - session_id: z.string().optional().describe('会话ID') - }).optional().describe('执行上下文信息') + forceReinstall: z.boolean().optional().default(false) + .describe('是否强制重新安装工具依赖(默认false)'), + timeout: z.number().optional().default(30000) + .describe('工具执行超时时间(毫秒),默认30000ms') }) } ];