プログラミング
ローカルインデックスによるツール呼び出しとトークン使用量の削減
Local Indexing to reduce tool calling and token usage (tedhaley.ca)
要約
このツールは、ローカル環境でファイル、リポジトリ、セッション全体を検索できる機能を提供します。自然言語での検索や、コード補完エージェントへのコンテキスト提供を効率化し、ツール呼び出し回数とトークン使用量を大幅に削減することで、開発者の生産性向上とコスト削減を目指します。
全文翻訳
ローカルインデックスによるツール呼び出しとトークン使用量の削減
すべてをローカルで検索。1回の検索。すべてのファイル、リポジトリ、セッション。コントロール+シフトを押すと、ドキュメント、フォルダ、gitリポジトリ、コーディングエージェントとの会話の上にガラスパネルが表示されます。意味で検索するか、正確な単語で検索します。結果を選択し、コントロールをタップして、マウスに触れることなく何をするかを選択します。
「リトライ」支払い -下書き
正確な「リトライ」
意味
支払い
下書きなし
コード
payments/retry.py
acme-app/payments · max_retry_attempts = 5
正確な
インシデントレビュー.md
~/Documents/Ops · カードの拒否、バックオフでリトライ
正確な
領収書フォルダ
~/Downloads
認証フローのリファクタリング
Codex · acme-app · 10月2日
↩ ファインダーで表示
⌘↩ マップで表示
⌥↩ パスをコピー
⌘C
価格モデル
意味による検索
ファイルがそれらを使用していなくても、あなたが意味したことを見つけます。
「レート制限」
正確な単語
引用符はフレーズを正確に一致させます。両方を組み合わせて、意味による正確なヒットをランク付けします。
-下書き
除外する
マイナス記号は単語または引用符で囲まれたフレーズを除外します。
種類:コード
ext:pdf
絞り込む
ファイル、コード、またはセッション、ファイルタイプ、またはフォルダまたはリポジトリに絞り込みます。
エージェントのためのスーパーパワー
適切なコンテキスト。ディスク全体ではありません。
エージェントは、与えられたコンテキストと同じくらいしか良くありません。MCP上で接続されたあなたのコーディングエージェントはPensieveに1つの質問をし、重要な数節をファイルと行番号とともに取得します。より少ないツール呼び出しで、適切なコードから始まります。
› カードのリトライが拒否後に停止するのはなぜですか?
● grep "retry" acme-appで 212件のヒット
● payments/retry.pyを読む
● payments/gateway.pyを読む
● billing/invoices.pyを読む
● tests/test_payments.pyを読む
…さらに36ファイル
まだバックオフルールを探しています…
ツール呼び出し
1 grep · 40回の読み込みが進行中
› カードのリトライが拒否後に停止するのはなぜですか?
● pensieve · "card retry after decline" を検索
payments/retry.py:42 ハードディクラインで停止
payments/gateway.py:118 ディクラインコード
Incident review.md なぜ変更したのか
● pensieve · payments/retry.py:42 を読む
ハードディクラインはリトライキューをスキップします。Maya Riveraがこれを担当しています。3月4日のレビューを参照してください。
ツール呼び出し
1 search · 1 read
実例
以下のベンチマークでは、Pensieveを使用するエージェントは、grepを使用する場合の3.4に対して、ルックアップあたり平均2.0回のツール呼び出しを行い、144回の実行のうち82回で単一の呼び出し後に回答しました。
~ $ pensieve integrate
推奨
claude-mcp: オン
codex-mcp: オン
cursor-mcp: オン
claude: オン
# "search before you grep" in ~/.claude/CLAUDE.md
pensieve-search: オン
claude-hook: オン
claude-repo-check: オン
エージェントは起動時にMCPサーバーをロードします。それらにPensieveを与えるために、開いているものを再起動してください。
ジョブにスコープされた
リポジトリで開始されたエージェントは、そのリポジトリ、ワークツリー、およびセッションを表示します。スコープに名前を付けて、いくつかのリポジトリと仕様のフォルダを与えます。
正確または意味による検索
エージェントはあなたと同じ検索を使用します。コード、ドキュメント、過去のセッション全体で、意味による検索、正確な識別子による検索、またはその両方による検索を行います。
エージェントと連携
Claude Code, Codex, Cursorまたは任意のMCPクライアントと、stdio経由でpensieve mcpまたはHTTP経由で連携します。
pensieve integrateは、Mac上のエージェントを接続し、「grepする前に検索」ブロックとスキルを追加します。これには、コードを知っているチームメイトを指し示すオプションのスキルも含まれます。
測定済み、約束ではない
検索回数が少ない。最初に正しいファイル。
Pensieveを使用した場合と使用しない場合で、Claude Codeに同じコード検索タスクを実行させました。500から35,000ファイルの実リポジトリ全体でのホールドアウトタスクを5つの方法で、プレーンな説明から正確な名前やエラーメッセージまで尋ねました。Pensieveを使用すると、より多くのタスクを見つけ、ツール呼び出し回数が少なくなり、すべてのリポジトリでルックアップあたりのコストが低くなります。
各検索は0.1〜0.2秒かかります。
Pensieveで正しいファイルを見つけた実行数: 131 / 144、grepのみの場合: 123 / 144
ルックアップあたりのツール呼び出し数が43%少ない: 2.0ではなく3.4
ルックアップあたりのコストが18%安い: $0.041ではなく$0.050、および4つのリポジトリすべてで安価
ルックアップあたり21%高速: 8.6秒ではなく10.9秒
正しいファイル、最初の結果
1回の検索、エージェントの前に:回答がトップの結果である頻度。
1 grep
Pensieve検索
エージェントあたりのコードルックアップコスト
Claude SonnetをClaude Codeで実行、4つの実リポジトリで測定。
Pensieveはすべてのリポジトリでコストが低く、最大のものです。
Grep, Glob and Read
Pensieveを使用する方法: Claude SonnetをClaude Codeでヘッドレス実行。
タスクはコードから生成され、見つかったファイルで採点されます。
「Pensieveを使用」はデフォルトのエージェントツールセットにpensieve integrateからの指示ブロックを追加したものです。Pensieve 0.5.6で測定されました。
両方のセットアップは、4つのリポジトリ(504、1,783、2,383、34,847ファイル)全体で同じ72個のホールドアウトタスクを2回ずつ、1つのバッチで実行しました。これは、コストがClaudeのプロンプトキャッシュの時間に依存するためです。
これらのタスクはPensieveのチューニングには使用されませんでした。
コストは、Claude Codeのリスト価格でのAPIコスト報告です。
Pensieveは16%少ないトークンを使用しました。
「正しいファイル、最初の結果」チャートは、同じホールドアウトタスクを使用しています。単一のgrepは正確なエラーメッセージで勝ち、Pensieveはそれ以外のすべてで勝ちます。
ベンチマークスクリプトはbench/でオープンソースです。独自のレポで実行してください。
誰に聞くべきかを知る
誰が何を担当しているかを知る。
各リポジトリをマップとして、各行にgit blameを表示。
任意のトピックについて質問し、最もドメイン知識を持つ人々、および各チームメイトが最近取り組んでいることを取得します。
最も速い回答はしばしば会話です。
「請求リトライ」について誰が知っていますか?
MRMaya Rivera
JOJonah Okafor
YOUあなた
所有権(blameから)
各領域のコードを書いた人、現在残っている行数で重み付け。
ドメイン知識
ファイルではなくトピックについて質問し、そのコードが最も関連性の高い人々を取得。
チーム活動
各チームメイトが過去90日間にリリースしたもの、およびあなたがまだ探求していないあなたの仕事の隣接領域。
知識のギャップを見つける
知識がどこに残っているかを知る。
コードの一部を書いた人々がもはやアクティブでない場合、その知識はリスクにさらされます。Pensieveはそれらの領域をフラグ付けし、どれだけの人がまだそれらを知っているか、そして今日誰が最もよく知っているかを示します。
acme-app / billing/tax
アクティブな専門家1人
2,140行 · 最後のメジャー変更7ヶ月前
ここにはアクティブではありません · 78%Priya Nair · 14%その他 · 8% DKDaniel Kim
3月以降ここにはアクティブではありません
58% LS Lena Schultz
昨年以降ここにはアクティブではありません
20% P NPriya Nair
今月アクティブ · 今日最もよく知っている
14%
提案:税規則を変更する前にPriyaとペアを組み、vat.pyの丸めロジックを文書化してください。
バスタクシー係数(Bus factor)を一目で確認
リポジトリの各領域について:アクティブな人々によって書かれたコードの割合、およびその人数。
誰がまだそれを知っているか
その領域で最も多くの行を持つアクティブな人々。変更する前に誰を呼び出すべきかを知ることができます。
引き継ぎを計画する
インシデントが発生する前にギャップを特定します。
エージェントを領域に向け、不足しているドキュメントをドラフトさせます。
架空の名前と数字を使った例。
常に最新
ファイルを編集します。数秒後に検索します。
Pensieveはフォルダ、リポジトリ、エージェントセッションを監視し、変更されたものを再インデックスします。
コミットされていない編集もカウントされ、各ワークツリーはブランチごとに追跡されるため、エージェントは古いコンテキストから作業することはありません。
payments/retry.py
acme-appの未コミットの変更
今
新しいワークツリー: fix-backoff
メインから異なるファイル、ブランチでタグ付け
12秒前
Q3 planning.pdf
~/Documents/Planningに保存
1分前
年次プランの価格設定を正しく行う
実行中のClaude Codeセッションでの新しい展開
2分前
プライベート・バイ・デザイン
あなたの仕事はあなたのMacに残ります。インデックス作成と検索はローカルで実行されます。
何をインデックスするかを決定し、AIは完全にオプションです。
ローカルで実行
オンデバイス埋め込みモデルとローカルインデックス (~/.pensieve)。サーバーは、このMacのみに応答し、ネットワークや他のウェブサイトには応答しません。
アカウントなし、クラウドサービスなし。
任意のソースをオフにする
エージェント、フォルダ、リポジトリ、アプリにはそれぞれスイッチがあります。オフにすると、インデックスされたものが削除されます。
シークレットはスキップされる
パスワードマネージャーのエクスポート、キー、.envファイル、認証情報はインデックスされません。
必要であればAIを使用
要約と洞察はオプションです。
誰がそれらを書くかを選択するか、オフのままにします。
組み込みのQwen 3.5 9B
ローカルLM Studioまたはローカルサーバー
ローカルClaude CodeまたはCodexクラウド
オフ
ローカル
Pensieveを入手する。
無料かつオープンソース。
あなたのコーディングエージェントがセットアップを行います。
コーディングエージェントに尋ねてください。
Claude Code, Codex, Cursor, Gemini CLI, Qwen Code, WindsurfまたはVS Codeにこれを貼り付けます。
MacにPensieveをインストールするには、sh -c "$(curl -fsSL https://tedhaley.ca/pensieve/install.sh)" を実行し、次にpensieve integr を実行します。