🐋 Orca 完全教程

AI Agent 编排开发环境 — 让多个 AI 编码助手并行工作,每个任务一个独立 git worktree

多 Agent 并行 Git Worktree 隔离 CLI 驱动 本地运行

什么是 Orca

Orca 是一个桌面 AI 开发环境(ADE),专为使用 AI 编码助手的专业开发者设计。它的核心理念是:

💡 一句话概括 Orca 就像是给 AI Agent 用的 tmux + git worktree 管理器,让你能同时指挥多个 AI 助手在不同分支上并行工作。

支持的 Agent

Agent说明默认权限标志
Claude CodeAnthropic 的 CLI 编码助手--dangerously-skip-permissions
CodexOpenAI 的 CLI agent--dangerously-bypass-approvals-and-sandbox
Cursor CLICursor 的命令行版本
GLM-5.2智谱的 CLI agent
自定义 CLI Agent任何能在终端运行的 agent可配置
🔒 为什么默认全开权限? Orca 的设计哲学是「worktree 本身就是沙箱」。Agent 在独立 worktree 中工作,不会影响主分支,所以不需要逐次确认工具调用。你可以在 Settings → Agents 中修改默认启动参数。

安装指南

macOS

# 方式一:Homebrew
brew install --cask stablyai/orca/orca

# 方式二:直接下载 DMG
# 从 GitHub Releases 下载对应芯片的 DMG
# https://github.com/stablyai/orca/releases

Windows

GitHub Releases 下载安装程序 EXE 运行即可。建议在 Settings → Terminal 中将默认 shell 设为 PowerShell。

Linux

提供 AppImage 和 .deb 两种格式,从 GitHub Releases 下载。

首次启动

  1. Orca 会请求访问你的 home 目录(用于添加仓库)
  2. 如果检测到已有的 ~/.claude~/.codex 或 Ghostty 配置,会提示导入
  3. 进入空的主界面后,点击 Add Repo 添加你的第一个项目
⚠️ macOS 首次打开 macOS 可能会提示无法验证开发者,这是 Electron 应用的正常现象。右键 → 打开即可。

第一次使用:3-Agent 并行任务

这是官方推荐的入门流程,5 分钟内完成三个 agent 并行跑同一个任务。

1

添加仓库

点击侧边栏的 Add Repo 按钮,指向一个本地 git 仓库。Orca 会读取 git 状态并将你的默认分支设为 base ref(所有新 worktree 的起点)。

2

创建 Worktree

点击仓库名旁边的 + 图标,输入任务名(如 fix-login-race,留空则自动用海洋生物命名)。选择起始分支(通常是 origin/main),Orca 会创建一个 git worktree。

3

选择 Agent

新 worktree 中会打开一个终端,顶部有 agent 选择框。选择 Claude Code、Codex 或其他 agent,Orca 会自动设置工作目录并传递你的订阅凭证。

4

再创建两个 Worktree,分别启动不同 Agent

重复步骤 2-3 两次,得到这样的配置:

fix-login-race   → Claude Code
fix-login-race-2 → Codex
fix-login-race-3 → Cursor CLI

完全相同的 prompt 粘贴给三个 agent。

5

分屏监控

拖动标签页到窗口边缘进行分屏,同时观察三个 agent 的工作进度。

6

审查结果,选出最优解

Agent 完成后,打开每个 worktree 的 diff 视图。用 Annotate AI Diff 功能逐行审查。从最优的那个 worktree 提交代码,删除另外两个。

🎯 核心心法 「添加仓库 → 创建 Worktree → 启动 Agent → 分屏 → 审查 Diff → 提交代码」就是 Orca 的全部核心。其他所有功能都是围绕这个流程的增强。

Worktree 详解

Orca 是「worktree 原生」的。每个任务有自己的磁盘副本,agent 之间互不干扰。

