机器人的失忆症

想象一下,你雇佣了一个才华横溢的程序员。他能解决复杂问题,写出整洁的代码,理解你的架构。但他有一个小缺陷:每隔几个小时就会被抹掉记忆。重新从零开始。不记得自己在做什么,不记得你们一起做的决定,也不记得代码为什么是现在这样。

这正是 Claude Code 和其他 AI 代理发生的情况。

当上下文满了(如果你在真实项目中工作,它会很快满),系统就会进行"压缩"。通俗地说:总结对话并丢弃其他所有内容。问题在于这种总结会丢失细节、决策,特别是正在进行的任务状态。

解决方案?两个相互补充的工具:Linear 给你用,Beads 给你的 AI 用。

Linear:你的产品视图

Linear 是一个现代的问题管理器。如果你用过 Jira,想象一下它的反面:快速、简洁,不会让你想挖掉眼睛。

我用它做什么

  • 产品待办事项:功能、bug、史诗。所有业务层面需要完成的事情
  • 路线图:什么先做,什么后做
  • 沟通:团队其他成员(如果有的话)可以看到状态

真实例子

QIN-500: 为应用添加暗黑模式
QIN-501: 优化图片加载
QIN-502: 集成支付网关

这些是产品任务。它们是"需要做什么"。不说明如何做。那是开发者的工作……或者你的 AI 代理的工作。

Beads:你 AI 的记忆

这里就轮到 Beads 登场了,由 Steve Yegge(Google 和 Amazon 著名咆哮文章的作者)创建。

Beads 是一个生活在你代码库内的问题跟踪器。但它不是给你用的,是给你的 AI 代理用的。它是 AI 的持久化内存。

它解决的问题

当我用 Claude Code 处理复杂任务时,会发生这样的情况:

  1. 阅读 Linear 中的问题 QIN-500
  2. 研究当前架构
  3. 创建一个 5 步的心理计划
  4. 开始实施…
  5. 💥 压缩 💥
  6. “你好,我是 Claude。有什么可以帮你的吗?”

所有的上下文、计划、进度……蒸发了。就像电影《记忆碎片》,但没那么电影化,更让人沮丧。

解决方案

使用 Beads,在压缩之前,状态会持久化到代码库的 .beads/ 中:

1
2
3
bd create --title "研究当前主题系统" --priority P2
bd create --title "创建 ThemeContext" --priority P2
bd create --title "在设置中添加切换按钮" --priority P2

压缩后,我做的第一件事是:

1
bd ready

然后砰:我确切地知道自己在哪里。

📋 Ready work (2 issues with no blockers):

1. [P2] qinqin-a3f2: 创建 ThemeContext
2. [P2] qinqin-b4c5: 在设置中添加切换按钮

工作原理

Beads 把所有内容保存在你的代码库中:

your-project/
└── .beads/
    ├── beads.db       # SQLite 数据库
    ├── issues.jsonl   # 可版本控制格式的问题
    └── config.yaml    # 配置

因为它在 git 中,所以会和你的代码一起版本控制。你可以查看历史、分支、合并……它是代码,不是外部服务。

共存:Linear + Beads

诀窍在于:它们不竞争,而是互补。

方面LinearBeads
用户你(人类)你的 AI
级别产品实现
粒度功能、史诗技术步骤
生命周期周/月小时/天
示例“添加暗黑模式”“创建 ThemeContext”

实践中的流程

你(在 Linear 中):
  QIN-500: 添加暗黑模式

CLAUDE(在 Beads 中,会话期间):
  qinqin-a1b2: 研究主题系统 [完成]
  qinqin-c3d4: 创建 ThemeContext [进行中]
  qinqin-e5f6: 在设置中添加切换按钮 [被 c3d4 阻塞]
  qinqin-g7h8: 暗黑模式测试 [被 e5f6 阻塞]

提交(完成时):
  feat(web): add dark mode toggle (QIN-500)

Linear 有什么。Beads 有怎么做

快速安装

Beads

重要:CLI bd 在你的系统上安装一次。但 .beads/每个项目中初始化。就像 git:安装 git 一次,但在每个仓库中执行 git init

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 1. 安装 CLI(一次性,全局)
curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash

# 2. 添加到 PATH(如果没有自动完成)
# 在 fish 中:
fish_add_path ~/.local/bin
# 在 bash/zsh 中:
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc

# 3. 配置与 Claude Code 的集成(一次性)
bd setup claude

# 4. 在每个想要使用的项目中初始化
cd your-project
bd init

执行 bd init 后,你会在项目中看到一个 .beads/ 目录。决定一下:把它提交到仓库(与团队共享)还是添加到 .gitignore(你 AI 的私有记忆)?

我会提交它。这样如果其他人也在同一个仓库中使用 Claude,他们就有了上下文。

Linear

Linear 是一个网络服务。在 linear.app 创建账户就行。如果你使用 Claude Code,安装 Linear 的 MCP 让它可以直接读取和创建问题。

Beads 的基本命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 查看没有阻塞的任务
bd ready

# 创建任务
bd create --title "实现功能 X" --priority P2

# 查看详情
bd show qinqin-a1b2

# 关闭任务
bd close qinqin-a1b2 --reason "在 abc123 中提交"

# 列出所有
bd list --all

# 查看依赖图
bd graph

值得吗?

看,如果你用 Claude Code 处理小的、独立的任务,你可能不需要 Beads。一个临时的 TodoWrite 就足够了。

但如果你在真实项目中工作,有不可避免会压缩的长会话,有重要的上下文……那么 Beads 就是拥有有用助手和患有阿尔茨海默症助手之间的区别。

最棒的是:因为它存在于代码库中,你不依赖任何外部服务。如果明天 Beads 消失了,你的数据还在 JSON 中。另一个好处是如果你不喜欢 CLI,还有社区 UI:beads-ui 为你提供本地看板。

警告

Beads 是新的。有报告说它与 Opus 4.5 配合不完美。我这里运行良好,但你的体验可能不同。

如一个明智的工程师会说:在投入之前,先在次要项目中试试。


总结:Linear 是给你用的(做什么)。Beads 是给你的 AI 用的(如何做)。结合使用,避免每次压缩都从零重启。

现在如果你不介意的话,我得去关闭一些 beads。