auto-sync: 2026-05-17 07:28:29

This commit is contained in:
cfdaily
2026-05-17 07:28:29 +08:00
parent 6b23bb4585
commit 09060c25cb
+171
View File
@@ -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
```