first commit

This commit is contained in:
nasir@endelospay.com
2025-08-12 02:54:17 +05:00
commit d97cad1736
225 changed files with 137626 additions and 0 deletions

307
docs/ARCHITECTURE_zh.md Normal file
View File

@@ -0,0 +1,307 @@
# Chrome MCP Server 架构设计 🏗️
本文档提供 Chrome MCP Server 架构、设计决策和实现细节的详细技术概述。
## 📋 目录
- [概述](#概述)
- [系统架构](#系统架构)
- [组件详情](#组件详情)
- [数据流](#数据流)
- [AI 集成](#ai-集成)
- [性能优化](#性能优化)
- [安全考虑](#安全考虑)
## 🎯 概述
Chrome MCP Server 是一个复杂的浏览器自动化平台,通过模型上下文协议 (MCP) 将 AI 助手与 Chrome 浏览器功能连接起来。架构设计目标:
- **高性能**SIMD 优化的 AI 操作和高效的原生消息传递
- **可扩展性**:模块化工具系统,便于添加新功能
- **可靠性**:强大的错误处理和优雅降级
- **安全性**:沙盒执行和基于权限的访问控制
## 🏗️ 系统架构
```mermaid
graph TB
subgraph "AI 助手层"
A[Claude Desktop]
B[自定义 MCP 客户端]
C[其他 AI 工具]
end
subgraph "MCP 协议层"
D[HTTP/SSE 传输]
E[MCP 服务器实例]
F[工具注册表]
end
subgraph "原生服务器层"
G[Fastify HTTP 服务器]
H[原生消息主机]
I[会话管理]
end
subgraph "Chrome 扩展层"
J[后台脚本]
K[内容脚本]
L[弹窗界面]
M[离屏文档]
end
subgraph "浏览器 APIs 层"
N[Chrome APIs]
O[Web APIs]
P[原生消息]
end
subgraph "AI 处理层"
Q[语义引擎]
R[向量数据库]
S[SIMD 数学引擎]
T[Web Workers]
end
A --> D
B --> D
C --> D
D --> E
E --> F
F --> G
G --> H
H --> P
P --> J
J --> K
J --> L
J --> M
J --> N
J --> O
J --> Q
Q --> R
Q --> S
Q --> T
```
## 🔧 组件详情
### 1. 原生服务器 (`app/native-server/`)
**目的**MCP 协议实现和原生消息桥接
**核心组件**
- **Fastify HTTP 服务器**:处理基于 HTTP/SSE 的 MCP 协议
- **原生消息主机**:与 Chrome 扩展通信
- **会话管理**:管理多个 MCP 客户端会话
- **工具注册表**:将工具调用路由到 Chrome 扩展
**技术栈**
- TypeScript + Fastify
- MCP SDK (@modelcontextprotocol/sdk)
- 原生消息协议
### 2. Chrome 扩展 (`app/chrome-extension/`)
**目的**:浏览器自动化和 AI 驱动的内容分析
**核心组件**
- **后台脚本**:主要协调器和工具执行器
- **内容脚本**:页面交互和内容提取
- **弹窗界面**:用户配置和状态显示
- **离屏文档**:在隔离环境中进行 AI 模型处理
**技术栈**
- WXT 框架 + Vue 3
- Chrome 扩展 APIs
- WebAssembly + SIMD
- Transformers.js
### 3. 共享包 (`packages/`)
#### 3.1 共享类型 (`packages/shared/`)
- 工具模式和类型定义
- 通用接口和工具
- MCP 协议类型
#### 3.2 WASM SIMD (`packages/wasm-simd/`)
- 基于 Rust 的 SIMD 优化数学函数
- 使用 Emscripten 编译 WebAssembly
- 向量运算性能提升 4-8 倍
## 🔄 数据流
### 工具执行流程
```
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ AI 助手 │ │ 原生服务器 │ │ Chrome 扩展 │ │ 浏览器 APIs │
└─────┬───────┘ └──────┬───────┘ └─────────┬───────┘ └──────┬───────┘
│ │ │ │
│ 1. 工具调用 │ │ │
├──────────────────►│ │ │
│ │ 2. 原生消息 │ │
│ ├─────────────────────►│ │
│ │ │ 3. 执行工具 │
│ │ ├──────────────────►│
│ │ │ 4. API 响应 │
│ │ │◄──────────────────┤
│ │ 5. 工具结果 │ │
│ │◄─────────────────────┤ │
│ 6. MCP 响应 │ │ │
│◄──────────────────┤ │ │
```
### AI 处理流程
```
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ 内容提取 │ │ 文本分块器 │ │ 语义引擎 │ │ 向量数据库 │
└─────┬───────┘ └──────┬───────┘ └─────────┬───────┘ └──────┬───────┘
│ │ │ │
│ 1. 原始内容 │ │ │
├──────────────────►│ │ │
│ │ 2. 文本块 │ │
│ ├─────────────────────►│ │
│ │ │ 3. 嵌入向量 │
│ │ ├──────────────────►│
│ │ │ │
│ │ 4. 搜索查询 │ │
│ ├─────────────────────►│ │
│ │ │ 5. 查询向量 │
│ │ ├──────────────────►│
│ │ │ 6. 相似文档 │
│ │ │◄──────────────────┤
│ │ 7. 搜索结果 │ │
│ │◄─────────────────────┤ │
```
## 🧠 AI 集成
### 语义相似度引擎
**架构**
- **模型支持**BGE-small-en-v1.5、E5-small-v2、Universal Sentence Encoder
- **执行环境**Web Workers 用于非阻塞处理
- **优化**:向量运算的 SIMD 加速
- **缓存**:嵌入和分词的 LRU 缓存
**性能优化**
```typescript
// SIMD 加速的余弦相似度
const similarity = await simdMath.cosineSimilarity(vecA, vecB);
// 批处理提高效率
const similarities = await simdMath.batchSimilarity(vectors, query, dimension);
// 内存高效的矩阵运算
const matrix = await simdMath.similarityMatrix(vectorsA, vectorsB, dimension);
```
### 向量数据库 (hnswlib-wasm)
**特性**
- **算法**:分层导航小世界 (HNSW)
- **实现**WebAssembly 实现接近原生性能
- **持久化**IndexedDB 存储,自动清理
- **可扩展性**:高效处理 10,000+ 文档
**配置**
```typescript
const config: VectorDatabaseConfig = {
dimension: 384, // 模型嵌入维度
maxElements: 10000, // 最大文档数
efConstruction: 200, // 构建时精度
M: 16, // 连接参数
efSearch: 100, // 搜索时精度
enableAutoCleanup: true, // 自动清理旧数据
maxRetentionDays: 30, // 数据保留期
};
```
## ⚡ 性能优化
### 1. SIMD 加速
**Rust 实现**
```rust
use wide::f32x4;
fn cosine_similarity_simd(&self, vec_a: &[f32], vec_b: &[f32]) -> f32 {
let len = vec_a.len();
let simd_lanes = 4;
let simd_len = len - (len % simd_lanes);
let mut dot_sum_simd = f32x4::ZERO;
let mut norm_a_sum_simd = f32x4::ZERO;
let mut norm_b_sum_simd = f32x4::ZERO;
for i in (0..simd_len).step_by(simd_lanes) {
let a_chunk = f32x4::new(vec_a[i..i+4].try_into().unwrap());
let b_chunk = f32x4::new(vec_b[i..i+4].try_into().unwrap());
dot_sum_simd = a_chunk.mul_add(b_chunk, dot_sum_simd);
norm_a_sum_simd = a_chunk.mul_add(a_chunk, norm_a_sum_simd);
norm_b_sum_simd = b_chunk.mul_add(b_chunk, norm_b_sum_simd);
}
// 计算最终相似度
let dot_product = dot_sum_simd.reduce_add();
let norm_a = norm_a_sum_simd.reduce_add().sqrt();
let norm_b = norm_b_sum_simd.reduce_add().sqrt();
dot_product / (norm_a * norm_b)
}
```
### 2. 内存管理
**策略**
- **对象池**:重用 Float32Array 缓冲区
- **延迟加载**:按需加载 AI 模型
- **缓存管理**:嵌入的 LRU 淘汰
- **垃圾回收**:显式清理大对象
### 3. 并发处理
**Web Workers**
- **AI 处理**:模型推理的独立 worker
- **内容索引**:后台标签页内容索引
- **网络捕获**:并行请求处理
## 🔧 扩展点
### 添加新工具
1. **定义模式**`packages/shared/src/tools.ts`
2. **实现工具** 继承 `BaseBrowserToolExecutor`
3. **注册工具** 在工具索引中
4. **添加测试** 用于功能测试
### 自定义 AI 模型
1. **模型集成**`SemanticSimilarityEngine`
2. **Worker 支持** 用于处理
3. **配置** 在模型预设中
4. **性能测试** 使用基准测试
### 协议扩展
1. **MCP 扩展** 用于自定义功能
2. **传输层** 用于不同通信方法
3. **身份验证** 用于安全连接
4. **监控** 用于性能指标
此架构使 Chrome MCP Server 能够在保持安全性和可扩展性的同时,提供高性能的浏览器自动化和先进的 AI 功能。