☰
OpenRig rig discover与rig adopt教程:把已有Claude Code和Codex会话纳管
2026/9/29 17:03:43 网站建设 项目流程

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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询