Worktree 的生命周期

  1. 创建 — 指定任务名、起始 ref,可选关联 Linear/GitHub issue
  2. 工作 — 所有终端、编辑器标签、浏览器标签都限定在当前 worktree
  3. 审查 — 查看相对于起始 ref 的 diff,用 Annotate AI Diff 批注
  4. 提交 — 直接在 Orca 内 commit、push、开 PR
  5. 归档/删除 — 一键删除 worktree 及其关联分支

创建时的起始 ref 选项

起始方式用途
仓库的 base ref(如 origin/main)最常用,从主分支开新任务
另一个本地分支在正在 review 的 PR 上叠加工作
特定 commit SHA从历史某个点开始
远程分支Orca 会自动 fetch 并 checkout

侧边栏操作

📂 纯 Git 兼容 每个 Orca worktree 都是标准的 git worktree。你可以在任何终端里对它运行 git statusgit rebase 等命令,Orca 会自动检测变化。手动用 git worktree add 创建的 worktree 也能被 Orca 导入。

Agent 与会话

状态指示

每个标签页上有一个小圆点,显示 agent 的当前状态:

状态含义
绿色闪烁Agent 正在工作中(TUI 非空闲状态)
黄色Agent 在等待你的输入
灰色Agent 空闲
无圆点普通 shell,不是识别出的 agent CLI

Agent 仪表板

侧边栏的每个 worktree 卡片上显示其 agent 会话状态,让你一眼看到所有 agent 的工作情况,不需要逐个切换查看。需要关注的 worktree 会加粗显示。

会话恢复

标签页与分屏

每个 worktree 可以有多个标签页(终端、编辑器、浏览器),支持拖拽分屏:

CLI 基础

Orca CLI 让你从任何 shell 控制正在运行的 Orca 编辑器。这是自动化和脚本化的核心。

启用 CLI

  1. 在 Orca 中打开 Settings → Experimental → CLI,点击注册
  2. 验证安装:
command -v orca    # 确认 orca 命令可用
orca status --json  # 确认 Orca 运行中且 CLI 可连接
💡 给 Agent 安装 Orca Skill 让 AI agent 能直接调用 Orca CLI:
npx skills add https://github.com/stablyai/orca --skill orca-cli

选择器(Selectors)

大多数命令接受选择器来指定目标,而不是完整 ID:

选择器含义
active / current当前 shell 所在的 Orca worktree
id:<id>显式指定资源 ID
path:/abs/path按路径指定 worktree
branch:feature-x按分支名指定
issue:123按关联 issue 编号指定

通用约定

Worktree 命令

仓库管理
orca repo list --json列出所有仓库
orca repo add --path /abs/path --json添加本地仓库
orca repo show --repo id:<id> --json查看仓库详情
orca repo set-base-ref --repo id:<id> --ref origin/main设置默认 base ref
Worktree 管理
orca worktree list --repo id:<id> --json列出仓库的所有 worktree
orca worktree current --json显示当前活跃的 worktree
orca worktree create --repo id:<id> --name fix-login --json创建新 worktree
orca worktree rm --worktree id:<id> --force --json删除 worktree
orca worktree set --worktree active --comment "状态说明" --json设置检查点注释

创建 Worktree 的完整参数

orca worktree create \
  --repo id:abc123 \
  --name fix-auth-bug \
  --agent claude \
  --prompt "修复认证模块的竞态条件" \
  --parent-worktree active \
  --issue 42 \
  --json
参数说明
--agent在第一个终端自动启动指定 agent
--prompt启动 agent 后自动发送的初始 prompt
--parent-worktree指定父 worktree(建立父子关系)
--no-parent禁用父子关系推断
--setup run|skip|inherit控制仓库 setup hooks
--issue关联的 issue 编号

Terminal 命令

控制 agent 终端的输入输出。终端 handle 在 Orca 重启后会变化,需要重新获取。

