ホームへ戻る

AI 開發工具

Funes、複数のコーディングエージェントの作業履歴を、ポータブルで検索可能なローカルメモリに統合

Hugging FaceはFunesをオープンソース化し、Claude Code、Codex、pi、Hermesのターン単位の履歴を単一のLanceデータセットに保存する。検索とリランキングはデフォルトでローカル実行されるが、マシン間同期、残存する秘密情報、外部メモリを介したプロンプトインジェクションについては、依然として利用者側での管理が必要だ。

Iñaki LL · CC0 · Image source
zh-Hant

Hugging Faceは、Apache 2.0ライセンスのFunesを公開した。コーディングエージェントの「メモリ」を特定製品のサービスから切り離し、ユーザーが所有するデータセットへと変えることを目指す。単一のRustバイナリでClaude Code、Codex、pi、Hermesのセッションを解析し、turn/block構造に統一できる。各ターンの完了後にhookを使って増分インデックスを作成するため、履歴全体を繰り返し処理する必要がない。互換性のあるParquet traceを出力できる他のエージェントも、`TraceSource`を実装すれば同じパイプラインに接続できる。

検索では、まずバージョンを固定したローカルの埋め込みモデルでベクトルを生成し、BM25検索、ランキング融合、cross-encoderによるリランキング、時間的な新しさの重み付け、隣接チャンクの補完を組み合わせる。`recall`は元の文章、エージェント名、時刻、セッション、ターンを返し、`get`では前後のコンテキストを展開できる。出典となる証拠を保持するこの設計により、書き込み時に別のモデルで履歴を要約し、歪曲される可能性のある「事実」に変換することを避けている。埋め込みとリランキングは、デフォルトでmacOS AccelerateまたはLinuxのpure Rustバックエンドを通じて実行され、外部のML runtimeを必要としない。

複数のコンピューター間で共有する場合、FunesはローカルのLanceデータを非公開のHugging Face Datasetとして公開できる。リモートデータをダウンロードした後も、検索はローカルで行われる。プロジェクトに付属する2タスク、30回実行の小規模実験では、`recall`の加重tokenコストは、文書による引き継ぎと比べてそれぞれ約8分の1と4分の1だった。ただし、2つのタスクはいずれも過去の記録がなければ回答できないものとして選定されているため、この結果から一般的なソフトウェア開発作業における平均的な効果を推定することはできない。

とりわけ、セキュリティ境界を無視してはならない。Funesはインデックス作成時に認証情報をマスキングし、push前にTruffleHogで再度スキャンしてfail-closed方式を採用する。しかし、一度アップロードされた秘密情報はデータセットのバージョン履歴に残るため、認証情報をローテーションし、リポジトリを再構築する必要がある。外部メモリの内容もエージェントのコンテキストへ直接取り込まれるため、永続的なプロンプトインジェクションにつながる可能性がある。チームで導入する場合は、まず信頼できるデータセットに限定し、細粒度のread-only tokenを使用したうえで、日本語の記録におけるrecall率、インデックス容量、誤った記憶がエージェントの挙動に及ぼす影響を実測すべきだ。

出典

  1. Give Your Coding Agents a Memory You Own
  2. huggingface/funes: Durable, searchable memory of your past agent sessions