yek - 快速将代码库序列化为 LLM 可读格式
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