skills/ → skills-dev(9), skills-req(10), skills-ops(4), skills-integration(8), skills-biz(4), skills-workflow(7) generate-marketplace.py 改为自动扫描所有 skills-* 目录。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
343 lines
8.5 KiB
Markdown
343 lines
8.5 KiB
Markdown
---
|
||
name: openclaw
|
||
description: OpenClaw (龙虾) - Remote AI compute orchestration system. Dispatches requirements to Claude Code instances on remote machines, monitors execution, and aggregates results.
|
||
---
|
||
|
||
# OpenClaw - Remote AI Compute Orchestration
|
||
|
||
OpenClaw (龙虾) 是一个分布式 AI 算力调度系统,用于将需求/任务分发到不同机器上的 Claude Code 实例执行。
|
||
|
||
## 核心概念
|
||
|
||
### 1. Ticket (工单)
|
||
每个需求 (Requirement) 或任务 (Task) 都是一个 Ticket,包含:
|
||
- **ID**: REQ-YYYYMMDD-XXXX 或 Task ID
|
||
- **Description**: 任务描述
|
||
- **Context**: 项目路径、技术栈、依赖
|
||
- **Priority**: 优先级 (high/medium/low)
|
||
- **Target**: 目标计算节点
|
||
|
||
### 2. Compute Node (算力节点)
|
||
运行 Claude Code 的开发机器:
|
||
- **Melbourne** (coolbuy-dev): 主开发机,全栈开发
|
||
- **Shanghai** (dev-box): 测试环境
|
||
- **Beijing** (lazycat): OpenClaw 本身所在的容器
|
||
|
||
### 3. Dispatcher (调度器)
|
||
OpenClaw 核心组件,负责:
|
||
- 接收 Ticket
|
||
- 选择合适的 Compute Node
|
||
- 生成 Claude Code 命令
|
||
- 通过 SSH 执行
|
||
- 监控进度
|
||
- 汇总结果
|
||
|
||
## 使用方法
|
||
|
||
### 基本调用
|
||
|
||
```bash
|
||
# 方式 1: 通过需求 ID
|
||
/openclaw dispatch REQ-20260216-0001
|
||
|
||
# 方式 2: 直接指定任务
|
||
/openclaw run "实现用户批量导入功能" --node melbourne --project new-ai-proj
|
||
|
||
# 方式 3: 使用 Swarm 模式
|
||
/openclaw swarm REQ-20260216-0001 --node melbourne
|
||
```
|
||
|
||
### 指定计算节点
|
||
|
||
```bash
|
||
# 自动选择 (根据负载和项目位置)
|
||
/openclaw dispatch REQ-20260216-0001 --auto
|
||
|
||
# 指定节点
|
||
/openclaw dispatch REQ-20260216-0001 --node melbourne
|
||
|
||
# 并行执行 (多个节点)
|
||
/openclaw dispatch REQ-20260216-0001 --nodes melbourne,shanghai --parallel
|
||
```
|
||
|
||
### 监控执行状态
|
||
|
||
```bash
|
||
# 查看所有运行中的任务
|
||
/openclaw status
|
||
|
||
# 查看特定任务的日志
|
||
/openclaw logs REQ-20260216-0001
|
||
|
||
# 实时追踪任务进度
|
||
/openclaw tail REQ-20260216-0001
|
||
```
|
||
|
||
## 工作流程
|
||
|
||
### 完整示例: 从 Feishu 到执行
|
||
|
||
**步骤 1: 用户在飞书发起请求**
|
||
```
|
||
@龙虾 执行 REQ-20260216-0001
|
||
```
|
||
|
||
**步骤 2: Feishu Bot 解析命令**
|
||
- 提取需求 ID: REQ-20260216-0001
|
||
- 调用 OpenClaw skill
|
||
|
||
**步骤 3: OpenClaw 查询需求详情**
|
||
```bash
|
||
# 使用 ai-proj-prod MCP 获取需求信息
|
||
mcp__ai-proj-prod__find_requirement(displayId="REQ-20260216-0001")
|
||
```
|
||
|
||
**步骤 4: OpenClaw 生成执行计划**
|
||
```json
|
||
{
|
||
"ticket_id": "REQ-20260216-0001",
|
||
"title": "AI Ticket 演示: 验证算力调度系统",
|
||
"type": "swarm",
|
||
"target_node": "melbourne",
|
||
"command": "/swarm start '实现 AI Ticket 从创建到算力调度的完整流程'",
|
||
"context": {
|
||
"project": "/Users/coolbuy-dev/coding/new-ai-proj",
|
||
"requirement_id": "REQ-20260216-0001",
|
||
"priority": "high"
|
||
}
|
||
}
|
||
```
|
||
|
||
**步骤 5: SSH 执行命令**
|
||
```bash
|
||
ssh coolbuy-dev@melbourne \
|
||
"cd /Users/coolbuy-dev/coding/new-ai-proj && \
|
||
/opt/homebrew/bin/claude --dangerously-skip-permissions \
|
||
-p '/swarm start 实现 AI Ticket 从创建到算力调度的完整流程 \
|
||
--context requirement_id=REQ-20260216-0001'"
|
||
```
|
||
|
||
**步骤 6: Claude Code 执行 Swarm 工作流**
|
||
- Architect Agent: 分析需求,设计方案
|
||
- Coder Agent: 实现代码
|
||
- Tester Agent: 编写和运行测试
|
||
- Reviewer Agent: 代码审查
|
||
- Deployer Agent: 部署到环境
|
||
|
||
**步骤 7: OpenClaw 监控和汇总**
|
||
- 实时获取执行日志
|
||
- 解析 Agent 切换和进度
|
||
- 检测完成或失败
|
||
|
||
**步骤 8: 报告结果**
|
||
```
|
||
【执行完成】REQ-20260216-0001
|
||
✅ 状态: 成功
|
||
⏱️ 耗时: 25 分钟
|
||
📝 修改: 12 个文件
|
||
✅ 测试: 32 个用例全部通过
|
||
🚀 部署: staging 环境已更新
|
||
|
||
详情: https://ai-proj.pipexerp.com/requirements/REQ-20260216-0001
|
||
```
|
||
|
||
## 配置文件
|
||
|
||
### openclaw.yaml
|
||
|
||
在 `~/.claude/openclaw/config.yaml` 配置节点信息:
|
||
|
||
```yaml
|
||
nodes:
|
||
melbourne:
|
||
host: coolbuy-dev-macbook.local
|
||
user: coolbuy-dev
|
||
ssh_key: ~/.ssh/id_rsa
|
||
claude_path: /opt/homebrew/bin/claude
|
||
working_dirs:
|
||
- /Users/coolbuy-dev/coding/new-ai-proj
|
||
- /Users/coolbuy-dev/coding/coolbuy-paas
|
||
capabilities:
|
||
- go
|
||
- vue
|
||
- react
|
||
- ios
|
||
- android
|
||
max_concurrent: 3
|
||
|
||
shanghai:
|
||
host: dev-box.pipexerp.com
|
||
user: devops
|
||
ssh_key: ~/.ssh/id_rsa_ops
|
||
claude_path: /usr/local/bin/claude
|
||
working_dirs:
|
||
- /home/devops/projects
|
||
capabilities:
|
||
- testing
|
||
- deployment
|
||
max_concurrent: 2
|
||
|
||
routing_rules:
|
||
# 根据项目路径自动选择节点
|
||
- pattern: "*/new-ai-proj/*"
|
||
node: melbourne
|
||
|
||
- pattern: "*/coolbuy-*/*"
|
||
node: melbourne
|
||
|
||
# 根据需求类别路由
|
||
- category: testing
|
||
node: shanghai
|
||
|
||
- category: feature
|
||
node: melbourne
|
||
priority: prefer # 非强制
|
||
|
||
# 默认节点
|
||
default: melbourne
|
||
|
||
monitoring:
|
||
progress_interval: 30s # 每 30 秒检查一次进度
|
||
timeout: 2h # 2 小时超时
|
||
feishu_notifications: true
|
||
feishu_webhook: ${FEISHU_OPENCLAW_WEBHOOK}
|
||
```
|
||
|
||
## 高级功能
|
||
|
||
### 1. 负载均衡
|
||
|
||
OpenClaw 自动根据节点负载分配任务:
|
||
|
||
```bash
|
||
# 自动选择最空闲的节点
|
||
/openclaw dispatch REQ-20260216-0001 --load-balance
|
||
```
|
||
|
||
### 2. 任务队列
|
||
|
||
当节点繁忙时,任务进入队列:
|
||
|
||
```bash
|
||
# 查看队列
|
||
/openclaw queue
|
||
|
||
# 输出:
|
||
# 队列中的任务:
|
||
# 1. [melbourne] REQ-20260216-0002 - 等待中 (前面 1 个任务)
|
||
# 2. [shanghai] Task-1234 - 等待中 (前面 0 个任务)
|
||
```
|
||
|
||
### 3. 结果缓存
|
||
|
||
已执行过的相同任务可以复用结果:
|
||
|
||
```bash
|
||
/openclaw dispatch REQ-20260216-0001 --use-cache
|
||
```
|
||
|
||
### 4. 故障恢复
|
||
|
||
任务失败时自动重试或切换节点:
|
||
|
||
```yaml
|
||
retry_policy:
|
||
max_attempts: 3
|
||
backoff: exponential # 1min, 2min, 4min
|
||
fallback_node: shanghai # 失败后切换到备用节点
|
||
```
|
||
|
||
## 与其他 Skills 集成
|
||
|
||
### 与 agent-swarm 集成
|
||
```bash
|
||
# OpenClaw 调度 Swarm 工作流
|
||
/openclaw swarm REQ-20260216-0001 --node melbourne
|
||
```
|
||
|
||
### 与 ai-proj 集成
|
||
```bash
|
||
# 自动更新需求状态
|
||
# pending → in_progress → testing → completed
|
||
/openclaw dispatch REQ-20260216-0001 --sync-status
|
||
```
|
||
|
||
### 与 feishu 集成
|
||
```bash
|
||
# 飞书群接收进度通知
|
||
# "【进行中】REQ-20260216-0001 - Coder Agent 正在实现后端 API (35%)"
|
||
```
|
||
|
||
### 与 ops-tools 集成
|
||
```bash
|
||
# 部署到服务器
|
||
/openclaw dispatch REQ-20260216-0001 --deploy staging
|
||
```
|
||
|
||
## 命令速查
|
||
|
||
| 命令 | 功能 |
|
||
|------|------|
|
||
| `/openclaw dispatch <req-id>` | 调度需求到节点执行 |
|
||
| `/openclaw run "<task>"` | 直接执行任务 |
|
||
| `/openclaw swarm <req-id>` | 使用 Swarm 模式执行 |
|
||
| `/openclaw status` | 查看所有任务状态 |
|
||
| `/openclaw logs <req-id>` | 查看任务日志 |
|
||
| `/openclaw tail <req-id>` | 实时追踪任务 |
|
||
| `/openclaw queue` | 查看任务队列 |
|
||
| `/openclaw nodes` | 列出所有计算节点 |
|
||
| `/openclaw cancel <req-id>` | 取消任务 |
|
||
|
||
## 故障排查
|
||
|
||
| 问题 | 原因 | 解决方案 |
|
||
|------|------|----------|
|
||
| SSH 连接失败 | 网络或认证问题 | 检查 `~/.ssh/config` 和密钥权限 |
|
||
| Claude 命令未找到 | Claude 未安装或路径错误 | 更新 `openclaw.yaml` 中的 `claude_path` |
|
||
| 任务卡住不动 | 超时或节点挂起 | 使用 `/openclaw cancel` 取消并重试 |
|
||
| Feishu 通知失败 | Webhook 配置错误 | 检查 `FEISHU_OPENCLAW_WEBHOOK` 环境变量 |
|
||
|
||
## 安全考虑
|
||
|
||
1. **SSH 密钥管理**: 使用专用密钥,定期轮换
|
||
2. **命令注入防护**: 所有参数都经过严格转义
|
||
3. **权限控制**: 限制 Claude Code 的 `--dangerously-skip-permissions` 使用
|
||
4. **日志审计**: 所有命令执行都记录在 `~/.claude/openclaw/audit.log`
|
||
|
||
## 实际应用场景
|
||
|
||
### 场景 1: 多项目并行开发
|
||
```bash
|
||
# 同时在不同机器上开发不同项目
|
||
/openclaw dispatch REQ-001 --node melbourne --project new-ai-proj &
|
||
/openclaw dispatch REQ-002 --node shanghai --project coolbuy-paas &
|
||
```
|
||
|
||
### 场景 2: 测试环境验证
|
||
```bash
|
||
# 开发在 Melbourne,测试在 Shanghai
|
||
/openclaw dispatch REQ-003 --node melbourne # 开发
|
||
sleep 1h # 等待开发完成
|
||
/openclaw dispatch REQ-003 --node shanghai --verify # 测试验证
|
||
```
|
||
|
||
### 场景 3: 紧急 Bug 修复
|
||
```bash
|
||
# 高优先级任务插队执行
|
||
/openclaw dispatch BUG-001 --priority urgent --node melbourne
|
||
```
|
||
|
||
## 未来扩展
|
||
|
||
- [ ] Web 控制面板: 可视化任务状态和节点负载
|
||
- [ ] 分布式追踪: Jaeger/OpenTelemetry 集成
|
||
- [ ] 成本统计: 记录每个任务的 token 使用量和费用
|
||
- [ ] 智能调度: 基于历史数据预测任务执行时间
|
||
- [ ] 多云支持: 支持 AWS/Azure/GCP 上的计算节点
|
||
|
||
---
|
||
|
||
**开发者**: AI 项目管理助手
|
||
**版本**: 1.0.0
|
||
**最后更新**: 2026-02-16
|