orca terminal list --worktree active --json列出 worktree 的所有终端
orca terminal read --terminal <handle> --json读取终端输出(支持分页)
orca terminal send --text "continue" --enter --json向终端发送输入
orca terminal wait --for tui-idle --timeout-ms 300000等待终端变为空闲状态
orca terminal create --title "tests" --command "npm test"创建新终端
orca terminal split --direction vertical --command "npm run dev"分屏并运行命令
⚠️ 终端 Handle 的生命周期 终端 handle 是运行时范围的——Orca 重启后会失效。如果遇到 "stale handle" 错误,重新用 orca terminal list --json 获取新的 handle。

读取大量终端输出

# 第一次读取
orca terminal read --terminal h1 --cursor 0 --limit 1000 --json

# 用返回的 nextCursor 继续读取
orca terminal read --terminal h1 --cursor 1000 --limit 1000 --json

File 命令

在 Orca 编辑器中打开文件和查看 diff。路径相对于选中的 worktree。

orca file open src/App.tsx --json在编辑器中打开文件
orca file diff src/App.tsx --staged --json查看文件的 staged diff
orca file open-changed --mode both --json打开所有变更文件(编辑+diff 模式)

如果当前 shell 不在目标 worktree 目录中,用 --worktree 指定:

orca file open src/main.py --worktree branch:feature-auth --json

Browser 命令

控制 Orca 内置的 worktree 级浏览器(不是外部浏览器)。采用「快照 → 操作 → 快照」的交互模式。

orca goto --url http://localhost:3000 --json导航到 URL
orca snapshot --json获取页面快照(返回元素引用如 @e3)
orca click --element @e3 --json点击元素
orca fill --element @e1 --value "user@example.com"填写输入框
orca wait --text "Welcome" --json等待文本出现
orca screenshot --json截取视口截图
orca set device --name "iPhone 12" --json设置设备模拟
orca console --limit 50 --json获取控制台日志
orca full-screenshot --json整页截图
🔄 浏览器操作模式 每次操作后都要重新 snapshot。元素引用(如 @e3)只在最近一次 snapshot 后有效,导航或点击导致页面变化后需要刷新。

多 Agent 编排(Orchestration)详解

这是 Orca 最强大也最复杂的功能。编排提供了一套结构化的多 agent 协调机制,包括:

⚠️ 实验性功能 编排功能目前是实验性的。需要先在 Settings → Experimental 中启用,然后用 orca status --json 确认 Orca 运行时处于活跃状态。

核心概念

消息(Messages)

终端间的持久化笔记,支持以下类型:

类型用途
status状态更新
dispatch任务分发通知
worker_doneWorker 完成报告
escalation升级/上报问题
decision_gate决策门通知
heartbeat心跳信号

任务(Tasks)

带规格说明和依赖的工作项,状态流转:

pendingreadydispatchedcompleted / failed / blocked

分发(Dispatches)

将任务分配给终端。任务可以用新的分发上下文重试。完成权限来自活跃的分发上下文——worker 的完成消息和心跳消息必须同时包含 taskIddispatchId

决策门(Decision Gates)

协调者拥有的问题,会阻塞相关任务直到被解决。用于需要人工决策或跨 agent 确认的场景。

🔗 可点击的任务 ID 终端中打印的任务 ID 是可点击的链接——点击后会显示该任务的当前分发信息并聚焦到对应的终端,即使是远程/SSH 运行时也支持。

手动编排流程

完整的手动编排一个任务给 worker 的流程:

1

检查可用容量

查看当前有哪些 worker 可用:

orca status --json                    # Orca 运行时状态
orca worktree ps --json               # 运行中的 worktree 进程
orca terminal list --json             # 所有终端列表
orca orchestration task-list --json   # 当前任务列表
2

创建任务

orca orchestration task-create \
  --task-title "修复认证竞态条件" \
  --display-name "auth-race-fix" \
  --spec "修复 src/auth/ 目录下的竞态条件 bug,确保并发登录请求不会导致 token 重复生成" \
  --json

