你在 tmux 的各个 pane 中启动了六个 Claude Code 智能体。每个都认领了一个任务。它们都在产出内容,滚动速度快到你来不及阅读。一个刚提交了什么。另一个在跑测试。第三个已经可疑地安静了 20 分钟。
你完全不知道实际在发生什么。
这就是并行智能体工作流的核心问题。智能体本身是高效的。Claude Code 能认领工作、写代码、跑测试、通过结构化命令报告完成情况。但监督六个或十个智能体的人类没有汇总视图。你只能在 tmux pane 之间切换,翻阅终端历史,在脑中重建项目状态。
两个智能体还行。五个就撑不住了。
智能体如何通过 beads 汇报工作
基础是 beads,一个专为这种工作流设计的开源 Git 原生 issue 追踪器。beads 给智能体提供了结构化的方式来记录它们在做什么,也给你提供了结构化的方式来查询。每个智能体动作都变成了写入本地数据库的 CLI 命令。
当智能体开始工作时:
bd update bb-f8o --status in_progress --assignee agent-3
当它发现前置条件并创建新 issue 时:
BLOCKER=$(bd create \
--title "Auth middleware needs rate limiting before deploy" \
--type task --priority 1 --json | jq -r '.id')
bd dep add bb-f8o "$BLOCKER"
当它完成时:
bd update bb-f8o --status closed
bd comments add bb-f8o --author agent-3 \
"DONE: Implemented request throttling. Commit: a1c9e4f"
每个命令只需毫秒级时间。每个都写入同一个本地数据库。智能体不需要 API token、HTTP 客户端或认证流程。它们运行 shell 命令,就像运行 git commit 或 npm test 一样。
经过几个小时的并行工作,数据库中包含了完整的信息:谁在做什么、什么被阻塞了、什么刚完成、什么可以开始。信息就在那里。问题是如何看到它。
bd list 无法展示的东西
你可以在终端查询数据库:
bd list --status=in_progress
bd blocked
bd ready
每个命令都返回有用的数据。但它们以扁平文本的形式返回,每次只是一个快照。要了解项目状态,你运行 bd list,然后对几个 issue 运行 bd show,再运行 bd dep list 看什么阻塞了什么,接着 bd blocked 找到停滞的智能体。你手动拼凑全貌。
当智能体运行很快时(90 秒内关闭三个 issue,每个都解除不同下游任务的阻塞),CLI 跟不上变化速度。等你读完 bd blocked 的输出,其中两个阻塞已经解除了。
Beadbox 展示给你的
Beadbox 是一个原生桌面应用,它监听你的 .beads/ 目录,实时渲染完整的项目状态。当智能体在终端运行 bd update 时,Beadbox 在毫秒内通过 WebSocket 捕获文件系统变化并推送到 UI。不需要轮询,不需要刷新按钮,不需要在 tmux pane 之间切换来弄清谁做了什么。
具体来说你能看到:
Epic 进度树。 你的顶层功能显示 12 个子任务中有 7 个已完成。展开后你能看到哪些子任务正在进行(以及每个由哪个智能体负责)、哪些被阻塞、哪些刚变为可用。一眼就能替代十几条 bd show 命令。
每个 issue 上的依赖标签。 你立刻就能看到 bb-q3l 在等待 bb-f8o,不需要运行任何命令。当 bb-f8o 关闭时,bb-q3l 亮起未阻塞标识。这种级联关系在发生的同时就可见了。
阻塞任务高亮。 每个被阻塞的 issue 都会显示其阻塞依赖。你不用去找阻塞项。它们在屏幕上,按优先级排序,在产生的瞬间就出现了。
多工作区切换。 如果你在多个项目中运行智能体,可以通过下拉菜单在 beads 数据库之间切换。每个工作区记住自己的筛选器和视图状态。
实时同步。 更新管道是 .beads/ 目录上的 fs.watch,通过 WebSocket 推送到 React UI。亚秒级传播意味着你在智能体活动发生时就能看到,而不是等 30 秒的轮询间隔。
监控工作流
当 Beadbox 和你的 tmux session 并排打开后,监控就从主动调查变成了模式识别。以下是需要关注的信号:
长时间处于 in-progress 的任务。 一个智能体两小时前认领了任务但没有更新。在人类工作流中,两小时不算什么。对智能体来说,这么长的沉默是一个警示信号。检查 tmux pane,提醒智能体,或重新分配工作。
阻塞任务堆积。 如果阻塞任务不断增加,而且都指向同一个未解决的依赖,那个依赖就是你的关键路径。提升它的优先级,分配你最快的智能体,或者自己来解决。
虚假依赖。 智能体在规划阶段倾向于过度声明依赖。它们根据对代码库的初始理解来建模所需的前置条件。开始工作后,很多依赖其实是不必要的。当你发现一个被阻塞的任务其依赖看起来不对时,移除它:
bd dep remove bb-q3l bb-f8o
一条命令立即解除阻塞。在 Beadbox 中,你会看到它实时从 blocked 变为 available。
没有负责人的就绪任务。 在一连串解除阻塞之后,你可能有五个任务突然变为可用但没有分配智能体。这就是你的调度时刻。将空闲智能体指向最高优先级的就绪工作。
分类循环很简单:扫描阻塞、解决或重新分配、扫描就绪工作、调度。Beadbox 让每次扫描变成一眼,而不是一系列 CLI 命令。
为什么规模很重要
两个智能体,你可以通过看终端来监督。三四个,你开始跟不上。六到十个,你需要监控工具。
智能体本身不是瓶颈。Claude Code 很快。它写代码、跑测试、对失败进行迭代,不需要等你。瓶颈在于监督者看全局的能力:哪些智能体在产出、哪些卡住了、关键路径在哪里、什么刚刚变得可用。
实时可视化面板把这个过程从一项调查(运行五个命令,阅读输出,在脑中保持状态)转化为一次扫视(看屏幕)。这个差异在一整天的并行智能体协调中不断累积。
开始使用
通过 Homebrew 安装 Beadbox:
brew tap beadbox/cask && brew install --cask beadbox
如果你的智能体已经在使用 beads,Beadbox 会自动检测现有的 .beads/ 工作区。打开应用,你的 issue 就在那里。无需导入步骤、无需账号注册、无需云同步。你的数据留在你的机器上。
如果你是 beads 新手,安装 CLI(go install github.com/steveyegge/beads/cmd/bd@latest),在项目中运行 bd init,然后开始给智能体分配工作。Beadbox 会在它们执行操作的那一刻展示所有信息。
Beadbox 可在 macOS、Linux 和 Windows 上运行。Beta 期间免费。
