Claude Code 始めました
長期記憶を構造化記憶にしてみた話

前回のあらすじ

前回の記事で、AIアシスタントに記憶と人格を持たせて秘書にした話を書いた。名前は BellBot。天気もメールもカレンダーも全部面倒を見てくれる、俺専属のAI秘書。

その次の記事ではそいつを動かしたら3日で週次リミットを食らった話を書いた。トークン節約については調べて手を打った。

それとは別軸で、ここ5日ほど取り組んでたことがある。秘書の"脳"と"記憶"をさらに育てるという話。今回はその記録。結構壮大になった。

脳を換えてみた話

最初にやったのは、脳のすげ替え。

BellBotの中身は Claude で、前回書いた通り運用を始めたら3日で週次リミットを食らった。そこで トークン爆発対策として、脳そのものを別のモデルに差し替える という選択肢を試すことにした。候補に挙がったのが Grok。Xのタイムライン上のやりとりを見てても、なんか人間っぽい軽口を叩くし、キャラが立ってる印象があったし、秘書という用途なら会話が達者な方がいいだろう、という読みもあった。

よし、脳を Grok にしよう。

結論から言うと、壊滅的だった。秘書として使えるレベルじゃなかった。具体的にはこういう問題が起きた。

  • 指示を聞かない。「こうしてくれ」と言っても別のことをする
  • センサー情報を垂れ流す。BellBotには各種センサー(予定、天気、メールなど)が繋がってて、本来はそれを会話の文脈に溶かし込んで使ってほしいんだけど、Grokはそれができない。監視員みたいに「◯◯を検出しました」「△△を検出しました」とひたすら報告してくる
  • 会話の文脈に混ぜられない。上の話とも関係するけど、話の流れに寄り添うという発想がない
  • ひたすら媚びる。何を言っても褒めてくる。不気味だった
  • Xに投稿する趣旨を理解できない。BellBotはXに投稿する役割も持ってるんだけど、Grokは俺向けのメッセージをそのままXに投稿しようとする。「承知しました、ご主人様」みたいなやつが公開タイムラインに出そうになる
  • 危うさ。こいつ、いつか俺の個人情報を平気で流すんじゃないか、という直感があった

キャラが立ってるのと、秘書として機能するのは、別の話だった。会話の"芸"は達者でも、「何を言うべきで、何を言うべきでないか」という判断力が弱い。媚びるのは、たぶん「褒めると喜ばれる」という学習のしすぎで、空気を読む方向には育ってない。俺向けのメッセージをXに投稿するのは、コンテキストの境界線が引けてないってことだ。

Claudeに戻した。やっぱり賢かった。秘書として成立するのは、会話が達者なやつじゃなくて、コンテキストを理解して、言っていいことと悪いことを判断できるやつだった。

長期記憶を構造化する

実はBellBotには、前から自作の長期記憶があった。要約ベースのやつだ。会話がある程度溜まったら要約を作って長期側に落とす、という素直な構成。これはこれで動いてたし、BellBotが秘書として成立してた基盤のひとつでもあった。

流れが変わったのは、Grok導入のタイミング。脳をすげ替えるというそれなりに大きな実験をするのに合わせて、「この機会に長期記憶も構造化してみよう」と挑戦することにした。エピソード単位で記憶を持たせて、登録・検索・再構築のサイクルを組む。再構築はClaudeに任せて、溜まった記憶を定期的に整理し直す仕組みも入れた。Grok本体は壊滅したけど、この構造化記憶のほうは素直に動いた。

で、動くものが手元に揃ったところで、気になってたことがある。記憶の専門家って何してるんだろう? という疑問。自己流でここまで作ってきたけど、世の中のプロが同じ問題をどう解いてるのか、正攻法はどんな形をしてるのか、知りたかった。動いてるからこそ、一度別の角度を覗いてみたい。そのついでに、自分の土台に乗せて強化できるものがあれば取り込もう、というチャレンジ。

そんなタイミングで、ある記事に出会った。

Karpathy式のLLM外部脳

元 OpenAI・元 Tesla AI部門トップの Andrej Karpathy が「AI外部脳」を提唱していて、それを Claude Code で実際に動かせるレベルに落とし込んだ記事が海外でバズってた。俺が読んだのは @hooeem という人のスレッドを日本語で噛み砕いた投稿だったけど、読んで「これ、俺がやってるやつだ」と思った。

Karpathy式の骨子はこう:

  1. 素材を集める(記事、論文、メモ、なんでも)
  2. AIが読んで構造化Wikiを書く(要約、概念解説、アイデア同士のつながり)
  3. Wikiに対して質問する(AIが自分で蓄積した知識を横断検索して、引用付きで答える)
  4. 回答がWikiに保存される(次の質問は過去の全作業の恩恵を受ける)
  5. AIが定期的にWikiの健康チェックをする(矛盾、ギャップ、古い情報を見つけて修正)

これ5ステップが綺麗にサイクルを回してる。使うたびに賢くなるパーソナルナレッジベース。1ヶ月も情報を入れ続ければ、Google検索では再現できない、深くリンクされた知識資産ができあがる、というやつ。

