3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

beads とは ― AI コーディングエージェントに「依存関係を理解した永続メモリ」を持たせる分散グラフ型イシュートラッカー

3
Last updated at Posted at 2026-05-14

image.png

はじめに 🎯

AI コーディングエージェントを実務で運用していくと、必ずぶつかる壁があります。「セッションをまたいだタスクの記憶と、タスク同士の依存関係をどう管理するか」 という壁です。

Claude Code / Codex / Cursor などのエージェントは、1回のセッションでは驚くほどの作業をこなしますが、長時間の作業を任せようとすると以下のような問題が起きます。

  • マークダウンの TODO リストはセッション間で同期が壊れる
  • 「このタスクが先」「あれはこれの前に終わらせて」という依存関係を毎回説明し直す必要がある
  • 並列エージェント運用では、同じ番号のチケットが別の意味で書き込まれて衝突する
  • 古い完了タスクがコンテキスト枠を食い続ける

これらを解決するために登場したのが beads(bd) です。リポジトリの説明そのままに引用すれば「Distributed graph issue tracker for AI agents, powered by Dolt」――AI エージェント向けの 分散グラフ型イシュートラッカー で、バージョン管理付き SQL データベースの Dolt をストレージ基盤に採用しています。

GitHub リポジトリの description には「A memory upgrade for your coding agent」と添えられています。マークダウンの散らかった作業計画を、依存関係を理解したグラフに置き換え、長期的なタスクをコンテキストを失わずに扱えるようにする、というのが beads の存在意義です。

この記事で得られること:

  • 🪞 マークダウン TODO が抱える限界と、beads が解決する課題
  • 🏗️ Dolt をストレージにした「2層アーキテクチャ」と書き込み・読み取りの流れ
  • 🛠️ 基本コマンド(bd init / bd ready / bd update --claim / bd close)の使い方と「ready 検出」のロジック
  • 🕸️ 4種類の依存関係(blocks / parent-child / related / discovered-from)の使い分け
  • 🧠 bd primebd remember と Compaction による「永続メモリ」の設計
  • 👥 並列マルチエージェント運用での衝突回避(Hash-based ID)

なぜ beads が必要か 🪞

beads の存在意義を掴むには、まず 「エージェントにマークダウン TODO を書かせると何が起きるか」 を見ておくのが早いです。

マークダウン TODO の限界

エージェントに作業を指示するとき、つい以下のような書き方をします。

# TODO
- [ ] データベースをセットアップ
- [ ] API を実装
- [ ] 認証機能を追加

これは1セッションの中では機能しますが、次のセッションでエージェントを起動すると 「どこまで終わったのか」「次に着手すべきはどれか」が曖昧 になります。さらに以下の問題があります。

  • 依存関係が表現できない: 「認証機能はAPIの後」という関係を毎回口頭で説明する必要がある
  • 並列実行を想定していない: 複数エージェントが同じファイルに書き込むと TODO が壊れる
  • 永続的なメモリにならない: 完了タスクをいつ消すべきか、エージェントは判断できない

beads が提示する解

beads は同じ作業を 依存関係付きのグラフ として表現します。

この図のポイントは、beads が「次に何をやるべきか」を機械的に決められる ことです。bd ready というコマンドは、ブロッキング依存関係のないタスク だけを返してくれます。エージェントは「次は何?」と毎回考えなくてよく、bd ready の結果を取って bd update --claim で着手すれば、依存関係に沿った正しい順番で作業が進みます。

💡 マークダウン TODO とイシュートラッカーの最大の差は「依存関係を計算できるか」です。beads はこの計算結果(ready キュー)を、エージェントが扱いやすい JSON 形式で返してくれます。


アーキテクチャ概観 🏗️

beads の中核は、Dolt(バージョン管理付き SQL データベース) をストレージとした2層アーキテクチャです。公式ドキュメント docs/ARCHITECTURE.md ではこれを「The Two-Layer Data Model」と呼んでいます。

この図のポイントは、Dolt が「ローカル SQL データベース」と「分散同期可能なリモート」の両方を1つの実体で兼ねている ことです。普通のイシュートラッカー(GitHub Issues 等)は中央のサーバに常時接続する必要がありますが、beads は オフラインで完結し、必要なときに bd dolt push/pull で同期 という Git ライクな運用ができます。

Dolt を選んだ理由

Dolt はバージョン管理付きの SQL データベースで、以下が beads にとって都合がよい特徴です。

