Clawdbotの記憶管理方法: Markdownベースのハイブリッドメモリアーキテクチャ
(manthanguptaa.in)要約:
- ClawdbotはオープンソースのローカルAIアシスタントで、クラウド依存なしにユーザーのローカル環境へMarkdownファイルの形で長期記憶を保存・管理します。
- 2層メモリシステム(日次ログおよび長期知識)とハイブリッド検索(ベクトル + キーワード)により、大規模なコンテキストでも効率的な情報取得が可能です。
- コンテキストウィンドウの限界を克服するために、「コンパクション(Compaction)」と「プルーニング(Pruning)」技術を使用し、コスト最適化と性能維持を同時に実現します。
詳細要約:
-
概要と設計思想
Clawdbotはデータ所有権をユーザーに取り戻すため、すべての記憶をローカルワークスペース内のMarkdownファイルとして管理します。透明性(Transparency)を中核的な価値とし、ユーザーがメモリファイルを直接読み、修正し、バージョン管理できるよう設計されています。 -
2層メモリ構造
メモリは大きく2つのレイヤーに分かれます:
- Layer 1 (Daily Logs):
memory/YYYY-MM-DD.mdファイルに、その日の会話要約、決定事項、ユーザーの好みを記録します。 - Layer 2 (Long-term Knowledge):
MEMORY.mdファイルに、複数セッションにわたって維持すべき重要な事実、プロジェクトの決定事項、固定的なユーザープロファイルなどを保存します。
- ハイブリッド検索エンジン(Hybrid Search)
エージェントはmemory_searchツールを使って、必要なときにだけメモリを照会します:
- セマンティック検索(Vector Search): 埋め込みを通じて意味的に類似した内容を見つけます(SQLite-vecを活用)。
- キーワード検索(BM25): 正確な固有名詞、日付、IDなどを見つけるためにFTS5エンジンを併用します。
- 最終スコア計算:
(0.7 * ベクトルスコア) + (0.3 * テキストスコア)の重み付け方式を適用して精度を高めました。
- コンテキスト管理技術
- コンパクション(Compaction): コンテキスト制限に達すると、以前の会話を要約版に置き換えます。特に「メモリフラッシュ(Memory Flush)」段階を通じて、要約前に重要な情報をあらかじめMarkdownファイルへ永続保存し、情報損失を防ぎます。
- プルーニング(Pruning): 大規模なログ出力など、不必要に長いツール実行結果を切り詰めてトークンを節約します。AnthropicのプロンプトキャッシュTTLを考慮したインテリジェントな削除ロジックが含まれています。
- 技術スタックとデータフロー
- ストレージ: ローカルMarkdownファイル(Source of Truth)およびSQLite(インデックス用)。
- ワークフロー: ファイル変更検知(Chokidar) -> チャンク化(400トークン単位、80トークン重複) -> 埋め込み -> SQLite保存。
まだコメントはありません。