yek
yek 是一款基于 Rust 开发的高效工具,专为将代码仓库或目录中的文本文件序列化,以便大语言模型(LLM)更好地理解和处理。它主要解决了开发者在向 AI 提交代码上下文时,面临的文件筛选繁琐、格式不统一以及关键信息容易被忽略等痛点。
yek 非常适合软件开发者、AI 研究人员以及需要频繁与代码库交互的技术人员使用。其独特之处在于智能的文件排序策略:利用 Git 历史记录自动推断文件重要性,并将核心代码安排在输出内容的末尾。这一设计巧妙契合了大语言模型“更关注上下文后半部分”的特性,从而显著提升 AI 回答的准确度。此外,yek 默认遵循 .gitignore 规则自动过滤无关文件,支持通配符匹配、多目录并行处理,并能根据设定的 Token 数量或文件大小自动裁剪内容,确保输入不超出模型限制。无论是通过命令行快速打包当前项目,还是将结果直接管道传输至剪贴板,yek 都能以极快的速度完成工作,是让代码库“开口说话”的得力助手。
使用场景
一位全栈开发者正准备将公司遗留的单体代码库提交给大语言模型,希望获得重构建议并生成技术文档。
没有 yek 时
- 手动筛选耗时费力:开发者必须手动遍历目录,逐个复制核心业务逻辑文件,同时小心翼翼地避开
node_modules、编译产物和大型二进制资源。 - 上下文窗口浪费:直接打包整个文件夹会包含大量无关配置和日志文件,迅速占满 LLM 有限的上下文窗口,导致关键代码被截断。
- 重要信息被淹没:简单的文件拼接往往按字母顺序排列,导致核心的入口文件(如
main.rs)出现在开头,而 LLM 通常对上下文末尾的信息关注度更高,造成理解偏差。 - 格式混乱难解析:不同文件的拼接缺乏统一的分隔标记,LLM 难以区分文件边界,容易产生幻觉或混淆不同文件的变量定义。
使用 yek 后
- 智能过滤与排序:yek 自动依据
.gitignore排除干扰项,并利用 Git 历史智能识别高频修改的核心文件,将其置于输出内容的末尾,完美契合 LLM 的注意力机制。 - 精准控制输出规模:通过
--tokens参数,yek 能自动裁剪非关键文件,确保序列化后的内容严格控制在 128K token 以内,既保留精华又避免溢出。 - 结构化数据流:yek 生成带有清晰
>>>> 文件路径标记的单一流式文本,让 LLM 能准确识别每个代码块的归属,显著提升代码分析和重构建议的准确性。 - 一键多目录处理:只需一条命令即可同时处理
src/和tests/等多个目录,并将结果直接管道传输给剪贴板或 LLM 接口,极大简化了工作流。
yek 通过将杂乱的代码库转化为大模型“最爱读”的结构化上下文,让开发者从繁琐的数据预处理中解放出来,专注于高价值的架构决策。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
yek
一款基于 Rust 的快速工具[^1],用于将仓库或目录中的文本文件序列化,以便供大语言模型使用。
默认情况下:
- 使用
.gitignore规则跳过不需要的文件。 - 利用 Git 历史记录推断哪些文件更为重要。
- 自动推断额外的忽略模式(如二进制文件、大文件等)。
- 自动检测输出是否被管道重定向,并以流式方式输出内容,而非写入文件。
- 支持在单个命令中处理多个目录。
- 支持通配符模式和单独选择文件。
- 可通过
yek.yaml配置文件进行自定义。
Yek 在波斯语中意为“一”。
假设你有一个如下简单的仓库结构:
.
├── README.md
├── src
│ ├── main.rs
│ └── utils.rs
└── tests
└── test.rs
在该目录下运行 yek 将生成一个单独的文件,并将其写入临时目录,内容如下:
>>>> README.md
... 内容 ...
>>>> tests/test.rs
... 内容 ...
>>>> src/utils.rs
... 内容 ...
>>>> src/main.rs
... 内容 ...
[!NOTE]
yek会优先将较重要的文件放在输出的最后。这对于大语言模型的使用非常有用,因为大语言模型通常更关注上下文中后出现的内容。
安装
请根据你的平台选择合适的安装方法:
类 Unix 系统(macOS、Linux)
curl -fsSL https://azimi.me/yek.sh | bash
适用于 Windows(PowerShell):
irm https://azimi.me/yek.ps1 | iex
从源码构建
git clone https://github.com/mohsen1/yek
cd yek
cargo install --path .
使用
yek 具有合理的默认设置,你只需在目录中运行 yek 即可序列化整个仓库。它会将仓库中的所有文件序列化并写入一个临时文件,文件路径会在控制台打印出来。
示例
处理当前目录并写入临时目录:
yek
将输出通过管道复制到剪贴板(macOS):
yek src/ | pbcopy
将最大输出大小限制为 128K 个 token:
yek --tokens 128k
[!NOTE]
yek会移除任何无法容纳在限制上下文大小内的文件,并尽量保留更重要的文件。
yek --max-size 100KB --output-dir /tmp/yek src/
处理多个目录:
yek src/ tests/
处理多个文件:
yek file1.txt file2.txt file3.txt
使用通配符模式:
yek "src/**/*.ts"
yek "src/main.rs" "tests/*.rs" "docs/README.md"
[!NOTE] 使用通配符模式时,请务必用引号括起来,以防止 shell 展开。
CLI 参考
yek --help
用法:yek [选项] [输入路径]...
参数:
[输入路径]... 要处理的文件和/或目录
选项:
--no-config 不使用配置文件
--config-file <CONFIG_FILE> 配置文件路径
-V, --version 打印 yek 版本信息
--max-size <MAX_SIZE> 每个分块的最大大小。例如:“10MB”或“128K”,或者在使用 token 计数模式时,“100”或“128K” [默认值:10MB]
--tokens <TOKENS> 使用 token 模式代替字节模式
--json 启用 JSON 输出
--debug 启用调试输出
--line-numbers 在输出中包含行号
--output-dir [<OUTPUT_DIR>] 输出目录。如果未提供且标准输出是 TTY,则使用临时目录
--output-name [<OUTPUT_NAME>] 输出文件名。如果指定,则将输出写入当前目录下的该文件
--output-template [<OUTPUT_TEMPLATE>] 输出模板。默认为 “>>>> 文件路径\n文件内容”
--ignore-patterns <IGNORE_PATTERNS>... 忽略模式
--unignore-patterns <UNIGNORE_PATTERNS>... 取消忽略某些模式。yek 有一些内置的忽略模式,但你可以在这里覆盖它们。
-t, --tree-header 在输出中包含目录树头信息(与 JSON 输出不兼容)
--tree-only 只显示目录树结构(不包含文件内容,与 JSON 输出不兼容)
-h, --help 打印帮助信息
CLI 选项详解
[输入路径]...- 要处理的文件或目录。支持通配符模式(请用引号括起来以防止 shell 展开)。--no-config- 跳过加载任何配置文件。--config-file <CONFIG_FILE>- 使用指定的配置文件路径,而不是搜索默认配置文件。-V, --version- 打印版本信息并退出。--max-size <MAX_SIZE>- 每次输出的最大大小限制(例如:“10MB”、“128K”)。在字节模式下使用。--tokens <TOKENS>- 使用基于 token 的计数方式,而不是字节计数(例如:“128k”、“100”)。启用 token 模式。--json- 将结果以 JSON 格式输出,而不是文本格式。--debug- 启用调试日志以进行故障排除。--line-numbers- 在每个文件的输出中包含行号。--output-dir [<OUTPUT_DIR>]- 用于写入输出文件的目录。如果未指定且未进行流式输出,则使用临时目录。--output-name [<OUTPUT_NAME>]- 指定输出文件名。如果指定,则会将输出写入当前目录下的该文件。--output-template [<OUTPUT_TEMPLATE>]- 用于格式化输出的模板。可以使用FILE_PATH和FILE_CONTENT占位符。--ignore-patterns <IGNORE_PATTERNS>...- 额外的忽略模式(扩展 .gitignore 和默认规则)。--unignore-patterns <UNIGNORE_PATTERNS>...- 用于覆盖内置忽略规则的模式。-t, --tree-header- 在输出开头包含目录树结构(与 JSON 不兼容)。--tree-only- 只显示目录树结构,不包含文件内容(与 JSON 不兼容)。
配置文件
你可以在项目根目录下放置名为 yek.yaml 的文件,或者通过 --config-file 参数指定自定义路径。配置文件允许你:
- 添加自定义的忽略模式。
- 定义文件优先级规则以控制处理顺序。
- 添加额外的二进制文件扩展名以进行忽略(扩展内置列表)。
- 配置基于 Git 的优先级提升机制。
- 定义输出目录和输出文件名。
- 定义输出模板及其他输出选项。
可配置选项
大多数 CLI 选项都可以在配置文件中进行配置。以下选项可以设置:
文件处理:
max_size- 大小限制(与--max-size相同)tokens- 令牌数量限制(与--tokens相同)ignore_patterns- 额外的忽略模式(与--ignore-patterns相同)unignore_patterns- 覆盖内置的忽略规则(与--unignore-patterns相同)
输出配置:
json- 启用 JSON 输出(与--json相同)debug- 启用调试模式(与--debug相同)line_numbers- 包含行号(与--line-numbers相同)output_dir- 输出目录(与--output-dir相同)output_name- 输出文件名(与--output-name相同)output_template- 输出模板(与--output-template相同)tree_header- 包含目录树标题(与--tree-header相同)tree_only- 仅显示目录树(与--tree-only相同)
仅限配置的选项:
priority_rules- 文件优先级规则(仅限配置文件)binary_extensions- 额外的二进制文件扩展名(仅限配置文件)git_boost_max- 基于 Git 的最大优先级提升值(仅限配置文件)
[!NOTE] 某些 CLI 选项,如
--no-config、--config-file和--version,仅适用于命令行,无法在配置文件中设置。
示例 yek.yaml
你也可以使用 yek.toml 或 yek.json 替代 yek.yaml。
这是可选的,你可以在项目的根目录下配置 yek.yaml 文件。
# 添加额外的忽略模式(除了 .gitignore)
ignore_patterns:
- "ai-prompts/**"
- "__generated__/**"
# 配置基于 Git 的优先级提升(可选)
git_boost_max: 50 # 根据 Git 历史的最大分数提升值(默认:100)
# 定义处理顺序的优先级规则
# 分数越高,越先被处理
priority_rules:
- score: 100
pattern: "^src/lib/"
- score: 90
pattern: "^src/"
- score: 80
pattern: "^docs/"
# 添加额外的二进制文件扩展名以供忽略
# 这些扩展名会扩展内置列表(.jpg、.png、.exe 等)
binary_extensions:
- ".blend" # Blender 文件
- ".fbx" # 3D 模型文件
- ".max" # 3ds Max 文件
- ".psd" # Photoshop 文件
# 输出配置
max_size: "128K" # 大小限制(也可使用 tokens: "100k")
json: false # 启用 JSON 输出
debug: false # 启用调试日志
line_numbers: false # 在输出中包含行号
tree_header: false # 在开头包含目录树
# 定义输出目录
output_dir: /tmp/yek
# 定义输出文件名(将写入当前目录并以此命名)
output_name: yek-output.txt
# 定义输出模板。
# 模板中应包含 FILE_PATH 和 FILE_CONTENT。
output_template: "FILE_PATH\n\nFILE_CONTENT"
性能
yek 非常快速。它使用 Rust 编写,并通过并行处理来加速任务。
以下是将其与 Repomix 对比的基准测试,两者都对 Next.js 项目进行了序列化:
time yek
执行时间 5.19 秒 fish 外部
用户时间 2.85 秒 54.00 微秒 2.85 秒
系统时间 6.31 秒 629.00 微秒 6.31 秒
time repomix
执行时间 22.24 分钟 fish 外部
用户时间 21.99 分钟 0.18 毫秒 21.99 分钟
系统时间 0.23 分钟 1.72 毫秒 0.23 分钟
yek 比 repomix 快 230 倍。
路线图
请参阅 拟议的功能。我欢迎新的功能请求。请提交详细提案以讨论新功能。
替代方案
许可证
[^1]: yek 并非“极速”运行。它只是足够快,具体速度取决于你的计算机性能。
版本历史
v0.25.02025/09/25v0.24.02025/09/25v0.23.02025/09/17main2025/02/23v0.20.02025/02/22v0.19.02025/02/19v0.18.02025/02/14v0.17.02025/02/06v0.16.02025/01/30v0.15.02025/01/29v0.14.02025/01/29v0.13.92025/01/29v0.13.82025/01/20v0.13.62025/01/19v0.13.52025/01/19v0.13.42025/01/19v0.13.32025/01/19v0.13.22025/01/19v0.13.02025/01/19v0.12.52025/01/19常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。