世界を動かす技術を、日本語で。

Show HN: LLMツールが送信している内容を確認するためのMitMプロキシ

概要

Sherlock は、LLM CLIツール用の トークン使用状況 をリアルタイムで追跡するダッシュボードを提供 インストールや設定不要 ですぐに利用可能 各リクエストやセッションごとの トークン消費量 を可視化 プロンプトの自動保存 やセッションサマリーなどの便利機能を搭載 Anthropic ClaudeOpenAI Codex 等の主要プロバイダーに対応

Sherlock Token Tracker 概要

  • LLM CLIツールの トークン消費量追跡 を目的としたツール
  • リアルタイムダッシュボード による分かりやすい可視化
  • プロンプト内容の自動保存 (Markdown/JSON形式)
  • セッションごとのトークン集計 で全体の使用状況把握
  • インストール直後から利用可能 なゼロコンフィグ設計

インストール方法

  • リポジトリのクローン
    • git clone https://github.com/jmuncor/sherlock.git
  • ディレクトリ移動
    • cd sherlock
  • パッケージインストール
    • pip install -e .
  • Python 3.10以上 が必要

クイックスタート

  • ターミナル1:ダッシュボード起動
    • sherlock start
    • プロンプト保存先選択後、ダッシュボードが表示
  • ターミナル2:LLMツール実行
    • Claude Code用:sherlock claude
    • Gemini CLI用:sherlock gemini(既知の問題あり)
    • OpenAI Codex用:sherlock codex
  • ダッシュボードがリアルタイム更新、トークン消費を即時確認

主な機能

  • ライブダッシュボード
    • トークン使用量を 色分けゲージ で表示
      • 緑:50%未満
      • 黄:50~80%
      • 赤:80%以上
  • プロンプトアーカイブ
    • すべてのリクエストを指定ディレクトリに 自動保存
      • Markdown:メタデータ付きの人間向け形式
      • JSON:APIリクエストの生データ
  • セッションサマリー
    • 終了時に 総トークン数・リクエスト数 を集計表示

コマンド一覧

  • sherlock start
    • プロキシ&ダッシュボード起動
  • sherlock claude
    • Claude Codeをプロキシ経由で実行
  • sherlock gemini
    • Gemini CLIをプロキシ経由で実行
  • sherlock codex
    • OpenAI Codex CLIをプロキシ経由で実行
  • sherlock run --provider <name> <cmd>
    • 任意のコマンドをプロキシ経由で実行

主要オプション

  • sherlock start [OPTIONS]
    • -p, --port NUM:プロキシ用ポート(デフォルト8080)
    • -l, --limit NUM:トークン上限(デフォルト200000)
  • sherlock claude [OPTIONS]
    • -p, --port NUM:プロキシ用ポート指定

