このプロジェクトについて
HippoはAIコーディングエージェント向けのメモリレイヤーで、npmパッケージ`hippo-memory`として配布されている。その前提は、良いメモリとは何を忘れるかを知ることにある。つまり、間違っていた、置き換えられた、あるいは一度も使われなかった記憶はランクを下げるか、想起から完全に外れるべきだという考え方だ。MITライセンスで、Node.js 22.16以上が必要。
ストレージと検索
記憶は`.hippo/hippo.db`のローカルSQLiteデータベースに保存され、変更のたびにmarkdownミラーが書き出されるため、人間が読めてgitで追跡できる。検索はデフォルトでBM25を使用し、モデルもネットワーク呼び出しも不要。埋め込みはオプションでインストールできる(ローカルのTransformers.js、またはOpenAI、Voyage、CohereのオプトインAPI埋め込み)。ランタイム依存関係はゼロと報告されている。MCPサーバーとHTTP APIにより、互換性のある任意のクライアントにストアを公開する。
結果からの学習
2つのメカニズムが測定済みと説明されている。想起された記憶を間違いとマークするとランクが下がり、繰り返し使うと記憶が強化される。`hippo supersede`は置き換えられた事実を想起から外す。エラータグ付きの記憶は通常の2倍の半減期を持つ。デフォルトの半減期は365日。READMEには事前登録済みの評価があり、7日では現在の事実のバージョンを失う頻度がはるかに高く、730日と減衰オフは365日と同点だったと記されている。減衰、3層ストレージ、睡眠による定着は海馬に着想を得たと説明されており、テストでは減衰は減衰無効と同点で、睡眠は想起を下げたとREADMEは述べている。
セットアップと統合
プロジェクト内で`hippo init`を実行すると、`.hippo/`ストアが作成され、既存の`CLAUDE.md`または`AGENTS.md`にマーク付きブロックが追加され、検出されたエージェント用のフックがインストールされ(Claude Code設定、OpenCodeプラグイン、一度限りの信頼が必要なCodexの`hooks.json`エントリ)、毎日午前6時15分の実行がスケジュールされる。`hippo init --scan <folder>`は最大3階層の深さまでgitリポジトリを検索し、直近365日分のコミットからそれぞれをシードする。フラグ`--no-hooks`、`--no-schedule`、`--no-learn`で個別の部分をスキップできる。`hippo doctor`でセットアップを検証する。
機能
インポーターはChatGPTエクスポート、CLAUDE.md、Cursorルール、markdown、プレーンテキストに対応し、ドライランと重複検出を備える。会話キャプチャはLLMではなくパターンヒューリスティックで決定、ルール、エラー、好みを抽出する。SlackとGitHubのWebhookコネクタはイベントを出所情報と削除処理付きの生の記憶として取り込む。その他のコマンドとして、アクティブなタスクのスナップショット、セッションイベントトレイル、ハンドオフ、容量制限付きワーキングメモリスクラッチパッド、信頼度階層(verified、observed、inferred、stale)、競合追跡、移行コミット時の無効化、`hippo recall --why`による説明可能な想起がある。
プライバシーに関する注意
想起はデフォルトでネットワーク呼び出しを行わない。READMEは、`ANTHROPIC_API_KEY`が設定されている場合、`hippo sleep`が事実抽出のために記憶テキストをAnthropicに送信すること、そしてこれは`.hippo/config.json`で無効化できることを開示している。ホスト型のTypeSafe Jevリランカーはオプトインで、デフォルトではオフ。
エビデンスと注意点
READMEは各主張をベンチマークまたはテストにリンクしている。逐次学習ベンチマーク、LongMemEvalオラクル分割の結果(BM25のみでR@5 = 74.0%)、非公開の300クエリリランカー評価、段階的なSlackコーパスなどが含まれる。また、以前の規模に関する主張の1つは撤回されたこと、supersedeメカニズムは未測定であることも明記している。このプロジェクトは、モジュールのモックなしで実際のデータベースに対して3,500以上のテストを行っていると報告している。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.