Back

AIエージェントの記憶設計 — 二層アーキテクチャで「成長するパートナー」を作るBlur image

AIチャットbotを使っていると、こんな経験はないでしょうか。

昨日の会話で詳しく説明したのに、今日はもう覚えていません。設定したはずの好みを、毎回聞き直してくる。数週間一緒に作業してきたのに、ずっと「初対面」のままです。

これ、当たり前だと思っている人が多いかもしれません。でも、ずっと付き合うツールに記憶がないというのは、結構不便な話なんですよね。

ここでは、AIエージェントに二層の記憶を持たせる設計を紹介します。1つはエピソード記憶(「いつ・何があったか」)、もう1つは意味記憶(「これがどういうものか」)。この2つを組み合わせると、AIがセッションをまたいで文脈を保持できるようになります。


記憶の二層構造#

人間の記憶には大きく分けて2種類あります。エピソード記憶は「昨日ラーメン屋に行った」「あの会議で怒られた」みたいな体験の記録。意味記憶は「ラーメンは麺料理の一種」「プロジェクトXは来月リリース予定」みたいな知識のネットワーク。

AIエージェントにも同じ2層を用意しました。

  • Hindsight — エピソード記憶。会話で出てきた事実を自動で保存して、次回のセッション開始時に読み込みます
  • GBrain — 意味記憶。エンティティ(人、プロジェクト、ツール等)とその関係性を構造化して保存するナレッジベース

名前の由来は割と直感的で、Hindsightは「後から振り返る」、GBrainは「general brain」のつもりです。


Hindsight — エピソード記憶層#

どう動いているか#

HindsightはDockerコンテナ上でローカルに動かしているベクターデータベースです。仕組みはシンプルです。

  1. 会話の中で「これは覚えておいた方がいい事実」を自動で抽出します
  2. ベクターデータベースに保存します
  3. 次回セッション開始時、関連する過去の事実を自動で読み込みます

何が保存されるかというと、たとえばこんな感じ。

📝
「ユーザーの好みのエディタはVS Code」「プロジェクトAのリリースは来月15日」「先週のミーティングでXの機能を優先すると決めた」

人間が「これを覚えて」と指示しなくても、会話の流れから勝手に判断して保存してくれます。ここが大事なポイントで、記憶のトリガーが手動じゃないという設計にしています。

読み込みのタイミング#

セッションの開始時に、Hindsightから過去の記憶が自動注入されます。システムプロンプトに組み込まれる形で、エージェントが自然に過去の文脈を参照できます。

「前回どこまでやったっけ?」と聞かなくても、最初から「先週はここまで進んでましたね」という状態で会話が始まります。地味ですが、これがあるのとないのとでは作業効率が全然違います。


GBrain — 意味記憶層#

何を保存しているか#

GBrainはローカルのPGLite(PostgreSQL互換の軽量DB)上で動く構造化ナレッジベースです。エピソード記憶だけだと「事実は覚えているけど、関連付けが弱い」という問題があります。

たとえばHindsightには「プロジェクトAはReactを使っている」「プロジェクトAのリーダーは田中さん」「田中さんは月曜が休み」という事実がバラバラに保存されているかもしれません。でも、「月曜にプロジェクトAの件で田中さんに連絡する」という判断には、これらを繋げて理解する必要があります。

GBrainはこの「繋ぎ」を担当します。エンティティとリレーションという形で知識を構造化して保存します。

Signal Detection#

知識の追加も自動です。Signal Detectionという仕組みで、会話の中に新しいエンティティや事実関係が出てきたら自動で検出されてGBrainに永続化されます。

「〇〇という新しいツールを使い始めた」と話したら、自動でそのツールのエンティティが作られます。「〇〇は××の代替として導入した」と話したら、ツール間のリレーションが記録されます。

ファイルベース(git管理)なので、誰が何を知っているかが透明という利点もあります。テキストファイルを開けば全部見えます。


二つの記憶の使い分け#

ここまでの説明で「似たようなものじゃない?」と思うかもしれません。実際、どちらも「AIに記憶を持たせる」という目的は同じです。でも役割が違います。

  • Hindsightは「タイムライン」。いつ何があったかという時系列の事実を記録します
  • GBrainは「辞書+地図」。エンティティとその関係性という構造化された知識を保持します

