AI

異なるAIコーディングエージェントへ過去の判断を引き継ぐ共有メモリ「funes」

この記事のポイント

  1. 実現したこと

    異なるAIコーディングエージェントから、過去セッションに残された判断、理由、調査結果を横断検索できる。

  2. 実現の仕組み

    各セッションを共通形式のチャンクへ変換し、ベクトル検索とBM25を融合して関連する履歴を選び出す。

  3. 得られた結果

    公開メモリでは、正確な由来を付けた2万7118件のチャンクが、元のトランスクリプトとは別の派生索引として保持されている。

  4. 従来との違い

    エージェントごとに分かれていた履歴を、一つのメモリから検索できる構成へ切り替えた。

異なるAIコーディングエージェントの履歴ストリームが共通索引に集約され、検索結果が新しい作業へ戻る様子
AI生成画像

異なるAIコーディングエージェントの過去セッションを一つの索引へまとめ、判断や理由を次の作業へ引き継ぐ共有メモリ「funes」が公開された。意味と語句の両面から履歴を検索できる。

エージェント固有の履歴を共通の索引へ変換

AIコーディングエージェントごとに異なるセッション記録は、後から横断検索できる共通索引へ変換される。Hugging Faceの作業メモリソフトウェア「funes」は、Claude Code、Codex、pi、Hermesの履歴を取り込み、過去の判断、理由、調査結果を検索対象にする。

取り込んだセッションは、共通のターン・ブロック形式へ解析された後、チャンクに分割される。処理系は各チャンクの埋め込みを作成し、ローカルのlanceデータセットへ書き込む。エージェント固有の差を解析段階で吸収するため、それ以降の索引処理と検索処理を共通化できる。

ベクトル検索とBM25で関連セッションを選別

保存されたチャンクの検索には、意味の近さを扱うベクトル検索と、語句の一致を扱うBM25を組み合わせる。両方式の候補を融合して再順位付けし、さらに新しさに応じた重みを加えることで、質問に関係する履歴を絞り込む。

各検索結果には、記録がどのエージェントから来たのかが示される。回答が必要な場合、funes askは選ばれたセッションをClaude CodeやCodexなどの外部エージェントへ渡し、参照したセッションを明示した回答を生成させる。funes自体は生成モデルを持たず、履歴の検索と受け渡しを担う。

複数のエージェントが同じ作業履歴を検索

Claude Code、Codex、pi、Hermesの履歴は、一つのメモリへ索引化できる。利用するエージェントを切り替えても検索範囲は現在の製品だけに限定されず、別のエージェントで進めた作業の判断や調査結果も取り出せる。

Claude Code、Codex、Hermesとの連携では、フックがターンごとに新しい記録を索引へ加える。共有先のメモリを関連付けている場合はセッション境界で公開処理も行われ、直前の作業を次のセッションから検索できる状態へ更新する。

ローカルメモリをHubのデータセットとして共有

ローカルメモリはHugging Face Hubのデータセットとして公開でき、別の端末、チームメンバー、別のエージェントから検索できる。funesが新しく作るデータセットリポジトリは初期状態で非公開となり、既存リポジトリへ公開する場合は現在の公開範囲が維持される。

公開例のhuggingface/funes-memoryは、元のトランスクリプトをそのまま置いたデータセットではない。正確な由来を付けた2万7118件のチャンクをlanceテーブルに格納した派生索引であり、funes recallはこのリモートメモリを指定して検索できる。

一方、Hugging FaceのDataset Viewerはlance形式を扱えない。このためhuggingface/funes-memoryでは分割名を取得できず、ブラウザー上のViewerにはデータセットが表示されない。