--- name: orchestrix-guide description: "Orchestrix multi-agent workflow guide for OpenClaw. Defines two operational phases: (1) Planning Phase — sequential agent orchestration in a single tmux window from project-brief through PRD, UX spec, architecture, to PO shard; (2) Development Phase — automated multi-window tmux collaboration via HANDOFF. Includes tmux send-keys protocol, task completion detection, and supplementary flows (bug fix, iteration, brownfield, change management)." license: MIT metadata: author: dorayo version: "2.0.0" homepage: "https://orchestrix-mcp.youlidao.ai" openclaw: emoji: "\U0001F4D6" os: ["macos", "linux"] --- # Orchestrix Guide — OpenClaw 操作手册 > **本文档是 OpenClaw 操控 Orchestrix Agent 的唯一操作手册。** 严格按照本文档的阶段和协议执行,不得跳步。 --- ## 一、架构与原理 ``` OpenClaw (自动化控制层,接收用户指令: Telegram / WhatsApp / Slack) ↓ tmux (终端复用层) ← OpenClaw 通过 tmux send-keys 发送命令 ↓ Claude Code - cc (AI 编码助手,交互式 CLI,无 HTTP API) ↓ 通过 /o 激活 Agent Orchestrix MCP Server → 返回 Agent 配置和工作流 ↓ Claude Code 执行 Agent 工作流 → 输出文档/代码/HANDOFF ``` **关键约束**:Claude Code (`cc`) 只接受终端标准输入。OpenClaw 唯一的操控方式是 `tmux send-keys`。 --- ## 二、tmux 操作协议(铁律) ### 2.1 指令发送三步序列 > **每次向 Agent 发送任务前,必须完整执行此三步。不得跳过任何一步。** ```bash WIN="{session}:{window}" # Step 1: 清空上下文(防止角色残留和混乱) tmux send-keys -t $WIN "/clear" Enter sleep 2 # Step 2: 激活目标 Agent tmux send-keys -t $WIN "/o {agent}" Enter sleep 3 # Step 3: 发送任务指令 tmux send-keys -t $WIN "*{command}" Enter ``` **唯一例外**:同一 Agent 的连续对话中追加指令(不切换 Agent),可省略 Step 1-2。 ### 2.2 等待时间参考 | 操作 | 等待时间 | 原因 | |------|---------|------| | `cc` 启动后 | 5s | 等待 Claude Code 初始化 | | `/clear` 后 | 2s | 等待上下文清空 | | `/o {agent}` 后 | 3s | 等待 Agent 加载和问候输出 | | `*command` 后 | 按任务检测 | 见下方完成检测策略 | ### 2.3 任务完成检测(四级优先级) Agent 任务执行时间不确定,OpenClaw 必须准确判断任务是否完成。**按优先级依次尝试**: #### P0:检测 HANDOFF 指令(最高优先级) ```bash tmux capture-pane -t {session}:{window} -p | grep -q "🎯 HANDOFF TO" ``` 适用场景:tmux 多窗口模式下所有任务。检测到即表示当前 Agent 已完成。 #### P1:检测预期输出文件 ```bash # 记录任务开始前时间戳 BEFORE=$(date +%s) # ... 发送命令后轮询 ... find ~/Codes/{project-name}/docs/ -newer /tmp/task-start-marker -type f | head -1 ``` 适用任务:`*create-doc *`、`*draft`、`*shard`、`*develop-story`(有 git commit)等有文件产出的任务。 #### P2:检测终端完成标志 ```bash # Claude Code 执行完毕后显示 "Xxxed for "(如 "Worked for 33s") tmux capture-pane -t {session}:{window} -p | grep -qE '[A-Z][a-z]+ed for' ``` 适用场景:所有任务。可作为 P1 的辅助确认。 #### P3:终端内容稳定性(兜底) ```bash PREV_HASH="" STABLE_COUNT=0 while [ $STABLE_COUNT -lt 5 ]; do HASH=$(tmux capture-pane -t {session}:{window} -p | md5) if [ "$HASH" = "$PREV_HASH" ]; then STABLE_COUNT=$((STABLE_COUNT + 1)) else STABLE_COUNT=0 fi PREV_HASH=$HASH sleep 10 done ``` 连续 **5 次以上** hash 不变才判定完成,防止 Agent 思考间隙被误判。 #### 检测优先级总结 | 优先级 | 方法 | 可靠性 | |--------|------|--------| | **P0** | HANDOFF 指令 | 最高(仅多窗口模式) | | **P1** | 预期输出文件 | 高 | | **P2** | 终端完成标志 `[A-Z][a-z]+ed for` | 高 | | **P3** | 终端内容 hash 稳定 | 中(兜底) | > **建议组合**:规划阶段用 P1 + P2 双重确认;开发阶段用 P0 + P2 为主。 --- ## 三、全局流程总览 > **一个 Orchestrix 项目的完整生命周期分为两大阶段。** ``` ┌─────────────────────────────────────────────────────────┐ │ Phase A: 规划阶段 │ │ (单窗口模式,逐个切换 Agent) │ │ │ │ 前提条件: 项目已通过 /create-project 创建 │ │ docs/project-brief.md 已存在(初版) │ │ │ │ Step 0: Analyst → *create-doc project-brief (可选深化) │ │ Step 1: PM → *create-doc prd │ │ Step 2: UX Expert → *create-doc front-end-spec (可选) │ │ Step 3: Architect → *create-doc fullstack-architecture │ │ Step 4: PO → *execute-checklist + *shard │ │ │ │ ✅ 规划完成标志: PO *shard 执行完毕 │ └─────────────────────┬───────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Phase B: 开发阶段 │ │ (多窗口模式,HANDOFF 自动协作) │ │ │ │ 启动: bash .orchestrix-core/scripts/start-orchestrix.sh │ │ │ │ SM *draft → Architect *review → Dev *develop-story │ │ → QA *review → SM *draft (下一个) → ... 循环 │ │ │ │ ✅ 开发完成标志: 所有 Story 通过 QA 审查 │ └─────────────────────────────────────────────────────────┘ ``` --- ## 四、Phase A:规划阶段(单窗口模式) > **规划阶段在一个 tmux 窗口中完成,通过逐个切换 Agent 生成全套规划文档。** ### 4.0 启动 tmux 会话 ```bash SESSION="orchestrix-planning" PROJECT_DIR=~/Codes/{project-name} # 创建 session 并启动 Claude Code tmux new-session -d -s $SESSION -c $PROJECT_DIR tmux send-keys -t $SESSION:0 "cc" Enter sleep 5 ``` ### 4.1 Step 0: Analyst — 深化项目简报(可选) > **此步骤可选。** `docs/project-brief.md` 已由 `/create-project` 生成初版(含问题陈述、目标用户、MVP 功能、技术栈),PM 可直接使用。 > Analyst 的作用是在初版基础上深化(加市场调研、竞品分析),适合对项目背景需要更深入了解的场景。 ```bash WIN="$SESSION:0" tmux send-keys -t $WIN "/o analyst" Enter sleep 3 tmux send-keys -t $WIN "*create-doc project-brief" Enter # 等待完成(P1: 检查 docs/project-brief.md 更新时间 + P2: 终端完成标志) ``` **预期产出**:`docs/project-brief.md`(深化版) ### 4.2 Step 1: PM — 生成 PRD > **这是规划阶段的必要起点。** PM 基于已有的 `docs/project-brief.md`(无论初版还是深化版)生成产品需求文档。 ```bash # 如果前面执行了 Step 0,需要先 /clear;如果直接从 Step 1 开始,这是第一条命令 tmux send-keys -t $WIN "/clear" Enter sleep 2 tmux send-keys -t $WIN "/o pm" Enter sleep 3 tmux send-keys -t $WIN "*create-doc prd" Enter # 等待完成(P1: 检查 docs/prd/ 目录下新文件 + P2) ``` **预期产出**:`docs/prd/*.md`(产品需求文档) ### 4.3 Step 2: UX Expert — 前端规格(可选) > **仅当项目有前端需求时执行。** 纯后端/CLI 项目跳过此步。 ```bash tmux send-keys -t $WIN "/clear" Enter sleep 2 tmux send-keys -t $WIN "/o ux-expert" Enter sleep 3 tmux send-keys -t $WIN "*create-doc front-end-spec" Enter # 等待完成(P1: 检查 docs/ 下前端规格文件 + P2) ``` **预期产出**:`docs/front-end-spec*.md` ### 4.4 Step 3: Architect — 架构文档 ```bash tmux send-keys -t $WIN "/clear" Enter sleep 2 tmux send-keys -t $WIN "/o architect" Enter sleep 3 tmux send-keys -t $WIN "*create-doc fullstack-architecture" Enter # 等待完成(P1: 检查 docs/ 下架构文件 + P2) ``` **预期产出**:`docs/architecture*.md` ### 4.5 Step 4: PO — 验证一致性 + 分片 > **这是规划阶段的最后一步。PO 需要连续执行两个命令。** ```bash # 4a: PO 验证文档一致性 tmux send-keys -t $WIN "/clear" Enter sleep 2 tmux send-keys -t $WIN "/o po" Enter sleep 3 tmux send-keys -t $WIN "*execute-checklist po-master-validation" Enter # 等待完成(P2: 终端完成标志) # 4b: PO 分片文档(同一 Agent,无需 /clear) tmux send-keys -t $WIN "*shard" Enter # 等待完成(P1: 检查 .orchestrix-core/context/ 或 docs/ 下分片文件 + P2) ``` **预期产出**: - 验证报告 - 分片后的上下文文件(供开发阶段 Agent 消费) ### 4.6 规划完成 PO `*shard` 执行完毕后,规划阶段结束。销毁规划会话: ```bash tmux kill-session -t $SESSION ``` **此时项目 `docs/` 目录应包含**: - `project-brief.md` — 深化后的项目简报 - `prd/*.md` — 产品需求文档 - `front-end-spec*.md` — 前端规格(如适用) - `architecture*.md` — 架构文档 - 分片上下文文件 > ✅ **规划完成。可以进入 Phase B 开发阶段。** ### 4.7 OpenClaw 完整执行脚本(规划阶段) ```bash #!/bin/bash # OpenClaw 规划阶段自动化脚本 # 用法: bash planning.sh {project-name} [--with-analyst] # --with-analyst 先让 Analyst 深化项目简报(可选) PROJECT_NAME="$1" WITH_ANALYST="$2" PROJECT_DIR=~/Codes/$PROJECT_NAME SESSION="orchestrix-planning" WIN="$SESSION:0" # 检查项目和 project-brief 是否存在 if [ ! -f "$PROJECT_DIR/docs/project-brief.md" ]; then echo "ERROR: $PROJECT_DIR/docs/project-brief.md not found. Run /create-project first." exit 1 fi # 启动 tmux + cc tmux new-session -d -s $SESSION -c $PROJECT_DIR tmux send-keys -t $WIN "cc" Enter sleep 5 # --- Step 0: Analyst (可选) --- if [ "$WITH_ANALYST" = "--with-analyst" ]; then tmux send-keys -t $WIN "/o analyst" Enter sleep 3 tmux send-keys -t $WIN "*create-doc project-brief" Enter # → OpenClaw 在此等待任务完成(P1 + P2 检测) tmux send-keys -t $WIN "/clear" Enter && sleep 2 fi # --- Step 1: PM --- tmux send-keys -t $WIN "/o pm" Enter && sleep 3 tmux send-keys -t $WIN "*create-doc prd" Enter # → 等待完成 # --- Step 2: UX Expert (可选,根据项目技术栈判断) --- # if [ "$HAS_FRONTEND" = "true" ]; then # tmux send-keys -t $WIN "/clear" Enter && sleep 2 # tmux send-keys -t $WIN "/o ux-expert" Enter && sleep 3 # tmux send-keys -t $WIN "*create-doc front-end-spec" Enter # # → 等待完成 # fi # --- Step 3: Architect --- tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o architect" Enter && sleep 3 tmux send-keys -t $WIN "*create-doc fullstack-architecture" Enter # → 等待完成 # --- Step 4: PO 验证 + 分片 --- tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o po" Enter && sleep 3 tmux send-keys -t $WIN "*execute-checklist po-master-validation" Enter # → 等待完成 tmux send-keys -t $WIN "*shard" Enter # → 等待完成 # 规划完成 echo "✅ Planning phase complete for $PROJECT_NAME" echo "Next: cd $PROJECT_DIR && bash .orchestrix-core/scripts/start-orchestrix.sh" tmux kill-session -t $SESSION ``` --- ## 五、Phase B:开发阶段(多窗口自动化) > **开发阶段通过 tmux 多窗口模式运行,4 个 Agent 通过 HANDOFF 自动协作,无需人工切换。** ### 5.1 前提条件 - Phase A 规划阶段已完成(PO `*shard` 已执行) - `docs/` 目录下有完整的规划文档 ### 5.2 启动 ```bash cd ~/Codes/{project-name}/ bash .orchestrix-core/scripts/start-orchestrix.sh ``` 脚本自动完成: 1. 创建 tmux session:`orchestrix-{repo-id}` 2. 创建 4 个窗口,每个窗口启动 `cc` 3. 在每个窗口激活对应 Agent 4. 在 SM 窗口自动执行 `*draft` 开始第一个 Story ### 5.3 窗口布局 | 窗口 | Agent | 职责 | |------|-------|------| | `0` | Architect | 技术审查、架构守护 | | `1` | SM | Story 创建、流程编排 | | `2` | Dev | 代码实现 | | `3` | QA | 代码审查、质量验证 | ### 5.4 HANDOFF 自动协作流程 ``` SM (窗口1) *draft → 创建 Story ↓ 🎯 HANDOFF TO architect: *review {story_id} Architect (窗口0) → 技术审查 ↓ 🎯 HANDOFF TO dev: *develop-story {story_id} Dev (窗口2) → 编码实现 ↓ 🎯 HANDOFF TO qa: *review {story_id} QA (窗口3) → 代码审查 ↓ 🎯 HANDOFF TO sm: *draft (下一个 Story) SM (窗口1) → 创建下一个 Story ↓ ... 循环直到所有 Story 完成 ``` `handoff-detector.sh` 自动完成: - 扫描所有窗口终端输出,检测 `🎯 HANDOFF TO {agent}: *{command}` - 将命令发送到目标 Agent 的 tmux 窗口 - 在源 Agent 窗口执行 `/clear` + 重新加载 Agent - Hash 去重 + 原子锁防止重复处理 ### 5.5 监控 ```bash # 实时查看 HANDOFF 日志 tail -f /tmp/orchestrix-{repo-id}-handoff.log # 查看各窗口当前输出 tmux capture-pane -t orchestrix-{repo-id}:1 -p | tail -10 # SM tmux capture-pane -t orchestrix-{repo-id}:2 -p | tail -10 # Dev # 查看 Story 完成情况 ls ~/Codes/{project-name}/docs/stories/ # 查看 git 提交记录 cd ~/Codes/{project-name}/ && git log --oneline -10 ``` ### 5.6 异常处理 | 情况 | OpenClaw 操作 | |------|-------------| | Agent 卡住不输出 HANDOFF | `tmux send-keys -t {session}:{window} "/clear" Enter` → sleep 2 → `/o {agent}` | | HANDOFF 没被检测到 | `tail -20 /tmp/orchestrix-{repo-id}-handoff.log` 排查 | | 需要暂停 | `tmux send-keys -t {session}:{window} C-c` | | 需要恢复 | `tmux send-keys -t {session}:1 "*draft --continue" Enter` | | 需要完全停止 | `tmux kill-session -t orchestrix-{repo-id}` | ### 5.7 并行扩展窗口(可选) 当需要额外 Agent 并行工作时(如 UX Expert),可动态创建窗口: ```bash SESSION="orchestrix-{repo-id}" # 创建新窗口 tmux new-window -t $SESSION -c ~/Codes/{project-name}/ NEW_WIN=$(tmux list-windows -t $SESSION -F '#{window_index}' | tail -1) # 启动 cc 并加载 Agent tmux send-keys -t $SESSION:$NEW_WIN "cc" Enter sleep 5 tmux send-keys -t $SESSION:$NEW_WIN "/o ux-expert" Enter sleep 3 tmux send-keys -t $SESSION:$NEW_WIN '*create-doc front-end-spec' Enter # 任务完成后销毁临时窗口 # tmux kill-window -t $SESSION:$NEW_WIN ``` 注意:动态窗口不参与 HANDOFF 自动协作,需 OpenClaw 自行管理生命周期。 --- ## 六、补充流程 ### 6.1 Solo 开发模式 > 跳过 Story/QA 关卡,适用于小型独立项目或快速原型。 ```bash # 单窗口即可 tmux send-keys -t $WIN "/o dev" Enter && sleep 3 tmux send-keys -t $WIN '*solo "实现用户登录功能,支持邮箱和手机号"' Enter ``` Dev 自动完成:创建 Story → 编码 → 测试 → 提交。 ### 6.2 Bug 修复 **轻量修复**(不需要 Story): ```bash tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o dev" Enter && sleep 3 tmux send-keys -t $WIN '*quick-fix "登录页面在 Safari 下白屏"' Enter ``` **正式修复**(需要追踪): ```bash # SM 创建 bugfix Story tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o sm" Enter && sleep 3 tmux send-keys -t $WIN '*draft-bugfix "用户并发下单时库存出现负数"' Enter # → 等待完成,获取 story_id # Dev 开发修复 tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o dev" Enter && sleep 3 tmux send-keys -t $WIN "*develop-story {bugfix_story_id}" Enter # QA 验证 tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o qa" Enter && sleep 3 tmux send-keys -t $WIN "*review {bugfix_story_id}" Enter tmux send-keys -t $WIN "*finalize-commit {bugfix_story_id}" Enter ``` ### 6.3 Epic 冒烟测试 > 当一个 Epic 下所有 Story 都通过 QA 审查后执行。 ```bash # 单窗口模式 tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o qa" Enter && sleep 3 tmux send-keys -t $WIN "*smoke-test {epic_id}" Enter # 多窗口模式(直接发到 QA 窗口) tmux send-keys -t orchestrix-{repo-id}:3 "*smoke-test {epic_id}" Enter ``` 如果冒烟测试发现问题 → 走 6.2 正式修复流程 → 再次冒烟测试。 ### 6.4 新迭代(Iteration) > MVP 完成后,基于反馈启动新一轮迭代。 ```bash # Step 1: PM 生成 next-steps tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o pm" Enter && sleep 3 tmux send-keys -t $WIN "*start-iteration" Enter # → 等待完成,产出 docs/prd/*next-steps.md # Step 2: OpenClaw 读取 next-steps.md,解析 🎯 HANDOFF TO 块 # Step 3: 按文件中的 HANDOFF 顺序依次执行 # 通常顺序:ux-expert → architect → sm tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o ux-expert" Enter && sleep 3 tmux send-keys -t $WIN "{HANDOFF TO ux-expert 部分内容}" Enter # → 等待完成 tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o architect" Enter && sleep 3 tmux send-keys -t $WIN "{HANDOFF TO architect 部分内容}" Enter # → 等待完成 tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o sm" Enter && sleep 3 tmux send-keys -t $WIN "{HANDOFF TO sm 部分内容}" Enter # → 等待完成 # Step 4: 启动多窗口自动化开发(同 Phase B) cd ~/Codes/{project-name}/ bash .orchestrix-core/scripts/start-orchestrix.sh ``` ### 6.5 需求变更管理 ```bash # 所有变更先经 PO 路由 tmux send-keys -t $WIN "/clear" Enter && sleep 2 tmux send-keys -t $WIN "/o po" Enter && sleep 3 tmux send-keys -t $WIN "*route-change" Enter ``` PO 根据变更类型自动路由: - 需求/范围变更 → PM (`*revise-prd`) - 技术/架构变更 → Architect (`*resolve-change`) - 两者都涉及 → 先 PM 再 Architect ### 6.6 Brownfield(已有项目增强) | 变更规模 | 推荐方式 | |---------|---------| | < 1h 快速修复 | `/o dev` → `*quick-fix` | | < 4h 单功能 | `/o sm` → `*draft` | | 4h-2d 小型增强 | `/o sm` → `*draft`(brownfield epic) | | > 2d 大型增强 | 走完整 Phase A → Phase B 流程 | 对不熟悉的项目先摸底:`/o architect` → `*document-project` --- ## 七、Agent 命令速查表 ### 规划阶段 Agent | Agent | ID | 核心命令 | 产出 | |-------|----|---------|------| | Analyst | `analyst` | `*create-doc project-brief` | `docs/project-brief.md` | | PM | `pm` | `*create-doc prd`, `*revise-prd`, `*start-iteration` | `docs/prd/*.md` | | UX Expert | `ux-expert` | `*create-doc front-end-spec` | `docs/front-end-spec*.md` | | Architect | `architect` | `*create-doc fullstack-architecture`, `*document-project` | `docs/architecture*.md` | | PO | `po` | `*execute-checklist po-master-validation`, `*shard` | 验证报告 + 分片文件 | ### 开发阶段 Agent | Agent | ID | 核心命令 | 产出 | |-------|----|---------|------| | SM | `sm` | `*draft`, `*draft-bugfix {bug}` | `docs/stories/*.md` | | Architect | `architect` | `*review {story_id}` | 技术审查意见 | | Dev | `dev` | `*develop-story {story_id}`, `*solo "{desc}"`, `*quick-fix "{desc}"` | 代码 + git commit | | QA | `qa` | `*review {story_id}`, `*finalize-commit {story_id}`, `*smoke-test {epic_id}` | 审查报告 + 最终提交 | ### 管理 Agent | Agent | ID | 核心命令 | |-------|----|---------| | PO | `po` | `*route-change` | | Orchestrator | `orchestrix-orchestrator` | `*status`, `*workflow-guidance` | --- ## 八、前置依赖 | 依赖 | 用途 | 安装 | |------|------|------| | `claude` (Claude Code) | AI 编码环境 | https://claude.ai/download | | `tmux` | 多窗口终端复用(**必须**) | `brew install tmux` | | `git` | 版本控制 | 系统自带 | | `jq` | JSON 处理(可选) | `brew install jq` | **别名配置**(`start-orchestrix.sh` 依赖): ```bash alias cc='claude --dangerously-skip-permissions' ```