yek CLI
yek собирает текстовые файлы репозитория в один документ для языковой модели, учитывает .gitignore и ставит самые важные файлы в конец
- 2 475 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Читает все текстовые файлы выбранных папок, в том числе ключи и пароли, которых нет в `.gitignore`
- Основной способ установки выполняет скрипт с домена автора через `curl | bash`
Установка
Ручная установка
curl -fsSL https://azimi.me/yek.sh | bashДля macOS и Linux. Скрипт загружается с домена автора, прочитайте его до запуска.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Читает все текстовые файлы выбранных папок, в том числе ключи и пароли, которых нет в `.gitignore`
- Основной способ установки выполняет скрипт с домена автора через `curl | bash`
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
yek — консольная программа на Rust, которая сериализует папку или репозиторий в один текстовый документ. Каждый файл идет с заголовком `>>>> путь`, шаблон заголовка меняется флагом `--output-template`. Список файлов программа строит по правилам из `.gitignore`, к ним добавляет свои: бинарные и слишком большие файлы пропускаются. Входом служат папки, отдельные файлы и glob-шаблоны, в одной команде их можно указывать несколько. Порядок файлов задает приоритет. По истории git yek определяет, какие файлы менялись чаще и важнее, и ставит их ближе к концу вывода, потому что модели, по словам автора, уделяют больше внимания концу контекста. Свои правила приоритета и бонус от истории git задаются в `yek.yaml` (также `yek.toml` и `yek.json`): `priority_rules`, `git_boost_max`. Объем ограничивают флаги `--max-size` в байтах и `--tokens` в токенах: файлы, которые не помещаются, отбрасываются, важные остаются. Если вывод идет в канал, например `yek src/ | pbcopy`, программа печатает содержимое в стандартный вывод, иначе пишет файл во временную папку и сообщает путь. Есть вывод в JSON, номера строк и дерево каталогов в начале (`--tree-header`) или вместо содержимого (`--tree-only`).
Для кого. Для разработчиков, которые отдают модели весь проект или его часть одним запросом и хотят уложиться в лимит токенов, не выбирая файлы вручную.
Подходит, если
- Нужно вставить в чат модели весь каталог `src/`: `yek src/ | pbcopy` положит содержимое в буфер обмена на macOS
- Контекст ограничен, и модель должна получить самые значимые файлы: `yek --tokens 128k` отбросит то, что не поместилось
- В проекте есть сгенерированные папки и данные, которые нужно исключить через `ignore_patterns` в `yek.yaml`
- Нужен вывод для скрипта: флаг `--json` отдает результат в JSON
- Агент должен сначала увидеть структуру проекта: `yek --tree-only` печатает только дерево каталогов
Не подходит, если
- Нужен MCP-сервер, через который агент сам упаковывает репозиторий: у yek есть только консольная команда, MCP-режима нет
- Нужно сжатие кода до сигнатур и подсчет токенов по файлам: для этого есть Repomix, yek ограничивает объем, но код не сжимает
- Репозиторий содержит ключи и пароли вне `.gitignore`: отсев секретов в документации yek не описан, вывод пойдет модели целиком
- Нужно разбить вывод на несколько файлов по размеру: по документации yek кладет результат в один документ
Пример запроса к агенту
Собери папку src и тесты в один файл для контекста на 128 тысяч токенов и покажи, сколько файлов вошлоОграничения
- В документации нет проверки на секреты. Файл `.env` или ключ, не попавший в `.gitignore`, может оказаться в выводе.
- Основной способ установки запускает скрипт с домена автора через `curl | bash` на macOS и Linux или `irm | iex` в PowerShell. Прочитайте скрипт до запуска.
- Бинарные файлы пропускаются по списку расширений, дополнительные расширения добавляются только в файле настроек (`binary_extensions`).
- Правила приоритета в `yek.yaml` задаются регулярными выражениями по пути файла, поэтому их нужно проверять на своем проекте.
- Сравнение с Repomix в документации, где yek назван в 230 раз быстрее на проекте Next.js, приведено самим автором и снимком одного запуска, независимого замера нет.
Как отключить. yek запускается только вручную и не встраивается в агента. Удалите исполняемый файл, который поставил скрипт установки, а при установке из исходников выполните `cargo uninstall yek`. Файл `yek.yaml` в проекте удаляется вместе с остальными файлами проекта.
Частые вопросы
Как yek решает, какие файлы важнее?
Он смотрит историю git и поднимает приоритет файлов, которые менялись чаще. Дополнительно действуют ваши `priority_rules` из `yek.yaml`: правило с большим `score` дает файлам более высокий приоритет, а итоговый вывод ставит самые приоритетные в конец.
Что будет, если файлы не помещаются в лимит?
С флагом `--tokens` или `--max-size` yek отбрасывает не поместившиеся файлы и старается сохранить важные. Лимит по умолчанию в байтовом режиме равен 10 МБ.
Куда yek пишет результат?
Если вывод идет в канал, он печатается в стандартный вывод. Иначе при запуске в терминале yek создает файл во временной папке и выводит путь. Папку задает `--output-dir`, имя файла в текущей папке задает `--output-name`.
Можно ли поменять формат заголовков файлов?
Да, через `--output-template` или `output_template` в `yek.yaml`. В шаблоне должны быть места `FILE_PATH` и `FILE_CONTENT`. По умолчанию заголовок выглядит как `>>>> FILE_PATH`.
Работает ли yek на Windows?
В документации для Windows указана установка из PowerShell командой `irm https://azimi.me/yek.ps1 | iex`, в репозитории лежит скрипт `install_yek.ps1` и проверка установки в CI.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыCLI на Rust, который собирает кодовую базу в один промпт с деревом файлов, шаблонами и оценкой токенов
Структурный поиск, линт и замена кода по синтаксическому дереву: шаблоны пишутся как обычный код
Rust-бинарник для агентов и терминала: через tree-sitter находит определение символа, его вызовы и зависимости файла
Собирает репозиторий в один файл для LLM с подсчетом токенов, сжатием кода и отсевом секретов, работает и как MCP-сервер
Терминальный просмотрщик диффов: все файлы одним потоком, а агент через скилл hunk-review ведет по изменениям и оставляет комментарии к строкам
Граф кода и память проекта в одной программе на Rust: агент получает выдержки из файлов со ссылкой на строки
Коротко о README
Документация начинается с пояснения, что делает yek по умолчанию, и схемы вывода на примере небольшого проекта. Дальше идут установка, примеры команд, справка по флагам с подробным описанием и пример файла `yek.yaml`. В репозитории есть исходники на Rust с тестами по модулям, скрипты установки для Unix и Windows, замеры скорости и файл `ARCHITECTURE.md`. Раздел о роадмапе отсылает к запросам на функции в трекере.