OpenRig rig discover与rig adopt教程:把已有Claude Code和Codex会话纳管
【免费下载链接】openrigMulti-agent harness that runs Claude Code and Codex together as one system项目地址: https://gitcode.com/GitHub_Trending/op/openrig
OpenRig 是一个多智能体框架(multi-agent harness),能把 Claude Code 和 Codex 作为同一个系统统一管理。当你机器上已经跑着若干 Claude Code / Codex 的 tmux 会话,不想推倒重来时,rig discover与rig adopt就是答案:先用 discover 扫描出所有未纳管的会话,再用 adopt 把它们绑定进一个受管的 rig,获得队列、拓扑视图和恢复能力。
为什么需要 discover 和 adopt
从零创建 rig 用rig up即可,但现实中常见这些场景:
- 你已经在多个 tmux 窗口里手动跑了 Claude Code 和 Codex 会话,想"收编"它们;
- 重启或升级后需要把旧的会话重新挂回 OpenRig 的身份层;
- 想把新起的会话增量加入一个运行中的 rig(additive materialization)。
OpenRig 的核心理念是:harness 包住模型,rig 包住你的 harnesses。README.md 中明确列出了这一能力:Discoverexisting Claude Code and Codex sessions in tmux and adopt them into a managed rig。
纳管后的效果可以在 TUI 中直观看到——会话成为拓扑图中的"seat",带有 runtime、model、context 与状态列:
第一步:用 rig discover 扫描未纳管会话
前提:daemon 已启动(例如通过rig up拉起过 rig,daemon 会常驻)。
rig discover # 人类可读的扫描结果 rig discover --json # 机器可读,便于脚本处理 rig discover --draft # 基于扫描结果生成一份候选 RigSpec 草稿rig discover会扫描所有未受 OpenRig 管理的 tmux 会话,输出每行包含:发现 ID(discoveredId)、运行时提示(runtimeHint,如 claude / codex)、置信度、tmux 会话名与 pane、工作目录。
DISCOVERED SESSIONS d-3f2a claude high work-1:0.2 /path/to/repo d-9c11 codex medium work-2:1.0 /path/to/other-repo两个实用技巧:
- 拿不准就加
--json:后续--bind映射里的"discovery ID"可以直接从 JSON 里复制,避免手敲 tmux 会话名出错。 - 想省事就加
--draft:OpenRig 会直接根据扫描到的会话生成一份候选 rig spec,你在此基础上改改名字即可用于 adopt。
扫描与绑定的 CLI 入口源码分别在 discover.ts 和 adopt.ts,官方命令参考见 cli-reference.md。
两种纳管方式:rig bind(单会话)与 rig adopt(整套拓扑)
方式一:rig bind —— 把单个会话挂到已有 rig
如果 rig 已经存在,只想把一个新发现的会话挂进去,用rig bind:
# 挂到已有逻辑节点 rig bind <discoveredId> --rig <rigId> --node <logicalId> # 或在某个 pod 下新建成员节点 rig bind <discoveredId> --rig <rigId> --pod <namespace> --member <name>注意--rig是必填项,且--node与--pod + --member两种模式互斥(前者挂到现有节点,后者创建新节点)。
方式二:rig adopt —— 一次性物化拓扑并批量绑定
当你要"用一份 YAML 拓扑 + 若干运行中的会话"一步到位时,用rig adopt:
rig adopt <spec.yaml> --bind <logicalId=tmuxSessionOrDiscoveryId>它的执行顺序是:先物化拓扑(materialize),再逐个解析并绑定发现的会话,最后打印每个节点的状态与绑定结果。常用选项:
| 选项 | 说明 |
|---|---|
--bind <logicalId=会话选择器> | 必填、可重复;选择器可以是 discovery ID 或 tmux 会话名 |
--bindings-file <bindings.yaml> | 从 YAML 批量加载映射(与--bind二选一,不能同用) |
--target-rig <rigId> | 追加到已有 rig,而不是新建 |
--rig-root <root> | 指定 pod 感知的解析根目录 |
--json | 输出物化节点 + 绑定结果的 JSON |
批量绑定的 bindings 文件长这样:
bindings: dev-impl: work-1 dev-review: d-9c11其中值可以是 tmux 会话名,也可以是rig discover --json里的 discovery ID。
验证纳管是否成功
纳管完成后做三件事:
rig ps --nodes # 拓扑投影应显示新节点,而不是变更前缓存 rig whoami # 身份层应能解析被纳管的会话 rig discover # 这些会话不应再出现在"未纳管"列表里技能文档 topology-mutation-and-seat-management/SKILL.md 特别强调一个典型失败模式:adopt/bind 在 tmux 层成功、但 OpenRig 身份层没绑定(会话看起来挂了,rig whoami却不知道它)。所以上述三步验证不是可选项,而是标准动作。
实战:已纳管 rig 的恢复工作流
OpenRig 官方认定的恢复组合拳是Spec + Bindings:Spec 告诉 OpenRig 期望的拓扑,Bindings 告诉它哪个活着的会话对应哪个逻辑节点。只存 Spec 是恢复不了的,因为活会话必须由绑定关系指认。
# 1. 确认会话仍被发现 rig discover --json # 2. 一键重绑 rig adopt <spec.yaml> --bindings-file <bindings.yaml>增量加入运行中的 rig 同理:
rig adopt <pod-fragment.yaml> --bindings-file <pod.bindings.yaml> --target-rig <rigId>成功的标志:新会话不再出现在rig discover的输出里。
常见问题速查
| 现象 | 原因与处理 |
|---|---|
rig discover提示 daemon 未运行 | 先启动 OpenRig daemon(如rig up拉起任一 rig 后常驻),再扫描 |
Adopt requires a pod-aware RigSpec | 输入 YAML 必须有顶层pods字段,普通 rig 片段不行 |
Session "xxx" not found in active discovery | 绑定选择器写错:核对rig discover --json里的 ID 或 tmux 会话名后重试 |
| 会话纳管后行为异常 | 已纳管会话可能需要重启才能加载新写入的运行时配置(见 README.md 的说明) |
| 想让 OpenRig 停止管理但保留会话 | 对 adopt/claim 类 rig 使用rig release |
小结
rig discover:扫描未纳管的 Claude Code / Codex tmux 会话,--json拿 ID,--draft自动生成候选拓扑。rig bind:把单个发现的会话挂进已有 rig 的指定节点或新成员。rig adopt:一份 YAML 拓扑 + 若干绑定,一步完成"物化 + 纳管",支持追加到已有 rig。- 恢复铁律:Spec + Bindings 成对保存,活会话靠绑定关系指认,纳管后用
rig ps --nodes、rig whoami、rig discover三步验证。
掌握这两个命令,你的 Claude Code 和 Codex 会话就不再是一堆散落的终端窗口,而是一个有身份、有拓扑、可恢复的持久团队。
【免费下载链接】openrigMulti-agent harness that runs Claude Code and Codex together as one system项目地址: https://gitcode.com/GitHub_Trending/op/openrig
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考