
OpenRig Claude Code 适配器实现原理permission-mode、状态线与活动钩子全解析【免费下载链接】openrigBuild your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work.项目地址: https://gitcode.com/GitHub_Trending/op/openrigOpenRig 是一款开源的多智能体团队编排工具能帮你用 Claude Code、Codex 和 Pi 组建一支持久化的 AI 代理团队——每个成员有明确角色、共享上下文、拥有自己负责的工作。本文带你完整看懂 OpenRig 的Claude Code 适配器三大核心机制permission-mode 权限姿态、状态线status line上下文采集与活动钩子activity hooks事件上报即使是新手也能快速理解它的实现原理。为什么需要Claude Code 适配器OpenRig 把每个智能体放在一个 tmux 会话的工位seat上运行。Claude Code 只是其中一个运行时OpenRig 并不直接改它的源码而是通过一层适配器在外部完成三件事启动拼装出正确的claude命令并在 tmux 里执行配置把 skills、guidance、settings 等资源投影到项目的.claude/目录观测实时感知代理在忙、在等输入还是已经空闲。核心实现集中在 claude-code-adapter.ts它负责资源投影、启动投递与会话令牌捕获权限相关的启动参数决策则被抽到 yolo-mode.ts 中保证全新启动 / 恢复 / 分叉三条路径的行为完全一致。permission-mode三档权限姿态怎么算出来Claude Code 启动时可以携带权限参数OpenRig 的决策逻辑非常简洁全部收敛在一个函数里档位 1默认底线--permission-mode acceptEdits——允许代理自动接受文件编辑类操作这是所有被管理工位的可用底线档位 2YOLO 全放行设置环境变量OPENRIG_YOLO1后启动参数变为--dangerously-skip-permissions适合无人值守的批量任务档位 3按工位策略如果某个工位绑定了已解析的权限策略如自定义full_bypass策略附件则直接注入--permission-mode mode可精确指定 Claude 支持的任意权限模式并经过^[A-Za-z][A-Za-z0-9]*$格式校验防止命令注入。对应源码见 claudePostureFlag()permissionMode 已指定 → --permission-mode mode校验后注入 否则 YOLO 开启 → --dangerously-skip-permissions 否则 → --permission-mode acceptEdits这个设计的巧妙之处在于它只操作启动参数从不写任何权限配置文件见 yolo-mode.ts 头部设计注释因此无论哪种姿态都可以一键切回默认零残留、可回滚。状态线实时读取上下文窗口余量这个代理的上下文还剩多少——这是运维多智能体团队时最实用的问题之一。OpenRig 的答案是状态线采集器启动前适配器把采集脚本投放到项目的.openrig/context-collector.cjs同时在.claude/settings.local.json中合并而非覆盖一段statusLine配置指向该脚本Claude Code 每次刷新状态栏时都会把context_window窗口大小、已用/剩余百分比、token 计数、session_id等 JSON 数据从 stdin 喂给脚本脚本把样本原子写入先写.tmp再 rename避免读到半个文件到按会话名命名的 JSON 文件里供 daemon 侧的上下文用量监控context-usage watchdog消费。整个过程幂等且 best-effort配置合并保留用户已有设置采集失败也绝不打断 Claude 本身。实现见 provisionContextCollector() 与采集脚本 claude-statusline-context.cjs。活动钩子给每个代理装上心跳信号光看上下文余量还不够OpenRig 还想知道代理现在是在干活还是在等我输入。这靠的是 Claude Code 的hooks 机制——在会话生命周期关键节点SessionStart、UserPromptSubmit、Stop、Notification 等自动执行外部命令。OpenRig 的接入分三层规范清单claude.json 是事件词汇表的单一事实来源声明了每个事件应挂载哪些钩子及超时时间中继脚本activity-relay.cjs 负责把事件转发给 OpenRig daemon成为代理的心跳对账逻辑适配器在每次投影时调用 reconcileClaudeActivityHooks() 做期望状态对账——开启时投放脚本并注册钩子关闭时精确剥离 OpenRig 自己写入的条目。其中有两个对新手很友好的工程细节归属识别OpenRig 只清理完全由自己写入的命令node 中继脚本路径的精确形态用户自己写的钩子绝不误删失败关闭fail-closed如果 settings 文件解析失败、中继脚本缺失就什么都不动并如实报告未投递绝不谎报成功。校验逻辑与 preflight 共用同一套实现claude-activity-hooks.ts保证两条路径永不漂移。三层机制如何协同工作机制解决的问题触发时机permission-mode代理能做什么启动 / 恢复 / 分叉时拼入启动命令状态线采集上下文还剩多少Claude 每次刷新状态栏活动钩子代理现在在干什么会话生命周期关键事件三者共同构成 OpenRig 对 Claude Code 工位的完整控制面启动时定好权限边界运行中持续采集上下文事件钩子随时同步活动状态——daemon 据此在 TUI 里渲染出每个代理的实时状态并在上下文将尽或代理卡住时提醒你介入。小结适配器不侵入 Claude Code全部通过启动参数、配置投影与 hooks 完成软接管权限姿态只有三个确定性档位且零配置残留随时可回退状态线与活动钩子均采用幂等写入 失败关闭策略对用户环境零破坏。想动手体验可以阅读 demo/README.md 了解演示团队的启动方式或直接运行 demo/run.sh 拉起一个包含 lead、design、impl、qa 等角色的示例 rig亲手观察这三个机制如何让你的 Claude Code 团队跑起来。【免费下载链接】openrigBuild your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work.项目地址: https://gitcode.com/GitHub_Trending/op/openrig创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考