Files
PromptX/resource/role/luban/execution/toolsandbox-mastery.execution.md
sean eea46a8ee1 feat: 优化鲁班角色并完善ToolSandbox工具开发体系
## 鲁班角色优化
- 新增tool-best-practices知识模块:工具设计最佳实践、性能优化、安全防护
- 新增dpml-tool-tagging知识模块:DPML工具标签四组件架构精通
- 增强craftsmanship思维模式:现代工具特征完善
- 资源迁移到包级别:支持跨项目共享

## ToolSandbox架构完善
- 实现ToolSandbox类:支持@tool://协议的三阶段执行流程
- 优化依赖管理:getDependencies()接口标准化
- 完善UserProtocol:支持@user://沙箱目录访问
- 增强工具发现:FilePatternDiscovery支持多种文件模式

## 工具生态建设
- 添加tool.tag.md:DPML工具标签框架完整定义
- 重构ToolInterface:统一getDependencies()接口规范
- 优化ToolExecutor:集成ToolSandbox执行流程
- 更新注册表:29个资源完整注册发现

## 技术架构改进
- pnpm依赖集成:自动化沙箱环境管理
- 协议系统完善:@tool://和@user://协议标准化
- 资源结构统一:包级别和项目级别一致性
- 开发流程标准化:从需求分析到质量保证的完整工作流

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28 19:42:16 +08:00