返回的 taskId 记下来,后续步骤要用。

3

准备 Worker 终端

创建一个 worktree 并等待其终端就绪:

# 创建带 agent 的 worktree
orca worktree create \
  --repo id:abc123 \
  --name worker-auth-fix \
  --agent claude \
  --json

# 列出终端,找到 worker 的 handle
orca terminal list --worktree id:workerWtId --json

# 等待终端空闲(agent 启动完毕)
orca terminal wait --terminal h:workerHandle --for tui-idle --timeout-ms 60000 --json
4

分发任务

--inject 自动注入 worker 通信前言(preamble),告诉 worker 如何汇报:

orca orchestration dispatch \
  --task task:abc123 \
  --to h:workerHandle \
  --inject \
  --json

注入的 preamble 会告诉 worker:

  • 必须发送且只发送一次 worker_done 消息(即使任务失败)
  • 消息体中包含工作摘要、发现、剩余事项
  • 必须包含 taskId 和 dispatchId
  • 长时间工作中发送 heartbeat 消息
  • orca orchestration ask 提问,而不是本地 TUI 交互
5

等待完成

orca orchestration check \
  --wait \
  --type worker_done \
  --timeout-ms 300000 \
  --json

超时被视为检查点而非失败——检查任务和终端状态,如果 worker 仍在活跃工作,继续等待即可。

6

审查结果

# 查看收件箱中的完成消息
orca orchestration inbox --limit 20 --json

# 查看任务状态
orca orchestration task-list --json

Worker 端的操作

被分发的 worker 收到 preamble 后,按以下方式工作:

# Worker 需要提问时(阻塞式)
orca orchestration ask \
  --question "是否允许修改数据库 schema?" \
  --options "允许,不允许,需要讨论" \
  --json | jq -r .answer

# Worker 发送心跳
orca orchestration send \
  --to coordinator \
  --type heartbeat \
  --subject "仍在工作中" \
  --body "已完成 60%,正在处理 token 刷新逻辑" \
  --task-id task:abc123 \
  --dispatch-id dispatch:def456 \
  --json

# Worker 报告完成
orca orchestration send \
  --to coordinator \
  --type worker_done \
  --subject "任务完成" \
  --body "修复了 src/auth/token.ts 中的竞态条件,添加了分布式锁。所有测试通过。" \
  --task-id task:abc123 \
  --dispatch-id dispatch:def456 \
  --files-modified "src/auth/token.ts,src/auth/lock.ts" \
  --report-path "docs/fix-report.md" \
  --json

自动编排(Automated Coordinator Loop)

如果你不想手动管理每个步骤,用 orca orchestration run 让 Orca 自动协调:

orca orchestration run \
  --spec "将整个项目的 API 调用从 fetch 迁移到 axios,包括错误处理和类型定义" \
  --max-concurrent 3 \
  --repo id:abc123 \
  --json

Orca 会自动:

  1. 分析工作规格,拆分成子任务
  2. 为每个子任务创建 worktree 并分发
  3. 收集 worker 的完成报告
  4. 管理任务依赖和决策门

监控自动编排进度

# 查看所有任务
orca orchestration task-list --json

# 只看就绪的任务
orca orchestration task-list --ready --json

# 查看待处理的决策门
orca orchestration gate-list --status pending --json

# 停止运行中的编排
orca orchestration run-stop --json

决策门(Decision Gates)

当任务 DAG 中某个步骤需要明确决策时,使用决策门:

# 创建决策门
orca orchestration gate-create \
  --question "是否采用方案 A(重构)还是方案 B(补丁)?" \
  --blocks-task task:abc123 \
  --options "方案A:重构,方案B:补丁" \
  --json

# 解决决策门
orca orchestration gate-resolve \
  --gate gate:xyz789 \
  --decision "方案A:重构" \
  --rationale "长期可维护性更重要" \
  --json

