# hermesclaw **Repository Path**: renew95/hermesclaw ## Basic Information - **Project Name**: hermesclaw - **Description**: 本地hermes/opencalw,远程可以查看。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-21 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hermes/OpenClaw 集中管理系统 一个云端 + 本地的双层架构管理系统,用于集中管理和监控多个 Hermes/OpenClaw 实例。 ## 功能特性 | 模块 | 功能 | |------|------| | 实例管理 | 实时监控、启动/停止/重启、批量操作 | | 配置管理 | 可视化配置、模板保存、一键下发 | | 对话交互 | 单实例/批量对话、实时消息流 | | 打分系统 | 手动/自动打分、多维度评估、趋势分析 | | 日志管理 | 运行日志、操作日志、筛选导出 | | 实时通信 | WebSocket 双向通信、秒级状态同步 | ## 快速开始 ### 环境要求 - Node.js 18+ - npm 或 yarn - Windows/macOS/Linux ### 一键启动 ```bash # Windows PowerShell .\start-all.ps1 # 或使用命令行参数 .\start-all.ps1 -SkipInstall # 跳过依赖安装 .\start-all.ps1 -CloudOnly # 仅启动云端 .\start-all.ps1 -LocalOnly # 仅启动本地 ``` ### 手动启动 **云端服务:** ```bash cd hermes-cloud npm install npx prisma migrate dev npx prisma generate npm run dev # 访问 http://localhost:3001 ``` **本地服务:** ```bash cd hermes-local npm install # 编辑 .env 文件配置云端地址 npm run dev # 运行在 http://localhost:3002 ``` ## 项目结构 ``` HermesClaw/ ├── hermes-cloud/ # 云端 Next.js 管理界面 │ ├── prisma/ # 数据库 Schema │ ├── src/ │ │ ├── app/ # App Router 页面 │ │ │ ├── api/ # REST API │ │ │ ├── instances/ # 实例管理页 │ │ │ ├── dialogue/ # 对话交互页 │ │ │ ├── scores/ # 打分统计页 │ │ │ ├── logs/ # 日志管理页 │ │ │ └── settings/ # 系统设置页 │ │ ├── components/ # React 组件 │ │ ├── hooks/ # 自定义 Hooks │ │ ├── lib/ # Prisma/Socket 工具 │ │ └── types/ # TypeScript 类型 │ └── README.md │ ├── hermes-local/ # 本地 Node.js 服务 │ ├── src/ │ │ ├── index.ts # 主入口 │ │ ├── process-manager.ts # 进程管理 │ │ └── cloud-connector.ts # 云端连接 │ ├── config/ │ │ └── instances.json # 实例配置模板 │ ├── start.bat # Windows 启动脚本 │ └── README.md │ ├── start-all.ps1 # 一键启动脚本 (Windows) ├── README.md # 本文档 └── Hermes_OpenClaw.md # 需求文档 ``` ## 架构说明 ``` ┌─────────────────┐ ┌─────────────────┐ │ Web 客户端 │◄───────►│ 云端服务 │ │ (浏览器) │ WebSocket│ (Next.js) │ └─────────────────┘ └────────┬────────┘ │ WebSocket│ │ ┌─────────────────┐ │ │ 本地 Node.js │◄─────────────────┘ │ (hermes-local) │ └────────┬────────┘ │ child_process │ ┌────────▼────────┐ │ Hermes/OpenClaw │ │ 实例 │ └─────────────────┘ ``` ## 配置说明 ### 云端环境变量 (.env) ```env DATABASE_URL="file:./dev.db" CLOUD_PORT=3001 CLOUD_HOST=0.0.0.0 ``` ### 本地环境变量 (.env) ```env CLOUD_URL=http://localhost:3001 NODE_ID=local-node-001 NODE_NAME=本地节点1 NODE_HOST=localhost NODE_PORT=3002 AUTO_SCAN=true SCAN_PATHS=C:\Hermes,D:\OpenClaw ``` ### 实例配置 (config/instances.json) ```json { "instances": [ { "id": "hermes-001", "name": "Hermes主实例", "type": "hermes", "role": "worker", "configPath": "C:\\Hermes\\config.json", "isScorer": false } ] } ``` ## API 文档 ### 实例管理 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/instances` | 获取实例列表 | | POST | `/api/instances` | 创建实例 | | GET | `/api/instances/:id` | 获取实例详情 | | PUT | `/api/instances/:id` | 更新实例 | | DELETE | `/api/instances/:id` | 删除实例 | | PATCH | `/api/instances/:id/status` | 更新状态 | | GET | `/api/instances/:id/config` | 获取配置 | | PUT | `/api/instances/:id/config` | 更新配置 | ### 日志与对话 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/logs` | 查询日志 | | POST | `/api/logs` | 记录日志 | | GET | `/api/dialogues` | 查询对话 | | POST | `/api/dialogues` | 创建对话 | ### 打分系统 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/scores` | 查询打分 | | POST | `/api/scores` | 创建打分 | | GET | `/api/scores/stats` | 获取统计 | | GET | `/api/score-rules` | 获取规则 | | POST | `/api/score-rules` | 创建规则 | ### 配置模板 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/config-templates` | 获取模板 | | POST | `/api/config-templates` | 创建模板 | | DELETE | `/api/config-templates/:id` | 删除模板 | ### 节点管理 | 方法 | 路径 | 描述 | |------|------|------| | GET | `/api/nodes` | 获取节点列表 | | POST | `/api/nodes` | 注册节点 | | PATCH | `/api/nodes/:id/heartbeat` | 心跳 | ### 操作指令 | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/operations` | 发送指令 | ## WebSocket 事件 ### 客户端 -> 服务端 ```typescript // 发送操作指令 socket.emit('operation', { nodeId: 'local-node-001', instanceId: 'hermes-001', action: 'start', // start | stop | restart | forceStop | updateConfig | dialogue params: {} }); // 发送对话消息 socket.emit('dialogue', { instanceId: 'hermes-001', message: '你好' }); ``` ### 服务端 -> 客户端 ```typescript // 实例状态更新 socket.on('instanceStatusUpdate', (data) => { console.log('状态更新:', data); }); // 操作结果 socket.on('operationResult', (data) => { console.log('操作结果:', data); }); // 对话消息 socket.on('dialogueMessage', (data) => { console.log('对话:', data); }); // 节点心跳 socket.on('nodeHeartbeat', (data) => { console.log('心跳:', data); }); ``` ## 部署说明 ### 云端部署 1. 安装 Node.js 18+ 2. 克隆项目并安装依赖 3. 配置环境变量 4. 运行数据库迁移 5. 使用 PM2 或 Docker 部署 ```bash # 使用 PM2 npm install -g pm2 pm2 start npm --name "hermes-cloud" -- start ``` ### 本地服务部署 1. 安装 Node.js 18+ 2. 配置 `.env` 文件 3. 安装依赖 4. 使用 PM2 保持后台运行 ```bash pm2 start npm --name "hermes-local" -- start ``` ## 技术栈 | 层级 | 技术 | |------|------| | 前端框架 | Next.js 14 (App Router) | | UI 组件 | Ant Design 5 | | 样式 | Tailwind CSS | | 数据库 | SQLite + Prisma ORM | | 实时通信 | Socket.IO | | 本地服务 | Node.js + Express/Koa | | 语言 | TypeScript | ## 许可证 MIT