15 KiB
Claw项目 - 工程项目结构实施计划
项目背景
Claw项目是一个企业微信智控未来系统,包含两台服务器:
- 服务器A:公网服务器(47.109.191.115 - pactgo.cn),配置SSL证书,外网可访问
- 服务器B:内网服务器,安装LMStudio,只能访问外网,外网无法直接访问
目标是使用Rust和官方原生微信小程序技术栈实现:用户通过企业微信应用"智控未来"和微信小程序进行聊天,下发任务。任务经服务器A(网关)通过WebSocket反向连接转发到服务器B(SmartClaw),B上的LMStudio进行AI处理后返回结果给用户。
核心架构:WebSocket反向连接(B主动连接A),Embedded-Redis(仅A启动),HeedDB嵌入式数据库,原生小程序(WXML+WXSS+JS)。
项目结构设计
整体结构
Claw/
├── Server/ # 后端服务
│ ├── gateway/ # 网关服务(服务器A)
│ │ ├── src/ # 源代码
│ │ ├── target/ # 编译产出
│ │ └── Cargo.toml # 项目配置
│ ├── SmartClaw/ # 智能控制服务(服务器B)
│ │ ├── src/ # 源代码
│ │ ├── target/ # 编译产出
│ │ └── Cargo.toml # 项目配置
│ └── shared/ # 共享代码
│ ├── src/ # 源代码
│ ├── target/ # 编译产出
│ └── Cargo.toml # 项目配置
├── client/ # 客户端代码
│ ├── wechat_app/ # 微信小程序(官方原生技术栈)
│ │ ├── pages/ # 页面目录(index, chat, task, user)
│ │ ├── utils/ # 工具函数(api.js, util.js, constant.js)
│ │ ├── components/ # 自定义组件(message, task-card, user-avatar)
│ │ ├── assets/ # 静态资源(images, icons)
│ │ ├── app.js # 应用入口文件
│ │ ├── app.json # 应用配置文件
│ │ ├── app.wxss # 应用全局样式
│ │ ├── project.config.json # 项目配置文件
│ │ └── sitemap.json # 站点地图配置
│ └── web/ # 企业微信网页应用(可选)
│ ├── index.html # 网页入口
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript文件
│ └── assets/ # 静态资源
├── build/ # 构建产物
│ ├── gateway/ # 网关服务构建产物
│ ├── SmartClaw/ # 智能控制服务构建产物
│ └── client/ # 客户端构建产物
├── docs/ # 项目文档
├── scripts/ # 脚本文件
│ ├── build.sh # 构建脚本
│ ├── deploy_gateway.sh # 网关服务部署脚本
│ └── deploy_smart_claw.sh # 智能控制服务部署脚本
├── .gitignore # Git忽略文件
├── Cargo.toml # 根Rust项目配置(workspace)
├── nginx.conf # nginx反向代理配置
├── ssl/ # SSL证书目录
│ ├── pactgo.cn-chain.pem # SSL证书链
│ └── pactgo.cn-key.pem # SSL私钥
└── README.md # 项目说明
模块功能描述
| 模块 | 功能描述 |
|---|---|
| Server/gateway | 网关服务(服务器A),负责接收企业微信和微信小程序的HTTPS请求,通过WebSocket反向连接转发到SmartClaw服务,返回处理结果。实现HTTP接口、Embedded-Redis(多用户多设备状态管理)、企业微信和小程序的回调处理。 |
| Server/SmartClaw | 智能控制服务(服务器B),负责通过WebSocket主动连接网关服务,接收任务请求,调用LMStudio进行AI处理,返回处理结果。实现WebSocket客户端、LMStudio API集成、HeedDB嵌入式数据存储、内网管理接口。 |
| Server/shared | 共享代码,包含网关服务和SmartClaw服务共用的代码,如数据结构、工具函数、常量定义、WebSocket消息格式等。 |
| client/wechat_app | 微信小程序(官方原生技术栈:WXML+WXSS+JS),提供用户交互界面,实现用户登录、WebSocket实时通信、任务提交和状态查看功能。 |
| client/web | 企业微信网页应用(可选),使用企业微信JS-SDK,提供与微信小程序相同的功能,方便用户在电脑端操作。 |
| build | 构建产物目录,存放各服务和客户端的构建结果。 |
| docs | 项目文档目录,存放项目说明、API文档、部署文档、使用文档等。 |
| scripts | 脚本文件目录,存放构建脚本、部署脚本等。 |
实施任务
[ ] Task 1: 创建项目基础结构
-
Priority: P0
-
Depends On: None
-
Description:
-
创建项目的基础目录结构,包括Server、client、build、docs、scripts等目录
-
初始化Git仓库
-
创建.gitignore文件,忽略编译产出目录和构建产物目录
-
-
Success Criteria:
-
项目目录结构创建完成,包括所有必要的子目录
-
Git仓库初始化成功
-
.gitignore文件配置合理,忽略编译产出和构建产物
-
-
Test Requirements:
-
programmaticTR-1.1: 目录结构符合设计要求,包含所有必要的目录 -
programmaticTR-1.2: .gitignore文件存在且配置合理 -
human-judgementTR-1.3: 目录结构清晰、合理
-
-
Notes: 按照整体结构设计创建目录,确保包含编译产出和构建产物目录
[ ] Task 2: 初始化Server项目
- Priority: P0
- Depends On: Task 1
- Description:
- 初始化网关服务(gateway)的Rust项目
- 初始化智能控制服务(SmartClaw)的Rust项目
- 初始化共享代码的Rust项目
- 创建各自的Cargo.toml配置文件
- 设置依赖项
- Success Criteria:
- 所有Rust项目初始化成功
- 各自的Cargo.toml配置正确
- 依赖项设置合理
- 编译产出目录结构正确
- Test Requirements:
programmaticTR-2.1: 各项目的Cargo.toml文件存在且配置正确programmaticTR-2.2: 依赖项能正确安装programmaticTR-2.3: 项目能成功编译,生成编译产出
- Notes: 使用Cargo初始化Rust项目,确保每个项目都有独立的编译产出目录
[ ] Task 3: 开发网关服务
- Priority: P1
- Depends On: Task 2
- Description:
- 创建网关服务(gateway)的代码
- 实现HTTP接口
- 实现与SmartClaw服务的WebSocket反向连接通信
- 实现Embedded-Redis(多用户多设备状态管理)
- 实现企业微信和小程序的HTTPS回调处理
- Success Criteria:
- 网关服务代码开发完成
- HTTP接口实现正确
- 与SmartClaw服务的通信功能正常
- 企业微信和小程序的回调处理正常
- Test Requirements:
programmaticTR-3.1: 服务能正常启动programmaticTR-3.2: HTTP接口能正确响应human-judgementTR-3.3: 代码结构清晰、注释完善
- Notes: 使用Actix Web框架,集成WebSocket服务端、Embedded-Redis(多用户多设备状态管理)、HTTPS接口、企业微信和小程序回调处理
[ ] Task 4: 开发SmartClaw服务
- Priority: P1
- Depends On: Task 2
- Description:
- 创建SmartClaw服务的代码
- 实现WebSocket客户端主动连接网关服务
- 实现智能控制核心逻辑
- 集成LMStudio API(流式响应SSE)
- 集成HeedDB嵌入式数据存储
- Success Criteria:
- SmartClaw服务代码开发完成
- WebSocket客户端主动连接功能正常
- 智能控制核心逻辑实现正确
- LMStudio API集成成功(支持SSE流式响应)
- HeedDB嵌入式数据存储功能正常
- Test Requirements:
programmaticTR-4.1: 服务能正常启动programmaticTR-4.2: WebSocket客户端主动连接功能正常programmaticTR-4.3: LMStudio API集成成功(支持SSE流式响应)programmaticTR-4.4: HeedDB嵌入式数据存储功能正常human-judgementTR-4.5: 代码结构清晰、注释完善
- Notes: 使用Actix Web框架,集成WebSocket客户端、LMStudio API(SSE流式响应)、HeedDB嵌入式数据库
[ ] Task 5: 开发微信应用
-
Priority: P1
-
Depends On: Task 3
-
Description:
- 初始化微信小程序项目(官方原生技术栈:WXML+WXSS+JavaScript)
- 开发用户界面(首页、聊天页、任务页、用户中心)
- 实现用户登录授权(wx.login + wx.getUserProfile)
- 实现与网关服务的WebSocket实时通信
- 实现任务提交和状态查看功能
- 配置小程序后台(服务器域名、业务域名)
-
Success Criteria:
- 微信小程序项目初始化成功(WXML+WXSS+JS)
- 用户界面开发完成(首页、聊天、任务、用户中心)
- 用户登录授权功能正常(wx.login + wx.getUserProfile)
- WebSocket实时通信功能正常(wx.connectSocket)
- 任务提交和状态查看功能实现正确
- 小程序后台配置完成(服务器域名、WebSocket域名)
-
Test Requirements:
programmaticTR-5.1: 微信小程序能正常运行(WXML+WXSS+JS)programmaticTR-5.2: 用户登录授权功能正常(wx.login)programmaticTR-5.3: WebSocket实时通信正常(wx.connectSocket)programmaticTR-5.4: 任务提交和状态查看功能正常human-judgementTR-5.5: 界面美观、交互流畅(原生小程序UI)
-
Notes: 使用官方原生微信小程序技术栈(WXML+WXSS+JavaScript)
[ ] Task 6: 配置企业微信应用
-
Priority: P2
-
Depends On: Task 3
-
Description:
-
配置企业微信应用
-
设置回调地址
-
实现消息推送处理
-
-
Success Criteria:
-
企业微信应用配置完成
-
回调地址设置正确
-
消息推送处理功能实现正确
-
-
Test Requirements:
-
programmaticTR-6.1: 企业微信回调能正确处理 -
human-judgementTR-6.2: 配置过程顺利
-
-
Notes: 使用企业微信JS-SDK,配置回调地址为
https://pactgo.cn/wecom
[ ] Task 7: 编写构建和部署脚本
- Priority: P2
- Depends On: Task 3, Task 4, Task 5
- Description:
- 编写构建脚本,生成构建产物
- 编写网关服务的部署脚本,部署构建产物
- 编写SmartClaw服务的部署脚本,部署构建产物
- 编写配置文件
- Success Criteria:
- 构建脚本编写完成,能生成构建产物
- 部署脚本编写完成
- 配置文件创建完成
- 部署过程顺利
- Test Requirements:
programmaticTR-7.1: 构建脚本能正常执行,生成构建产物programmaticTR-7.2: 部署脚本能正常执行human-judgementTR-7.3: 部署过程文档清晰
-
- Notes: 考虑Windows Server 2012的环境,确保构建产物能正确部署。网关服务需配置Embedded-Redis,SmartClaw服务需配置HeedDB和LMStudio连接。
[ ] Task 8: 编写项目文档
-
Priority: P2
-
Depends On: All
-
Description:
-
编写项目说明文档
-
编写API文档
-
编写部署文档
-
编写使用文档
-
-
Success Criteria:
-
项目文档编写完成
-
API文档完整
-
部署文档清晰
-
使用文档详细
-
-
Test Requirements:
-
human-judgementTR-8.1: 文档内容完整、清晰 -
human-judgementTR-8.2: 文档格式规范
-
-
Notes: 使用Markdown格式
技术选型
后端
-
语言: Rust 1.70+
-
框架: Actix Web 4.0+
-
异步运行时: Tokio 1.0+
-
序列化/反序列化: Serde 1.0+
-
HTTP客户端: Reqwest 0.11+
-
缓存和消息队列: Embedded-Redis(仅网关服务启动)
-
数据存储: HeedDB(嵌入式K/V数据库,Sled底层)
前端
- 微信小程序: WXML + WXSS + JavaScript(官方原生技术栈)
- 企业微信网页: 企业微信JS-SDK + HTML + CSS + JavaScript
- 开发工具: 微信开发者工具(官方IDE)
- HTTP客户端: 原生wx.request() API
- WebSocket: 原生wx.connectSocket() API
实施步骤
-
准备阶段:
-
创建项目基础结构
-
初始化Git仓库
-
初始化Rust和前端项目
-
-
后端开发:
-
开发服务器A后端
-
开发服务器B后端
-
测试服务器间通信
-
-
前端开发:
- 开发微信小程序(官方原生技术栈:WXML+WXSS+JS)
- 配置企业微信应用(企业微信JS-SDK)
-
部署与测试:
-
编写部署脚本
-
部署到服务器
-
功能测试
-
性能测试
-
安全测试
-
-
文档编写:
-
编写项目文档
-
编写API文档
-
编写部署文档
-
编写使用文档
-
注意事项
-
网络通信:
- 服务器B在内网中,使用WebSocket反向连接方案:SmartClaw服务主动连接网关服务的WebSocket
-
安全考虑:
- 所有通信使用HTTPS加密(企业微信强制要求)
- 服务器A配置防火墙,只开放443端口(HTTPS)
- 服务器B只允许来自服务器A的WebSocket连接
- 实现认证与授权机制(AppID、CorpID、API密钥)
- 使用有效SSL证书(Let's Encrypt)
-
性能考虑:
- 优化WebSocket反向连接,实现长连接和心跳检测
- 合理使用Embedded-Redis进行多用户状态管理
- 合理使用LMStudio,支持流式响应(SSE)
- 实现异步处理,提供任务状态反馈
- 使用HeedDB嵌入式数据库,零配置高性能
-
兼容性:
- 考虑Windows Server 2012的环境(静态链接编译)
- 确保代码在目标环境中能正常运行
- 网关服务需配置Embedded-Redis和SSL证书
- SmartClaw服务需配置HeedDB和LMStudio连接
结论
通过以上实施计划,可以构建一个完整的企业微信智控未来系统,采用WebSocket反向连接架构,使用官方原生微信小程序技术栈,实现用户通过企业微信和微信小程序与系统进行交互,完成AI任务的下发、处理和结果返回。系统具备多用户多设备管理能力,支持高并发和零配置部署。