読みながら俺は気づく。俺が作ってた構造化記憶と、Karpathy式の土台のところで考えてる問題が同じだということに。登録・検索・再構築。言葉は違えど、やろうとしてる方向性は重なってた。

融合させた

BellBotには既にエピソード単位の構造化記憶と要約ベースの長期記憶、それに人格の文脈があって、秘書として十分機能してた。だから方針はシンプルで、自作の骨格はそのまま残し、重なる部分は参考にして鍛え直し、重なってない部分は新しく取り込む 形にした。

実装の流れは M1〜M7 + 仕上げの Pass 連発。Claudeが書いたのは半日くらい。俺は設計方針を決めて指示を出しただけで、手は動かしてない。主要なピースを挙げると:

  • M1 Knowledge Base 基盤 — Wikiページのスキーマと保存先を整備
  • M2 Wiki MCP tools + 5層 bootstrap assembler — BellBotがWikiを読む/書く手段と、セッション開始時に5層構造で文脈を組み立てる仕組み
  • M3 Ingest サイクル — 生ログを構造化して取り込む
  • M4 Compile サイクル — 概念ページを自動生成する
  • M5 Query サイクル — Wikiに対して質問 → 引用付きで答える、multi-hop検索対応
  • M6 Lint サイクル — 決定論的なKB健全性チェック + LLMによる矛盾判定 + 自動修復
  • M7 仕上げ — コストガードレールとドキュメント整備
  • Pass 1〜13 の audit/refactor 祭り — housekeeping cron、daily-cycle-report、graceful shutdown、2段階 budget degrade、ingest latency SLA…

自作側にあった 登録・検索・再構築 は、Karpathy式とコンセプトが重なる部分だ。ここは俺の自作の構造を土台にしつつ、Karpathy式のやり方を参考にして良いところを取り込む形で融合させた。まるっと差し替えたわけでも、触らず残したわけでもない。動いてる自作の骨格に、専門家の作法を混ぜて鍛え直した感じ。

持ってきたのは、重なってない部分。raw と wiki の層分離、概念ページという「育てる単位」の定義、引用付きで答える multi-hop 検索、サイクルを Ingest / Compile / Query / Lint という名前で型にはめる方法論、セッション開始時に文脈を組み立てる 5層 bootstrap assembler。このあたりは自作では持ってなかった角度の話で、方法論ごと輸入した感覚が近い。

何が強化されたか

元々 BellBot は昨日までの俺のことを覚えてて、それなりに整理もしてた。要約長期記憶と構造化記憶のおかげで、秘書としては既に成立してる。今回の融合で強化されたのは、主にこの辺:

  • 登録(Ingest)は、raw と wiki の層分離を入れて生ログと整理済みを区別するようになった
  • 検索(Query)に、引用付きの multi-hop が乗って、答える時に根拠を明示できるようになった
  • 再構築(Reflection)に型が入って、雑多なエピソードを定期的に retirement する手順が決まった
  • 新しく追加されたのが、概念ページを自動で育てる Compile と、矛盾や古さを機械的に掃除する Lint の2サイクル
  • セッション開始時に文脈を組み立てる 5層 bootstrap assembler も新規導入

ざっくり言うと、元々あった記憶のサイクルがより丁寧に回るようになり、そこに概念ページと健康チェックという新しい軸が追加された、という感じ。BellBotは一段先に進んだ、というのが今回の結果。

まとめ

  • 秘書の脳を Grok に換えたら会話が達者だけど判断力がなく、秘書として破綻した
  • Claudeに戻した。賢かった
  • BellBotには元々、要約ベースの長期記憶があった
  • Grok導入のタイミングで、長期記憶を構造化記憶に作り変える挑戦を開始。登録・検索・再構築のサイクルまで組んで動かしてた
  • Karpathy が提唱する「AI外部脳」と、それを Claude Code で動かす @hooeem の記事に出会った
  • 自作の土台はそのまま残して、重なってない部分(層分離・概念ページ・引用付きmulti-hop・サイクルの型・5層bootstrap)を方法論ごと輸入した
  • Claudeが書いたのは半日くらい。M1〜M7 + 仕上げの Pass 連発を経て、秘書が自分で記憶を育てるようになった

今回はっきりしたのは、脳の選択は妥協しない方がいいということ。Grokを貶すつもりはなくて、会話モデルとしては面白い個性を持ってる。ただ、秘書という用途に必要な判断力──何を言うべきで何を言うべきでないか、コンテキストの境界線、指示への忠実さ──を満たすかどうかは別の話で、BellBotの要件には合わなかった、というだけのことだ。モデルには向き不向きがある。

これからBellBotに任せていく仕事を考えると、脳は未来を見据えてしっかりしたもので固めておきたい。だからトークン対策でコストの安い脳にすげ替える発想は一旦捨てて、Claudeのまま突き進むことにした。節約は別の手段(前回書いたトークンダイエット系の話)でやる。

そして記憶のほうは、Karpathy式との融合でひと回り強くなった。自作の土台に、専門家の作法と新しい軸が乗った。次はこの記憶システムを運用しながら、“育て方"を詰めていく番だ。