# Claw项目 - 企业微信智控未来系统 ## 项目背景 Claw项目是一个企业微信智控未来系统,包含两台服务器: - 服务器A:局域网服务器,有固定IP,外网可以访问 - 服务器B:阿里云主机,在内网中,外网不能访问,安装了LMStudio 目标是使用Rust和React实现以下功能:用户通过企业微信应用"智控未来"和微信小程序进行聊天,下发任务。任务经服务器A转到服务器B,B上的自建龙虾处理后返回结果给用户。 ## 项目结构 ``` Claw/ ├── Server/ # 后端服务 │ ├── gateway/ # 网关服务(服务器A) │ │ ├── src/ # 源代码 │ │ ├── target/ # 编译产出 │ │ └── Cargo.toml # 项目配置 │ ├── SmartClaw/ # 智能控制服务(服务器B) │ │ ├── src/ # 源代码 │ │ ├── target/ # 编译产出 │ │ └── Cargo.toml # 项目配置 │ └── shared/ # 共享代码 │ ├── src/ # 源代码 │ ├── target/ # 编译产出 │ └── Cargo.toml # 项目配置 ├── client/ # 客户端代码 │ ├── wechat_app/ # 微信应用代码 │ │ ├── src/ # 源代码 │ │ └── dist/ # 编译产出 │ └── web/ # 网页版客户端代码(可选) │ ├── src/ # 源代码 │ ├── dist/ # 编译产出 │ └── package.json # 项目配置 ├── build/ # 构建产物 │ ├── gateway/ # 网关服务构建产物 │ ├── SmartClaw/ # 智能控制服务构建产物 │ └── client/ # 客户端构建产物 ├── docs/ # 项目文档 ├── scripts/ # 脚本文件 │ ├── build.sh # 构建脚本 │ ├── deploy_gateway.sh # 网关服务部署脚本 │ └── deploy_smart_claw.sh # 智能控制服务部署脚本 ├── .gitignore # Git忽略文件 ├── Cargo.toml # 根Rust项目配置 ├── package.json # 客户端项目配置 └── README.md # 项目说明 ``` ## 技术栈 ### 后端 - **语言**: Rust 1.70+ - **框架**: Actix Web 4.0+ - **异步运行时**: Tokio 1.0+ - **序列化/反序列化**: Serde 1.0+ - **HTTP客户端**: Reqwest 0.11+ - **缓存和消息队列**: Redis 7.0+ - **数据存储**: PostgreSQL 14.0+ ### 前端 - **框架**: React 18.0+ - **类型系统**: TypeScript 5.0+ - **构建工具**: Vite 4.0+ - **样式框架**: Tailwind CSS 3.0+ - **HTTP客户端**: Axios 1.0+ - **开发工具**: WeChat Developer Tools 最新版 ## 开发计划 1. **准备阶段**: * 创建项目基础结构 * 初始化Git仓库 * 初始化Rust和前端项目 2. **后端开发**: * 开发服务器A后端(网关服务) * 开发服务器B后端(SmartClaw服务) * 测试服务器间通信 3. **前端开发**: * 开发微信小程序 * 配置企业微信应用 4. **部署与测试**: * 编写部署脚本 * 部署到服务器 * 功能测试 * 性能测试 * 安全测试 5. **文档编写**: * 编写项目文档 * 编写API文档 * 编写部署文档 * 编写使用文档 ## 开始开发 ### 后端开发 1. 进入Server目录 2. 运行 `cargo build` 构建项目 3. 运行 `cargo run --bin gateway` 启动网关服务 4. 运行 `cargo run --bin smartclaw` 启动SmartClaw服务 ### 前端开发 1. 进入client/web目录 2. 运行 `npm install` 安装依赖 3. 运行 `npm run dev` 启动开发服务器 ## 部署 1. 运行 `scripts/build.sh` 构建项目 2. 运行 `scripts/deploy_gateway.sh` 部署网关服务 3. 运行 `scripts/deploy_smart_claw.sh` 部署SmartClaw服务 ## 注意事项 1. **网络通信**: * 服务器B在内网中,需要使用反向代理和WebSocket实现与服务器A的通信 2. **安全考虑**: * 所有通信使用HTTPS加密 * 服务器A配置防火墙,只开放必要的端口 * 服务器B只允许来自服务器A的连接 * 实现认证与授权机制 3. **性能考虑**: * 优化服务器间通信 * 合理使用LMStudio * 实现异步处理,提供任务状态反馈 4. **兼容性**: * 考虑Windows Server 2012的环境 * 确保代码在目标环境中能正常运行