Handoff MCP v0.33.0 — 日本語で書いたメモが英語でも見つかる、意味検索の導入
リリース

Handoff MCP v0.33.0 — 日本語で書いたメモが英語でも見つかる、意味検索の導入

607 KB の軽量モデルをバイナリに内蔵。語彙検索と意味検索のハイブリッドで、日本語のメモリが英語の検索でヒットするようになりました。外部 API も GPU も不要です。

Handoff MCP v0.33.0 をリリースしました。メモリ検索が言語の壁を越えられるようになります。

日本語で覚えたことが、英語で聞くと出てこない

開発プロジェクトのメモリには日本語と英語が混在します。設計判断は日本語、ライブラリの注意点は英語のまま。

問題は検索です。「認証まわりの注意点」と保存したメモリが "authentication" で引っかからない。"rate limiting gotcha" が「レート制限」で出てこない。BM25(語彙ベース検索)は表記が一致しなければスコアがゼロなので、言語が違うだけで知見が埋もれます。

607 KB のモデルをバイナリに内蔵

v0.33.0 では、メモリ検索に**意味検索(セマンティック検索)**を組み込みました。

585M ペアで学習した軽量埋め込みモデル(lexsim 0.8)をバイナリに直接同梱しています。メモリの保存時と検索時にベクトル化し、従来の BM25 スコアとコサイン類似度をブレンド。表記が違っても意味が近ければヒットします。

モデルサイズはたった 607 KB。外部 API も GPU も追加セットアップも要りません。バイナリを更新するだけで有効になります。

日英の橋渡しは、共通のアンカー用語——固有名詞、技術用語、ライブラリ名など——が手がかりです。「認証」と "authentication" のように直接の訳語がなくても、周辺の技術用語が重なっていれば検索に引っかかります。

重複メモリの検出にも活用

同じ仕組みを、メモリの重複検出にも使っています。

handoff_memory_save は保存時に hybrid_jaccard(語彙 + 意味の類似度)で既存メモリと照合し、実質同じ内容の重複を警告します。これまでの純粋な Jaccard 係数では、言い回しが違うだけの重複を見逃していました。

handoff_memory_cleanup でも事前計算した埋め込みベクトルを使い、O(N) の埋め込み + O(N²) のドット積で重複候補をクラスタリングします。

その他の変更

  • ドキュメント slug の厳格化 — handoff_doc_save の作成時に、明示的かつ一意の slug が必須に
  • セッションループの言語統一 — /session-loop がユーザーの言語を推定し、開発者・テスター・レビュアー全ロールで統一適用
  • Node の module-type 警告を解消 — npm ラッパーとパッケージングスクリプトを ESM 化

インストール・アップデート

npx handoff-mcp-server@latest

Claude Code のプラグインとして使っている場合:

/plugin install alphaelements/handoff-mcp

Handoff の実績ページを見る