被阻塞的任务在决策门解决前会保持 blocked 状态。

恢复与重置

# 预览分发上下文(包括 worker preamble)
orca orchestration dispatch-show --dispatch dispatch:def456 --json

# 手动更新任务状态
orca orchestration task-update \
  --task task:abc123 \
  --status completed \
  --result "手动标记完成" \
  --json

# 重置编排状态(谨慎使用!)
orca orchestration reset --tasks --json    # 清除所有任务
orca orchestration reset --messages --json # 清除所有消息
orca orchestration reset --all --json      # 清除全部状态
🚨 重置注意事项 orca orchestration reset 影响全局运行时状态。除非确实要放弃当前状态,否则不要在另一个协调者活跃时运行此命令。

广播地址

发送消息时可以使用组广播地址:

地址目标
@all所有终端
@idle所有空闲终端
@codex所有 Codex agent 终端
@droid所有 Droid agent 终端
@worktree:<id>指定 worktree 的所有终端

何时使用哪种方式

场景推荐方式
给一个直接监控的 agent 发简单指令orca terminal send
Worker 需要正式汇报完成、通过协调者提问、按 task ID 追踪orca orchestration dispatch --inject
让 Orca 管理整个协调循环,自动分发就绪任务orca orchestration run

实战配方(Recipes)

配方 1:三个 Agent 竞赛同一任务

Orca 的「杀手级用法」——不同 agent 做同一个任务,选最优结果。

  1. 创建三个 worktree(同名加序号后缀)
  2. 分别启动 Claude Code、Codex、Cursor CLI
  3. 粘贴完全相同的 prompt
  4. 分屏同时观察
  5. 审查每个 diff,用 Annotate AI Diff 批注最优解
  6. 从胜出的 worktree 提交 PR
  7. 一键删除另外两个 worktree
🎯 为什么有效 不同 agent 犯不同的错。三个都同意的部分大概率正确,分歧之处往往是任务中最难的部分。这比顺序重试更便宜,而且「分歧即信号」。

配方 2:逐行审查 AI Diff

  1. 打开 worktree 的 diff 视图
  2. 用 Annotate AI Diff 功能逐行添加批注
  3. Orca 会将批注发送回 agent,agent 据此修正代码
  4. 反复迭代直到满意

配方 3:在 10 个 Worktree 间跳转

  1. Cmd-J 打开 Jump Palette
  2. 输入关键词过滤 worktree
  3. 回车跳转
  4. 侧边栏中未读的 worktree 会加粗显示

配方 4:用 Design Mode 修 UI Bug

  1. 在 worktree 中打开内置浏览器
  2. 进入 Design Mode,选中 UI 元素
  3. Orca 提取元素的尺寸、颜色、字体等信息
  4. 将这些信息直接注入 agent 的 prompt
  5. Agent 根据精确的 UI 规格修复代码

配方 5:通过 SSH 在远程机器工作

  1. 配置 SSH worktree,Orca 连接到远程机器
  2. 远程 worktree 中的 agent 在远程机器上运行
  3. 本地 Orca 界面控制远程 agent
  4. Diff 查看、代码提交全部在远程完成

定时自动化(Scheduled Automations)

让 Orca 按计划自动运行 agent 任务——定期 triage、代码审查、维护等。

创建自动化

orca automations create \
  --name "每日依赖检查" \
  --trigger daily \
  --time "09:00" \
  --timezone "Asia/Tokyo" \
  --prompt "检查 package.json 中的过时依赖,报告需要更新的包" \
  --provider claude \
  --repo id:abc123 \
  --disabled \
  --json

触发器格式

格式示例说明
预设hourly, daily, weekdays, weekly常用频率
Cron 表达式0 */4 * * *标准 cron 语法
RRULE 字符串FREQ=WEEKLY;BYDAY=MO,WE,FRiCalendar 重复规则

管理自动化

# 列出所有自动化
orca automations list --json

