27,616 颗星的 Beads:Steve Yegge 给 Coding Agent 装上的「金鱼记忆」解药
27,616 颗星的 Beads:Steve Yegge 给 Coding Agent 装上的「金鱼记忆」解药
你有没有这种体验:让 Claude Code 或 Cursor 修一个稍微大点的 bug,开头十分钟它思路清晰、改得稳;聊到第五十条消息,它开始忘——刚才修过什么、下一步该做什么、谁依赖谁,最后干脆把任务标成”完成”再 hallucinate 一个 PR 出来。VirtusLab 把这种症状叫”AI 金鱼记忆”。
gastownhall/beads 这个仓库干的就是这件事:给 Coding Agent 装一套持久化、结构化、带依赖图的工作记忆。它在 27,616 颗星、4,293 个 Fork 的体量下,已经从最初的 JSONL + SQLite 一路演化到今天的 v1.3.1(2026-09-30 发布),由 Dolt 这个”Git for Data”做底座。它的作者是 Steve Yegge——前 Google、Amazon 工程师,Sourcegraph 现任——所以你可以把它看成”老炮儿程序员对 Coding Agent 工业级缺陷的一次正面回应”。
它到底是什么
官方一句话定义:”Distributed graph issue tracker for AI agents, powered by Dolt”。不要被”issue tracker”骗了——它不是给人类用的 Jira,也不是给团队的 Linear。它是给 LLM 当外部记忆体的依赖图数据库:
- 持久化:记忆跨 session、跨崩溃、跨模型切换都能续上
- 图结构:任务之间有依赖(blocks / parent-child / relates-to),下游任务在前置未 close 时不会出现在 ready 列表
- Agent UX:JSON 输出、hash ID(bd-a1b2)、hash 抗冲突、JSONL 增量追加——所有设计都让 LLM 少烧 token、少走弯路
核心命令只有六七个:
bd create "fix auth bug" -p 1 -t bug
bd ready # 看现在能做的(依赖已解开)
bd update bd-a1b2 --claim # 原子认领,assignee + in_progress
bd dep add <child> <parent> # 建依赖
bd show bd-a1b2
bd close bd-a1b2 "fixed"
bd prime # 注入 Agent 工作流上下文
bd prime 这条特别关键:它把项目的事实、agent 工作流、AGENTS.md 上下文一次性打印出来,相当于给 Agent 喂了份”项目记忆 manifest”。
为什么不是又一个 Markdown TODO 列表
VirtusLab 在 GitHub All-Stars #12 里拆得非常到位:Markdown 是自由文本,Agent 改它的时候会把计划删一半;两个 Agent 并行改同一个 TODO.md,Git merge 直接冲突。Beads 的解法是”把任务当成数据库行”:
- 存储:从 JSONL(v0.x)演化到 Dolt SQL(v1.x),数据落在
.beads/embeddeddolt/或.beads/dolt/,git 远程走refs/dolt/data分支 - 冲突解决:每个 bead 有 hash ID,两个并行 branch 创建的同名任务不会撞车,merge 自然 friendly
- 崩溃恢复:append-only 日志,中途崩了最多丢最后一行,文件不损坏;SQLite/Dolt 缓存可以随时从日志重建
到 v1.3.x,又多了一个”proxied-server”模式:默认起一个 Dolt sql-server,多个 Agent 多端写不打架;这解决了单进程内嵌 Dolt 写并发卡顿的痛点。补丁清单里还顺手修了 fan-in stall——两个 blocker 同时 close 时,被依赖的任务以前可能停在 is_blocked=1 不进 ready。
和 GasTown 的边界
Beeds 是从 GasTown 拆出来的”组件”。GasTown 是 Yegge 那个”管理 AI Agent 群”的宏大 IDE 环境;Beads 是它底下那层”任务账本”。换句话说——
- 想要 Agent 协同编排(多 Agent 角色、Convoy、Mayor):用 GasTown
- 只想要”任务持久化 + 依赖图”这一件事:用 Beads 即可,不必上 GasTown
Okhlopkov 的 Beads vs Gastown 里更直接:framework 是”别人心智模型的轨道”,与其全套 install 不如 cherry-pick。而且据他说 Anthropic 已经受 Beads 启发把 Claude Code 自己的 todo 升级成了完整 task tracker——这部分功能会逐步被收编回 first-party。
上手门槛
真实安装时间:5 分钟。
brew install beads # macOS / Linux 推荐
# 或
npm install -g @beads/bd # Node 党
# 或一行脚本:curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
cd your-project
bd init # 初始化 .beads/,自动写一份 AGENTS.md
bd setup claude # 装 Claude Code hooks
# 或 bd setup codex / factory / cursor / mux
跑 bd init 后,Agent 启动时会自动读到 AGENTS.md 里的提示,然后自己 bd prime 拉上下文。不需要手动粘 prompt。
但要清醒:Beads 不是灵丹。它有真实门槛——
- 你得在用 AI Agent(Cursor / Claude Code / Codex / Factory.ai / Mux),纯手写代码用不到
- 你得接受命令行;终端恐惧症别碰
- 它存状态靠 Dolt,跨机器同步走 git remote,多人协作需要约定
bd dolt push/pull时机 - Windows 装得动但生态偏 Linux/Mac
- v1.3 跨大版本升级要按
bd info --whats-new+bd hooks install+bd version三步走,不要裸换 binary
适合谁:每天和 Claude Code 较劲、个人/小团队想给 Agent 装”长期记忆”的工程师。
不适合谁:纯前端可视化爱好者(社区工具有但还在追)、只想找 ToDo app 的人、用不上 AI Agent 的项目。
下一步建议
- 先在一个真实项目里
brew install beads && bd init,跑半小时bd ready→bd claim→bd close循环,看依赖图对不对得上你的开发直觉 - 把
bd remember "项目里的重要约定"用起来——这是把”AI 重复犯同一个错”治掉的最快路径 - 如果已经在用 Claude Code,跑
bd setup claude装 hooks,让 Agent 启动即拉bd prime,别手动提示 - 跨机器协作时再读 v1.3 升级指南 和 Dolt backend 文档,别一上来就开 server 模式
仓库:https://github.com/gastownhall/beads
文档:https://beads.gascity.com/
讨论与评测:https://virtuslab.com/blog/ai/beads-give-ai-memory、https://okhlopkov.com/en-beads-gastown-framework-ai-agents
v1.3.1 Release Notes:https://github.com/gastownhall/beads/releases
评论区
登录后可评论。