250 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ToolSandbox系统精通
<execution>
<constraint>
## ToolSandbox技术约束
- **协议固定**@tool://和@user://协议不可更改
- **沙箱隔离**:每个工具运行在独立的沙箱环境中
- **依赖管理**通过内置pnpm自动管理依赖
- **VM限制**受Node.js VM模块功能限制
- **路径规范**:沙箱位置固定在@user://.promptx/toolbox/{toolId}
</constraint>
<rule>
## ToolSandbox使用规则
- **三阶段必须**analyze → prepareDependencies → execute顺序执行
- **依赖声明强制**getDependencies()返回的依赖必须准确
- **错误处理必须**:每个阶段都要有完善的错误处理
- **资源清理**使用完毕后必须调用cleanup()
- **状态检查**执行前必须检查isPrepared状态
</rule>
<guideline>
## ToolSandbox最佳实践
- **资源复用**:同一工具的沙箱可跨项目复用
- **缓存策略**:合理利用沙箱缓存提升性能
- **监控调试**:关注沙箱执行日志和性能指标
- **版本管理**:注意依赖版本一致性
- **安全优先**:避免在工具中执行危险操作
</guideline>
<process>
## 🏗️ ToolSandbox完整掌握流程
### 架构理解阶段
```mermaid
graph TD
A[@tool://protocol] --> B[ResourceManager]
B --> C[ToolSandbox]
C --> D[@user://.promptx/toolbox]
D --> E[pnpm dependencies]
E --> F[VM execution]
```
**ToolSandbox核心组件**
- **ResourceManager**:资源发现和协议解析
- **ToolSandbox**:沙箱环境管理
- **UserProtocol**:用户目录协议处理
- **内置pnpm**:依赖包管理
- **VM沙箱**:安全执行环境
### 工作流程精通
```mermaid
flowchart TD
A[new ToolSandbox] --> B[setResourceManager]
B --> C[analyze阶段]
C --> D[prepareDependencies阶段]
D --> E[execute阶段]
E --> F[cleanup清理]
C --> C1[加载工具内容]
C --> C2[提取依赖列表]
C --> C3[解析沙箱路径]
D --> D1[创建沙箱目录]
D --> D2[生成package.json]
D --> D3[pnpm install]
D --> D4[创建智能沙箱]
E --> E1[参数验证]
E --> E2[VM执行]
E --> E3[结果返回]
```
**Phase 1: 分析阶段精通**
```javascript
// ToolSandbox.analyze()内部流程
const analysisResult = await sandbox.analyze();
// 返回结果包含:
{
toolId: 'text-analyzer',
dependencies: ['lodash@^4.17.21'],
sandboxPath: '/Users/sean/.promptx/toolbox/text-analyzer',
hasMetadata: true,
hasSchema: true
}
```
**Phase 2: 依赖准备精通**
```javascript
// ToolSandbox.prepareDependencies()内部流程
const prepResult = await sandbox.prepareDependencies();
// 内部执行步骤:
// 1. ensureSandboxDirectory() - 创建沙箱目录
// 2. createPackageJson() - 生成package.json
// 3. runPnpmInstall() - 执行pnpm install
// 4. createExecutionSandbox() - 创建执行环境
```
**Phase 3: 执行阶段精通**
```javascript
// ToolSandbox.execute()内部流程
const result = await sandbox.execute(parameters);
// 执行环境特性:
// - 智能require优先从沙箱node_modules加载
// - 参数验证自动调用工具的validate()方法
// - 错误隔离:沙箱异常不影响主进程
// - 结果标准化:统一的成功/失败格式
```
### 沙箱环境深度理解
```mermaid
graph LR
A[工具代码] --> B[基础沙箱]
B --> C{有依赖?}
C -->|否| D[直接执行]
C -->|是| E[智能沙箱]
E --> F[依赖加载]
F --> G[执行工具]
```
**基础沙箱 vs 智能沙箱**
```javascript
// 基础沙箱环境
{
require: require, // 标准require
module: { exports: {} }, // 模块导出
console: console, // 日志输出
// ... 其他全局对象
}
// 智能沙箱环境(有依赖时)
{
require: (moduleName) => {
// 优先从沙箱node_modules查找
const sandboxPath = '~/.promptx/toolbox/tool-id/node_modules';
return require.resolve(moduleName, { paths: [sandboxPath] });
},
// ... 其他环境
}
```
### 协议系统集成精通
```mermaid
flowchart LR
A[用户调用] --> B[@tool://text-analyzer]
B --> C[ResourceManager.loadResource]
C --> D[ToolProtocol.resolve]
D --> E[项目注册表查找]
E --> F[返回工具内容]
F --> G[ToolSandbox处理]
```
**协议解析流程**
1. `@tool://text-analyzer``{ protocol: 'tool', path: 'text-analyzer' }`
2. ResourceManager查找注册表中ID为`text-analyzer`的tool资源
3. 找到资源引用:`@project://.promptx/resource/tool/text-analyzer/text-analyzer.tool.js`
4. 加载工具文件内容
5. 传递给ToolSandbox处理
### 故障诊断与优化
```mermaid
graph TD
A[工具执行失败] --> B{失败阶段}
B -->|analyze| C[检查工具文件<br/>检查资源注册]
B -->|prepare| D[检查依赖声明<br/>检查pnpm状态]
B -->|execute| E[检查参数格式<br/>检查代码逻辑]
C --> F[解决方案]
D --> F
E --> F
```
**常见问题诊断**
- **工具未发现**:检查注册表是否包含工具
- **依赖安装失败**:检查网络连接和依赖版本
- **执行报错**:检查参数验证和代码逻辑
- **性能问题**:检查依赖大小和执行复杂度
### 高级优化技巧
**沙箱缓存策略**
```javascript
// 检查沙箱是否已存在
const sandboxExists = fs.existsSync(analysisResult.sandboxPath);
if (sandboxExists && !options.forceReinstall) {
// 跳过依赖安装,直接使用缓存
console.log('使用缓存的沙箱环境');
}
```
**批量工具管理**
```javascript
// 并行处理多个工具
const sandboxes = tools.map(tool => new ToolSandbox(tool));
await Promise.all(sandboxes.map(s => s.analyze()));
await Promise.all(sandboxes.map(s => s.prepareDependencies()));
```
**性能监控**
```javascript
const startTime = Date.now();
const result = await sandbox.execute(params);
const executionTime = Date.now() - startTime;
console.log(`工具执行耗时: ${executionTime}ms`);
```
</process>
<criteria>
## ToolSandbox精通评价标准
### 理论知识掌握 (25分)
- ✅ 完全理解三阶段执行流程
- ✅ 清楚沙箱隔离机制原理
- ✅ 掌握协议系统集成方式
- ✅ 理解依赖管理自动化机制
### 实践操作能力 (25分)
- ✅ 能独立创建和管理沙箱
- ✅ 能诊断和解决常见问题
- ✅ 能优化沙箱性能表现
- ✅ 能集成到工具开发流程
### 故障处理能力 (25分)
- ✅ 快速定位问题根因
- ✅ 提供有效解决方案
- ✅ 预防潜在风险
- ✅ 优化用户体验
### 创新应用能力 (25分)
- ✅ 探索高级使用模式
- ✅ 开发自动化工具
- ✅ 提出改进建议
- ✅ 分享最佳实践
### 专家级表现 (附加分)
- 🌟 深度定制沙箱环境
- 🌟 创新的性能优化方案
- 🌟 完美的问题预防机制
- 🌟 卓越的用户体验设计
</criteria>
</execution>