ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ClawTeam 深度解析:用 git worktree 与 tmux 搭建多 Agent CLI 协作骨架

ClawTeam 深度解析:用 git worktree 与 tmux 搭建多 Agent CLI 协作骨架 1. 当多个 CLI Agent 抢同一个仓库时麻烦才刚开始ClawTeam 是一个框架无关的多智能体协调 CLI 工具它让 AI 智能体能够自主组织成团队——分配任务、相互通信、协调工作并合并结果。它适合谁适合已经在用 OpenClaw、Claude Code 这类 CLI 编码代理并且开始觉得“一个代理干一个仓库”不够用的人。我试过让两个代理同时改同一个项目结果一个在改auth.py另一个在重构auth.py的调用方两边互相覆盖最后 git status 一片红谁都不敢提交。问题的根子不在模型能力而在工程骨架多个代理共享一个工作目录等于让几个人在同一张纸上写字。ClawTeam 给出的解法很直接——每个代理一个独立的 git worktree 加一个独立的 tmux 窗口分支隔离、会话隔离、消息走文件系统。这样代理之间不再抢文件而是通过任务和邮箱协作最后由 leader 合并结果。这篇会从零搭一套可复制的骨架先配好 TaoToken 的统一 Key 和 API 通道再写config.toml然后用clawteam team spawn-team起团队、clawteam spawn起代理、clawteam board看状态最后验证协作链路真的跑通。全程命令可直接复制踩坑点我会单独标出来。2. 前置用 TaoToken 统一 Key 打通 OpenClaw 的 API 通道ClawTeam 本身是协调层真正干活的是 OpenClaw 这类代理后端。代理一多最烦的是每个代理都要单独配 Key、单独算额度。TaoToken 在这里的作用是提供一个统一的 API 通道一个 Key 覆盖多个模型OpenClaw、Claude Code 兼容的 CLI 都能指向同一个入口省掉每个代理重复配置的麻烦。先拿 Key。打开 https://taotoken.net/api-keys 登录后创建一个 API Key复制出来。注意这个 Key 只在创建时完整显示一次先存到安全的地方。拿到 Key 之后把它写进环境变量。ClawTeam 的 spawn 系统会把当前环境透传给每个代理所以只要在启动 ClawTeam 的 shell 里 export 一次所有代理都能继承export TAOTOKEN_API_KEYsk-你的key export OPENAI_API_KEY$TAOTOKEN_API_KEY export OPENAI_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEY$TAOTOKEN_API_KEY export ANTHROPIC_BASE_URLhttps://taotoken.net/api这里同时设了 OpenAI 和 Anthropic 两套变量是因为 OpenClaw 和 Claude Code 系的后端读的变量名不一样。统一指向https://taotoken.net/api之后代理走哪条协议都落到同一个通道上。注意OPENAI_BASE_URL和ANTHROPIC_BASE_URL末尾不要带/v1TaoToken 的接入层会自己处理路径。多带一层会 404这个坑我踩过。想先确认 Key 和通道是通的不用急着起代理直接用模型对话页面发一条测试消息最快 https://taotoken.net/models 。能正常返回就说明 Key 有效、通道没问题再往下搭骨架。如果你打算长期跑多代理、频繁 spawn建议顺手看一下 Coding Plan https://taotoken.net/coding-plan 按量计费和包月在高频 spawn 场景下差别不小代理数量一多成本会明显往一边偏。3. 可复制配置config.toml 骨架与 ClawTeam 初始化ClawTeam 的配置是三层优先级环境变量 配置文件 默认值。所以config.toml里写的是“默认值”需要临时覆盖时用环境变量不用改文件。先建数据目录并初始化mkdir -p ~/.clawteam clawteam config showconfig show会打印当前生效的每一项配置和它的来源env / file / default这是排查配置问题最有用的一条命令。接着写~/.clawteam/config.toml# ~/.clawteam/config.toml data_dir ~/.clawteam user alice default_team dev-team transport file workspace auto default_backend tmux skip_permissions true逐项说明一下这些字段直接对应 ClawTeam 的配置模型字段作用建议值data_dir所有状态存储根目录~/.clawteamuser多用户协作时的命名空间你的名字default_team省略--team时的默认团队固定一个transport消息传输后端file零依赖workspace是否自动建 worktreeautodefault_backendspawn 后端tmuxskip_permissions跳过代理权限审批trueworkspace auto是关键它让 ClawTeam 在 spawn 代理时自动为该代理创建 git worktree 和分支分支命名规则是clawteam/{team}/{agent}。default_backend tmux则决定代理跑在 tmux 窗口里你能随时 attach 进去看它在干什么。改完验证一下配置来源clawteam config get workspace clawteam config healthconfig health会检查数据目录可写、git 可用、tmux 可用这些前置条件。如果它报 tmux 找不到先装 tmux 再继续否则 spawn 会直接失败。4. 启动、切换、验证把协作链路跑通配置就绪后进入实操。整个流程分四步建团队、起代理、看状态、验证消息。4.1 创建团队并 spawn 两个代理先在一个 git 仓库根目录下操作因为 worktree 依赖 gitcd ~/projects/my-app clawteam team spawn-team dev-team -d Build auth module -n leader这条命令创建团队dev-team并把当前 shell 注册为 leader。接着起两个 workerclawteam spawn --team dev-team --agent-name alice --task Implement login endpoint clawteam spawn --team dev-team --agent-name bob --task Write tests for login每个spawn背后做了几件事创建clawteam/dev-team/alice分支、在~/.clawteam/workspaces/dev-team/alice建 worktree、开一个名为clawteam-dev-team的 tmux session 并新增alice窗口、把构建好的 prompt 注入进去。prompt 里包含代理身份、工作目录、分支名和协调协议代理一启动就知道自己该干什么、该用哪条命令汇报。4.2 切换与观察代理tmux 会话名固定是clawteam-{team}窗口名就是代理名切换很直接tmux attach -t clawteam-dev-team # 在 tmux 内用 Ctrl-b w 列出窗口选 alice 或 bob # 或者直接指定窗口 tmux select-window -t clawteam-dev-team:alice不想 attach 也可以用终端看板clawteam board show dev-team # 一次性快照 clawteam board live dev-team # 自动刷新 clawteam board serve --port 8080 # Web UI浏览器打开 localhost:8080board live会持续刷新任务状态、成员存活、消息计数。代理挂掉时存活检查会通过 tmux pane 状态和 PID 双重判断在面板上标出来。4.3 验证协作链路链路是否真的通了看三件事任务能流转、消息能送达、worktree 能合并。先看任务clawteam task list dev-team --owner alice clawteam task update dev-team task-id --status in_progress任务状态机是pending → in_progress → completed被依赖阻塞时是blocked。当一个任务完成依赖它的任务会自动从blocked解锁为pending这是文件锁保护的原子操作。再验证消息clawteam inbox send dev-team alice login endpoint 的字段定义发我一下 clawteam inbox peek dev-team bob # 查看不消费 clawteam inbox receive dev-team bob # 接收并消费peek和receive的区别很重要peek只看不删适合调试receive是 FIFO 消费代理正常汇报走这个。最后验证 worktree 隔离与合并clawteam workspace list dev-team clawteam workspace checkpoint dev-team alice -m login endpoint done clawteam workspace merge dev-team aliceworkspace list会显示每个代理的分支名和 worktree 路径。checkpoint相当于在该代理分支上提交一次merge把它的分支合回目标分支。因为每个代理在独立 worktree 里干活合并前不会互相污染冲突只会在 merge 这一步暴露处理起来可控得多。5. 本篇常见错排查spawn 报 “not a git repository”worktree 必须在 git 仓库内创建。确认你在仓库根目录或者用git rev-parse --show-toplevel检查当前路径。ClawTeam 会向上找仓库根但如果你在仓库外它找不到就报错。代理起来了但一直不动多半是 prompt 注入失败或权限提示卡住。attach 到对应 tmux 窗口看屏幕内容。如果是目录信任提示skip_permissions true配合自动确认逻辑应该能处理如果还卡检查config health里 tmux 版本是否过旧。消息发了但对方收不到先clawteam inbox peek dev-team agent确认消息在不在收件箱。如果 peek 有、receive 没有检查是不是被别的进程消费了。多用户场景下收件箱名是{user}_{agent}复合键user配错会导致消息投到另一个命名空间。merge 时冲突这是正常的worktree 隔离只保证干活时不互相踩合并时该冲突还是冲突。先workspace checkpoint保存当前进度再手动解决冲突后重新 merge。别在没 checkpoint 的情况下直接 cleanup会丢工作。API 请求 401 或 404401 是 Key 无效回 https://taotoken.net/api-keys 确认 Key 没被删404 通常是 base URL 多带了/v1改成https://taotoken.net/api即可。改完记得重新 export因为 spawn 继承的是启动时的环境。board serve 端口被占换端口--port 8081。SSE 推送依赖长连接如果前面有反向代理记得关掉对/api/events/的缓冲。6. 把骨架固定下来再往上加代理这套骨架跑通之后加代理就是重复clawteam spawn一条命令的事每个新代理自动拿到独立 worktree、独立 tmux 窗口、独立收件箱。真正需要你操心的只剩两件任务怎么拆、结果怎么合。如果你要长期跑多代理编码或 Agent 流水线建议把 Key 和通道固定成一套API Key 在 https://taotoken.net/api-keys 管理接入细节看文档 https://taotoken.net/doc 长期高频 spawn 的话 Coding Plan 在 https://taotoken.net/coding-plan 。Claude Code 系后端的接入说明在 https://taotoken.net/claude-code 。控制台总览在 https://taotoken.net/console 。最后留一个实用习惯每次大改配置后先跑clawteam config health再clawteam board show两步确认环境和状态都正常再 spawn 新代理。骨架稳了代理数量才有意义。
返回列表