# 查看详情
orca automations show auto:xyz --json

# 启用
orca automations edit auto:xyz --enabled --json

# 手动触发(测试用)
orca automations run auto:xyz --json

# 查看运行历史
orca automations runs --id auto:xyz --json

# 删除
orca automations remove auto:xyz
🔄 会话复用 对于在已有 worktree 中运行的自动化,添加 --reuse-session 参数,这样后续运行会继续使用同一个终端,而不是每次开新的。

Worktree 检查点

每个 worktree 有一个轻量级的自由文本注释字段,用于记录「当前在做什么」的状态快照。

orca worktree set \
  --worktree active \
  --comment "复现了认证失败;正在测试 credential-chain 修复方案" \
  --json

建议设置检查点的时机

📝 更新前先读取 如果已有注释可能包含用户写的上下文,先读取再更新,避免覆盖重要信息:
orca worktree current --json

Computer Use(桌面应用控制)

让 Agent 控制本地桌面应用——通过辅助功能树、截图和 UI 操作。Beta 功能,需要授权。

首次设置

orca status --json
orca computer permissions --json
orca computer capabilities --json

如果缺少权限,在系统设置中授予 "Orca Computer Use" 辅助功能和屏幕录制权限(macOS)。

核心工作流

采用「快照 → 操作 → 快照」循环:

# 1. 获取应用状态(辅助功能树 + 截图)
orca computer get-app-state --app com.apple.Safari --json

# 2. 操作特定元素(使用返回的 element-index)
orca computer click --app com.apple.Safari --element-index 12 --json

# 3. 重新获取状态确认结果
orca computer get-app-state --app com.apple.Safari --json

可用操作

操作命令
点击orca computer click --app <bundleId> --element-index N
设置值orca computer set-value --app ... --element-index N --value "text"
输入文本orca computer type-text --app ... --text "hello"
按键orca computer press-key --app ... --key "enter"
快捷键orca computer hotkey --app ... --keys "cmd+c"
粘贴文本orca computer paste-text --app ... --text "内容"
滚动orca computer scroll --app ... --direction down
拖拽orca computer drag --app ... --from-index N --to-index M
🔒 敏感输入 通过 stdin 传递密码等敏感信息,避免 shell 历史记录暴露:
echo "my-secret" | orca computer set-value --app ... --element-index 5 --value-stdin --json

Skills 与 MCP

可用的 Orca Skills

所有官方 skill 通过以下方式安装:

npx skills add https://github.com/stablyai/orca --skill <name>
Skill功能
orca-cli管理 worktree、终端、文件、自动化、内置浏览器
orchestration结构化多 agent 协调(消息、任务、分发、决策门)
computer-use通过辅助功能控制本地桌面应用
orca-linear为 agent 提供 Linear ticket 上下文
orca-emulator控制 iOS 模拟器(点击、手势、输入等)

默认 agent 设置包含 orca-clicomputer-useorchestration

自定义 Skills

在 GitHub 仓库中创建 skills/<name>/SKILL.md 文件,然后用 npx skills add 安装,即可给 agent 提供公司内部工具。

MCP 服务器

在 Settings → Integrations → MCP 中注册 MCP 端点,兼容 MCP 的 agent CLI 就能使用这些外部工具。

远程与 SSH

SSH Worktree

Orca 支持通过 SSH 在远程机器上创建 worktree,agent 在远程运行,你在本地控制。适合:

Remote Orca Servers

在远程机器上运行 Orca 服务器(headless):

orca serve --port 6768 --pairing-address 100.64.1.20 --json

然后在本地 Orca 中配对远程环境,即可像本地一样使用。

移动端

Orca 提供 iOS 和 Android 伴侣应用,让你在手机上:

适合离开电脑时远程操控正在运行的 agent。

本教程基于 Orca 官方文档 整理。Orca 由 Stably 开发,开源协议 MIT。

相关链接:GitHub · Discord · X (Twitter)