たとえるなら、Hindsightは日記で、GBrainはWikipediaです。「去年の3月に〇〇した」という記憶と、「〇〇とはこういうもの」という知識は、似ているようで別物です。

実運用では、Hindsightがセッションをまたぐ連続性を担保して、GBrainが意思決定に必要な構造化知識を提供します。この2つが補い合うことで、ただのチャットツールが継続的に文脈を理解するパートナーに変わります


エージェントごとに独立した記憶#

このシステムでは3つのAIエージェントがそれぞれ別の役割を担当しています。それぞれが独立した記憶を持っている設計です。

なぜ独立させているかというと、役割が違えば覚えておくべきことも違うからです。プロジェクト管理担当は進捗や期限を、技術担当はコードの詳細を、広報担当はコンテンツの方向性を、それぞれ優先的に記憶します。

全部の記憶を共有すると、ノイズが増えて逆に使いにくくなります。人間のチームでも、営業担当がインフラの設定詳細を全部覚えている必要がないのと同じです。

ただし完全に分離されているわけではなく、Notionという共有のワークスペースを通じて情報の同期は取れます。個人の記憶と共有の記録、両方のバランスを取っています。


記憶があるとどう変わるか#

抽象的な話をしてきましたが、実際にどんな嬉しいことがあるのか。うちのエージェント環境で実際に起きていることをいくつか紹介します。

複雑なプロジェクトも「続きから」進められる#

記憶がないAIで作業していると、セッションが切れるたびに「前回どこまで進んだっけ?」からやり直しになります。簡単なタスクならいいですが、複数のステップがあるプロジェクトだと、いちいち状況を説明し直すのが結構面倒です。

うちの環境では、コンテキスト圧縮のサマリー、Hindsightの記憶、保存されたスキルの3つが組み合わさって、セッションをまたいだ作業の継続性が保たれます。

あるセッションでツールの導入セットアップを途中まで進めて終わったとします。次のセッションを開くと、すでに「どこまで進んだか」「次は何をすべきか」が分かった状態でスタートできます。人間の同僚に「前回の続きなんだけど…」と説明し直す必要がありません。

「続きからやって」と言うだけで、AIが文脈を理解して手を動かし始める。地味ですが、これができると作業の心理的ハードルがかなり下がります。

前回の調査結果が次のタスクの土台になる#

「このツール、どういう仕組みだっけ?」という疑問が出たとき、記憶があるエージェントなら「3日前に調べた結果がこれです」と即座に答えられます。

実際にある日、ある技術課題について詳しく調査して解決しました。数日後、全く違う文脈で関連するタスクが出てきたとき、エージェントは前回の調査結果を記憶から正確に引き出して、「前回調べた結果をベースに進められます」と判断しました。

調査のやり直しが不要になるだけでなく、「前回の成果が活きている」という感覚も得られます。人間でも「あ、これ前に調べたやつだ」と気づいたとき嬉しいですよね。AIでも同じことが起きています。

ほぼリアルタイムでセッション間の記憶を参照できる#

個人的に一番便利だと感じている例です。

エージェントとはDiscordでやりとりをしているのですが、仕様上DM、チャンネル、スレッドごとにセッションが切り替わります。並行して作業をしていると、セッションごとの記憶がチグハグになってしまうところですが、外部記憶装置を置くことで別のセッションが保存した記憶をまた別のセッションが読み込めるようになり、まるで同じエージェントと話しているようになります。


まとめ#

AIエージェントに記憶を持たせる設計として、二層アーキテクチャを紹介しました。

  • Hindsight(エピソード記憶)— 会話中の事実を自動抽出・保存し、次回セッションに自動注入
  • GBrain(意味記憶)— エンティティと関係性を構造化して保存するナレッジベース

どちらも手動で「これを覚えて」と指示しなくても、会話の流れから自動で記憶を構築する設計になっています。これが地味に大事で、手動だと結局人間が管理コストを負うことになります。

記憶があるとないとで、AIツールの使い勝手は全然違います。「毎回同じ説明をする」手間が減るだけじゃなく、一緒に作業を積み重ねている感覚が出てきます。そこが大事だと思っています。

AIエージェントの記憶設計 — 二層アーキテクチャで「成長するパートナー」を作る
https://nainaism.com/blog/ai-agent-memory-architecture
Author Nainai
Published at 2026年4月15日
Category Tech