# Phase T.0：Tools 现状与目标

日期：2026-04-04
状态：已完成
借鉴来源：VCPToolBox Plugin 系统

---

## 1. 本阶段目的

本文件用于统一背景认知，明确：

- Jarvis 当前工具系统处于什么水平
- 主要短板是什么
- 为什么要升级
- 升级后的目标形态是什么
- VCPToolBox 给我们什么启发

---

## 2. 当前 Jarvis Tools 架构

### 2.1 核心流程

```
Agent 决策 → 工具调用 → LLM API → 返回结果
```

### 2.2 当前工具实现

Jarvis 当前的工具以 LangChain Tools 形式存在：

```python
# agents/tools/
├── base.py           # 工具基类
├── file_tools.py     # 文件操作
├── search_tools.py   # 搜索
└── web_tools.py      # 网页相关
```

### 2.3 当前工具列表

| 工具 | 功能 | 实现方式 |
|------|------|---------|
| `read_file` | 读取文件 | Python |
| `write_file` | 写入文件 | Python |
| `run_python` | 执行代码 | Python |
| `search_knowledge` | 知识库检索 | LangChain |
| `search_web` | 联网搜索 | API |

### 2.4 当前问题

| 问题 | 影响 |
|------|------|
| 硬编码工具 | 新增工具需改代码 |
| 无 manifest | 无法热插拔 |
| 无标准化契约 | 调用格式不统一 |
| 无配置分离 | 敏感信息易泄露 |
| 无类型安全 | 验证缺失 |
| 无权限控制 | 安全隐患 |

---

## 3. VCPToolBox 工具系统分析

### 3.1 六大插件类型

```javascript
const PLUGIN_TYPES = {
    static: "静态占位符，自动注入系统提示词",
    synchronous: "同步执行，stdio 协议",
    asynchronous: "异步执行，后台处理",
    service: "持续运行服务",
    hybridservice: "混合服务（Agent间通讯）",
    messagePreprocessor: "消息预处理"
};
```

### 3.2 Manifest 标准契约

```javascript
{
  "manifestVersion": "1.0.0",
  "name": "PluginName",
  "displayName": "中文显示名",
  "description": "功能描述",
  "pluginType": "synchronous",
  "version": "1.0.0",
  
  "entryPoint": {
    "type": "nodejs",
    "command": "node Plugin.js",
    "timeout": 300000
  },
  
  "communication": {
    "protocol": "stdio",
    "timeout": 300000
  },
  
  "configSchema": {
    "API_KEY": {
      "type": "string",
      "description": "API 密钥"
    }
  },
  
  "capabilities": {
    "invocationCommands": [
      {
        "commandIdentifier": "CommandName",
        "description": "详细描述+调用格式示例",
        "example": "调用示例"
      }
    ]
  }
}
```

### 3.3 核心设计理念

1. **声明式** - 工具通过 manifest 声明，框架自动发现
2. **标准化** - 统一的调用协议（stdio/websocket）
3. **可配置** - configSchema 声明配置项
4. **可观测** - 调用日志、超时控制
5. **安全隔离** - 沙箱执行、权限控制

### 3.4 关键文件

| 文件 | 作用 |
|------|------|
| `Plugin.js` | 插件加载与执行引擎 |
| `plugin-manifest.json` | 插件声明契约 |
| `config.env` | 插件配置 |
| `routes/` | API 路由层 |

---

## 4. 目标架构

```
┌─────────────────────────────────────────────────────────────┐
│                      Tool Manifests                          │
│  - YAML/JSON 声明式定义                                     │
│  - 版本管理                                                 │
│  - Schema 验证                                             │
└─────────────────────────┬───────────────────────────────────┘
                          │
┌─────────────────────────┴───────────────────────────────────┐
│                    Tool Registry                             │
│  - 动态发现                                                 │
│  - 权限控制                                                 │
│  - 调用统计                                                 │
└─────────────────────────┬───────────────────────────────────┘
                          │
┌─────────────────────────┴───────────────────────────────────┐
│                    Tool Executor                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐    │
│  │ Python RT   │  │   JS RT     │  │  Native RT  │    │
│  └─────────────┘  └─────────────┘  └─────────────┘    │
└─────────────────────────┬───────────────────────────────────┘
                          │
┌─────────────────────────┴───────────────────────────────────┐
│                    Tool Output                               │
│  - 类型化返回                                               │
│  - 错误处理                                                │
│  - 调用日志                                                │
└─────────────────────────────────────────────────────────────┘
```

---

## 5. 借鉴点映射

| VCPToolBox 借鉴点 | Jarvis 实现位置 | 优先级 |
|-------------------|---------------|--------|
| Manifest 驱动 | `tools/manifests/` | 🟢 高 |
| 标准化契约 | `tools/schemas/` | 🟢 高 |
| configSchema | `tools/base.py` | 🟢 高 |
| 工具注册中心 | `tools/registry.py` | 🟡 中 |
| 动态发现 | `tools/discovery.py` | 🟡 中 |
| 调用日志 | `tools/logging.py` | 🟡 中 |
| 超时控制 | `tools/executor.py` | 🟡 中 |
| 多运行时 | `tools/runtime/` | 🟡 中 |

---

## 6. 本阶段产出要求

- [x] 团队对 Jarvis 当前工具系统和目标方向达成一致
- [x] VCPToolBox 工具系统借鉴点已映射到具体 Phase
- [x] 后续 phase 文档能够在这个认知基础上展开
