yek CLI

yek собирает текстовые файлы репозитория в один документ для языковой модели, учитывает .gitignore и ставит самые важные файлы в конец

  • 2 475 ★ репозитория
  • Последний коммит
  • MIT
CLI

Расширенный доступ

Почему такой уровень

  • Читает все текстовые файлы выбранных папок, в том числе ключи и пароли, которых нет в `.gitignore`
  • Основной способ установки выполняет скрипт с домена автора через `curl | bash`
Все причины и проверки

mohsen1/yek

Установка

Ручная установка

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 на Rust, который собирает кодовую базу в один промпт с деревом файлов, шаблонами и оценкой токенов

CLIРасширенный доступ7,7 тыс.Звезды репозитория

Структурный поиск, линт и замена кода по синтаксическому дереву: шаблоны пишутся как обычный код

CLIРасширенный доступ16,4 тыс.Звезды репозитория

Rust-бинарник для агентов и терминала: через tree-sitter находит определение символа, его вызовы и зависимости файла

MCP-серверМинимальный доступ357Звезды репозитория
Выбор редакции

Собирает репозиторий в один файл для LLM с подсчетом токенов, сжатием кода и отсевом секретов, работает и как MCP-сервер

CLIРасширенный доступ29,1 тыс.Звезды репозитория

Терминальный просмотрщик диффов: все файлы одним потоком, а агент через скилл hunk-review ведет по изменениям и оставляет комментарии к строкам

CLIРасширенный доступ9,7 тыс.Звезды репозитория

Коротко о README

Документация начинается с пояснения, что делает yek по умолчанию, и схемы вывода на примере небольшого проекта. Дальше идут установка, примеры команд, справка по флагам с подробным описанием и пример файла `yek.yaml`. В репозитории есть исходники на Rust с тестами по модулям, скрипты установки для Unix и Windows, замеры скорости и файл `ARCHITECTURE.md`. Раздел о роадмапе отсылает к запросам на функции в трекере.

Бейдж для README

Сообщить о проблеме

Foxx AIyek
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.