Files
qwen-code/packages/chrome-qwen-bridge/docs/implementation-plan.md
2025-12-20 00:58:41 +08:00

280 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.

# Chrome Qwen Bridge 实施计划
## 项目背景
基于用户需求和技术调研,需要开发一个 Chrome 插件,实现浏览器与 Qwen CLI 之间的数据桥接,让 AI 能够分析和处理网页内容。
## 实施阶段
### 第一阶段:基础架构搭建(已完成 ✅)
#### 1.1 Chrome 插件基础结构
- ✅ 创建项目目录结构
- ✅ 配置 manifest.json (Manifest V3)
- ✅ 设置必要的权限和配置
#### 1.2 核心组件开发
-**Background Service Worker**
- 实现消息路由
- 管理 Native Messaging 连接
- 处理扩展生命周期
-**Content Script**
- DOM 内容提取
- Console 日志拦截
- 页面事件监听
- HTML 转 Markdown 转换器
-**Popup UI**
- 用户界面设计(渐变主题)
- 状态指示器
- 操作按钮组
- 响应结果展示
- 设置管理
#### 1.3 功能实现清单
| 功能模块 | 具体功能 | 状态 |
|---------|---------|------|
| **数据提取** | | |
| | 提取页面文本内容 | ✅ |
| | 提取页面 HTML | ✅ |
| | 转换为 Markdown | ✅ |
| | 提取链接列表 | ✅ |
| | 提取图片信息 | ✅ |
| | 提取表单结构 | ✅ |
| | 提取元数据 | ✅ |
| **监控功能** | | |
| | Console 日志捕获 | ✅ |
| | 网络请求监控 | ✅ |
| | 性能指标收集 | ✅ |
| **交互功能** | | |
| | 截图捕获 | ✅ |
| | 选中文本获取 | ✅ |
| | 元素高亮 | ✅ |
| | 执行 JavaScript | ✅ |
| | 页面滚动控制 | ✅ |
### 第二阶段Native Messaging 实现(已完成 ✅)
#### 2.1 Native Host 开发
-**host.js 核心脚本**
- Native Messaging 协议实现
- 4字节长度前缀处理
- JSON 消息解析
- 双向通信管道
#### 2.2 进程管理
- ✅ Qwen CLI 进程启动/停止
- ✅ 进程状态监控
- ✅ 输出流捕获
- ✅ 错误处理
- ✅ 优雅退出机制
#### 2.3 安装脚本
- ✅ macOS/Linux 安装脚本 (`install.sh`)
- ✅ Windows 安装脚本 (`install.bat`)
- ✅ Manifest 文件生成
- ✅ 权限配置
### 第三阶段Qwen CLI 集成(已完成 ✅)
#### 3.1 通信实现
- ✅ HTTP 请求封装
- ✅ MCP 服务器配置
- ✅ 动态端口管理
- ✅ 错误重试机制
#### 3.2 MCP 服务器支持
```javascript
// 支持的 MCP 服务器配置
const mcpServers = [
'chrome-devtools-mcp', // Chrome 开发工具
'playwright-mcp', // 浏览器自动化
'custom-mcp' // 自定义服务器
];
```
### 第四阶段:项目集成(已完成 ✅)
#### 4.1 Mono Repo 集成
- ✅ 移动到 packages 目录
- ✅ 配置 package.json
- ✅ 添加 TypeScript 配置
- ✅ 创建构建脚本
- ✅ 配置 .gitignore
#### 4.2 文档编写
- ✅ README 主文档
- ✅ 架构设计文档
- ✅ 实施计划文档(本文档)
- 🔄 技术细节文档
- 🔄 API 参考文档
## 技术栈选择
| 层次 | 技术选择 | 选择理由 |
|------|---------|----------|
| **Chrome Extension** | | |
| 开发语言 | JavaScript (ES6+) | 原生支持,无需构建 |
| UI 框架 | 原生 HTML/CSS | 轻量快速,无依赖 |
| 消息传递 | Chrome Extension API | 官方标准 |
| **Native Host** | | |
| 运行时 | Node.js | 跨平台,生态丰富 |
| 进程管理 | child_process | Node.js 内置 |
| **通信协议** | | |
| Extension ↔ Host | Native Messaging | Chrome 官方推荐 |
| Host ↔ Qwen | HTTP/REST | 简单可靠 |
| 数据格式 | JSON | 通用性好 |
## 实现细节
### Native Messaging 协议实现
```javascript
// 发送消息4字节长度前缀 + JSON
function sendMessage(message) {
const buffer = Buffer.from(JSON.stringify(message));
const length = Buffer.allocUnsafe(4);
length.writeUInt32LE(buffer.length, 0);
process.stdout.write(length);
process.stdout.write(buffer);
}
// 接收消息
function readMessages() {
let messageLength = null;
let chunks = [];
process.stdin.on('readable', () => {
// 读取长度前缀
// 读取消息内容
// 处理消息
});
}
```
### 进程启动命令
```javascript
// 启动 Qwen CLI 的完整命令
const command = [
// 添加 MCP 服务器
'qwen mcp add --transport http chrome-devtools http://localhost:8080/mcp',
'&&',
// 启动 CLI 服务器
'qwen server --port 8080'
].join(' ');
spawn(command, { shell: true });
```
## 测试计划
### 单元测试
- [ ] Message Handler 测试
- [ ] 数据提取功能测试
- [ ] 进程管理测试
### 集成测试
- [ ] Extension ↔ Native Host 通信
- [ ] Native Host ↔ Qwen CLI 通信
- [ ] 端到端数据流测试
### 用户测试
- [ ] 安装流程测试
- [ ] 功能完整性测试
- [ ] 错误恢复测试
- [ ] 性能测试
## 部署计划
### 开发环境部署
1. Clone 代码库
2. 加载未打包的扩展
3. 运行安装脚本
4. 测试功能
### 生产环境部署
1. 构建扩展包
2. 提交到 Chrome Web Store可选
3. 提供安装指南
4. 用户支持文档
## 时间线(已完成)
| 阶段 | 任务 | 预计时间 | 实际状态 |
|------|------|---------|----------|
| 第一阶段 | 基础架构 | 2小时 | ✅ 完成 |
| 第二阶段 | Native Host | 2小时 | ✅ 完成 |
| 第三阶段 | Qwen 集成 | 1小时 | ✅ 完成 |
| 第四阶段 | 项目集成 | 1小时 | ✅ 完成 |
| 第五阶段 | 测试优化 | 2小时 | 🔄 进行中 |
## 风险评估
| 风险项 | 可能性 | 影响 | 缓解措施 |
|--------|-------|------|----------|
| Native Host 安装失败 | 中 | 高 | 提供详细文档和脚本 |
| Qwen CLI 未安装 | 高 | 中 | 优雅降级,提示用户 |
| 权限不足 | 低 | 高 | 明确权限要求 |
| 性能问题 | 中 | 中 | 数据大小限制 |
| 兼容性问题 | 低 | 中 | 多平台测试 |
## 优化计划
### 短期优化1-2周
- 添加 TypeScript 类型定义
- 实现 WebSocket 通信
- 优化错误提示
- 添加更多 MCP 服务器
### 中期优化1-2月
- 开发选项页面
- 实现配置同步
- 添加快捷键支持
- 国际化支持
### 长期优化3-6月
- 支持 Firefox/Edge
- 云端配置同步
- 批量处理模式
- AI 模型选择
## 维护计划
### 日常维护
- Bug 修复
- 安全更新
- 依赖升级
### 版本发布
- 遵循语义化版本
- 维护 CHANGELOG
- 发布说明
### 用户支持
- GitHub Issues
- 文档更新
- FAQ 维护
## 成功指标
- ✅ 成功实现浏览器与 Qwen CLI 通信
- ✅ 支持主要数据提取功能
- ✅ 稳定的进程管理
- ✅ 良好的用户体验
- 🔄 完善的文档
- 🔄 社区反馈收集
## 总结
项目已成功完成核心功能开发,实现了:
1. Chrome 插件与本地 Qwen CLI 的桥接
2. 丰富的数据提取和监控功能
3. 安全可靠的 Native Messaging 通信
4. 灵活的 MCP 服务器集成
5. 跨平台支持
下一步将重点优化用户体验和完善文档。