@mcpilotx/intentorch 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +545 -0
- package/dist/ai/ai.d.ts +205 -0
- package/dist/ai/ai.js +1200 -0
- package/dist/ai/cloud-intent-engine.d.ts +270 -0
- package/dist/ai/cloud-intent-engine.js +956 -0
- package/dist/ai/command.d.ts +59 -0
- package/dist/ai/command.js +285 -0
- package/dist/ai/config.d.ts +66 -0
- package/dist/ai/config.js +211 -0
- package/dist/ai/enhanced-intent.d.ts +17 -0
- package/dist/ai/enhanced-intent.js +32 -0
- package/dist/ai/index.d.ts +29 -0
- package/dist/ai/index.js +44 -0
- package/dist/ai/intent.d.ts +16 -0
- package/dist/ai/intent.js +30 -0
- package/dist/core/ai-config.d.ts +25 -0
- package/dist/core/ai-config.js +326 -0
- package/dist/core/config-manager.d.ts +36 -0
- package/dist/core/config-manager.js +400 -0
- package/dist/core/config-validator.d.ts +9 -0
- package/dist/core/config-validator.js +184 -0
- package/dist/core/constants.d.ts +34 -0
- package/dist/core/constants.js +37 -0
- package/dist/core/error-ai.d.ts +23 -0
- package/dist/core/error-ai.js +217 -0
- package/dist/core/error-handler.d.ts +197 -0
- package/dist/core/error-handler.js +467 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.js +17 -0
- package/dist/core/logger.d.ts +27 -0
- package/dist/core/logger.js +108 -0
- package/dist/core/performance-monitor.d.ts +74 -0
- package/dist/core/performance-monitor.js +260 -0
- package/dist/core/providers.d.ts +36 -0
- package/dist/core/providers.js +304 -0
- package/dist/core/retry-manager.d.ts +41 -0
- package/dist/core/retry-manager.js +204 -0
- package/dist/core/types.d.ts +155 -0
- package/dist/core/types.js +2 -0
- package/dist/daemon/index.d.ts +10 -0
- package/dist/daemon/index.js +15 -0
- package/dist/daemon/intent-engine.d.ts +22 -0
- package/dist/daemon/intent-engine.js +50 -0
- package/dist/daemon/orchestrator.d.ts +24 -0
- package/dist/daemon/orchestrator.js +100 -0
- package/dist/daemon/pm.d.ts +33 -0
- package/dist/daemon/pm.js +127 -0
- package/dist/daemon/process.d.ts +11 -0
- package/dist/daemon/process.js +49 -0
- package/dist/daemon/server.d.ts +17 -0
- package/dist/daemon/server.js +435 -0
- package/dist/daemon/service.d.ts +36 -0
- package/dist/daemon/service.js +278 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +36 -0
- package/dist/mcp/client.d.ts +51 -0
- package/dist/mcp/client.js +276 -0
- package/dist/mcp/index.d.ts +162 -0
- package/dist/mcp/index.js +199 -0
- package/dist/mcp/tool-registry.d.ts +71 -0
- package/dist/mcp/tool-registry.js +308 -0
- package/dist/mcp/transport.d.ts +83 -0
- package/dist/mcp/transport.js +515 -0
- package/dist/mcp/types.d.ts +136 -0
- package/dist/mcp/types.js +31 -0
- package/dist/runtime/adapter-advanced.d.ts +184 -0
- package/dist/runtime/adapter-advanced.js +160 -0
- package/dist/runtime/adapter.d.ts +9 -0
- package/dist/runtime/adapter.js +2 -0
- package/dist/runtime/detector-advanced.d.ts +59 -0
- package/dist/runtime/detector-advanced.js +487 -0
- package/dist/runtime/detector.d.ts +5 -0
- package/dist/runtime/detector.js +56 -0
- package/dist/runtime/docker-adapter.d.ts +18 -0
- package/dist/runtime/docker-adapter.js +170 -0
- package/dist/runtime/docker.d.ts +17 -0
- package/dist/runtime/docker.js +71 -0
- package/dist/runtime/executable-analyzer.d.ts +56 -0
- package/dist/runtime/executable-analyzer.js +391 -0
- package/dist/runtime/go-adapter.d.ts +19 -0
- package/dist/runtime/go-adapter.js +190 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.js +10 -0
- package/dist/runtime/node-adapter.d.ts +10 -0
- package/dist/runtime/node-adapter.js +23 -0
- package/dist/runtime/node.d.ts +20 -0
- package/dist/runtime/node.js +86 -0
- package/dist/runtime/python-adapter.d.ts +11 -0
- package/dist/runtime/python-adapter.js +102 -0
- package/dist/runtime/python.d.ts +17 -0
- package/dist/runtime/python.js +72 -0
- package/dist/runtime/rust-adapter.d.ts +21 -0
- package/dist/runtime/rust-adapter.js +267 -0
- package/dist/sdk.d.ts +500 -0
- package/dist/sdk.js +904 -0
- package/docs/README.ZH_CN.md +545 -0
- package/docs/api.md +888 -0
- package/docs/architecture.md +731 -0
- package/docs/development.md +744 -0
- package/package.json +112 -0
|
@@ -0,0 +1,731 @@
|
|
|
1
|
+
# Architecture Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
IntentOrch SDK Core is an MCP (Model Context Protocol) service orchestration SDK designed for developers. This document details the SDK's architecture design, core components, and design principles.
|
|
6
|
+
|
|
7
|
+
## Architecture Overview
|
|
8
|
+
|
|
9
|
+
### Overall Architecture
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
IntentOrch SDK Core
|
|
13
|
+
├── Core Layer
|
|
14
|
+
│ ├── SDK Main Class (IntentOrchSDK, formerly MCPilotSDK)
|
|
15
|
+
│ ├── Configuration Manager (ConfigManager)
|
|
16
|
+
│ ├── Logging System (Logger)
|
|
17
|
+
│ ├── Error Handling (ErrorHandler)
|
|
18
|
+
│ ├── Performance Monitoring (PerformanceMonitor)
|
|
19
|
+
│ └── Type Definitions (Types)
|
|
20
|
+
│
|
|
21
|
+
├── MCP Module
|
|
22
|
+
│ ├── MCP Client (MCPClient)
|
|
23
|
+
│ ├── Tool Registry (ToolRegistry)
|
|
24
|
+
│ ├── Transport Layer (Transport)
|
|
25
|
+
│ └── Type Definitions (Types)
|
|
26
|
+
│
|
|
27
|
+
├── Runtime Adapters
|
|
28
|
+
│ ├── Runtime Adapter Registry (RuntimeAdapterRegistry)
|
|
29
|
+
│ ├── Runtime Detector (EnhancedRuntimeDetector)
|
|
30
|
+
│ ├── Node.js Adapter
|
|
31
|
+
│ ├── Python Adapter
|
|
32
|
+
│ ├── Docker Adapter
|
|
33
|
+
│ ├── Go Adapter (基础支持)
|
|
34
|
+
│ └── Rust Adapter (基础支持)
|
|
35
|
+
│
|
|
36
|
+
├── AI Integration Layer
|
|
37
|
+
│ ├── Simple AI (SimpleAI)
|
|
38
|
+
│ ├── Cloud Intent Engine (CloudIntentEngine)
|
|
39
|
+
│ ├── Enhanced Intent Tracking
|
|
40
|
+
│ └── Intent Parsing
|
|
41
|
+
│
|
|
42
|
+
└── Daemon Layer (可选功能)
|
|
43
|
+
├── Intent Engine
|
|
44
|
+
├── Orchestrator
|
|
45
|
+
├── Process Manager
|
|
46
|
+
└── Service Management
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**架构说明:**
|
|
50
|
+
- **Core Layer**: 提供SDK核心功能,包括配置管理、日志记录、错误处理等
|
|
51
|
+
- **MCP Module**: 实现MCP协议,提供工具管理和服务器连接功能
|
|
52
|
+
- **Runtime Adapters**: 支持多种运行时环境,提供统一的运行时接口
|
|
53
|
+
- **AI Integration Layer**: 提供AI集成功能,包括意图识别和工作流处理
|
|
54
|
+
- **Daemon Layer**: 可选功能,提供守护进程和高级服务管理能力
|
|
55
|
+
|
|
56
|
+
## 核心组件
|
|
57
|
+
|
|
58
|
+
### 1. SDK 主类 (MCPilotSDK)
|
|
59
|
+
|
|
60
|
+
**职责:**
|
|
61
|
+
- 提供统一的 API 接口
|
|
62
|
+
- 管理 SDK 生命周期
|
|
63
|
+
- 协调各个组件之间的交互
|
|
64
|
+
|
|
65
|
+
**设计特点:**
|
|
66
|
+
- 单例模式和实例模式都支持
|
|
67
|
+
- 懒加载和按需初始化
|
|
68
|
+
- 线程安全的组件管理
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
class MCPilotSDK {
|
|
72
|
+
// 核心组件
|
|
73
|
+
private configManager: ConfigManager;
|
|
74
|
+
private initialized = false;
|
|
75
|
+
private logger: SDKOptions['logger'];
|
|
76
|
+
|
|
77
|
+
// AI 实例
|
|
78
|
+
private ai: SimpleAI;
|
|
79
|
+
|
|
80
|
+
// Cloud Intent Engine
|
|
81
|
+
private cloudIntentEngine?: CloudIntentEngine;
|
|
82
|
+
|
|
83
|
+
// MCP 相关属性
|
|
84
|
+
private mcpClients: Map<string, MCPClient> = new Map();
|
|
85
|
+
private toolRegistry: ToolRegistry = new ToolRegistry();
|
|
86
|
+
private mcpOptions: SDKOptions['mcp'];
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 2. 配置管理器 (ConfigManager)
|
|
91
|
+
|
|
92
|
+
**职责:**
|
|
93
|
+
- 管理全局和本地配置
|
|
94
|
+
- 配置持久化
|
|
95
|
+
- 配置验证和默认值设置
|
|
96
|
+
|
|
97
|
+
**设计特点:**
|
|
98
|
+
- 基于文件的配置存储
|
|
99
|
+
- 支持环境变量覆盖
|
|
100
|
+
- 配置变更监听
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
class ConfigManager {
|
|
104
|
+
// 配置存储
|
|
105
|
+
private config: Config;
|
|
106
|
+
|
|
107
|
+
// 配置文件路径
|
|
108
|
+
private configPath: string;
|
|
109
|
+
|
|
110
|
+
// 配置验证器
|
|
111
|
+
private validator: ConfigValidator;
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 3. MCP 客户端 (MCPClient)
|
|
116
|
+
|
|
117
|
+
**职责:**
|
|
118
|
+
- 实现 MCP 协议
|
|
119
|
+
- 管理 MCP 服务器连接
|
|
120
|
+
- 处理工具调用和结果
|
|
121
|
+
|
|
122
|
+
**支持的传输类型:**
|
|
123
|
+
- **stdio**: 标准输入输出传输
|
|
124
|
+
- **http**: HTTP 传输
|
|
125
|
+
- **sse**: 服务器发送事件传输
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
class MCPClient {
|
|
129
|
+
// 传输层
|
|
130
|
+
private transport: Transport;
|
|
131
|
+
|
|
132
|
+
// 协议处理器
|
|
133
|
+
private protocolHandler: ProtocolHandler;
|
|
134
|
+
|
|
135
|
+
// 连接状态
|
|
136
|
+
private connectionState: ConnectionState;
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 4. 工具注册表 (ToolRegistry)
|
|
141
|
+
|
|
142
|
+
**职责:**
|
|
143
|
+
- 统一管理所有工具
|
|
144
|
+
- 工具发现和搜索
|
|
145
|
+
- 工具执行和结果处理
|
|
146
|
+
|
|
147
|
+
**设计特点:**
|
|
148
|
+
- 支持多服务器工具聚合
|
|
149
|
+
- 工具缓存和性能优化
|
|
150
|
+
- 工具执行统计
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
class ToolRegistry {
|
|
154
|
+
// 工具存储
|
|
155
|
+
private tools: Map<string, RegisteredTool>;
|
|
156
|
+
|
|
157
|
+
// 工具执行器
|
|
158
|
+
private executors: Map<string, ToolExecutor>;
|
|
159
|
+
|
|
160
|
+
// 统计信息
|
|
161
|
+
private statistics: ToolStatistics;
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 5. 运行时适配器 (Runtime Adapters)
|
|
166
|
+
|
|
167
|
+
**职责:**
|
|
168
|
+
- 抽象不同运行时的差异
|
|
169
|
+
- 提供统一的运行时接口
|
|
170
|
+
- 管理服务生命周期
|
|
171
|
+
|
|
172
|
+
**支持的运行时:**
|
|
173
|
+
- **Node.js**: JavaScript/TypeScript 服务
|
|
174
|
+
- **Python**: Python 服务
|
|
175
|
+
- **Docker**: 容器化服务
|
|
176
|
+
- **Go**: Go 语言服务
|
|
177
|
+
- **Rust**: Rust 语言服务
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
interface RuntimeAdapter {
|
|
181
|
+
// 启动服务
|
|
182
|
+
start(config: ServiceConfig): Promise<ProcessInfo>;
|
|
183
|
+
|
|
184
|
+
// 停止服务
|
|
185
|
+
stop(processId: string): Promise<void>;
|
|
186
|
+
|
|
187
|
+
// 获取服务状态
|
|
188
|
+
status(processId: string): Promise<ServiceStatus>;
|
|
189
|
+
|
|
190
|
+
// 检查运行时支持
|
|
191
|
+
supports(runtimeType: string): boolean;
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 6. 服务管理器 (ServiceManager)
|
|
196
|
+
|
|
197
|
+
**职责:**
|
|
198
|
+
- 管理服务生命周期
|
|
199
|
+
- 监控服务健康状态
|
|
200
|
+
- 处理服务依赖关系
|
|
201
|
+
|
|
202
|
+
**设计特点:**
|
|
203
|
+
- 服务状态持久化
|
|
204
|
+
- 自动重启和恢复
|
|
205
|
+
- 资源限制和隔离
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
class ServiceManager {
|
|
209
|
+
// 服务存储
|
|
210
|
+
private services: Map<string, ManagedService>;
|
|
211
|
+
|
|
212
|
+
// 进程管理器
|
|
213
|
+
private processManager: ProcessManager;
|
|
214
|
+
|
|
215
|
+
// 健康检查器
|
|
216
|
+
private healthChecker: HealthChecker;
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 设计原则
|
|
221
|
+
|
|
222
|
+
### 1. 简洁性 (Simplicity)
|
|
223
|
+
|
|
224
|
+
**目标:** 提供干净、最小的 API 表面
|
|
225
|
+
|
|
226
|
+
**实现方式:**
|
|
227
|
+
- 每个类有单一职责
|
|
228
|
+
- 最小化的公共 API
|
|
229
|
+
- 直观的命名约定
|
|
230
|
+
|
|
231
|
+
**示例:**
|
|
232
|
+
```typescript
|
|
233
|
+
// 简洁的 API 设计
|
|
234
|
+
const sdk = new MCPilotSDK();
|
|
235
|
+
await sdk.initMCP();
|
|
236
|
+
const tools = sdk.listTools();
|
|
237
|
+
const result = await sdk.executeTool('read_file', { path: '/tmp/file.txt' });
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 2. 模块化 (Modularity)
|
|
241
|
+
|
|
242
|
+
**目标:** 清晰的关注点分离
|
|
243
|
+
|
|
244
|
+
**实现方式:**
|
|
245
|
+
- 独立的组件模块
|
|
246
|
+
- 明确的接口边界
|
|
247
|
+
- 松耦合的组件设计
|
|
248
|
+
|
|
249
|
+
**模块结构:**
|
|
250
|
+
```
|
|
251
|
+
src/
|
|
252
|
+
├── core/ # 核心功能
|
|
253
|
+
├── mcp/ # MCP 协议实现
|
|
254
|
+
├── runtime/ # 运行时适配器
|
|
255
|
+
├── daemon/ # 守护进程功能
|
|
256
|
+
└── ai/ # AI 集成
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 3. 可扩展性 (Extensibility)
|
|
260
|
+
|
|
261
|
+
**目标:** 易于添加新功能和适配器
|
|
262
|
+
|
|
263
|
+
**实现方式:**
|
|
264
|
+
- 插件式架构
|
|
265
|
+
- 工厂模式创建适配器
|
|
266
|
+
- 配置驱动的扩展
|
|
267
|
+
|
|
268
|
+
**扩展示例:**
|
|
269
|
+
```typescript
|
|
270
|
+
// 添加自定义运行时适配器
|
|
271
|
+
class CustomRuntimeAdapter implements RuntimeAdapter {
|
|
272
|
+
// 实现接口方法
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// 注册适配器
|
|
276
|
+
RuntimeAdapterRegistry.registerAdapter('custom', CustomRuntimeAdapter);
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### 4. 可靠性 (Reliability)
|
|
280
|
+
|
|
281
|
+
**目标:** 健壮的错误处理和恢复
|
|
282
|
+
|
|
283
|
+
**实现方式:**
|
|
284
|
+
- 全面的错误类型
|
|
285
|
+
- 自动重试机制
|
|
286
|
+
- 优雅的降级处理
|
|
287
|
+
|
|
288
|
+
**错误处理:**
|
|
289
|
+
```typescript
|
|
290
|
+
try {
|
|
291
|
+
await sdk.executeTool('some_tool', params);
|
|
292
|
+
} catch (error) {
|
|
293
|
+
if (error instanceof MCPilotError && error.shouldRetry) {
|
|
294
|
+
// 自动重试逻辑
|
|
295
|
+
}
|
|
296
|
+
// 优雅降级
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### 5. 性能 (Performance)
|
|
301
|
+
|
|
302
|
+
**目标:** 高效的工具发现和执行
|
|
303
|
+
|
|
304
|
+
**实现方式:**
|
|
305
|
+
- 工具缓存
|
|
306
|
+
- 并行执行支持
|
|
307
|
+
- 资源优化
|
|
308
|
+
|
|
309
|
+
**性能优化:**
|
|
310
|
+
```typescript
|
|
311
|
+
// 并行工具执行
|
|
312
|
+
const results = await Promise.all([
|
|
313
|
+
sdk.executeTool('tool1', params1),
|
|
314
|
+
sdk.executeTool('tool2', params2),
|
|
315
|
+
sdk.executeTool('tool3', params3)
|
|
316
|
+
]);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## 数据流
|
|
320
|
+
|
|
321
|
+
### 1. 工具执行流程
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
用户请求
|
|
325
|
+
↓
|
|
326
|
+
SDK.executeTool()
|
|
327
|
+
↓
|
|
328
|
+
ToolRegistry.findTool()
|
|
329
|
+
↓
|
|
330
|
+
MCPClient.callTool()
|
|
331
|
+
↓
|
|
332
|
+
Transport.sendRequest()
|
|
333
|
+
↓
|
|
334
|
+
MCP 服务器处理
|
|
335
|
+
↓
|
|
336
|
+
Transport.receiveResponse()
|
|
337
|
+
↓
|
|
338
|
+
ToolRegistry.processResult()
|
|
339
|
+
↓
|
|
340
|
+
返回结果给用户
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### 2. 服务启动流程
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
用户调用 sdk.startService()
|
|
347
|
+
↓
|
|
348
|
+
ServiceManager.validateConfig()
|
|
349
|
+
↓
|
|
350
|
+
RuntimeAdapterRegistry.createAdapter()
|
|
351
|
+
↓
|
|
352
|
+
RuntimeAdapter.start()
|
|
353
|
+
↓
|
|
354
|
+
ProcessManager.createProcess()
|
|
355
|
+
↓
|
|
356
|
+
监控进程状态
|
|
357
|
+
↓
|
|
358
|
+
返回服务状态
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 3. 配置管理流程
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
配置读取请求
|
|
365
|
+
↓
|
|
366
|
+
ConfigManager.loadConfig()
|
|
367
|
+
↓
|
|
368
|
+
ConfigValidator.validate()
|
|
369
|
+
↓
|
|
370
|
+
应用默认值
|
|
371
|
+
↓
|
|
372
|
+
返回配置对象
|
|
373
|
+
↓
|
|
374
|
+
配置变更监听
|
|
375
|
+
↓
|
|
376
|
+
自动保存到文件
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## 组件交互
|
|
380
|
+
|
|
381
|
+
### MCP 模块内部交互
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
MCPClient ────────┐
|
|
385
|
+
│ │
|
|
386
|
+
▼ ▼
|
|
387
|
+
Transport ──── ToolRegistry
|
|
388
|
+
│ │
|
|
389
|
+
▼ ▼
|
|
390
|
+
Protocol ────── ToolExecutor
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
### 运行时适配器交互
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
ServiceManager ───┐
|
|
397
|
+
│ │
|
|
398
|
+
▼ ▼
|
|
399
|
+
RuntimeAdapterRegistry
|
|
400
|
+
│
|
|
401
|
+
▼
|
|
402
|
+
[NodeAdapter, PythonAdapter, DockerAdapter, ...]
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### AI 集成交互
|
|
406
|
+
|
|
407
|
+
```
|
|
408
|
+
AI Module ────────┐
|
|
409
|
+
│ │
|
|
410
|
+
▼ ▼
|
|
411
|
+
IntentEngine ── ToolRegistry
|
|
412
|
+
│ │
|
|
413
|
+
▼ ▼
|
|
414
|
+
Orchestrator ── MCPClient
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
## 配置架构
|
|
418
|
+
|
|
419
|
+
### 配置文件结构
|
|
420
|
+
|
|
421
|
+
```json
|
|
422
|
+
{
|
|
423
|
+
"global": {
|
|
424
|
+
"logLevel": "info",
|
|
425
|
+
"maxRetries": 3,
|
|
426
|
+
"timeout": 30000
|
|
427
|
+
},
|
|
428
|
+
"ai": {
|
|
429
|
+
"provider": "openai",
|
|
430
|
+
"apiKey": "sk-...",
|
|
431
|
+
"model": "gpt-4",
|
|
432
|
+
"temperature": 0.7
|
|
433
|
+
},
|
|
434
|
+
"mcp": {
|
|
435
|
+
"autoDiscover": true,
|
|
436
|
+
"defaultTransport": "stdio",
|
|
437
|
+
"servers": [
|
|
438
|
+
{
|
|
439
|
+
"name": "filesystem",
|
|
440
|
+
"transport": {
|
|
441
|
+
"type": "stdio",
|
|
442
|
+
"command": "npx",
|
|
443
|
+
"args": ["@modelcontextprotocol/server-filesystem"]
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
]
|
|
447
|
+
},
|
|
448
|
+
"services": {
|
|
449
|
+
"my-service": {
|
|
450
|
+
"name": "my-service",
|
|
451
|
+
"path": "./service",
|
|
452
|
+
"runtime": "node",
|
|
453
|
+
"env": {
|
|
454
|
+
"NODE_ENV": "production"
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### 配置优先级
|
|
462
|
+
|
|
463
|
+
1. **命令行参数**: 最高优先级
|
|
464
|
+
2. **环境变量**: 次高优先级
|
|
465
|
+
3. **配置文件**: 默认配置
|
|
466
|
+
4. **代码默认值**: 最低优先级
|
|
467
|
+
|
|
468
|
+
## 错误处理架构
|
|
469
|
+
|
|
470
|
+
### 错误层次结构
|
|
471
|
+
|
|
472
|
+
```
|
|
473
|
+
Error (基础错误类)
|
|
474
|
+
├── MCPilotError (SDK 基础错误)
|
|
475
|
+
│ ├── ServiceNotFoundError (服务未找到)
|
|
476
|
+
│ ├── ToolNotFoundError (工具未找到)
|
|
477
|
+
│ ├── MCPConnectionError (MCP 连接错误)
|
|
478
|
+
│ └── ConfigValidationError (配置验证错误)
|
|
479
|
+
└── ExternalError (外部错误)
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
### 错误恢复策略
|
|
483
|
+
|
|
484
|
+
1. **重试策略**: 对于网络错误和临时故障
|
|
485
|
+
2. **降级策略**: 当主要功能不可用时
|
|
486
|
+
3. **回滚策略**: 对于配置变更失败
|
|
487
|
+
4. **通知策略**: 向用户报告错误
|
|
488
|
+
|
|
489
|
+
```typescript
|
|
490
|
+
// 错误恢复示例
|
|
491
|
+
async function executeWithRecovery(toolName: string, args: any) {
|
|
492
|
+
try {
|
|
493
|
+
return await sdk.executeTool(toolName, args);
|
|
494
|
+
} catch (error) {
|
|
495
|
+
if (error instanceof MCPConnectionError && error.shouldRetry) {
|
|
496
|
+
// 重试逻辑
|
|
497
|
+
return await retryExecution(toolName, args);
|
|
498
|
+
} else if (error instanceof ToolNotFoundError) {
|
|
499
|
+
// 降级逻辑
|
|
500
|
+
return await fallbackExecution(toolName, args);
|
|
501
|
+
} else {
|
|
502
|
+
// 报告错误
|
|
503
|
+
throw error;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
## 性能考虑
|
|
510
|
+
|
|
511
|
+
### 1. 工具缓存
|
|
512
|
+
|
|
513
|
+
- **内存缓存**: 最近使用的工具
|
|
514
|
+
- **磁盘缓存**: 工具元数据
|
|
515
|
+
- **缓存失效**: 基于时间或事件
|
|
516
|
+
|
|
517
|
+
### 2. 连接池
|
|
518
|
+
|
|
519
|
+
- **MCP 连接复用**: 减少连接建立开销
|
|
520
|
+
- **连接健康检查**: 自动检测和恢复
|
|
521
|
+
- **连接限制**: 防止资源耗尽
|
|
522
|
+
|
|
523
|
+
### 3. 并行处理
|
|
524
|
+
|
|
525
|
+
- **工具并行执行**: 支持并发工具调用
|
|
526
|
+
- **异步操作**: 非阻塞 I/O
|
|
527
|
+
- **批量处理**: 优化多个操作
|
|
528
|
+
|
|
529
|
+
### 4. 资源管理
|
|
530
|
+
|
|
531
|
+
- **内存限制**: 防止内存泄漏
|
|
532
|
+
- **进程隔离**: 服务间资源隔离
|
|
533
|
+
- **垃圾回收**: 及时释放资源
|
|
534
|
+
|
|
535
|
+
## 安全考虑
|
|
536
|
+
|
|
537
|
+
### 1. 认证和授权
|
|
538
|
+
|
|
539
|
+
- **API 密钥管理**: 安全的密钥存储
|
|
540
|
+
- **传输加密**: TLS/SSL 支持
|
|
541
|
+
- **访问控制**: 基于角色的权限
|
|
542
|
+
|
|
543
|
+
### 2. 输入验证
|
|
544
|
+
|
|
545
|
+
- **参数验证**: 严格的类型检查
|
|
546
|
+
- **边界检查**: 防止缓冲区溢出
|
|
547
|
+
- **注入防护**: SQL/命令注入防护
|
|
548
|
+
|
|
549
|
+
### 3. 安全配置
|
|
550
|
+
|
|
551
|
+
- **默认安全**: 安全默认配置
|
|
552
|
+
- **配置加密**: 敏感配置加密
|
|
553
|
+
- **审计日志**: 安全事件记录
|
|
554
|
+
|
|
555
|
+
## 部署架构
|
|
556
|
+
|
|
557
|
+
### 1. 单机部署
|
|
558
|
+
|
|
559
|
+
```
|
|
560
|
+
应用程序
|
|
561
|
+
↓
|
|
562
|
+
MCPilot SDK
|
|
563
|
+
↓
|
|
564
|
+
[本地 MCP 服务器]
|
|
565
|
+
↓
|
|
566
|
+
[本地服务]
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
### 2. 分布式部署
|
|
570
|
+
|
|
571
|
+
```
|
|
572
|
+
应用程序 ───┐
|
|
573
|
+
│ │
|
|
574
|
+
▼ ▼
|
|
575
|
+
MCPilot SDK ─── MCPilot SDK
|
|
576
|
+
│ │
|
|
577
|
+
▼ ▼
|
|
578
|
+
[远程 MCP 服务器] [本地服务]
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### 3. 容器化部署
|
|
582
|
+
|
|
583
|
+
```
|
|
584
|
+
Docker 容器
|
|
585
|
+
├── 应用程序
|
|
586
|
+
├── MCPilot SDK
|
|
587
|
+
└── MCP 服务器
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
## 监控和可观测性
|
|
591
|
+
|
|
592
|
+
### 1. 指标收集
|
|
593
|
+
|
|
594
|
+
- **工具执行指标**: 成功率、延迟、吞吐量
|
|
595
|
+
- **服务健康指标**: 运行时间、资源使用
|
|
596
|
+
- **系统资源指标**: CPU、内存、磁盘
|
|
597
|
+
|
|
598
|
+
### 2. 日志记录
|
|
599
|
+
|
|
600
|
+
- **结构化日志**: JSON 格式日志
|
|
601
|
+
- **日志级别**: 可配置的日志级别
|
|
602
|
+
- **日志聚合**: 集中式日志管理
|
|
603
|
+
|
|
604
|
+
### 3. 跟踪和追踪
|
|
605
|
+
|
|
606
|
+
- **请求跟踪**: 端到端请求跟踪
|
|
607
|
+
- **性能剖析**: 性能瓶颈分析
|
|
608
|
+
- **依赖映射**: 组件依赖关系
|
|
609
|
+
|
|
610
|
+
## 扩展点
|
|
611
|
+
|
|
612
|
+
### 1. 自定义运行时适配器
|
|
613
|
+
|
|
614
|
+
```typescript
|
|
615
|
+
// 实现 RuntimeAdapter 接口
|
|
616
|
+
class CustomRuntimeAdapter implements RuntimeAdapter {
|
|
617
|
+
async start(config: ServiceConfig): Promise<ProcessInfo> {
|
|
618
|
+
// 自定义启动逻辑
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
async stop(processId: string): Promise<void> {
|
|
622
|
+
// 自定义停止逻辑
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
supports(runtimeType: string): boolean {
|
|
626
|
+
return runtimeType === 'custom';
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
// 注册适配器
|
|
631
|
+
RuntimeAdapterRegistry.registerAdapter('custom', CustomRuntimeAdapter);
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
### 2. 自定义传输层
|
|
635
|
+
|
|
636
|
+
```typescript
|
|
637
|
+
// 实现 Transport 接口
|
|
638
|
+
class CustomTransport implements Transport {
|
|
639
|
+
async connect(config: TransportConfig): Promise<void> {
|
|
640
|
+
// 自定义连接逻辑
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
async send(request: any): Promise<any> {
|
|
644
|
+
// 自定义发送逻辑
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
async disconnect(): Promise<void> {
|
|
648
|
+
// 自定义断开逻辑
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
### 3. 自定义工具执行器
|
|
654
|
+
|
|
655
|
+
```typescript
|
|
656
|
+
// 实现 ToolExecutor 接口
|
|
657
|
+
class CustomToolExecutor implements ToolExecutor {
|
|
658
|
+
async execute(tool: Tool, args: any): Promise<ToolResult> {
|
|
659
|
+
// 自定义执行逻辑
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
supports(toolName: string): boolean {
|
|
663
|
+
return toolName.startsWith('custom_');
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
## 最佳实践
|
|
669
|
+
|
|
670
|
+
### 1. 配置管理
|
|
671
|
+
|
|
672
|
+
- 使用环境变量管理敏感配置
|
|
673
|
+
- 为不同环境维护不同的配置文件
|
|
674
|
+
- 定期备份和验证配置
|
|
675
|
+
|
|
676
|
+
### 2. 错误处理
|
|
677
|
+
|
|
678
|
+
- 为所有 SDK 调用添加错误处理
|
|
679
|
+
- 实现适当的重试逻辑
|
|
680
|
+
- 记录详细的错误信息
|
|
681
|
+
|
|
682
|
+
### 3. 性能优化
|
|
683
|
+
|
|
684
|
+
- 缓存频繁使用的工具
|
|
685
|
+
- 使用连接池管理 MCP 连接
|
|
686
|
+
- 监控和优化资源使用
|
|
687
|
+
|
|
688
|
+
### 4. 安全实践
|
|
689
|
+
|
|
690
|
+
- 定期更新依赖项
|
|
691
|
+
- 使用最小权限原则
|
|
692
|
+
- 实施输入验证和清理
|
|
693
|
+
|
|
694
|
+
## 未来架构演进
|
|
695
|
+
|
|
696
|
+
### 1. 插件系统
|
|
697
|
+
|
|
698
|
+
- **动态插件加载**: 运行时插件加载
|
|
699
|
+
- **插件市场**: 社区插件共享
|
|
700
|
+
- **插件版本管理**: 兼容性管理
|
|
701
|
+
|
|
702
|
+
### 2. 分布式架构
|
|
703
|
+
|
|
704
|
+
- **集群支持**: 多节点部署
|
|
705
|
+
- **负载均衡**: 请求分发
|
|
706
|
+
- **故障转移**: 高可用性
|
|
707
|
+
|
|
708
|
+
### 3. AI 集成能力
|
|
709
|
+
|
|
710
|
+
- **AI 提供商支持**: 主要支持 DeepSeek,实验性支持 OpenAI、Ollama
|
|
711
|
+
- **上下文管理**: 基础对话上下文支持
|
|
712
|
+
- **意图识别**: 智能工具调用和意图解析
|
|
713
|
+
|
|
714
|
+
### 4. 监控和运维
|
|
715
|
+
|
|
716
|
+
- **仪表板**: 可视化监控
|
|
717
|
+
- **自动化运维**: 自愈系统
|
|
718
|
+
- **预测分析**: 性能预测
|
|
719
|
+
|
|
720
|
+
## 总结
|
|
721
|
+
|
|
722
|
+
MCPilot SDK Core 采用模块化、可扩展的架构设计,专注于为开发者提供简洁、可靠的 MCP 服务编排能力。通过清晰的组件边界、全面的错误处理和性能优化,SDK 能够满足从简单工具调用到复杂服务编排的各种需求。
|
|
723
|
+
|
|
724
|
+
架构的核心优势包括:
|
|
725
|
+
- **简洁的 API 设计**: 降低学习曲线
|
|
726
|
+
- **模块化组件**: 易于维护和扩展
|
|
727
|
+
- **全面的错误处理**: 提高系统可靠性
|
|
728
|
+
- **性能优化**: 确保高效执行
|
|
729
|
+
- **安全考虑**: 保护系统和数据安全
|
|
730
|
+
|
|
731
|
+
随着项目的发展,架构将继续演进,添加更多高级功能和优化,同时保持对现有用户的向后兼容性。
|