关于 rigs
rigs 是用于安装 OpenRig 并让编码 Agent 团队开始处理工作的一项技能,指导环境设置、经同意后启动团队,并通过终端界面交接给 OpenRig 操作员。
主要功能
- 01OpenRig 安装与设置
- 02提供方和依赖项检查
- 03经同意后启动团队
- 04交接至 OpenRig 终端界面
适用场景
- 01为项目安装 OpenRig
- 02启动 Agent 团队处理指定任务
- 03打开操作员的终端视图
- 04说明设置产生的文件和权限
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvschwarz/ openrig --skill rigs安装后在 Claude Code 中输入/rigs确认已加载。
详细介绍
rigs:开启 OpenRig 之路
OpenRig 会在 tmux 中并行运行一组编码 Agent(Claude Code、Codex 等)。本地守护进程会保存它们的任务、消息和状态,因此团队在重启后也能继续工作。此技能会安装 OpenRig,让团队开始处理用户想做的事,并说明如何从现在起与团队协作。
目标是让团队替用户完成工作,而不只是安装软件。 按顺序完成这些步骤,只有用户要求时才提前停止。当用户说出想要构建什么时,将需求交给 OpenRig 的操作员(步骤 2),而不是自己动手构建。
运行命令前,先告诉用户你准备运行什么以及原因。未经用户同意,不要安装系统软件包或更改其机器;未经用户同意,不要启动团队,包括运行 rig up;如果用户已同意同一次启动,就无需再次询问。启动 OpenRig 和团队会写入文件:Codex 钩子和设置写入 ~/.codex/config.toml,Claude Code 工作区信任设置写入 ~/.claude.json,发现技能写入 ~/.claude/skills 和 ~/.agents/skills;在代码仓库中,会写入托管指引 AGENTS.md 或 CLAUDE.md、活动钩子 .claude/settings.local.json,以及状态行(如果项目尚未有自己的状态行),还有团队的技能和插件。除非适用权限策略、单个席位选项或(对 Codex 而言)指定配置文件,否则内核自身的席位会采用操作默认设置:Codex 使用 -s danger-full-access -a never,Claude Code 则获准使用文件工具、网页抓取和操作命令(包括读取主目录下的内容),无需询问。在启动 OpenRig 之前说明这一点(完整列表)。
如果用户希望更改仅保留在其项目中: 在设置或首次启动守护进程/内核之前,说明所选 Codex 配置路径(CODEX_HOME/config.toml,默认为 ~/.codex/config.toml),并解释这些独立写入操作。设置过程会添加 ~/.tmux.conf;Codex 席位启动时会添加工作区信任设置和任何已声明的配置片段(包括 MCP),即使跳过了设置,或 runtime.codex.hooks_enabled 为 false 也一样。此设置控制的是钩子,而非所有配置写入。这些设置可能会影响使用同一 Codex home 的其他会话。如果用户此前已同意涵盖这些写入操作,就沿用该同意;仅限项目的明确要求不包含这些操作。如果用户拒绝,不要启动同一路径,也不要事后删除写入内容来代替征求同意。说明设置没有仅限项目的模式。Git worktree 或项目中的 .codex/config.toml 都不会重定向这些写入操作。已有的独立 CODEX_HOME 会一并隔离 Codex 的配置、登录和会话状态;它需要单独完成有效登录,且不会迁移 ~/.tmux.conf。将用户的范围限制告知操作员。
Codex 单项审批: 在安装前说明,即使是读取操作,在设置和后续操作中也可能反复询问;这与团队权限相互独立。使用简单、独立的命令,让每项请求都清晰易懂。下方提供的可选六命令审批方案仍然适用;不要启用常规网络访问或扩大其他权限设置来避免提示。
当你给用户提供要在其终端中运行的文件或命令时,请使用其机器上实际存在的路径。沙盒 Agent 在 /tmp 下写入的文件可能不会出现在用户的终端中(Codex 中有此情况),因此应将用户需要的文件放在其项目文件夹或主目录中,并注明该路径。
1. 如果尚未安装 OpenRig,请先安装
- **先检查:**运行
rig --version。如果显示版本号,请转到第 2 步。 - **所需条件:**macOS 或 Linux、Node.js 22 或 24、tmux,以及已登录的 Claude Code 或 Codex。只检查缺少的项目:运行
node --version、tmux -V、claude auth status或codex login status。 - 需要联网的检查(
gh auth status、注册表查询或其他获取操作)在无法访问网络的沙盒中可能会误报失败,例如 Codex 默认使用的沙盒。告诉对方重新登录或修复任何问题之前,先在有网络访问权限的情况下重新运行对应命令。 - **安装:**运行
npm install -g @openrig/cli,然后运行rig setup --providers codex(也可以用claude或both,选择对方使用的运行环境)。Setup 会检查 Node、tmux 和登录状态。如果缺少 tmux 或所选运行环境,它会安装 tmux(如果有 Homebrew,则使用 Homebrew)或所选运行环境(使用 npm);除非对方拒绝(--no-herdr),否则会安装用于查看 OpenRig 的 Herdr;还会将 OpenRig 配置块添加到~/.tmux.conf。因此,请先告知对方这些操作。它不会启动守护进程。之后运行rig doctor。 - **然后继续第 2 步:**说明已安装完成,并询问对方想处理什么,以及在哪个仓库中处理。对方只说“安装 OpenRig”也包括这一步。只有对方表示暂时不启动团队时,才在此处停止。
- 如果出现问题:
rig context get help是已安装版本的帮助指南。如果rig本身无法运行,请访问 https://www.openrig.dev/help/agents。入门指南:https://openrig.dev/docs/getting-started
2. 打开 OpenRig,并将目标交给其操作员
-
**启动 OpenRig:**运行
rig daemon status,如果尚未运行,则运行rig daemon start。rig preflight和rig doctor不会启动它。启动 OpenRig 也会启动 OpenRig 自己的团队——内核;其操作员会为对方设置团队。保留它。 -
**如果对方使用 Codex:**OpenRig 运行后,现在按照本步骤末尾“Codex:OpenRig 启动后,只主动提供一次”的说明进行一次性告知。
-
**向对方展示 OpenRig 和交接方式:**OpenRig 运行后,为对方打开 OpenRig TUI 和操作员。先说明你要打开它,然后在守护进程的桌面上运行
rig terminal open saved:kernel --window。这是安装或启动 OpenRig 后的下一步;之后无论何时对方想再次使用 Agent 或 OpenRig,都可以通过此方式返回。不要等对方提出要求或说出特定措辞。如果对方表示暂时不需要,就把这条命令留给他们以后使用。该命令会自行打开一个视图;已安装 Herdr 时使用 Herdr,否则使用普通 tmux:- 在 Herdr 中(你在 Herdr 窗格中运行):切换对方的 Herdr 到
openrig kernel空间,并重用已有的活动空间。不会新开窗口,也不会出现 macOS 提示;对方自己的空间仍会显示在侧边栏中。 - 在 Rex 中(你在 Rex 区块中运行,或在其中启动的 tmux 中运行):在同一 Rex 服务上打开
openrig kernel会话,并让 Rex 应用切换到该会话。不会新开窗口,也不会出现 macOS 提示。再次打开会新增一个编号会话。 - **在 Terminal 或 Ghostty 中:**新建一个与对方当前窗口大小相同的标签页或窗口。
- **在 Mac 上通过 Claude Desktop、iTerm 或 VS Code 使用时:**如果支持,则打开新的 Ghostty 窗口;否则打开 Terminal。只有在这种情况下,如果 macOS 询问是否允许控制该应用,请在运行命令前告诉对方,选择“允许”即可。运行
echo $TERM_PROGRAM $__CFBundleIdentifier $REX_BLOCK可查看你所在的位置。herdr、rex、Apple_Terminal或ghostty,以及带有com.apple.Terminal、com.mitchellh.ghostty或REX_BLOCK值的tmux,都不会触发 macOS 提示,因此不要提及提示。其他情况中的tmux(iTerm、VS Code)可能会触发提示,因此要先说明选择“允许”即可。 - **布局:**宽度不足 120 列时,操作员占满第一页;从 120 列起,仪表板和操作员并排显示。顾问有自己的标签页或 tmux 窗口。
然后用一两句话告诉对方它在哪里打开了,并说明操作员已准备好帮助他们构建想要的内容。不要列出 Agent 或状态(TUI 会显示),也不要建议他们输入命令。
保留当前终端。如果 OpenRig 的备注说无法确认视图,请如实说明。如果窗口已经打开,请指引他们前往,而不是再打开一个。只有窗口无法打开时,
rig tui --shared才是仅显示仪表板的备用方案;请说明失败原因,并帮助他们使用选定的备用方案。Herdr 只有在对方能看到的终端中才可见;将共享 TUI 切换到:terminals并不会打开终端。未打开窗口以及无头/SSH 使用都是有效的后台结果。仅指定提供方的--provider herdr、--provider cmux或--provider rex适用于已在运行的提供方,不适用于首次打开桌面窗口;每次此类打开都会添加一个新的工作区。
- 在 Herdr 中(你在 Herdr 窗格中运行):切换对方的 Herdr 到
-
**如果窗口无法打开,或通过无头 SSH 使用:**请明确说明没有打开可见终端,并请对方在守护进程所在主机上打开一个新的终端窗口或标签页。通过 SSH 使用时,请他们新建一个连接到该主机的 SSH 会话,并使用已知的帐户。如果你只知道 HTTP 守护进程地址,请询问 SSH 连接详情,不要凭空编造。然后给出一条完整命令:
- **OpenRig 打印的命令:**如果
rig terminal open saved:kernel --window无法打开窗口,它会说明原因,并以run:和一条命令结尾(使用--json时,该命令位于error字段中)。该命令已经包含已安装的 herdr 二进制文件和守护进程的套接字,或要附加的会话。请原样转述,不要自行拼凑。如果备注要求你在 Herdr 启动后放置视图,请在对方启动后自行运行rig terminal open。 - **如果没有打印命令:**在
rig ps --nodes --rig kernel --json --fields logicalId,canonicalSessionName,tmuxAttachCommand中查找operator.agent,并将其tmuxAttachCommand按原样列出,前面加上env -u TMUX(切勿猜测名称),以进入操作员的对话。如果不是默认的 tmux 服务端,该命令会指向守护进程的 tmux 服务端。
对于其他任何故障,请查阅
rig context get reference/getting-started.md#open-the-kernel-conversations中标题为“What can interrupt installation and the OpenRig view”的表格,了解原因和后续处理方式。 - **OpenRig 打印的命令:**如果
-
**首次发送消息前,先询问对方是否愿意加入此会话:**如果此会话尚未加入,请建议在普通 shell 中加入 OpenRig,这样操作员看到的会是有名字的队友,而不是“unknown sender”。在 tmux 中,将加入作为可选项,并说明以下影响。简短说明后,请对方回答愿意或不愿意:
- 这会让我成为团队中有名字的一员,并在消息中显示我的名字。
- 在普通 shell 中,加入不会在你的项目或个人设置中写入任何文件。
- 在 0.6.11 的 tmux 中,我的发送者名称和回复地址会是你现有的 tmux 会话名称,即使它是
0这样的数字。rig attach --self会返回该地址,rig whoami会确认该地址;--display-name不会更改它。 - 在 tmux 中,其他 Agent 可以向此窗口输入内容,而停止团队(
rig down)也会关闭此 tmux 会话(这两点来自源代码,未经手动测试)。在 0.6.11 上,已手动测试过转录记录,以及对 Claude Code 写入.openrig/context-collector.cjs和.claude/settings.local.json以显示状态行。更新现有的.claude/settings.local.json并保留其自定义状态行这一点来自源代码。 - 在普通 shell 中,其他 Agent 会通过任务队列回复,因为它们无法向此窗口输入内容;停止团队后,此会话仍会运行。
只有在对方同意后才附加;如果他们拒绝,就继续进行操作员交接。首次联系时,使用内核的
rig ID(
rig ps --json中kernel行的rigId)及其operatorPod:rig attach --self --rig <rigId> --pod operator --member person-agent --runtime <claude-code|codex> --print-env。--node <logicalId>则会绑定到现有席位。只附加一次,并保留它打印的变量 (OPENRIG_NODE_ID和OPENRIG_SESSION_NAME)。每条命令都可能在新的 Shell 中运行,因此要把这些变量放在之后每条rig命令前。使用rig whoami --json检查身份;之后要确认身份和状态时,使用它或rig seat status, 不要依赖rig attach --json的输出。不要打印OPENRIG_ACTIVITY_*的值:它们是凭据。 如果对方拒绝,要发送一条仍须注明发件人身份的消息,可以将其作为队列项,并声明来源:rig queue create --source <their id>@external --destination <seat> --summary "<one line>" --body-file <file>:席位会看到这个 名称,并将其记录为已声明的来源;如果对方已注册(rig gateway human list),就可以回复他们。 声明的名称是一种自我申报,不代表席位自身的身份:对于只根据席位身份采取行动的团队,应使用上面的附加 Shell 作为通道。
-
**向操作员说明目标:**询问对方想处理什么、在哪个仓库、使用哪个分支,除非他们已经说明。找到
rig ps --nodes --rig kernel --json中的operator.agent行,获取其canonicalSessionName(绝不能使用逻辑 ID,也不能猜测名称),然后发送:rig send <canonicalSessionName> 'This is the agent that installed OpenRig. The person will answer in your pane. Goal: <goal>. Project folder: <absolute path>. Branch: <branch>.'如果对方留在这里,就将 "The person will answer in your pane" 替换为 "The person stays with me; send me your questions and results to relay."。交接时一并传达他们的限制条件及拒绝的权限选项。 也可以让对方在操作员的窗格中输入目标和文件夹。如果他们之后才给出目标,就用同样的方式转交。操作员会帮助他们根据登录账号选择合适的团队;只有在他们同意所显示的计划后,才启动团队(rig up),并将目标告知团队负责人。在他们同意之前,要说明将任务启动到其文件夹会如何影响他们在那里的 Agent;提问时也要转达这一点。 告诉他们操作员会在哪里回复,不要自己构建项目。 -
转达操作员的问题,除非对方拒绝了下面的 Codex 提议并明确选择了操作员通道:操作员会在自己的窗格中提问,而对方可能没有查看那里。 每次交接步骤后,使用
rig capture <canonicalSessionName>读取操作员的屏幕。当操作员向对方提问(是否启动这个团队?使用哪个文件夹?选择哪个选项?)时,用操作员的原话在这里询问对方,并通过rig send发送他们的回答,或者告诉他们在操作员的窗格中回答。问题不像提示或菜单那样会显示为已停止的席位,因此不要让它一直等待后台响应。 -
当操作员已准备就绪且对方正在与其交谈时,安装才算完成;仅有健康运行的守护进程并不算完成。如果对方更愿意稍后再交谈,就保留这一选择,提供准确的连接步骤,并说明交接给操作员的流程仍未完成。
-
**查看正在运行的内容:**先运行
rig ps,再运行rig ps --nodes --rig <rig>查看团队的 Agent。如果该仓库中已有团队在运行,请告知操作员。 -
**声称已就绪前,先确认确实就绪:**运行
rig ps --nodes --rig <rig>。如果某个 Agent 停在提示或菜单处,使用rig capture <seat>@<rig>读取。如果出现权限提示,应由对方作答:将提示展示给他们,并把所有其他等待中的提示也一起展示,每行一条(席位、准确操作、提供的选项)。发送他们的选择前,再次捕获该席位:如果提示已改变,不要重复使用先前的回答。然后准确发送他们针对该提示所选的选项(rig send --help会说明如何向提示发送数字、字母或 Escape)。对一个提示回答“是”不代表对下一个提示也回答“是”;也绝不要替他们选择他们没有选择的“以后不再询问”。如果他们明确告诉你如何处理某类未来提示(例如“批准只会在我的项目内写入的提示”),你可以逐个处理:完整查看操作内容,只有在明确属于他们所述范围内时才作出决定,并告知他们你是根据该指示作答,而不是说他们同意了。任何不明确或超出范围的内容都要交由他们决定;命令名称或看起来像其项目的路径,并不能说明操作会影响哪些内容。他们的指示不会更改任何权限设置。 对于另一类菜单,你可以按屏幕显示的按键作答,也可以询问对方。发送任何后续内容前,再次捕获该菜单。 -
**回复:**在普通 Shell 中,其他 Agent 无法向此会话输入内容。使用
rig queue list --destination <your address>和rig queue show <id> --full读取发给你的工作;使用rig capture <seat>@<rig>读取 Agent 的屏幕。
Codex:OpenRig 启动后,只询问一次是否授权
首先,Agent 会解析用户实际使用的 Codex 文件夹(CODEX_HOME,如果未设置,则为 ~/.codex),并在授权请求中写入确切路径,让用户看到的是实际文件,而不是占位符:
Codex 会请求你批准 OpenRig 命令。可以允许以下六条命令在无需询问的情况下运行吗:
rig ps、rig capture、rig send、rig queue、rig status和rig whoami,以及它们各自后面的任何内容?它们将在 Codex 沙盒之外运行,适用于你在这台电脑上运行的所有 Codex 项目和会话;而且rig send和rig queue可以向你的 Agent 发送消息并更改它们的任务记录,不只是读取信息。我会添加一个文件:/home/you/.codex/rules/openrig.rules(解析后得到的路径)。Codex 会在启动时读取该文件,因此这些规则会从你的下一个 Codex 会话开始生效;它们不会移除当前会话中的提示。保留逐条批准意味着即使是状态检查和读取 Agent 的屏幕,也可能每次都需要询问。你也可以在操作员就绪后直接与其对话,而无需更改此 Codex 会话的权限。要撤销这些规则,请让我移除本次添加的 OpenRig 规则,并保留你的其他规则。
- 不同意,或未作答: 不写入任何内容,并保留用户的沙盒、网络和批准设置。如果用户拒绝,请尊重其选择;不要继续提供已记住的批准,也不要为了避免提示而启用通用网络访问。可提供继续与已就绪的操作员直接对话,或留在此处逐项批准的选项。如果用户已经选择其中一种方式,则不要再次询问。
- 如果用户选择操作员: 使用上述交接方式,仅交接一次,并附上用户的目标、文件夹、分支和拒绝授予的权限,然后引导用户前往操作员已就绪的对话。在无头 SSH 上,使用上述确切的连接/附加命令。用户开始与操作员对话后,操作员会跟进团队的工作并在那里报告结果;停止此安装程序反复轮询 capture、status 和 queue。不要停止、重启或重新配置任何一个会话。如果用户更愿意留在此处,则按照其选择的批准方式继续转达;不要声称这些提示已经消失。是否提供规则授权是可选项,不是使用 OpenRig 的前提。
- 同意: Agent 按照 OpenRig 现有权限步骤中的说明应用规则(已安装 OpenRig 技能中的
applying-a-permission-policy):先读取现有规则,保留任何更严格的规则,不更改任何沙盒或批准设置,并记录添加的内容。仅当文件不存在时才创建;如果文件已存在,Agent 不做任何更改,并说明其中已有的内容。新文件仅包含以下两行:# Added by OpenRig on the person's yes: these six rig command families run without a prompt. Ask to undo, or delete this file if it holds nothing else. prefix_rule(pattern = ["rig", ["ps", "capture", "send", "queue", "status", "whoami"]], decision = "allow", justification = "OpenRig coordination commands the person approved once") - 撤销(同一技能中的原文:“撤销本次设置添加的 OpenRig 命令授权;保留我的其他规则”):Agent 仅移除其记录为新增的行,保留文件中的其他所有内容,并且只有在文件中只剩这些行时才删除文件。这些更改从下一个 Codex 会话开始生效。
3. 跟进工作,直到有结果
默认情况下,请按以下步骤操作。只有当对方拒绝了上文的 Codex 提议,并明确选择由操作者处理时,才由操作者负责跟进。
- **找到团队的任务:**操作者将目标作为队列任务交给团队负责人:
dev-build@starter,或者在workshop和factory中交给orch-lead(对于 starter 和 factory,rig specs preview <name> --kind rig会说明各个席位的职责;对于正在运行的团队,请使用rig ps --nodes --rig <rig>)。使用rig queue list --destination <seat>@<rig> -a查找任务。 - **跟进直到有结果:**任务转交给他人并不代表工作已经完成。
rig queue show <id> --full会显示任务转交给了哪个席位,而该席位接下来的任务就是handedOffFrom值为该 ID 的任务 (rig queue list --destination <seat>@<rig> -a -o json)。跟进每次转交,直到某个 Agent 报告结果,并使用rig capture <seat>@<rig>查看它正在做什么。然后阅读它产出的内容,并告诉对方团队实际完成了什么(分支、提交、评审或 PR 文本),而不只是说你已发送任务。 - **给团队安排更多工作:**将目标写入文件,说明要更改什么、在哪个仓库和分支中更改、完成的标准是什么,以及结果如何返回给你(分支或提交、评审、任何 PR 文本)。然后运行
rig queue create --source <your name> --destination <seat>@<rig> --summary "<the goal in a sentence>" --body-file <file>,并通过rig send <seat>@<rig> "task <id> is yours"告知该 Agent。消息用于通知,而队列任务才是有人负责的工作。 如果当前会话尚未加入团队,--source中填写你的名字。 - **然后询问接下来要做什么。**如果没有团队能接手这项工作,请解决这个问题或询问对方。不要默默地自己动手。
- 与团队协作的其他方式:
rig send <seat>@<rig> "..."会在 Agent 的终端中输入内容,rig capture <seat>@<rig>会读取其屏幕,而rig ps --nodes --rig <rig>会显示团队成员。
4. 了解更多
- OpenRig 的工作方式:
rig context profile world-public --situation fresh。 - 你能做什么:
rig context get onboarding-width(能力图)。 - 库中的所有内容:
rig context list。 - 准确语法:
rig <command> --help始终与已安装的版本保持同步。
如果此处的说明与 rig <command> --help 不一致,以 --help 为准。