
- Claude Code / Codex / pi / Hermesのセッション履歴を検索可能な記憶にする
- ローカル動作が基本で、Hugging Faceデータセットへの共有も指定できる
- 手書きの引き継ぎ文書と比べ、1タスクで8倍、もう1つで4倍の低コスト
「funes」は何をするのか
Hugging Faceは2026年9月3日付のブログで、コーディングエージェント向けの永続記憶層「funes」を公開した。funesは、Claude Code、Codex、pi、Hermesが残すセッション履歴を索引化し、作業中のエージェントが過去の判断や試行錯誤を参照できるようにするオープンソースのツールである。インストール後に「funes add claude」のように実行すると、現在使っているエージェントに記憶の検索と参照の機能が追加される。記事では、ログを単に蓄積するだけでは不十分で、検索・ランキング・由来の追跡ができる状態にして初めて「記憶」になるという考え方を示している。
funesは単一バイナリとして動作し、既定の推論バックエンドには機械学習ランタイムが不要とされる。埋め込みと再ランク処理はローカルで実行され、アカウントや外部のホスト型モデルを必要としない。導入後は、エージェントが会話の中で過去の記憶を参照し、回答の根拠を元のセッションまでさかのぼって示せる。
仕組み: 索引・検索・再ランク
内部では、対応エージェントのトレースを統一された「ターンとブロック」の形にパースする。次にそれをチャンク分割し、ローカルで固定した埋め込みモデルでベクトル化して、Lanceデータセットに書き込む。索引化は増分で行われ、新しいセッションのたびに追記され、古い履歴は一定のステップで後から埋め戻される。
検索時はベクトル検索とBM25を組み合わせ、ランキングを融合したうえでクロスエンコーダーによる再ランクを行う。その後、新しい記録に重みを付け、周辺チャンクを添えて結果を返す。この設計により、複数エージェント間で同じ記憶を共有できる、元の証拠を要約しない、ローカル動作が既定である、という3つの性質を持つと説明している。
記憶は「データセット」で共有
funesのもう一つの特徴は、記憶を専用サービスではなく「データセット」として共有できる点だ。「funes add codex acme/funes-memory」のようにバインド先を指定すると、現在の記憶が自分が所有するHugging Faceデータセットに公開される。このデータセットはデフォルトではprivateで、以後セッションの境界ごとにローカルの索引と同期される。別のマシンで同じコマンドを実行すれば、同じ記憶を参照できる。
秘密情報の扱いにも配慮されており、索引化の段階で資格情報が除去され、公開の前にもう一度機密らしきチャンクを走査する。この走査の仕組みはSECURITY.mdとして文書化されている。リモートの記憶を読む際は、データセットのファイルがローカルにキャッシュされるため、温まった状態のクエリはローカル速度で処理される。Hugging Face Hubが所有権、アクセス制御、バージョン管理、配布を担う。
長いセッションの3つの出口
記事は、長いセッションを継続する3つの方法を比較したベンチマークも示している。1つ目はエージェントが標準で行うcompaction(要約)、2つ目は手書きのhandoff(引き継ぎ文書)、3つ目がfunesのrecall(過去の記憶の想起)だ。過去のセッション知識がないと解けない2つのタスクで比べたところ、compactionは片方のタスクでしか成功せず、要約によって重要な情報が失われた可能性が示された。
recallは両方のタスクで成功し、コストはhandoffより片方で8倍、もう片方で4倍安くなった。handoffやcompactionは最初に準備コストがかかるのに対し、recallは索引化済みの記録を参照するだけという違いがある。記事は、要約ではなく原文を返すことで要約による情報損失を避けられるとしている。
現時点で明かされていない点
この記事で示された性能評価は2タスクのコスト比較に限られており、funesの一般的な性能を保証するものではない。埋め込みモデルの具体的なモデル名や、大量の履歴を扱った際の検索精度、複数人での同時利用時の挙動などは記事に示されていない。また、対応エージェントはClaude Code、Codex、pi、Hermesの4種類とされているが、追加のエージェントはGitHubのissueで受け付けている。
funesはオープンソースで、github.com/huggingface/funesから入手できる。日本語の履歴を含む多言語での動作については記事で言及されておらず、日本の開発者は実際に試して検索品質を確認する必要がある。今後の更新や追加の性能報告が判断材料になるだろう。
| 手法 | 概要 | 結果 | コスト |
|---|---|---|---|
| compaction(要約) | セッションを要約してそのまま継続する手法 | 成功は2タスク中1つ | 成功しなかったタスクでは比較対象外 |
| handoff(引き継ぎ文書) | ユーザーが文脈をまとめ、新しいセッションに引き継ぐ | 2タスクとも成功 | recallより高い |
| recall(funesの想起) | 過去のセッションを検索し、元の記録を参照する | 2タスクとも成功 | handoffより一方で8分の1、もう一方で4分の1 |
To think is to forget differences, generalize, make abstractions.
考えるとは、違いを忘れ、一般化し、抽象化することだ。
今後の見通し
現時点の紹介記事が示す性能は2タスクのベンチマークに限られている。今後、大規模な履歴を扱った実測や、対応エージェントの拡大、日本語を含む多言語セッションでの評価が公開されれば、日本の開発チームが導入を判断しやすくなる。特に、複数エージェントが同じ記憶を参照する際の整合性と、リモートデータセットの権限管理が実際の運用でどう機能するかは、追加の情報が待たれる。まずはローカルで試し、検索の質とコスト感覚を確かめるのが早そうだ。
日本の開発者・IT企業にとっての意味
日本のIT企業にとって、funesは「エージェントが残したログを自社で所有・管理できる」点に意味がある。専用の記憶サービスを介さず、ローカルのLanceデータセットを基本とし、共有したい場合も自分が所有するprivateデータセットを使う設計は、コードや意思決定の履歴を外部サービスに預けにくい企業でも導入しやすい。また、Claude CodeやCodexなど複数のエージェントをまたいで同じ記憶を参照できるため、チーム内でエージェントを使い分けている現場でも、過去の判断を引き継ぎやすくなる可能性がある。一方で、記事の性能評価は限られたベンチマークによるものであり、日本語の履歴を含む実際の開発環境では検索品質を自社データで確認することが必要だ。公開されている情報を基に、まずは数人規模で試験導入し、記憶の再現性とコストを測るのが現実的な進め方になる。
気になる点
- funesはどのエージェントで使えますか?
- 記事ではClaude Code、Codex、pi、Hermesに対応すると明記されています。導入時に、たとえば「funes add claude」のようにエージェント名を指定します。追加してほしいエージェントがあれば、GitHubのissueで要望を出せる、と紹介されています。
- セッション履歴は外部に送信されますか?
- 既定では埋め込みと再ランクがローカルで実行されるため、外部に送信されません。共有したい場合は自分が所有するHugging Faceデータセットをバインドしたときだけ公開され、その際もデフォルトはprivateです。公開前には秘密情報の走査がもう一度入ります。
- 日本語の履歴でも検索できますか?
- 紹介記事には日本語対応への言及がありません。また、多言語セッションでの検索精度も示されていません。実際の利用を検討するには、手元で日本語の履歴を使って試し、検索結果を確認する必要があります。
用語解説
- トレース
- エージェントがコード検索や試行錯誤で行った操作の履歴。セッションログとも呼ばれ、変更理由を知る手がかりになる。
- BM25
- 単語の出現頻度に基づく全文検索のランキング手法。ベクトル検索と組み合わせて使われる。
- クロスエンコーダー
- 検索クエリと文書のペアをまとめて入力し、関連性の点数を出すモデル。
- Lanceデータセット
- ローカル向けのベクトルデータセット形式。追記コストが低く、funesの保存先に使われる。
- compaction
- 長いセッションを要約して次に引き継ぐ処理。情報が欠落することがある。
出典
Give Your Coding Agents a Memory You Own
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する