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