Dolt の特徴 beads にとっての価値
ミリ秒のクエリ性能と SQL 互換 エージェントが大量のイシューを瞬時に検索できる
自動コミット(書き込みごとにバージョン履歴) 完全な監査証跡(audit trail)が標準で得られる
Cell-level merge 並列ブランチでイシューを編集しても、フィールド単位で自動マージ
Dolt remotes(DoltHub / S3 / GCS) 専用同期サーバを立てる必要がない
ネイティブの push / pull コードと同じ Git 的な運用感覚

書き込みと読み取りのパス

beads のすべてのコマンドは、ローカルの Dolt データベースを直接読み書きします。

この図のポイントは、読み書きが常にローカルで完結し、ネットワーク遅延の影響を受けない ことです。bd dolt push/pull を明示的に叩いたときだけリモートと同期するため、ネットワーク断や CI 環境でも問題なく動きます。


インストールと初期化 ⚙️

beads は システムワイドに1度インストールすれば、全プロジェクトで使える CLI ツールです。プロジェクトごとに beads リポジトリをクローンする必要はありません。

インストール方法

# 推奨: Homebrew(macOS / Linux)
brew install beads

# Node.js ユーザー
npm install -g @beads/bd

# 公式インストールスクリプト
curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash

Windows / Arch / Go install など他の手段は docs/INSTALLING.md を参照してください。インストール後、bd --help で疎通確認できます。

プロジェクトの初期化

プロジェクトディレクトリで bd init を実行すると、.beads/ ディレクトリと埋め込み Dolt データベースが作成されます。同時に AGENTS.md が自動生成または更新され、エージェントが beads のワークフローを発見できるようになります。

cd your-project
bd init

bd init には複数のフレーバーがあります。状況に合わせて選択してください。

コマンド 用途
bd init 通常の初期化。AGENTS.md を作成・更新
bd init --quiet AI エージェント向け(対話を抑制)
bd init --contributor OSS コントリビューター向け(planning を別リポジトリに分離)
bd init --stealth git にコミットせずローカル利用(個人用)
bd init --server Dolt サーバモード(複数書き込み可)
bd init --skip-agents AGENTS.md を作らない

エージェント別の追加セットアップ

bd setup <agent> で、各エージェント向けの詳細な指示やフックを導入できます。

bd setup codex      # Codex CLI 向けに AGENTS.md を強化
bd setup claude     # Claude Code 向けのフック / 設定をインストール
bd setup factory    # Factory.ai Droid 向け
bd setup cursor     # Cursor IDE
bd setup mux        # mux 向け

対応エージェントの全リストは bd setup --list で確認できます。サポート対象外のエージェントを使う場合は bd onboard を実行し、表示されたスニペットを手動でエージェントの指示ファイルにペーストします。

この図のポイントは、「インストール → init → setup」の3ステップで主要エージェントに対応できる ことです。bd init の段階で AGENTS.md が用意されるので、最小構成ならその時点で動き始めます。


基本コマンドと「ready」フロー 🛠️

beads の使い方は、シンプルな数個のコマンドに集約されます。エージェントが日常的に叩くコマンドはこれです。

Essential Commands

コマンド 動作
bd ready ブロッキング依存関係のないタスクを一覧表示
bd create "Title" -p 0 P0(critical)優先度でタスクを作成
bd update <id> --claim タスクをアトミックに claim(assignee 設定 + in_progress化)
bd dep add <child> <parent> 依存関係(blocks / related / parent-child)を追加
bd show <id> タスクの詳細と監査ログを表示
bd close <id> "reason" タスクを閉じる
bd prime エージェント向けのワークフロー context と永続メモリを出力
bd remember "insight" プロジェクトメモリとして永続保存(次回の bd prime で注入される)

典型的なフロー

たとえば「DB セットアップ → API 実装 → 認証機能追加」という3タスクを並べる場合、こうなります。

# 1. タスク作成
bd create "Set up database" -p 1 -t task
bd create "Create API"      -p 2 -t feature
bd create "Add authentication" -p 2 -t feature

# 2. 依存関係を貼る(bd-2 は bd-1 に blocked、bd-3 は bd-2 に blocked)
bd dep add bd-2 bd-1
bd dep add bd-3 bd-2

# 3. ready なタスクを確認
bd ready
# → bd-1 のみが返る(bd-2 と bd-3 はブロックされている)

# 4. 着手
bd update bd-1 --claim

# 5. 完了
bd close bd-1 --reason "Database setup complete"

