auto-sync: 2026-05-17 07:28:29
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
# v2.6 部署指南
|
||||
|
||||
**版本**: 2.6.0
|
||||
**作者**: 庞统(副军师)🐦
|
||||
**日期**: 2026-05-17
|
||||
|
||||
---
|
||||
|
||||
## 架构概览
|
||||
|
||||
```
|
||||
安装目录: ~/.sanguo_projects/sanguo_moziplus_v2/
|
||||
├── config/default.yaml # 全局配置
|
||||
├── data/ # 运行时数据(项目黑板DB)
|
||||
├── src/ # Python 源码
|
||||
│ ├── main.py # FastAPI 入口
|
||||
│ ├── frontend/dist/ # 前端构建产物
|
||||
│ ├── api/ # API 路由
|
||||
│ ├── blackboard/ # 黑板核心
|
||||
│ └── daemon/ # Daemon 模块
|
||||
├── tests/ # 单元测试
|
||||
├── pyproject.toml # Python 项目配置
|
||||
├── ecosystem.config.cjs # PM2 配置
|
||||
└── requirements.txt # Python 依赖
|
||||
|
||||
开发目录: ~/.openclaw/sanguo_projects/sanguo_moziplus_v2/
|
||||
└── (同结构,git 仓库)
|
||||
```
|
||||
|
||||
## 路径解析策略
|
||||
|
||||
所有路径通过以下优先级解析:
|
||||
|
||||
1. **环境变量** `BLACKBOARD_ROOT` → 项目数据根目录(最高优先级)
|
||||
2. **配置文件** `config/default.yaml` 的 `data_root` → 项目数据根目录
|
||||
3. **相对路径默认** → `{安装目录}/data/`(`main.py` 用 `__file__` 相对定位)
|
||||
|
||||
### 关键路径
|
||||
|
||||
| 用途 | 解析方式 | 默认值 |
|
||||
|------|---------|--------|
|
||||
| 项目数据 | `BLACKBOARD_ROOT` 环境变量 或 `config.data_root` | `{src/../data/}` |
|
||||
| 配置文件 | `__file__` 相对定位 | `{src/../config/default.yaml}` |
|
||||
| 前端静态文件 | `__file__` 相对定位 | `{src/frontend/dist/}` |
|
||||
| Inbox JSONL | 相对于项目数据目录 | `{项目}/inbox/daemon.jsonl` |
|
||||
| 日志 | PM2 管理 | stdout |
|
||||
|
||||
## 部署步骤
|
||||
|
||||
### 1. 同步代码
|
||||
|
||||
```bash
|
||||
# 从开发目录同步到安装目录
|
||||
rsync -av --exclude='__pycache__' --exclude='.pytest_cache' \
|
||||
~/.openclaw/sanguo_projects/sanguo_moziplus_v2/ \
|
||||
~/.sanguo_projects/sanguo_moziplus_v2/
|
||||
```
|
||||
|
||||
### 2. 安装依赖
|
||||
|
||||
```bash
|
||||
cd ~/.sanguo_projects/sanguo_moziplus_v2
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. 配置
|
||||
|
||||
编辑 `config/default.yaml`,按需调整:
|
||||
|
||||
```yaml
|
||||
# 数据根目录(可选,不设则用 {安装目录}/data/)
|
||||
data_root: "~/.sanguo_projects/sanguo_moziplus_v2/data"
|
||||
|
||||
daemon:
|
||||
tick_interval: 30
|
||||
max_global_agents: 5
|
||||
```
|
||||
|
||||
### 4. 前端构建(如果从开发目录 rsync 了 dist/ 可跳过)
|
||||
|
||||
```bash
|
||||
cd ~/.sanguo_projects/sanguo_moziplus_v2/src/frontend
|
||||
npm install
|
||||
npm run build
|
||||
# 产物在 src/frontend/dist/
|
||||
```
|
||||
|
||||
### 5. PM2 启动
|
||||
|
||||
```bash
|
||||
cd ~/.sanguo_projects/sanguo_moziplus_v2
|
||||
pm2 start ecosystem.config.cjs
|
||||
```
|
||||
|
||||
### 6. 验证
|
||||
|
||||
```bash
|
||||
# API
|
||||
curl http://localhost:8080/api/daemon/status
|
||||
|
||||
# Swagger 文档
|
||||
open http://localhost:8080/docs
|
||||
|
||||
# 前端 Dashboard
|
||||
open http://localhost:8083
|
||||
# 或(如果 FastAPI 托管静态文件)
|
||||
open http://localhost:8080/
|
||||
```
|
||||
|
||||
## PM2 配置
|
||||
|
||||
`ecosystem.config.cjs`:
|
||||
|
||||
```javascript
|
||||
module.exports = {
|
||||
apps: [{
|
||||
name: "sanguo-moziplus-v2",
|
||||
script: "src/main.py",
|
||||
interpreter: "python3",
|
||||
cwd: "/Users/chufeng/.sanguo_projects/sanguo_moziplus_v2",
|
||||
env: {
|
||||
BLACKBOARD_ROOT: "/Users/chufeng/.sanguo_projects/sanguo_moziplus_v2/data",
|
||||
},
|
||||
max_memory_restart: "500M",
|
||||
log_date_format: "YYYY-MM-DD HH:mm:ss",
|
||||
}]
|
||||
};
|
||||
```
|
||||
|
||||
## NAS/Docker 部署(姜维负责)
|
||||
|
||||
- 数据目录挂载到 NAS `/Volumes/stock/moziplus-v2/`
|
||||
- Docker 容器运行 FastAPI + 前端
|
||||
- 定时 `sqlite3 backup` 黑板 DB 到 NAS
|
||||
|
||||
## 开发 → 部署 同步流程
|
||||
|
||||
```
|
||||
开发目录修改 → git commit → rsync 到安装目录 → pm2 restart → 验证
|
||||
↑ ↓
|
||||
└────────────── 回滚(git revert)←─────────────┘
|
||||
```
|
||||
|
||||
## 测试
|
||||
|
||||
### 单元测试
|
||||
|
||||
```bash
|
||||
cd ~/.sanguo_projects/sanguo_moziplus_v2
|
||||
python3 -m pytest tests/ -q
|
||||
```
|
||||
|
||||
### 端到端测试(司马懿执行)
|
||||
|
||||
```bash
|
||||
# 1. 创建项目
|
||||
python3 src/cli/admin.py create demo "Demo Project" --agents agent1,agent2
|
||||
|
||||
# 2. 创建任务
|
||||
python3 src/cli/blackboard.py create demo --title "Test Task" --type coding
|
||||
|
||||
# 3. 查看任务
|
||||
python3 src/cli/blackboard.py read demo
|
||||
|
||||
# 4. API 测试
|
||||
curl http://localhost:8080/api/projects
|
||||
curl http://localhost:8080/api/daemon/status
|
||||
|
||||
# 5. 前端访问
|
||||
open http://localhost:8083
|
||||
```
|
||||
Reference in New Issue
Block a user