Lockkeeper について
Lockkeeperは、AIコーディングエージェント向けのローカルルーターです。タスクに合う少数のスキル、MCPサーバー、ツールを選び、指示をスキャンして不正なツール呼び出しを遮断するファイアウォールも備えています。
主な機能
- 01タスクに合う機能のルーティング
- 02複数エージェントのスキルを索引化
- 03スキル・プラグインのインジェクション検査
- 04不正なツール呼び出しのリアルタイム遮断
- 05CLI、MCPサーバー、Claude Codeフック
- 06モデル不要のローカルルーティング
活用シーン
- 01コーディングタスクごとのスキル選択
- 02エージェントのコンテキストに読み込むスキルの削減
- 03導入前のダウンロード済みスキルの監査
- 04不正なツール呼び出しのフィルタリング
MCP 対応
MCPサーバーとして、MCPクライアントにroute、search、auditツールを公開します。設定済みのMCPサーバーとツールも索引化し、タスク別ルートに含められます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| max | integer | いいえ | バンドルのサイズ(既定値:設定された bundle_size。変更されていない場合は 10)。 |
| task | string | はい | 平易な言葉で記述したタスクまたはユーザープロンプト。 |
| runtime | enum | いいえ | このバンドルを使用するエージェント(既定ではサーバーの --runtime)。claude | codex | hermes | jcode | shared |
詳細
AI コーディングエージェント向けスキルルーター兼プロンプトインジェクションファイアウォール
Claude Code、Codex、Cursor などの AI エージェントに、すべてのスキル、MCP サーバー、ツールを渡すのではなく、各タスクに適したものだけを渡します。
コンテキストウィンドウを小さく保ち、ツール選択の精度を高め、審査されていないスキルの指示がエージェントに届くのを防ぎます。
Lockkeeper とは?
AI コーディングエージェントは、スキル(SKILL.md ファイル)、MCP サーバー、プラグイン、ツールを使うと、より優れた成果を出せます。しかし、インストールするものが増えるたびに、エージェントが読み、選ぶ必要のあるものも増えていきます。数百個をインストールすると、作業を始める前にコンテキストウィンドウがいっぱいになり、エージェントが誤ったスキルを選んだり、何も選ばなかったりすることもよくあります。
Lockkeeper はローカルのスキルルーターです。 すべてのエージェントにインストールされているものをインデックス化し、各タスクに対して、互いに補完し合う少数のセットをエージェントに渡します。デフォルトでは最大 10 個の機能を渡します(サイズは自由に選べます)。それぞれについて、読み込むべき正確なファイルも指定します。エージェントに届く前に、組み込みファイアウォールでスキルと実行中のツール呼び出しをチェックし、プロンプトインジェクションを検出できます。
$ lockkeeper route --runtime claude "migrate the auth module to the new token API"
[primary] skill: api-migration
[context] mcp: context7
[integration] tool: mcp__context7__query_docs
[verification] agent: code-reviewer
[support] skill: python-patterns
context savings: loaded 6 of 7,540 eligible capabilities (7,534 kept out of context)
開発者が Lockkeeper を使う理由
- 🎯 より適切なスキル選択。 実際のエージェントタスクを使った公開ベンチマークで、Lockkeeper はモデルを必要とせず、実在する 26,000 個のスキルの中から 65% の確率で正しいスキルを最初に選びます(35% から向上)。79,000 個の場合は 55% です。ベンチマークを見る。
- 📉 コンテキストウィンドウを小さく維持。 ライブラリに 58,018 個の機能があっても、ルーティングされたタスクで扱うスキルは中央値で約 8,700 トークンです。約 7,750 万トークンではありません。ライブラリにスキルを追加しても、プロンプトは大きくなりません。
- 🛡 より安全なスキルとプラグイン。 エージェントが読み込む前に、あらゆるスキル、プラグイン、MCP 設定をスキャンして隠された指示やデータの持ち出しを検出し、悪意のあるツール呼び出しを実行中にブロックします。
- 🔌 いつもの環境で動作。 Claude Code では自動ルーティングを利用でき、Codex、Cursor、Windsurf、Cline などのクライアントには MCP サーバーを、それ以外の環境には CLI を提供します。
- 🔒 ローカルでプライベート、依存関係なし。 Python 標準ライブラリだけで動作します。GPU、API キー、クラウドサービスは不要です。明示的に許可しない限り、テレメトリーは無効です。
クイックスタート
1. インストール:PyPI からインストールします(Python 3.11 以降、macOS、Linux、Windows に対応)。
pipx install lockkeeper # or: pip install lockkeeper · uv tool install lockkeeper
lockkeeper init # finds every AI agent on this machine and connects it
ルータースキルだけが必要ですか? npx skills add Hannay001/lockkeeper を実行すると、任意のエージェントにインストールできます(lockkeeper コマンドも必要です)。ターミナルを使いたくない場合は、PROMPT.md のプロンプトを、普段お使いの AI エージェントに貼り付けてください。Lockkeeper のインストールと設定が行われます。ソースから作業する場合は、git clone https://github.com/Hannay001/lockkeeper.git && cd lockkeeper && ./install.sh を実行してください。
2. インストール済みのものをインデックス化します:
lockkeeper rebuild # indexes every skill, agent, command, MCP server and plugin it finds
lockkeeper doctor # shows each agent found and how many skills it has
3. タスクをルーティングします:
lockkeeper route "write unit tests for a python data pipeline"
次に、以下からエージェントでの使い方を選んでください。
Lockkeeper の 4 つの使い方
1. すべてのプロンプトを自動でルーティングする(Claude Code)
(pipx install lockkeeper の実行後に)Claude Code プラグインをインストールします。Claude Code 内で次を実行してください。
/plugin marketplace add Hannay001/lockkeeper
/plugin install lockkeeper@lockkeeper
これにより、ルーティングフック、MCP サーバー、ルータースキルが一度に追加されます。設定ファイルを使いたい場合は、lockkeeper hooks install claude を実行するとフックのみが追加されます(どちらか一方を使い、両方は使わないでください)。
今後、送信するすべてのプロンプトには、適合するインストール済みスキルの名前と、読み込むべき正確なファイルを示す短いメモが付いて Claude Code に届きます。スラッシュコマンドや「ありがとう」のような短い返信はそのまま通過し、フックがプロンプトをブロックすることはありません。元に戻すには、lockkeeper hooks remove claude を実行してください。
次に、Claude Code が各セッションで読み込むリストを縮小します。
lockkeeper library move # shows the plan: which skills move, how many tokens it saves
lockkeeper library move --apply # moves them to ~/.agents/library; the hook still finds them
lockkeeper library restore --apply # puts them all back
Claude Code は、~/.claude/skills 内のすべてのスキルの名前と説明を各セッションに読み込みます。ライブラリモードでは、スキルを Lockkeeper がインデックス化する一方で Claude Code は読み込まないフォルダーに移動するため、プロンプトに必要なスキルだけがコンテキストに届きます。--keep NAME を指定すると、お気に入りを元の場所に残せます。
2. MCP サーバーとして使う(Codex、Cursor、Windsurf、Cline、および任意の MCP クライアント)
lockkeeper mcp を使うと、エージェントに route、search、audit の 3 つのツールが提供されます。また、呼び出しの間もインデックスが読み込まれた状態になるため、応答が速くなります。
claude mcp add lockkeeper -- lockkeeper mcp # Claude Code
# Codex: ~/.codex/config.toml
[mcp_servers.lockkeeper]
command = "lockkeeper"
args = ["mcp", "--runtime", "codex"]
{ "mcpServers": { "lockkeeper": { "command": "lockkeeper", "args": ["mcp"] } } }
JSON 形式は Cursor(~/.cursor/mcp.json)、Windsurf、Cline、その他ほとんどのクライアントで使用できます。Lockkeeper は公式 MCP Registry にも掲載されています(MCP Registry の名前:mcp-name: io.github.Hannay001/lockkeeper)。
3. コマンドラインとスクリプトから使う
lockkeeper route --runtime codex "add rate limiting to a REST endpoint"
lockkeeper search "pdf tables"
lockkeeper route --json --stdin < task.txt # whole prompts, machine-readable output
4. スキルとプラグインのファイアウォールとして使う
lockkeeper audit ~/Downloads/some-skill --recursive --strict # exit 2 = hostile
lockkeeper hooks install claude --firewall # block hostile tool calls live
対応エージェント
| エージェント | インデックス化するスキルとツール | エージェントへのルートの提供方法 |
|---|---|---|
| Claude Code | ✓ | 各プロンプトで自動的に提供(hooks install claude)、または MCP |
| OpenAI Codex CLI | ✓ | MCP(lockkeeper mcp)または CLI |
| Cursor、Windsurf、Cline | ✓ | MCP |
| GitHub Copilot、Gemini CLI、OpenCode | ✓ | MCP |
| Jcode、Hermes | ✓ | MCP または CLI |
Lockkeeper は、すでにお使いの形式を読み取ります。SKILL.md の Agent Skills、Markdown 形式のエージェントとコマンド、プラグインマニフェスト、MCP サーバー設定に対応しています。インストーラーは、名前が認識できないエージェントツールも検出します。
公開ベンチマークで実証済み
ルーティングの性能は測定できる必要があります。Lockkeeper は、SkillRouter 論文 (arXiv:2603.22455) の公開ベンチマーク SkillRouter Eval Core でテストされています。このベンチマークは、正解スキルが判明している実際のエージェントタスク 75 件を、公開リポジトリにある実際の SKILL.md ファイルの中に混ぜて収録しており、意図的に紛らわしく作られた類似スキル 780 件も含まれています。
| このリリース以前 | 現在の Lockkeeper | |
|---|---|---|
| 26,000 件のスキルで、正しいスキルが第 1 位 | 34.7% | 65.3% |
| 79,141 件のスキルで、正しいスキルが第 1 位 | 25.3% | 54.7% |
| ルーティングされたスキルセットに必要なスキルが含まれる割合(79k) | 20.6% | 52.1% |
| 約 180 語のタスクのルーティングにかかる時間(26k 件のスキル) | 6.5 s | 0.7 s |
全スキルプールで、Lockkeeper の標準ライブラリによるランカーは、論文に掲載されている汎用埋め込みモデル(Qwen3-Embedding-0.6B は 53.3%、Gemini embedding は 56.0%)の間に位置し、BM25 キーワードベースライン(28.0%)のおよそ 2 倍のスコアを記録します。モデルの読み込みは不要です。手法、変更ごとの結果、注意事項については、docs/BENCHMARK.md をご覧ください。
自分で再現できます(約 400 MB のデータセットを一度ダウンロードします)。
python3 scripts/bench_routing.py prepare --home /tmp/lk-bench --size 26000
python3 scripts/bench_routing.py run --home /tmp/lk-bench
ライブラリが大きくなっても、プロンプトのサイズは変わりません。 79,141 件のスキルを含むベンチマークプール(スキル本文約 157M トークン)では、日常的なタスク 6 件それぞれで機能を 10 件にルーティングした場合、エージェントがすべての内容を読み込んでも、トークン数の中央値は約 16,000 にとどまり、99.98% 以上がコンテキストから除外されます。26,000 件のスキルを含むプールでも、ほぼ同じ結果(17,600)でした。python3 scripts/bench_context_savings.py で再現できます。
仕組み
flowchart LR
T["Your task or prompt"] --> S["Rank every installed capability<br/>names, descriptions, body keywords,<br/>rare words weighted higher"]
S --> P["Apply your policy<br/>deny lists, required roles"]
P --> B["Build a bundle<br/>roles first, then close matches,<br/>up to your size (10 by default)"]
B --> F["Keep only what this<br/>agent can actually run"]
F --> R["Routed set with<br/>exact files to read"]
- マシン上のすべてのエージェントで 1 つのインデックスを共有します。重複を排除し、スキルのインストール、削除、更新時に自動で更新します。
- 各スキルがどのような内容かを読み取ります。 1 行の説明だけでなく、再構築時に各スキル本文の中から最も特徴的な語をインデックス化します。
- 長いリストではなく、バンドルを作成します。 ルートには相互に補完する役割(主要な手法、コンテキスト、統合、検証、サポート)を追加し、その後、近い一致のみを追加します。バンドルのサイズ(デフォルトは 10、3〜20)を超えることはありません。
- オプションの機能強化は必須ではありません。 セマンティックな再ランキング用の埋め込みサイドカーと、判断モデルの段階(たとえば Laya やクロスエンコーダー)を利用できます。判断モデルの段階はシャドーモードで開始するため、信頼する前に性能を測定できます。
スキルと MCP 向けのプロンプトインジェクション防御
スキルとプラグインは、エージェントが従う指示です。Lockkeeper のスキャナーは、エージェントの上書きを試みるテキスト、シークレットやファイルをネットワークに送信するコマンド、認証情報ストアへのアクセス、隠しペイロードをデコードして実行するコード、破壊的なコマンド、不可視の Unicode を、Markdown、設定ファイル、スクリプト全体から検出します。
- CI 対応の判定結果:
clean、suspect、hostile。終了コードは 0、1、2 です。 - リアルタイム保護: Claude Code のフックが、悪意のあるツール呼び出しの実行前にブロックします。
- 証拠: 署名付きの記録により、何がスキャンされたか、また結果が改ざんされていないことを証明します。
- オプション: osv.dev を使った依存関係の CVE チェックと、2 回目の LLM レビュー。
詳細については、docs/FIREWALL.md をご覧ください。
Lockkeeper の比較
| 各タスクを振り分ける | 複数のエージェント間でスキル、MCP、プラグイン、ツールを扱う | スキルの本文の指示を使用する | インジェクション対策ファイアウォール | モデルまたは GPU が必要 | |
|---|---|---|---|---|---|
| すべてのスキルをコンテキストに読み込む | ✗ | – | ✓、膨大なトークンコストが発生 | ✗ | 不要 |
| 組み込みのスキル一覧(名前と説明のみ) | エージェントが推測 | 1 つのエージェント | ✗ | ✗ | 不要 |
| 学習済みスキルルーター(例:SkillRouter、1.2B パラメーター) | ✓ | スキルのみ | ✓ | ✗ | 必要 |
| MCP サーバーマネージャー | ✗ | MCP のみ | – | ✗ | 不要 |
| スキルセキュリティスキャナー | ✗ | ✗ | ✓ | ✓ | 一部で必要 |
| Lockkeeper | ✓ | ✓ | ✓ | ✓ | 不要 |
よくある質問
Claude Code のコンテキストウィンドウがスキルでいっぱいにならないようにするにはどうすればよいですか?
lockkeeper hooks install claude を実行し、続けて lockkeeper library move --apply を実行してください。前者により、各プロンプトに適した少数のスキルが読み込まれます。後者により、スキルが ~/.claude/skills から、Lockkeeper がインデックス化する一方で Claude Code は読み込まないライブラリに移動されるため、説明がすべてのセッションでコンテキストを埋め尽くすことがなくなります。--apply を付けずに lockkeeper library move を実行すると、まず移動計画を確認できます。--keep NAME を指定するとお気に入りをそのまま残せます。また、lockkeeper library restore --apply を実行すると元に戻せます。
Lockkeeper は MCP サーバーに対応していますか?
どちらの方法にも対応しています。エージェントに設定された MCP サーバーとツールをインデックス化して振り分けるほか、Lockkeeper 自体も MCP サーバー(lockkeeper mcp)として動作し、Codex、Cursor、Windsurf、Cline などのクライアントから呼び出せます。
GitHub のスキルをインストールする前に、プロンプトインジェクションがないか確認するにはどうすればよいですか?
lockkeeper audit path/to/skill --recursive --strict を実行してください。判定が hostile(終了コード 2)の場合はインストールしないでください。docs/FIREWALL.md をご覧ください。
Lockkeeper はプロンプトやコードをどこかに送信しますか?
いいえ。振り分け、インデックス化、監査はローカルで実行されます。ネットワークを使用する機能はオプトイン方式のみです。osv.dev による依存関係のチェック、LLM スキャン、リモートの判定プロバイダー、およびモデルを一度ダウンロードする任意の埋め込みサイドカーが該当します。
テレメトリーはありますか?
同意した場合に限られます。lockkeeper init と lockkeeper hooks install は、ターミナル上で一度だけ確認します(スクリプトや CI では確認しません)。また、lockkeeper telemetry on|off を実行すれば、いつでも回答を変更できます。共有されるのは匿名化された日次件数(実行されたコマンドとその所要時間)だけで、プロンプト、スキル名、ファイルパスは送信されません。DO_NOT_TRACK=1 を設定すると、常に無効になります。docs/TELEMETRY.md をご覧ください。
Lockkeeper は無料で使用できますか?
はい。仕事や商用プロジェクトを含め、個人でも会社でも使用できます。使用、変更、共有が可能です。Functional Source License(FSL-1.1-ALv2)で禁止されているのは、Lockkeeper またはそれを基にした製品を、競合する商用製品やサービスとして他者に提供することです。各リリースは公開から 2 年後に Apache 2.0 となり、1.2.0 までのバージョンは MIT ライセンスのままです。
GPU、API キー、埋め込みモデルは必要ですか?
いいえ。コア機能は Python の標準ライブラリのみを使用します。埋め込みと判定モデルは任意の追加機能です。
Lockkeeper は何個のスキルを扱えますか?
最大 79,141 個のスキルでテスト済みです。一般的な規模(数百から数千個)であれば、振り分けと再インデックス化は 1 秒未満から数秒で完了します。
Lockkeeper は、エージェントが単独で選ぶより質の低いスキルを選ぶことはありますか?
実測してください。scripts/bench_routing.py は公開ベンチマークを実行し、scripts/eval_decision.py は独自の履歴からラベル付けしたタスクを評価します。
ドキュメント
| ガイド | 内容 |
|---|---|
| 設定 | すべてのコマンド、プロジェクトとポリシーパック、鮮度、長いプロンプト、フック、MCP、オプションのモデル |
| ファイアウォール | スキャナーが検出する内容、判定、レシート、ライブフック |
| ベンチマーク | 手法、全結果、公開済みルーターとの比較、注意事項 |
| テレメトリー | オプトインのテレメトリーで収集する内容と、無効にする方法 |
| アーキテクチャ | インデックス、ルーター、ファイアウォールの連携方法 |
| ロードマップ | リリース済みの機能と今後の予定 |
コントリビューション
Issue、アイデア、プルリクエストを歓迎します。テストを実行するには:
HOME="$(mktemp -d)" python3 -m unittest discover -s tests -p "test_*.py" -t .
プルリクエストを送信すると、プロジェクトのライセンスに基づいてコントリビューションをライセンスすることに同意したものとみなされます。
セキュリティ上の問題や、ファイアウォールをすり抜ける方法を見つけましたか?SECURITY.mdに従って、非公開でご報告ください。
Himanshu (@Hannay001) が開発・メンテナンスしています · Functional Source License (FSL-1.1-ALv2)
Lockkeeper がコンテキストの節約や危険なものの検出に役立ったら、⭐を付けてほかの開発者にも見つけてもらいましょう。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。