yek

GitHub
2.4k 65 简单 1 次阅读 2天前MIT开发框架插件图像语言模型Agent
AI 解读 由 AI 自动生成,仅供参考

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
GPU

未说明

内存

未说明

依赖
notes该工具是基于 Rust 编写的命令行工具,无需 Python 环境或 GPU。安装方式包括通过脚本一键安装(Unix/Windows)或使用 Cargo 从源码构建。它利用 Git 历史推断文件重要性,并支持 .gitignore 规则。输出默认为文本流,也可配置为 JSON 格式。
python未说明
Rust (Cargo)
yek hero image

快速开始

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_PATHFILE_CONTENT 占位符。
  • --ignore-patterns <IGNORE_PATTERNS>... - 额外的忽略模式(扩展 .gitignore 和默认规则)。
  • --unignore-patterns <UNIGNORE_PATTERNS>... - 用于覆盖内置忽略规则的模式。
  • -t, --tree-header - 在输出开头包含目录树结构(与 JSON 不兼容)。
  • --tree-only - 只显示目录树结构,不包含文件内容(与 JSON 不兼容)。

配置文件

你可以在项目根目录下放置名为 yek.yaml 的文件,或者通过 --config-file 参数指定自定义路径。配置文件允许你:

  1. 添加自定义的忽略模式。
  2. 定义文件优先级规则以控制处理顺序。
  3. 添加额外的二进制文件扩展名以进行忽略(扩展内置列表)。
  4. 配置基于 Git 的优先级提升机制。
  5. 定义输出目录和输出文件名。
  6. 定义输出模板及其他输出选项。

可配置选项

大多数 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.tomlyek.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 分钟

yekrepomix230 倍

路线图

请参阅 拟议的功能。我欢迎新的功能请求。请提交详细提案以讨论新功能。

替代方案

  • Repomix:一款工具,可将仓库序列化为单个文件,方式与 yek 类似。
  • Aider:一款使用 AI 的全功能 IDE 式编码体验

许可证

MIT

[^1]: yek 并非“极速”运行。它只是足够快,具体速度取决于你的计算机性能。

版本历史

v0.25.02025/09/25
v0.24.02025/09/25
v0.23.02025/09/17
main2025/02/23
v0.20.02025/02/22
v0.19.02025/02/19
v0.18.02025/02/14
v0.17.02025/02/06
v0.16.02025/01/30
v0.15.02025/01/29
v0.14.02025/01/29
v0.13.92025/01/29
v0.13.82025/01/20
v0.13.62025/01/19
v0.13.52025/01/19
v0.13.42025/01/19
v0.13.32025/01/19
v0.13.22025/01/19
v0.13.02025/01/19
v0.12.52025/01/19

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架