動作イメージ

  • ターミナル1:sherlock start
    • HTTPプロキシ(localhost:8080)+ダッシュボード+プロンプトアーカイブ
  • ターミナル2:sherlock claude等
    • 環境変数設定(例:ANTHROPIC_BASE_URL=http://localhost:8080)
    • LLMツール実行
  • API通信の中継・監視 によるトークン追跡

対応プロバイダー

  • Anthropic(Claude Code) :sherlock claude(対応済み)
  • Google(Gemini CLI) :sherlock gemini(現状未対応、CLI側の問題)
  • OpenAI(Codex) :sherlock codex(対応済み)

既知の問題

  • Gemini CLI
    • OAuth認証使用時、カスタムBase URLを無視する既知バグ
    • Gemini CLI側の修正後、自動的にSherlockで利用可能

コントリビュート方法

  • リポジトリを フォーク
  • 新機能ブランチ 作成(git checkout -b feature/xxxx)
  • 変更コミット (git commit -m 'Add xxxx')
  • プッシュ (git push origin feature/xxxx)
  • Pull Request作成 による貢献

開発環境セットアップ

  • git clone https://github.com/jmuncor/sherlock.git
  • cd sherlock
  • python -m venv venv
  • source venv/bin/activate
  • pip install -e .

ライセンス

  • MITライセンス を採用
  • 詳細はLICENSEファイル参照

補足・作者メッセージ

  • Claude CodeのAPI通信内容への 好奇心 から開発
  • リアルタイムでトークン消費を監視 する体験は意外と楽しい
  • Sherlockは LLMツールとAPIの間に入り、すべてのリクエストをダッシュボード表示&自動保存
  • LLM利用の可視化・最適化・学習 に最適

Hackerたちの意見

いい仕事だね!ここから得られるデータは多くのユーザーにとって明るい光になると思うよ。こういう企業全体で使えるツールの需要がもっと強くないのが意外だね。確かにいくつかのソリューションはあるけど、「会社の全員にエージェント的なAI機能を持たせる」という新しいスタンダードと、以前の強いデータガバナンスのパラダイム(特に大きな組織では)を比べると、かなりの違いがあるよね。そろそろその流れが少し戻ってくるんじゃないかな。AIがすべてに使えるわけじゃないし、広範なAI利用に関するガバナンス(実際にツールができることを厳しく制限せずに)って、難しいし継続的な問題だからね。

エージェントからトークンを隠すためにプロキシを自作しなきゃいけなかったよ(https://github.com/vladimirkras/prxlocal)。いい解決策が見つからなかったからね。対話やツール呼び出しを表示するためにパイプできるgenai otelのものを追加する予定だったけど、たくさんの手動コーディングを必要としない良いセットアップはまだ見つけてないんだ。この分野に解決策がないのは本当に変だよね。

そうそう、エンジニアとして、私たちは思いついたことをすべて文書化するように訓練されてるよね。責任や将来の参考のために。でも、LLMがタスクを終えたら、「バスに轢かれる」シナリオがすぐに起こるんだよね。

これいいね!大きくて複雑なコードベースでAIを使うときは、トークンが大量に発生するようなことを私に渡してくれるコラボレーションを試みてるよ(無駄なツール呼び出し、不正確な検索、冗長な出力、大きなファイルを範囲指定なしで読む、など)。これで、手動で処理するべきものを正確に絞り込めるから、トークンの予算を守りやすくなるんだ。注意:インストールのgit cloneの指示にある「yourusername」は置き換えてね。

これをどうやってやっているのか、もう少し詳しく教えてくれない?AIのプロンプトに何を追加して、そのタスクを私に渡すようにしてるの?

ハハハ、さっき直したよ、ありがとう!!!これをプロンプト管理者に拡張することを考えてみて。システムが毎回のクエリで送る無駄なものがたくさんあると思うから、改善できると思うんだ。

Claudeに冗長にならないように指示してトークン使用量を減らそうとしてるんだけど(事前に何をするか言ったり、何をしたか言ったり、無駄なファイルツリーを出したり)、私の指示を無視されちゃうんだ。モデルがそういうのをやめさせるのが難しいのかもしれないし、Anthropicがトークンを無駄にさせて、すぐに使用量を消費させたいのかもしれないね。

私も似たような問題があって、claude code(またはcodex)がサンドボックスで動いてる時、大きなコンテキストに制限をかけるか通知を受けたかったんだ。特に、x0Kワードを超えると出力が悪くなるから。https://github.com/quilrai/LLMWatcher で同じ目的のMacアプリを作ったよ。何か意見があれば嬉しい。

証明書をいじる必要はないよ。CCをHTTPエンドポイントに向ければ、喜んで動いてくれるから。DIYプロキシを作れば、ワイヤ上のプロンプトをいじることもできるし、システムプロンプトの一部をカットしたり、特定の条件に基づいて別のエンドポイントにリダイレクトしたりもできるよ。

これをGeminiやCodexで試したことある?

最近mitmproxyを設定したばかりの者として、これがスタンドアロンのものではなくプラグインやアドオンだったらよかったのにと思ってる。mitmproxyは信頼してるけど、新しい未知のツールはセキュリティやプライバシーに広範な影響があるから、ちょっと警戒しちゃうんだよね。特に最近は、雰囲気重視のプロジェクトがたくさん出てるから(ここがそうかはわからないけど)、それが気になる。

同感!このプロジェクトは面白かったな。コンテキストウィンドウに「本当に」何があるのか理解するのが難しいからね… プラグインやアドオンってどういう意味?何に対するアドオン?次に何を追加するか考え中… セキュリティとか、プロキシのトラフィックがどうなってるかの可視化がいい方向かも。

このツールは、上流リクエストに対してTLS検証を無条件に無効にするみたいだね。mitmproxyに「--set", "ssl_insecure=true」でシェルアウトする。これを見つけるのに、main.pyをスマホで読むのに5分もかからなかったよ。https://github.com/jmuncor/sherlock/blob/fb76605fabbda351828... 編集:もしわかりにくかったら言っておくけど、これを使うべきじゃないよ。

修正してシンプルなHTTPリレーを実装したよ。mitmproxyとssl_insecure=trueを排除した。新しい実装はTLS検証を使ってる。最後のテストをしてマージ中なんだけど… マージ後にチェックしてくれたら、星をもらえたか教えてくれる? :D

共著者: クロード・オーパス 4.5

主な問題は、OPが書いた時だと思う: > "これを作った" じゃなくて > "これを促した" って言ってるところ。人々が新しいアイデアをウェブに公開するのは全然いいと思うけど、100%正直で、自分がアイデアを持っててAIに作らせたって認めるならね。そうすれば、考慮すべきことを全部考えてないかもしれないって理解できるし、スキップできる(自分で促して、必要だと思うことを全部追加することもできるし)。

公共のWi-Fiがあるカフェで、サンドボックスなしでターミナルコマンドを自動承認するつもりなら、使わない方がいいよ。隣にいるハッカーが、君がすごくニッチな設定を使うことに賭けるかもしれないから。

それに、GitHubにいた時の自分の最もスターをもらったプロジェクトをすでに超えてるし、forgejoに移したことがさらに正当化されてる。信じられないセキュリティ脆弱性を持つvibecodedのものがこんなに称賛されるなら、スターシステムは質のフィルターとして機能してないってことだよね。同様に、質を反映するために使われていたよく作られたREADMEも、もうそうじゃない...

mitmproxyを…プロキシとして使うのは実はすごく簡単だよ。SOCKSプロキシ(または他の何か)として設定して、ネットワークやブラウザをそのプロキシに向けるだけ。最近、Pythonツールがウェブをクローリングしすぎてサーバーに拒否された時にこれをやったんだ。セッションを5リクエスト/秒に制限して、ライブラリ内の正確なファイルを探す代わりにうまくいったよ。同じことをブラウザにもやって、キャプチャモードをオンにすればリクエストが見えるよ。

アイデアはそれを簡素化して保存することなんだ… HTTPリレーに変更しようか考えてるんだけど、どう思う?

HNのフロントページに載るAI関連のゴミが増えすぎてる気がする。コメントを開くと、明らかにLLMボットがコメントしてるし。これってHNの終わりなのかな。

もっと進んだLLM APIプロキシで、いいダッシュボード付き: https://github.com/bazumo/clancy

制御されたフォルダアクセスとファイルシステムアクセスを有効にして、LLMを読み込むたびに何が変わろうとしているのかを確認してみて。ほとんどのLLMモデルは、最初の読み込み時に「ホーム」に連絡するようにプログラムされてるから。読み込んでいるライブラリもログを取って、バイトを送信しようとしてるかも(詳細はファイアウォールで確認してね)。HugstonOneはそのために強制オフラインポリシー/オフラインスイッチを使ってる。最近、ユーザーたちがすごく喜んでるし、未来にはそれがはっきりわかると思う。

一緒に言おう: もしこのためにAIが書いたツールが欲しかったら、HNを開くんじゃなくてAIに促してたはずだ。