70c140f5a7
- 完整的部署步骤文档 - 环境配置说明 - 工作流使用指南 - 故障排查说明 - 自动化初始化脚本 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
442 lines
8.6 KiB
Markdown
442 lines
8.6 KiB
Markdown
# sanguo_moziplus_v3 v0.5 部署指南
|
||
|
||
## 概述
|
||
|
||
v0.5 采用 Main + Sub Agent 动态编排架构,通过 Gitea 进行协作管理。
|
||
|
||
## 快速开始
|
||
|
||
### 前置要求
|
||
|
||
- Claude Code v2.1.39+
|
||
- Node.js v18+ (用于运行工作流脚本)
|
||
- Git
|
||
- Gitea 实例 (或 GitHub)
|
||
|
||
### 一键部署
|
||
|
||
```bash
|
||
# 1. 克隆仓库
|
||
git clone http://192.168.2.154:3000/sanguo/sanguo_moziplus_v3.git
|
||
cd sanguo_moziplus_v3
|
||
|
||
# 2. 运行初始化脚本
|
||
./scripts/init.sh
|
||
|
||
# 3. 配置 Gitea 连接
|
||
# 编辑 .claude/gitea-config.json
|
||
|
||
# 4. 启动 Claude Code
|
||
cd ~/.openclaw/sanguo_projects/sanguo_moziplus_v3
|
||
claude
|
||
```
|
||
|
||
---
|
||
|
||
## 详细步骤
|
||
|
||
### 步骤 1: 环境配置
|
||
|
||
#### 1.1 配置 GLM-5.2
|
||
|
||
创建 `~/.claude/settings.json`:
|
||
|
||
```json
|
||
{
|
||
"env": {
|
||
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "1000000",
|
||
"ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
|
||
"ANTHROPIC_API_KEY": "你的智谱API_Key",
|
||
"ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5.2[1m]",
|
||
"ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5.2[1m]"
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 1.2 配置 Gitea
|
||
|
||
编辑项目中的 `.claude/gitea-config.json`:
|
||
|
||
```json
|
||
{
|
||
"gitea": {
|
||
"baseUrl": "http://192.168.2.154:3000",
|
||
"owner": "sanguo",
|
||
"repo": "sanguo_moziplus_v3",
|
||
"defaultBranch": "main"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 步骤 2: 安装依赖
|
||
|
||
```bash
|
||
# 确保项目目录正确
|
||
cd ~/.openclaw/sanguo_projects/sanguo_moziplus_v3
|
||
|
||
# 工作流脚本需要 Node.js (如需运行 JavaScript 工作流)
|
||
npm install --save-dev fs path
|
||
```
|
||
|
||
### 步骤 3: 创建 Main Agent 配置
|
||
|
||
创建 `.claude/CLAUDE.md`:
|
||
|
||
```markdown
|
||
# sanguo_moziplus_v3 - Main Agent (编排者)
|
||
|
||
## 角色
|
||
|
||
你是任务编排者,负责通过 Gitea 协调 Sub Agents 完成开发任务。
|
||
|
||
## 核心职责
|
||
|
||
1. 分析任务需求
|
||
2. 根据 Gitea 规则安排 Sub Agents
|
||
3. 通过 Gitea 追踪进度
|
||
4. 验收并合并 PR
|
||
|
||
## Gitea 协作流程
|
||
|
||
### 任务开始
|
||
1. 创建 Issue 记录任务
|
||
2. 安排 Execute Sub Agent
|
||
3. 追踪 PR 创建
|
||
|
||
### 任务执行
|
||
- Execute Sub Agent: 实现代码 → Push → 创建 PR
|
||
- Review Sub Agent: 审查 PR → 添加评论
|
||
- Test Sub Agent: 测试功能 → 报告结果
|
||
|
||
### 任务完成
|
||
1. 所有 Review 通过
|
||
2. 所有测试通过
|
||
3. 合并 PR
|
||
4. 关闭 Issue
|
||
|
||
## Gitea 规则
|
||
|
||
所有 Sub Agent 都需要遵循 Gitea 规则,规则从配置文件生成。
|
||
|
||
查看当前规则: 读取 .claude/gitea-config.json
|
||
|
||
## 严格限制
|
||
|
||
- 不亲自编写代码
|
||
- 所有编码任务通过 Sub Agents 在 Gitea 上完成
|
||
|
||
## 可用能力
|
||
|
||
- planning: 复杂任务规划
|
||
- CODE-REVIEW: 代码审查
|
||
- debugger: 问题调试
|
||
- Agent 工具: 编排 Sub Agents
|
||
```
|
||
|
||
### 步骤 4: 配置 Superpowers Skills
|
||
|
||
确保已安装以下 Skills:
|
||
|
||
```bash
|
||
# 查看已安装的 Skills
|
||
ls ~/.claude/skills/
|
||
|
||
# 如需安装 Superpowers
|
||
# 参考 Superpowers Marketplace
|
||
```
|
||
|
||
### 步骤 5: 验证部署
|
||
|
||
#### 5.1 测试 Gitea 连接
|
||
|
||
```bash
|
||
# 在 Claude Code 中测试
|
||
claude "测试 Gitea 连接"
|
||
```
|
||
|
||
#### 5.2 测试规则生成
|
||
|
||
```javascript
|
||
// 在 Claude Code 中
|
||
import { generateGiteaRules } from '.claude/workflows/helpers/gitea-rules-generator.js'
|
||
console.log(generateGiteaRules())
|
||
```
|
||
|
||
#### 5.3 测试工作流
|
||
|
||
```javascript
|
||
// 在 Claude Code 中
|
||
Workflow({
|
||
scriptPath: ".claude/workflows/gitea-orchestration.js",
|
||
args: "实现用户登录功能"
|
||
})
|
||
```
|
||
|
||
---
|
||
|
||
## 工作流使用
|
||
|
||
### 基本用法
|
||
|
||
```javascript
|
||
// 在 Claude Code 中
|
||
Workflow({
|
||
scriptPath: ".claude/workflows/gitea-orchestration.js",
|
||
args: "任务描述"
|
||
})
|
||
```
|
||
|
||
### 高级用法
|
||
|
||
```javascript
|
||
// 自定义配置
|
||
Workflow({
|
||
scriptPath: ".claude/workflows/gitea-orchestration.js",
|
||
args: {
|
||
task: "实现用户认证",
|
||
options: {
|
||
skipTest: false,
|
||
reviewers: 2
|
||
}
|
||
}
|
||
})
|
||
```
|
||
|
||
---
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
sanguo_moziplus_v3/
|
||
├── .claude/
|
||
│ ├── CLAUDE.md # Main Agent 配置
|
||
│ ├── gitea-config.json # Gitea 配置
|
||
│ └── workflows/
|
||
│ ├── gitea-orchestration.js # 主工作流
|
||
│ ├── helpers/
|
||
│ │ └── gitea-rules-generator.js # 规则生成器
|
||
│ └── plan-execute-review.js # 备用工作流
|
||
├── docs/
|
||
│ └── design/
|
||
│ └── 06-design-v0.5-dynamic-orchestration.md
|
||
└── scripts/
|
||
└── init.sh # 初始化脚本
|
||
```
|
||
|
||
---
|
||
|
||
## 配置文件详解
|
||
|
||
### gitea-config.json
|
||
|
||
```json
|
||
{
|
||
"gitea": {
|
||
"baseUrl": "Gitea 服务器地址",
|
||
"owner": "仓库所有者",
|
||
"repo": "仓库名称",
|
||
"defaultBranch": "主分支"
|
||
},
|
||
"rules": {
|
||
"branchNaming": {
|
||
"feature": "feature/{任务名}",
|
||
"fix": "fix/{issue号}-{描述}",
|
||
"hotfix": "hotfix/{描述}"
|
||
},
|
||
"commitNaming": {
|
||
"feat": "feat: {描述}",
|
||
"fix": "fix: {描述}",
|
||
"refactor": "refactor: {描述}"
|
||
},
|
||
"prTemplate": {
|
||
"title": "{类型}: {描述}",
|
||
"description": "完整描述模板"
|
||
}
|
||
},
|
||
"review": {
|
||
"checklist": ["检查项1", "检查项2"],
|
||
"approval": "批准规则"
|
||
},
|
||
"agents": {
|
||
"main": { "role": "编排者" },
|
||
"execute": { "role": "执行者" },
|
||
"review": { "role": "审查者" },
|
||
"test": { "role": "测试者" }
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 初始化脚本
|
||
|
||
创建 `scripts/init.sh`:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# sanguo_moziplus_v3 初始化脚本
|
||
|
||
set -e
|
||
|
||
echo "=== sanguo_moziplus_v3 v0.5 初始化 ==="
|
||
|
||
# 1. 检查环境
|
||
echo "检查环境..."
|
||
command -v claude >/dev/null 2>&1 || { echo "❌ Claude Code 未安装"; exit 1; }
|
||
command -v git >/dev/null 2>&1 || { echo "❌ Git 未安装"; exit 1; }
|
||
command -v node >/dev/null 2>&1 || { echo "⚠️ Node.js 未安装 (可选)" }
|
||
|
||
# 2. 创建必要目录
|
||
echo "创建目录..."
|
||
mkdir -p .claude/workflows/helpers
|
||
mkdir -p scripts
|
||
|
||
# 3. 检查配置文件
|
||
echo "检查配置..."
|
||
if [ ! -f .claude/gitea-config.json ]; then
|
||
echo "❌ gitea-config.json 不存在"
|
||
echo "请创建 .claude/gitea-config.json 配置文件"
|
||
exit 1
|
||
fi
|
||
|
||
# 4. 检查 Claude Code 配置
|
||
echo "检查 Claude Code 配置..."
|
||
if [ ! -f ~/.claude/settings.json ]; then
|
||
echo "❌ ~/.claude/settings.json 不存在"
|
||
echo "请配置 GLM-5.2 端点"
|
||
exit 1
|
||
fi
|
||
|
||
# 5. 验证 Gitea 连接
|
||
echo "验证 Gitea 连接..."
|
||
GITEA_URL=$(node -e "
|
||
const fs = require('fs');
|
||
const config = JSON.parse(fs.readFileSync('.claude/gitea-config.json', 'utf-8'));
|
||
console.log(config.gitea.baseUrl);
|
||
")
|
||
echo "Gitea URL: $GITEA_URL"
|
||
|
||
# 6. 测试 Git 连接
|
||
echo "测试 Git 连接..."
|
||
git remote -v
|
||
|
||
echo "=== 初始化完成 ==="
|
||
echo ""
|
||
echo "下一步:"
|
||
echo "1. 启动 Claude Code: claude"
|
||
echo "2. 测试工作流: Workflow({ scriptPath: '.claude/workflows/gitea-orchestration.js', args: '测试任务' })"
|
||
```
|
||
|
||
---
|
||
|
||
## 故障排查
|
||
|
||
### 问题 1: Gitea 连接失败
|
||
|
||
**检查**:
|
||
1. 确认 gitea-config.json 配置正确
|
||
2. 检查网络连接
|
||
3. 验证 Gitea 服务器可访问
|
||
|
||
### 问题 2: 工作流无法运行
|
||
|
||
**检查**:
|
||
1. 确认 Claude Code 版本支持 Workflow 工具
|
||
2. 检查工作流文件路径
|
||
3. 查看 Claude Code 日志
|
||
|
||
### 问题 3: Sub Agent 无法访问 Gitea
|
||
|
||
**检查**:
|
||
1. 确认 Git 凭证配置
|
||
2. 检查 Gitea 权限
|
||
3. 验证 SSH/HTTPS 访问
|
||
|
||
---
|
||
|
||
## 升级指南
|
||
|
||
### 从 v0.4 升级
|
||
|
||
v0.4 使用三实例方案,v0.5 使用 Main + Sub Agent:
|
||
|
||
1. **保留**:
|
||
- GLM-5.2 配置
|
||
- Superpowers Skills
|
||
- 角色 Skills
|
||
|
||
2. **移除**:
|
||
- tmux 三实例配置
|
||
- 启动脚本 (如不需要)
|
||
|
||
3. **新增**:
|
||
- gitea-config.json
|
||
- gitea-orchestration.js
|
||
- gitea-rules-generator.js
|
||
|
||
4. **迁移**:
|
||
- 更新 CLAUDE.md 为 Main Agent 配置
|
||
- 使用 Gitea 协作替代 SendMessage
|
||
|
||
---
|
||
|
||
## 生产部署
|
||
|
||
### 使用 systemd (Linux)
|
||
|
||
创建 `/etc/systemd/system/sanguo.service`:
|
||
|
||
```ini
|
||
[Unit]
|
||
Description=sanguo_moziplus_v3 Development Environment
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=your-user
|
||
WorkingDirectory=/path/to/sanguo_moziplus_v3
|
||
ExecStart=/usr/local/bin/claude
|
||
Restart=on-failure
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
### 使用 launchd (macOS)
|
||
|
||
创建 `~/Library/LaunchAgents/com.sanguo.dev.plist`:
|
||
|
||
```xml
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||
<plist version="1.0">
|
||
<dict>
|
||
<key>Label</key>
|
||
<string>com.sanguo.dev</string>
|
||
<key>ProgramArguments</key>
|
||
<array>
|
||
<string>/usr/local/bin/claude</string>
|
||
</array>
|
||
<key>WorkingDirectory</key>
|
||
<string>/path/to/sanguo_moziplus_v3</string>
|
||
<key>RunAtLoad</key>
|
||
<true/>
|
||
</dict>
|
||
</plist>
|
||
```
|
||
|
||
---
|
||
|
||
## 相关文档
|
||
|
||
- [v0.5 设计文档](./docs/design/06-design-v0.5-dynamic-orchestration.md)
|
||
- [Gitea 配置示例](./.claude/gitea-config.json)
|
||
- [工作流脚本](./.claude/workflows/gitea-orchestration.js)
|
||
|
||
---
|
||
|
||
**文档版本**: v0.5
|
||
**最后更新**: 2026-07-01
|
||
**作者**: Claude Dev
|
||
**状态**: Draft
|