193 lines
6.6 KiB
Markdown
193 lines
6.6 KiB
Markdown
# 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 文档能够在这个认知基础上展开
|