跳转到主要内容

Beads

Beads 是一个面向编码 Agent 的图状 issue tracker。它的命令行工具叫 bd,底层存储使用 Dolt 这个带版本控制能力的 SQL 数据库。 它最值得关注的点不是“又一个待办清单”,而是给 Agent 一个结构化任务图,让长任务、多分支、多 Agent 协作和上下文压缩都更容易处理。

它解决什么问题

Markdown 计划很好起步,但任务一长就容易失控:
  • 依赖关系藏在自然语言里
  • 多个 Agent 可能改同一份计划文件
  • 已完成内容继续占上下文
  • 恢复任务时要重读大量描述
  • 分支、机器或 Agent 之间交接很脆弱
Beads 把任务状态变成数据库里的图。Agent 可以查询哪些任务已经 ready、声明自己要做哪一项、记录阻塞关系,并保留操作历史。

核心模型

Beads 把 issue 存成结构化记录,而不是纯文本笔记。 几个关键概念:
  • Issue:任务、bug、epic、消息或其他工作项。
  • 依赖关系:父子任务、阻塞、关联、重复和替代关系。
  • Ready 队列bd ready 列出当前没有开放阻塞的任务。
  • 声明任务bd update <id> --claim 让 Agent 原子化认领任务。
  • 压缩:旧的已关闭任务可以被总结,减少上下文消耗。
  • JSON 输出:命令设计上更方便 Agent 和脚本解析。
所以它更像 Agent 的外部记忆层,而不是只给人看的 issue 系统。

基本用法

先安装 CLI,再在项目里初始化:
brew install beads
cd your-project
bd init
然后告诉 Agent 使用它:
echo "Use 'bd' for task tracking" >> AGENTS.md
常用命令:
命令用途
bd ready列出没有阻塞的任务。
bd create "Title" -p 0创建高优先级任务。
bd update <id> --claim原子化认领任务。
bd dep add <child> <parent>添加依赖或层级关系。
bd show <id>查看详情和操作历史。

存储模式

Beads 主要有两种存储模式:
  • Embedded modebd init 使用进程内 Dolt 数据库,是默认模式,适合多数个人或单写者工作流。
  • Server modebd init --server 连接外部 dolt sql-server,更适合多写者并发访问。
它还支持通过 BEADS_DIRbd init --stealthgit-free usage,适合 CI、评测、monorepo、非 git 版本控制,或者不想污染共享仓库的个人任务跟踪。

什么时候用

这些场景可以考虑 Beads:
  • 编码任务会跨很多轮或很多天
  • 多个 Agent 或多个分支需要协作
  • 任务依赖比普通 checklist 更重要
  • 希望任务状态机器可读,而不是只写在自然语言计划里
  • 想保留进度,但不想把全部历史塞进 prompt
如果只是一次性小改动,普通 Markdown 更简单。只要任务开始变成长周期 Agent 工作流,Beads 就能给 harness 一个更可靠的外部记忆面。

它在 Agent harness 里的位置

在 Agent harness 设计里,Beads 属于记忆与协调层
  • 把任务状态从模型上下文里外化出来
  • 给 Agent 一个可查询的 ready 队列
  • 通过生成 ID 和结构化存储减少冲突
  • 让交接更容易,因为任务状态不再只藏在聊天历史里
它可以和 git worktree、browser harness、仓库里的 AGENTS.md 配合使用。背后的思路一样:把稳定状态从模型里拿出来,放进可检查的项目基础设施。

采用前要检查什么

  • 决定 .beads/ 应该提交、忽略,还是用 stealth mode。
  • 给 Agent 自动化时优先使用 JSON 输出。
  • 多 Agent 场景里,先测试认领任务和依赖更新。
  • 信任下载的二进制前,先确认校验和或签名策略。
  • 任务标题和依赖关系保持简短,方便 Agent 快速扫描。

参考资料

Last modified on April 27, 2026