yek は、Rust で書かれた高速な CLI ツールで、コードベース内のテキストファイルを大規模言語モデル(LLM)が扱いやすい形式にシリアライズすることに特化しています。

なぜ yek が必要なのか?

LLM と対話する際、コードベース全体やプロジェクトの一部をモデルに提供して分析してもらうことがよくあります。手動でコピー&ペーストするのは面倒ですし、重要なファイルを見落としがちです。yek はまさにこの課題を解決するために生まれました。

主な機能

  • インテリジェントなファイル並び替え: Git 履歴を分析してファイルの重要性を推論し、より重要なファイルを出力の末尾に配置(LLM は通常、後ろのコンテンツにより注意を払うため)
  • 自動除外: .gitignore ルールに従い、バイナリファイルや大きなファイルを自動的にスキップ
  • ストリーミング出力: パイプを検出すると自動的にストリーミング転送し、ファイル書き込みを行わない
  • 複数ディレクトリ対応: 複数のディレクトリを同時に処理可能
  • 柔軟な設定: glob パターン、個別ファイル選択、yek.yaml 設定ファイルをサポート

使用例

# 現在のディレクトリを処理
yek

# 指定ディレクトリを処理してクリップボードにコピー
yek src/ | pbcopy

# 出力サイズを制限
yek --max-size 128K

# 複数ディレクトリをシリアライズ
yek src/ tests/ docs/

出力形式はシンプルでわかりやすい:

>>>> README.md
プロジェクト説明の内容...
>>>> src/main.rs
メインプログラムのコード...
>>>> src/utils.rs
ユーティリティ関数...

インストール

# macOS / Linux
curl -fsSL https://azimi.me/yek.sh | bash

# Windows PowerShell
irm https://azimi.me/yek.ps1 | iex

# ソースからビルド
cargo install yek

パフォーマンス

Rust プロジェクトとして、yek は大規模なコードベースの処理において優れたパフォーマンスを発揮します。実測では、数千ファイルのスキャンとシリアライズをミリ秒単位で完了できます。

ユースケース

  • AI アシスタントへのコードベースコンテキスト提供
  • コードレビュー前の迅速な整理
  • プロジェクトドキュメント作成時のファイル集約
  • 複数ファイルの内容を単一テキストに統合する必要があるあらゆる場面

まとめ

yek は手動で行っていた面倒な作業を自動化し、かつ賢く実行します。Git 履歴を理解し、ignore ルールを尊重し、出力順序を最適化します。LLM を活用したプログラミングを頻繁に行う開発者にとって、ツールボックスに加える価値のある小さな美しいツールです。


GitHub: github.com/mohsen1/yek
Stars: 2.4K+ | 言語: Rust | ライセンス: MIT