# 6. もう一度 ready 確認
bd ready
# → bd-2 が ready になる

ステータスとプライオリティ

イシューの ステータス遷移 は次のとおりです。

この図のポイントは、open in_progress closed の基本3状態に加えて、blocked / deferred / tombstone / pinned / hooked といった補助ステータスが揃っている ことです。blocked は依存関係の計算結果として自動で付与されるため、エージェントは「これは今やれるか」を考えずに bd ready の結果だけ見れば判断できます。

優先度(priority)は 0〜4 の整数値 で、0 が critical / 4 が backlog です。Issue type も豊富で、bug / feature / task / epic / chore / message / merge-request / molecule / gate / agent / role / convoy から選べます。

💡 bd ready --explain を使うと、なぜそのタスクが ready なのか/なぜ他のタスクが ready でないのかを表示してくれます。デバッグ用に便利です。


依存関係グラフ 🕸️

beads の真価は 依存関係を4種類のタイプで使い分けられる ところにあります。

4種類の依存タイプ

タイプ 意味 bd ready への影響
blocks X が close するまで Y は始められない あり(最も強い縛り)
parent-child エピック↔サブタスクの階層関係 あり(親がブロックなら子もブロック)
related 参考リンク程度のソフトな関連 なし
discovered-from 作業中に派生して見つかった なし

この図のポイントは、blocksparent-child だけが ready 計算に影響を与え、relateddiscovered-from は「情報リンク」として扱われる ことです。後者の2つは「ナレッジグラフ」を構築するための弱い関連で、ready キューを汚しません。

階層 ID(hierarchical IDs)

beads は階層的な ID もサポートしています。

  • bd-a3f8 ― Epic
  • bd-a3f8.1 ― Task(Epic の子)
  • bd-a3f8.1.1 ― Sub-task(Task の子)

ID を見ただけで階層構造が分かるので、エージェントへの説明コストが下がります。

💡 「分析中に見つけた」というケースに discovered-from を使うと、ready キューに混入させずにナレッジとして残せます。実装中に脱線して見つけたバグや改善点を雑に拾うのに便利です。


メモリの仕組み 🧠

beads が「memory upgrade」と自称しているとおり、永続メモリ機能は中核機能の1つです。3つの仕組みが連携します。

bd prime ― エージェントへの context 注入

bd prime は、エージェントが新しいセッションを始めるときに 最初に叩くべきコマンド です。これを実行すると以下が出力されます。

  • 現在のプロジェクトの beads ワークフロー context
  • 使えるコマンドのガイダンス
  • 過去に bd remember で保存した永続メモリ

エージェントはこれを読み込むことで、前回のセッションで得た知見を引き継いだ状態 で作業を始められます。

bd remember ― 永続メモリの保存

bd remember "FastAPI のバージョンは 0.115。3.13 では asyncio の挙動が変わる"

セッション中に得た洞察を bd remember で保存すると、それが Dolt データベースに永続化され、次回以降の bd prime で自動的に再注入されます。

💡 公式のセットアップ手順では「MEMORY.md ファイルを作るな」と明示されています。beads がメモリ管理を担うため、二重管理になるのを避ける設計です。

Compaction ― 「semantic memory decay」

長期間運用していると、過去に閉じたタスクが膨大になり、エージェントのコンテキスト枠を圧迫します。beads はこれに対し Compaction(圧縮) と呼ぶ仕組みで、古いクローズ済みタスクを 意味的に要約 して保持します。

この図のポイントは、「古いタスクを完全に捨てるのではなく、要約として残す」 という設計思想です。完全な履歴は Dolt のバージョン管理に残っているため、必要なら遡れます。直近の作業のコンテキストだけを軽く保ちながら、過去のナレッジも失わない、というバランスを取っています。


マルチエージェント運用 👥

複数のエージェント、複数のブランチで同時にタスクを書き込むと、普通のシーケンシャル ID では衝突が起きます。beads はこれを Hash-based ID で構造的に防いでいます。

Hash-based ID による衝突回避

シーケンシャル ID の問題はこうです。

beads はこれを ランダム UUID 由来の短いハッシュ ID に置き換えています。

ID 長は当初4文字(例: bd-a1b2)から始まり、データベースが大きくなるにつれ 5文字・6文字へ段階的に伸びる 仕組みです。衝突確率の数学的根拠は docs/COLLISION_MATH.md に「誕生日のパラドックス」計算として記載されています。

Cell-level merge とコンテンツハッシュ

