Research
Lettaで作る「記憶を持つ」AIエンジニアリングコパイロット——コアメモリ・マルチエージェント共有状態・セマンティック検索を実装する
2026/10/25
概要
Letta は、LLMエージェントに「永続的な記憶」を持たせることに特化したオープンソースフレームワークだ。MarkTechPostが公開したチュートリアル記事では、Lettaを使ってエンジニアリングコパイロットを段階的に構築する手順が紹介されている。単純なプロンプトの往復を超えた、検査可能・書き換え可能な状態管理の実装例として参考になる内容だ。
コアメモリブロックによる自律的な状態管理
Lettaエージェントは起動時に複数のコアメモリブロックを持つ。チュートリアルではエージェント「Mnemo」を以下の4ブロックで初期化している。
persona:エージェント自身の役割・口調を定義する固定ブロックhuman:一緒に作業するエンジニアに関する永続情報(名前・技術スタック・好みなど)project_state:進行中プロジェクトのマイルストーン・ブロッカー・意思決定履歴lessons:過去の失敗から学んだ教訓を追記専用で蓄積するブロック
エージェントはユーザーとの会話から得た情報を自律的にこれらのブロックへ書き込む。またclient.agents.blocks.update()を呼ぶことで、アプリケーションコード側からも直接ブロックの内容を書き換えられる。たとえばCIパイプラインが失敗したとき、その情報をproject_stateに即座に反映できるという設計だ。
マルチエージェント間の共有メモリ
チュートリアルの重要なポイントの一つが、複数のエージェントが同一メモリブロックを参照・編集できるアーキテクチャだ。
具体的には次の2種類のブロックを独立して作成し、コパイロットとレビュワーエージェントの両方にアタッチする。
policies(読み取り専用):「mainブランチへの直接プッシュ禁止」「修正には回帰テストを必ず添付」「顧客データはEUリージョン外に出さない」などのチームポリシーteam_scratchpad(読み書き可能):両エージェントが共同で書き込む作業メモ
コパイロットがKafkaリバランス問題の修正案をteam_scratchpadに書き込み、レビュワーエージェント「Argus」がそれを読んでポリシー違反の有無を確認し、同じブロックに審査結果を追記する——という一連の流れがコード例で示されている。
アーカイブメモリとセマンティック検索
コアメモリに収まらない大量の知識はアーカイブメモリに格納できる。チュートリアルでは以下のような技術文書をタグ付きで投入している。
- 過去のポストモーテム(Kafkaリバランス起因のイベントロスト事例など)
- アーキテクチャ決定記録(ADR)
- 運用ランブック
- ベンチマーク結果
- インシデント報告
投入した知識はclient.agents.passages.search()でセマンティック検索できる。「ノード再起動時に注意すべきことは?」という自然言語の質問に対し、エージェントはキーワード一致ではなく意味的な近傍検索でポストモーテムやランブックを自律的に参照して回答する。
カスタムツールによる確定的な計算の統合
LLMの推論だけでは信頼性が担保しにくい計算は、カスタムツールとして実装してエージェントに渡すのが推奨パターンだ。チュートリアルではestimate_release_risk(open_bugs, days_to_deadline, test_coverage)という関数をそのままツールとして登録している。
この関数はオープンバグ数・デッドラインまでの日数・テストカバレッジを引数に取り、0〜100のリスクスコアと「SHIP / SLIP ONE WEEK / DO NOT SHIP」の判定を返す。エージェントはこのツールを呼び出した結果をproject_stateブロックに記録するところまで自律的に実行する。
ストリーミングと会話履歴の永続化
チュートリアルではさらに2つの機能も取り上げている。
ストリーミングはclient.agents.messages.stream()で利用でき、エージェントのリゾーニング・ツール呼び出し・返答を逐次観察できる。デバッグや処理の透明性確保に有用だ。
サーバーサイドの会話履歴はLettaが自動的に保持するため、会話を再開しても過去のコンテキストが失われない。さらにエージェントの設定・メモリ・ツール構成をまとめて.af形式でエクスポートし、別環境に移植することも可能と紹介されている。
アーキテクチャの全体像
本チュートリアルが示す設計思想を整理すると以下のようになる。
| レイヤー | 役割 |
|---|---|
| コアメモリブロック | 高速アクセスが必要な少量の永続状態 |
| 共有ブロック | エージェント間の協調に使うリアルタイム共有状態 |
| アーカイブメモリ | 大量の知識をベクトル検索で活用 |
| カスタムツール | 確定的な計算・外部システム連携 |
| ストリーミング | 実行トレースの可観測性 |
| .afエクスポート | エージェントのポータビリティ |
これらを組み合わせることで、単なるチャットボットを超えた「プロジェクトの状態を長期的に追跡し、複数のエージェントと協調できるコパイロット」が実現できると、チュートリアルは主張している。Lettaの公式SDKはpip install letta-clientで入手可能で、APIキーはLettaのクラウドプラットフォームから取得できる。