コンテンツにスキップ

Workspace Memory v2: オフライン優先の記憶アーキテクチャ

開発を進めていると、「数週間前に決めたあの仕様、どこに書いたっけ?」とか「以前試して失敗した方法を、AIがまた提案してくる」といった状況によく直面します。日々のログを記録していても、必要な時に必要な情報を正確に引き出すのは意外と難しいものです。

現在の多くのシステムは、単なる日記形式の保存には適していますが、特定のエンティティに関する情報をまとめたり、過去の決定事項を即座に思い出したりすることには向いていません。そこで、オフラインで動作し、人間にも読みやすく、かつAIが効率的に情報を抽出できる新しい記憶の仕組みを提案します。

  • ~/.openclaw/workspace フォルダ(デフォルトの保存先)
  • Markdown 形式のデイリーログ
  • SQLite(FTS5 サポート)

最小限の構成で記憶システムを稼働させるための手順です。

1. ワークスペースの構造を整える

Section titled “1. ワークスペースの構造を整える”

まず、~/.openclaw/workspace 内に以下のディレクトリ構造を作成します。これにより、人間が読みやすい Markdown ファイルと、マシンが高速に検索するためのインデックスを分離します。

~/.openclaw/workspace/
memory.md # 重要な事実や設定(常にコンテキストに含めるもの)
memory/
YYYY-MM-DD.md # デイリーログ(ナラティブな追記型)
bank/ # 整理された記憶ページ
world.md # 客観的な事実
experience.md # エージェントが実行した経験
opinions.md # 主観的な好みや判断
entities/ # 特定の人物やプロジェクトごとの詳細
Peter.md
warelay.md

2. デイリーログに「Retain」セクションを作る

Section titled “2. デイリーログに「Retain」セクションを作る”

その日の終わりに、後から参照したい事実を ## Retain セクションとして箇条書きで追加します。以下の形式で記述することで、情報の種類や関連するエンティティを明示できます。

## Retain
- W @Peter: 現在マラケシュに滞在(2025年11月27日〜12月1日)。Andyの誕生日のため。
- B @warelay: connection.update ハンドラーを try/catch で囲むことで、Baileys WS のクラッシュを修正。
- O(c=0.95) @Peter: WhatsAppでは簡潔な返信(1500文字未満)を好む。長い内容はファイルに書き出すこと。

※ W = 世界の事実、B = 経験、O = 意見、S = 観察結果

システムは Markdown の内容をスキャンし、~/.openclaw/workspace/.memory/index.sqlite にインデックスを構築します。これにより、CLI から高速に過去の記憶を呼び出すことができます。

Terminal window
openclaw memory recall "Peterの好みは何?" --k 25 --since 30d

まずは SQLite FTS5 を利用した全文検索を徹底してください。それでも精度が不十分な場合や、データの規模が数万件を超えた場合にのみ、Embedding(ベクトル検索)の導入を検討するのがベストです。最初から複雑な仕組みを導入する必要はありません。

オフラインでの Embedding モデルの選択

Section titled “オフラインでの Embedding モデルの選択”

すでに Ollama を使用している環境であれば、ローカルモデルで Embedding を生成するのが効率的です。そうでない場合は、ツールチェーンに組み込める軽量な Embedding モデルを選択してください。

複雑な検索アルゴリズム(SuCoなど)の導入時期

Section titled “複雑な検索アルゴリズム(SuCoなど)の導入時期”

SuCo(Subspace Collision)のような高度な検索手法は、コーパスが数十万件のチャンクに達し、力押しの検索ではレイテンシが許容できなくなった段階で検討してください。


詳細な設定やトラブルシューティングについては、AI Setup Assistant で直接質問してください。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。