同じ ID のイシューが別ブランチで編集されたときも、Dolt の cell-level mergeフィールド単位 にマージされます。さらに各イシューには コンテンツハッシュ が振られており、マージロジックはこう動きます。

  • 同じ ID + 同じハッシュ → スキップ(既に同一)
  • 同じ ID + 異なるハッシュ → 更新(新しいバージョンとして取り込み)
  • 新しい ID → 作成

中央サーバを介さずに、すべての参加者が同じ最終状態に収束する設計です。

Stealth Mode と Contributor Mode

マルチエージェント運用で便利な2つのモードを紹介します。

  • bd init --stealth: git にコミットせず、ローカルに .beads/ だけ持つ運用。共有プロジェクトで個人的に使いたいときに便利
  • bd init --contributor: OSS コントリビューターが planning issue を別リポジトリ(例: ~/.beads-planning)にルーティングし、PR に混入させない

💡 メンテナー / コントリビューターの自動判定は、SSH URL か HTTPS の認証情報の有無で決まります。HTTPS で書き込み権限があるのに自動判定されないときは git config beads.role maintainer を明示的に設定します。


ストレージモードと同期 💾

beads のストレージは2モードあります。

Embedded Mode(デフォルト)

bd init

Dolt をプロセス内で動かす単一書き込みモード。データは .beads/embeddeddolt/ に保持されます。ほとんどのユーザーはこのモードでよい とドキュメントは推奨しています。

Server Mode

bd init --server

外部の dolt sql-server に接続して 複数書き込みを許容 するモード。データは .beads/dolt/ に格納されます。接続は CLI フラグまたは環境変数で指定します。

Flag Env Var デフォルト
--server-host BEADS_DOLT_SERVER_HOST 127.0.0.1
--server-port BEADS_DOLT_SERVER_PORT 3307
--server-socket BEADS_DOLT_SERVER_SOCKET (なし、TCP 使用)
--server-user BEADS_DOLT_SERVER_USER root

Unix ドメインソケットも --server-socket で指定可能で、ポート競合を避けたいときや Claude Code のようなサンドボックス環境で有効です。

バックアップとマイグレーション

# バックアップ先を設定して push
bd backup init /path/to/backup
bd backup sync

# 新規プロジェクトに復元
bd init  # または bd init --server
bd backup restore --force /path/to/backup

bd backup は Dolt ネイティブのバックアップ機能で、コミット履歴も含めて保存・復元できます。bd export を使うと JSONL 形式での書き出しもできるため、他システムへの移行や互換性確保にも使えます。

Notion 連携

beads は Notion との同期も提供しています。

bd config set notion.token <token>
bd notion init --parent <page-id>
bd notion sync --dry-run  # プレビュー
bd notion sync            # 実際の同期

エージェントは beads で機械的に作業し、人間は Notion で全体を眺める、というハイブリッド運用がやりやすくなります。


まとめ 🏁

beads の本質を3つに絞ります。

# キーメッセージ
依存関係を理解したグラフ で、AI エージェントは「次に何をすべきか」を機械的に判断できる。マークダウン TODO の限界を超えるための土台
Dolt をストレージにすることで、バージョン管理・cell-level merge・分散同期がすべて1つの実体で得られる。中央サーバ不要
Hash-based ID と Compaction が、マルチエージェント並列運用と長期メモリ管理の両方を同時に解決する

明日から試すなら

最初の一歩は、こう進めるのを推奨します。

  1. インストール: brew install beads(または npm install -g @beads/bd
  2. 小さなプロジェクトで初期化: cd your-project && bd init
  3. エージェント連携を設定: bd setup claude / bd setup codex など、使っているエージェントに合わせて
  4. タスクを3個ほど作って依存関係を貼る: bd createbd dep addbd ready で挙動を確認
  5. bd remember で永続メモリを試す: セッションを再起動して bd prime で再注入されることを体感する

おわりに

AI エージェントを「ぶっつけ本番のチャット」から「組織で運用できるシステム」へ引き上げるには、永続メモリ × 依存関係グラフ という土台がいります。beads はその土台を、インストール1回・コマンド数個 という低い摩擦で提供してくれます。

完璧なツールではありません。Notion との同期、Dolt のリモート選択、Stealth/Contributor の使い分けなど、運用には学習コストがそれなりにあります。それでも、長時間の自律作業や複数エージェント並列運用を本気でやろうとするなら、検討する価値のある選択肢 だと感じています。

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?