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

