问题:Agent 做长任务就像金鱼

你让 Claude Code 做一个重构任务——把一个单体应用拆成微服务。Agent 开始干活,写了一堆代码,改了 20 个文件。然后你发现它改错了方向,说「回退一下,换个方案」。

它一脸茫然:「什么方案?我之前做了什么?」

这就是 Coding Agent 的核心痛点:没有持久化的结构化记忆。

当前的解决方案要么是:

Beads 是什么

Beads(CLI 命令:bd)是一个分布式图结构 Issue 追踪器,底层用 Dolt(一个版本控制的 SQL 数据库)做存储。

一句话:它把 Git 的版本控制能力搬到了任务管理上,但数据结构是图,不是文件树。

每个任务(bead)是一个节点,节点之间有依赖关系(blocks、relates_to、duplicates、supersedes)。Agent 可以用 bd ready 查看「哪些任务没有被阻塞」,用 bd claim 原子性地认领任务,用 bd close 关闭任务。

它解决了什么问题

场景 Markdown 计划文件 Beads
任务依赖 手动写「先做 A 再做 B」 图结构依赖,bd ready 自动过滤
多 Agent 协作 文件冲突,互相覆盖 哈希 ID + Dolt 合并,零冲突
长任务记忆 上下文满了就丢 Dolt 持久化 + 语义压缩
跨会话连续性 重新读文件,可能过时 bd prime 注入最新状态
任务审计 Dolt commit 历史,完整审计链
多分支并行 每人一份计划,合并靠人 Dolt cell-level merge,自动合并

核心架构:为什么是 Dolt + 图

Beads 的设计哲学很明确:Agent 的任务管理应该像 Git 管理代码一样——有版本、有分支、有合并、有冲突解决。

Dolt 是一个 MySQL 兼容的版本控制数据库。这意味着:

图结构体现在任务之间的关系:

bd dep add bd-a1b2 bd-c3d4 --type blocks    # c3d4 阻塞 a1b2
bd dep add bd-a1b2 bd-e5f6 --type relates   # 相关
bd dep add bd-a1b2 bd-g7h8 --type parent    # 父子关系

Agent 执行 bd ready 时,Beads 会遍历依赖图,只返回没有未完成 blocker 的任务。这比 Markdown 里手写的「- [ ] 任务 A(依赖任务 B)」靠谱多了。

上手体验

# 安装
brew install beads           # macOS / Linux
npm install -g @beads/bd     # Node.js 用户

# 在项目中初始化
cd your-project
bd init

# 让 Agent 自动发现 Beads
bd setup claude   # Claude Code
bd setup codex    # Codex CLI
bd setup cursor   # Cursor

初始化后,bd init 会在项目根目录创建 AGENTS.md,告诉 Agent:「这个项目用 Beads 管理任务,用这些命令操作。」Agent 读到这个文件后,就会自动用 bd 命令而不是 Markdown TODO 来管理任务。

关键命令速查

# 创建任务
bd create "重构用户认证模块" -p 0          # P0 优先级
bd create "添加单元测试" -p 1

# 建立依赖
bd dep add bd-b2c3 bd-a1b2 --type blocks  # 测试阻塞重构

# Agent 工作流
bd ready --json                           # 可以做的任务
bd update bd-a1b2 --claim                 # 认领任务
bd update bd-a1b2 --status in_progress    # 开始干活
bd close bd-a1b2 "已完成重构"             # 关闭

# 持久化记忆
bd remember "JWT 密钥存在 env 里,不要硬编码"
bd prime                                  # 注入上下文给 Agent

踩坑与注意事项

跟现有方案对比

方案 持久化 依赖图 多 Agent 版本控制 学习成本
Markdown TODO ✅ 文件 ❌ 冲突
planning-with-files ✅ 文件 ⚠️ 手动
Linear / Jira ✅ 云
Beads ✅ Dolt ✅ 图 ✅ 零冲突 ✅ Dolt

Beads 的独特之处在于:它是唯一一个同时具备「图结构依赖 + 版本控制 + Agent 原生集成」的任务管理工具。Linear/Jira 功能更强但不是给 Agent 用的;Markdown 方案更轻但没有结构化能力。

什么时候该用 Beads

如果你只是让 Agent 改个 bug、写个函数,Beads 是过度设计。但如果你在用 Agent 做真正的工程任务——重构、迁移、多模块改造——Beads 是目前最靠谱的选择。

项目信息