AI的失忆症

想象你雇佣了一个才华横溢的程序员。他能解决复杂问题,编写干净代码,理解系统架构。但有个小缺陷:每隔几小时就会被清空记忆。所有工作从头开始。他不记得正在做什么,你们讨论过什么,也不理解代码为什么会是现在这样。

这就是Claude Code等AI代理的工作现状。

当上下文填满时(在真实项目中很快会发生),系统会执行"压缩"。说白了就是:总结对话并丢弃其他内容。问题在于这种总结会丢失细节、决策记录,尤其是任务当前状态。

解决方案?两个互补工具:你用的Linear和AI用的Beads。

Linear:产品视图

Linear是现代化任务管理系统。如果你用过Jira,可以想象它的反面:快速、简洁、不会让人想自戳双目。

我的使用场景

  • 产品待办项:功能、缺陷、史诗故事等业务级任务
  • 路线规划:优先级排序
  • 团队协作:其他成员(如果有)可以查看状态

实际案例

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

这些都是产品级任务,属于"做什么"。不涉及"怎么做",这是开发者…或者说你的AI代理的工作。

Beads:AI的记忆库

这就是Beads的用武之地,由Steve Yegge开发(就是那位以Google/Amazon吐槽闻名的工程师)。

Beads是内置在代码仓库中的任务跟踪系统。但不是给你用的,是给你的AI代理准备的持久记忆。

解决的问题

当我用Claude Code处理复杂任务时,常出现这种状况:

  1. 阅读Linear中的QIN-500任务
  2. 调研当前架构
  3. 制定5步实施方案
  4. 开始执行…
  5. 💥 内存压缩 💥
  6. “你好,我是Claude。有什么可以帮您?”

所有上下文、计划、进度…全部蒸发。就像电影《记忆碎片》,但没那么戏剧化,却更令人抓狂。

解决方案

使用Beads后,在压缩前会将状态持久化到仓库的.beads/目录:

bd create --title "调研现有主题系统" --priority P2
bd create --title "创建ThemeContext" --priority P2
bd create --title "在设置中添加切换按钮" --priority P2

内存压缩后,首先运行:

bd ready

立刻就能找回上下文:

📋 可继续任务 (2个无阻碍事项):

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

工作原理

Beads将所有数据存于代码库中:

你的项目/
└── .beads/
    ├── beads.db       # SQLite数据库
    ├── issues.jsonl   # 可版本化的问题记录
    └── config.yaml    # 配置文件

由于使用git管理,可以和代码一起版本控制。你可以查看历史、创建分支、合并…这是代码本身,不是外部服务。

协同工作:Linear + Beads

关键在于:它们不是竞争关系,而是互补关系。

维度LinearBeads
使用者人类AI
层级产品实现
粒度功能/史诗技术步骤
生命周期周/月小时/天
示例“添加深色模式”“创建ThemeContext”

实际工作流

人类(在Linear):
  QIN-500: 添加深色模式

CLAUDE(在Beads中记录过程):
  acme-a1b2: 调研主题系统 [已完成]
  acme-c3d4: 创建ThemeContext [进行中]
  acme-e5f6: 添加设置切换 [被c3d4阻塞]
  acme-g7h8: 深色模式测试 [被e5f6阻塞]

提交代码时:
  feat(web): 添加深色模式切换 (QIN-500)

Linear负责做什么,Beads记录怎么做。

快速安装指南

Beads

重要提示:CLI工具bd只需全局安装一次。但每个项目需要单独初始化.beads/。类似git:安装一次git,但每个仓库都要git init。

# 1. 全局安装CLI(仅需一次)
curl -fsSL https://raw.githubusercontent.com/gastownhall/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 你的项目
bd init

执行bd init后,项目目录会出现.beads/。需要决定:是否将其加入git(团队共享)或.gitignore(AI的私有记忆)?

我建议提交进git。这样其他人在同一仓库中使用Claude也能获得上下文。

Linear

Linear是Web服务。在linear.app注册即可。如果使用Claude Code,安装Linear的MCP插件让其能直接读写任务。

Beads核心命令

# 查看无阻碍任务
bd ready

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

# 查看详情
bd show acme-a1b2

# 关闭任务
bd close acme-a1b2 --reason "提交于abc123"

# 列出所有
bd list --all

# 查看依赖图
bd graph

是否值得?

如果你只用Claude Code处理小型独立任务,可能不需要Beads。一个临时TODO列表就够了。

但如果用于真实项目,涉及长时间会话且不可避免地触发内存压缩,上下文又很重要…那么Beads会区分出这是个有用助手还是健忘症患者。

最棒的是:由于数据存在代码库,不依赖任何外部服务。如果明天Beads消失,你的数据还在JSON文件里。另一个优点是社区提供了GUI工具,如果不喜欢CLI:beads-ui提供本地看板。

注意事项

Beads是新工具。有报告称与Opus 4.5存在兼容性问题。虽然我使用正常,但体验可能因人而异。

正如理性工程师会说的:先在次要项目测试,别急着用于关键任务。


一句话总结:Linear给你使用(制定计划),Beads给你的AI使用(记录进度)。它们共同避免每次内存压缩都从零开始。

现在请容我告退,有几个bead任务等着关闭。

本文原文为西班牙语,借助AI翻译。