2024年から2025年にかけて、Claude CodeやCopilotなど、AIコーディングエージェントが実用レベルに達し、多くの開発者が日常的にAIと協業するようになりました。しかし、ここで見過ごされがちな問題があります。それは「AIエージェントには記憶がない」という事実です。
大規模言語モデル(LLM)はコンテキストウィンドウの制限があり、長時間の作業や複数セッションにまたがるプロジェクトでは、過去の文脈を忘れてしまいます。人間であれば「昨日話したあの件」と言えば通じるところが、AIエージェントは毎回ゼロからの出発になってしまうのです。
この問題を根本的に解決するために生まれたのが「beads」です。beadsはAIエージェント専用に設計されたタスク管理システムで、エージェントの記憶を永続化し、複雑なプロジェクトでも一貫した作業を可能にします。
beadsは、Steve Yegge氏によって開発されたオープンソースのイシュートラッカーです。従来のJiraやGitHub Issuesとは根本的に異なり、人間ではなくAIコーディングエージェントが主体的に使用することを前提に設計されています。
beadsの核心的な特徴は「グラフベースの依存関係管理」にあります。イシュー同士が4種類の依存関係(blocks、related、parent-child、discovered-from)で結びつけられ、ちょうど数珠(beads)のように連なっています。この構造により、AIエージェントは複雑なタスクの流れを長距離にわたって追跡でき、正しい順序で作業を遂行できます。
技術的に興味深いのは、beadsがGitを活用した分散データベースとして機能する点です。ローカルにはSQLiteキャッシュがあり、ソースオブトゥルースはJSONL形式でGitに保存されます。これにより、中央サーバーなしで、複数のマシンで作業するエージェントたちが単一のデータベースを共有しているかのように振る舞います。
PostgreSQLもMySQLも、ホスティングサービスも不要。Gitをクローンするだけで、全員が同じ「データベース」に接続できます。この設計思想は、AIエージェントとの協業において極めて合理的です。
beadsの導入は驚くほど簡単です。プロジェクトルートで以下を実行するだけです:
その後、プロジェクトのAGENTS.mdに一行追加するだけ:
これだけで、AIエージェントが次回起動時に自動的にbeadsを認識し、使い始めます。
従来のタスク管理ツールでは、人間がイシューを作成し、ステータスを更新し、完了をマークしていました。beadsでは、この作業の大部分をAIエージェントが担います。
例えば、コードレビュー中にバグを発見した場合、エージェントは自動的にイシューを作成します:
さらに、このバグが別のタスクの作業中に発見されたものであれば、依存関係も自動設定されます:
これにより、「どの作業中に何が発見されたか」という文脈が永続化されます。AIエージェントは今後、このイシューを見るたびに、発見の経緯を理解できます。
beadsの強力な機能の一つが「Ready Work」の自動検出です。bd readyコマンドを実行すると、依存関係が全て解決され、すぐに着手可能なイシューが一覧表示されます。
AIエージェントはセッション開始時にこのコマンドを実行することで、何から手をつけるべきかを即座に把握できます。人間が優先順位を説明する必要はありません。
AIエージェントの最大の弱点は、コンテキストウィンドウの制限による「圧縮」です。長いセッションでは、過去の会話が要約・圧縮され、詳細が失われていきます。
beadsはこの問題を依存関係グラフで解決します。エージェントはbd dep tree <イシューID>で依存関係の全体像を視覚化でき、bd show <イシューID>で特定のイシューの詳細を確認できます。記憶が「外部化」されているため、圧縮の影響を受けません。
beadsを最大限に活用するには、AIエージェントにセッション終了時のプロトコルを設定することが重要です。以下のような手順をAGENTS.mdに記載します:
bd syncでデータベースを同期するこのプロトコルにより、エージェントは「仕事を途中で投げ出す」ことなく、確実に引き継ぎを行います。
beadsの分散アーキテクチャは、複数のAIエージェントが同一プロジェクトで協業する場合に威力を発揮します。v0.20.1からは、ハッシュベースのイシューIDが採用され、異なるブランチやマシンで作成されたイシューが衝突することなくマージできます。
例えば、認証機能を担当するエージェントAと、決済機能を担当するエージェントBが同時に作業しても、それぞれが作成したイシューは一意のIDを持ち、Gitマージ時に自動統合されます。
長期プロジェクトでは、古いイシューが大量に蓄積されます。beadsは「コンパクション」機能でこの問題に対処します。完了から30日以上経過したイシューを分析し、詳細を要約版に置き換えることで、データベースのサイズを抑えつつ、文脈を保持します。
これは人間の記憶に例えれば「長期記憶への転送」に相当し、細部は忘れても本質は保持されます。
従来のイシュートラッカーは人間のために設計されています。Webインターフェース、マイルストーン、アサイン機能など、人間が操作することを前提にしています。beadsはCLIファーストで、JSON出力をサポートし、AIエージェントがプログラム的に操作することを前提に設計されています。
また、依存関係の扱いが根本的に異なります。JiraやGitHub Issuesでもリンク機能はありますが、それは「参考情報」に過ぎません。beadsでは依存関係が第一級の概念であり、ブロッカーが解消されるまでイシューは「Ready」にならないという厳密なルールがあります。
シンプルなMarkdownファイルでタスクを管理する方法もありますが、これはAIエージェントにとって「腐敗したTODOリストの沼」になりがちです。beadsの作者はこの問題を明確に指摘しています。構造化されていないテキストでは、依存関係の追跡が困難で、どこまで完了したかの把握も曖昧になります。
beadsの導入は段階的に行うことをお勧めします。まずは個人の開発プロジェクトで試し、エージェントとの協業リズムを掴んでから、チームプロジェクトに展開しましょう。
AIエージェントへの指示を明文化したAGENTS.mdファイルを充実させることが成功の鍵です。beadsの使用方法、セッション終了時のプロトコル、コーディング規約などを記載し、エージェントが自律的に動けるようにします。
beadsは自動化を促進しますが、完全な放置は禁物です。定期的にbd listやbd statsでイシューの状況を確認し、優先順位の調整や不要なイシューの整理を行いましょう。
beadsは単なるツールではなく、AIエージェントとの協業における新しいパラダイムを提示しています。従来、プロジェクト管理は人間の専売特許でしたが、beadsはその一部をAIに委譲することで、人間はより創造的な判断に集中できます。
AIエージェントの能力が向上し続ける中、私たちに必要なのは「いかにAIを使いこなすか」ではなく「いかにAIと協業するか」という視点の転換です。beadsはその架け橋となるツールであり、AI時代の仕事のあり方を先取りしています。
興味を持たれた方は、ぜひGitHubリポジトリをチェックしてみてください。インストールは30秒、そしてAIエージェントとの新しい関係が始まります。