Dir2md + Spicy: LLM向けMarkdown/JSONLコンテキストとセキュリティレポートを一度に出力するリポジトリスキャナー
(github.com/flamehaven01)こんにちは。約3か月前に、Dir2mdを初めて紹介したことがあります。
その後さまざまなプロジェクトに適用する中で構造的な限界が見えてきたため、アルゴリズム・セキュリティ・出力パイプライン全体を再整備しました。
❔Dir2mdとは
Dir2mdは、複雑なディレクトリ構造をスマートサンプリング、セキュリティマスキング、トークン予算制御を備えたAI-friendlyなMarkdown・JSONLコンテキストへ変換するツールです。AI-assisted developmentに最適化された形で、リポジトリを自動整理してくれます。
🔧何が変わったのか — 3か月にわたる全面的な再整備の結果
1) AI最適化エンジンの再設計
- ファイル単位のヘッド/テール スマートサンプリングを導入
- トークン予算の自動配分ロジックを精緻化
- 重要ファイル優先選択構造を整備
- Markdown、JSON、JSONL、manifestのマルチ出力パイプラインを構成
2) Spicy(セキュリティ・リスク分析器)の導入
- 実行時にデフォルトで有効化される内蔵リスクスキャナーを搭載
- ok → criticalの5段階重大度体系を適用
- リポジトリ単位の0〜100リスクスコアを算出
- ファイル/行/カテゴリ/対応ガイドを含むActionable Risk Tableを出力
3) セキュリティマスキングエンジンの強化
- APIキー、JWT、OAuth、DB URL、PEMなど主要パターンを自動マスキング
- ユーザー定義正規表現およびパターンファイル読み込み機能を導入
4) SimHashベースの重複除去を導入
- 類似ファイルおよびビルド成果物を除去
- LLM入力コンテキストでの重複トークン浪費を最小化
5) Presetシステムの拡張
raw,pro,ai,fastの4つのモードを構成aiモードに6000トークン予算 + クエリベースのファイルランキングを含む
🌶️Spicyとは?
Spicyをひと言で表すなら、「セキュリティに一切甘くない、目つきの鋭いシニア開発者のような自動レビュアー」です。
Dir2mdは単に「ディレクトリをドキュメント化」するだけのツールではなく、リポジトリをAIに投入する前に必須となるセキュリティ・品質チェックまで一度に実行します。
1) 機密情報の検出
- API Key、OAuth Client Secret、JWT、DB URL、PEMキーなど、実際の事故につながり得るパターンを検出
2) 脆弱な暗号化・安全でないセキュリティ利用の分析
- 脆弱なアルゴリズム、安全でない鍵処理など、セキュリティ上問題のあるコードを検出
3) インジェクション可能性の診断
- SQL/Command/Code Injectionに類似したパターンを検出
4) ログ・デバッグによるデータ露出
- 機密情報が出力されるコード/設定を検出
5) アクセス制御の問題
- 認証・権限に関する穴があるパターンを分析
- READMEに記載された構成上のリスクシグナルもあわせて検出
📊社内プロダクション9リポジトリ基準の実測結果
Dir2md + Spicyの再設計後、昨日時点で測定された実際の数値は次のとおりです。
- リポジトリあたり平均2.4件のhigh・critical級機密情報を検出
- APIキー、PEM秘密鍵、DB URL、bearer tokenなど
- コンテキストサイズが平均68%減少
- 128k → ~41k tokens(意味のあるファイルはすべて維持)
- セキュリティレビュー時間: 従来3.5時間 → 11秒
- 導入後、LLMプロンプトとして流出した秘密情報: 0件
この結果は、スマートサンプリング・SimHash重複除去・Spicyリスク分析・マスキングエンジンが組み合わさったときに発生する、実際の運用環境での性能です。
⭐プロジェクトの助けになったなら
Dir2md + Spicyはオープンソースです。
いまご覧いただいている機能のほとんどは、ユーザーフィードバックとスター(⭐)のおかげで発展してきました。改めて感謝いたします。
- 👉 GitHub Starひとつが大きな力になります!
- 👉 バグ・アイデア提案もいつでも歓迎します。
2件のコメント
📌 dir2md v1.1.2以降の主なアップデート要約
v1.2.1(セキュリティ/信頼性パッチ)
vulture)のsubprocessを削除 → RCEベクトルを遮断defaults.jsonに分離 + 優先順位システムを導入v1.2.0(インテリジェント自動最適化)
設定不要で動作するトークン60〜70%削減パイプライン
--query使用時に自動スペル修正 + 検索拡張preset中心設計によりフラグを大幅削減(raw/fast/pro/ai)
外部NLP/LLM依存なしで実装
v1.1.3
👉 要約すると、1.2.x以降は「設定を減らし、セキュリティ・決定性・AI親和性」に注力したリリースです。
(下位互換性を維持、CLIの破壊的変更なし)
出典: CHANGELOG
🚂 dir2md 1.1.2 リリース!
今回のアップデートは見た目には小さく見えますが、実運用の安定性に直結する変更だけをまとめました。
🛡 Security
🔸基本/高度なマスキング正規表現を事前コンパイル → ReDoS リスクを低減
🔸1MB 以上のファイルは読み込む前にスキップし、manifest には記録だけを残す
⚙️ Performance
🔸トークン推定に LRU キャッシュ (2048) を適用 → 大規模リポジトリで高速化
🔸空文字列も最小 1 トークンとして処理 → 「0 トークン」の曖昧さを解消
🧩 UX / Behavior
🔸スキップされたファイルにはプレースホルダーのハッシュ/要約を残して透明性を強化
🔸カスタムのマスキングパターンは、コンパイルに失敗した場合は警告を出して無視(サイレントフェイルを防止)
✅ Tests
🔸22 passed, 2 skipped
小さなリリースですが、テストはすべて実行しました。
今回のバージョンの目標はただ一つです:
「CI と実際の本番コードに対して毎日回しても問題ないか?」
その答えに、また一歩近づきました。
https://github.com/flamehaven01/Dir2md/releases/tag/v1.1.2