Repomix 入门指南:将整个代码仓库打包成 AI 友好的单文件上下文
2026/9/11 22:35:50 网站建设 项目流程

Repomix 入门指南:将整个代码仓库打包成 AI 友好的单文件上下文

【免费下载链接】repomix📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.项目地址: https://gitcode.com/GitHub_Trending/rep/repomix

Repomix 是一款把完整代码仓库打包为单一、AI 友好的文件的工具,专为向 ChatGPT、Claude、Gemini、Grok、DeepSeek、Perplexity、Gemma、Llama 等大语言模型(LLM)投喂代码上下文而设计。本文以 Repomix 官方"入门(Getting Started)"指南为核心,结合仓库源码与配置实现,带你完成从安装、首次打包、提交给 AI 分析,到理解 Token 计数、安全检测、多格式输出等核心机制的全过程。

快速开始:一条命令打包整个仓库

在项目根目录执行:

npx repomix@latest

npx方式无需预先安装,执行后会在当前目录生成一个名为repomix-output.xml的文件,其中包含整个仓库、且经过格式化便于 AI 处理的内容。随后,你可以把这个文件直接发送给 AI 助手,并附带类似下面的指令:

Ce fichier contient tous les fichiers du dépôt combinés en un seul. Je souhaite refactoriser le code, veuillez donc d'abord l'examiner.

(该文件包含了仓库的所有文件、合并为一个文件。我想重构代码,请先审查它。)

AI 会基于完整的代码库给出整体分析;在讨论具体修改时,它还能直接生成代码——配合 Claude 的 Artifacts 等能力,甚至可以一次返回多个相互依赖的文件。

从仓库源码看,CLI 入口在 src/cli/cliRun.ts,npx repomix@latest最终会经由runCli()进入默认打包流程runDefaultAction()。版本方面,当前仓库 package.json 声明"version": "1.18.0",并要求 Node.js ≥ 22.0.0(engines.node字段),与文档"配置要求"一节完全一致。

为什么选择 Repomix

Repomix 的核心优势在于:它能与 ChatGPT、Claude、Gemini、Grok 等订阅制服务直接配合,不必担心逐文件请求带来的成本;同时它一次性提供完整的代码库上下文,消除了 AI 需要逐个探索文件的过程,使分析更快、往往也更准确。

当整个代码库都在上下文里时,可以支撑起非常广泛的用法,包括但不限于:

  • 实现规划(Implementation planning):基于现状设计改动方案;
  • Bug 调查:跨文件追踪问题根源;
  • 第三方库安全检查:审查依赖中是否存在可疑内容;
  • 文档生成:依据真实代码结构产出文档。

这对应了仓库中"文件收集 → 内容处理 → 安全扫描 → Token 统计 → 输出生成"的完整流水线(见 src/core/file/fileCollect.ts 与 src/core/packager.ts)。

核心特性详解

官方文档列出的五大核心特性,在仓库源码中都有对应的具体实现:

1. 面向 AI 优化的输出

Repomix 将代码库格式化为便于 AI 解析的结构。输出生成核心位于 src/core/output/outputGenerate.ts:它使用 Handlebars 模板引擎,按xmlmarkdownplain三种样式分别加载 xmlStyle.ts、markdownStyle.ts、plainStyle.ts 中的模板,并对编译后的模板做缓存以避免重复编译。一个值得一提的细节:Markdown 模板为了把文件内容、目录结构和 git diff 包在同一个代码围栏里,会动态计算围栏分隔符的长度——代码中calculateMarkdownDelimiter会统计所有内容里最长的反引号连续串,从而避免围栏被提前闭合导致输出损坏。

2. Token 计数

Repomix 会统计每个文件乃至整个仓库的 Token 数,帮助你把输出控制在 LLM 上下文窗口内。实现位于 src/core/metrics/TokenCounter.ts:它基于gpt-tokenizer,通过resolveEncodingAsync惰性加载 BPE 词表,再以GptEncoding实例的countTokens完成计数;默认编码为o200k_base(对应 GPT-4o),也支持cl100k_base(GPT-4/GPT-3.5)等。计数时使用"纯文本"选项,把<|endoftext|>之类的特殊 token 一律按普通文本处理。相关 Worker 实现见 src/core/metrics/workers/calculateMetricsWorker.ts。

3. Git 感知

Repomix 会自动尊重项目的.gitignore.git/info/exclude规则(同时支持.ignore.repomixignore)。忽略机制的默认清单在 src/config/defaultIgnore.ts,其中默认排除node_modules.gitcoveragedist等常见目录;文件收集与过滤发生在 src/core/file/fileCollect.ts。Git 相关的 diff、log、远程仓库处理逻辑集中在 src/core/git 目录下。

4. 安全优先

Repomix 内置 Secretlint:文件按每批 50 个分组成任务,分发到 Worker 线程(src/core/security/workers/securityCheckWorker.ts)并行执行;git diff 与 git log 的内容同样会被纳入安全扫描范围。该功能可通过--no-security-check或配置security.enableSecurityCheck: false关闭。

5. 多种输出格式

可以在文本(plain)、XML、Markdown 之间选择(JSON 亦受支持,见 tests/core/output/outputStyles/jsonStyle.test.ts)。XML 是默认格式,便于 Claude 等结构化解析;Markdown 适合对话式阅读;JSON 适合自动化处理;纯文本则兼容性最好。格式切换在 CLI 中对应--style xml|markdown|json|plain

安装的多种方式

除了开箱即用的npx repomix@latest,还可以全局安装:

# npm npm install -g repomix # yarn yarn global add repomix # pnpm pnpm add -g repomix # bun bun add -g repomix # Homebrew(macOS/Linux) brew install repomix

也可以使用 Docker(镜像ghcr.io/yamadashy/repomix):

# 打包当前目录 docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix # 打包指定目录 docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix path/to/directory # 打包远程仓库 docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix --remote yamadashy/repomix

此外还有社区维护的VSCode 扩展(可在任意文件夹上点击打包、选择文件/内容复制模式、自动清理输出文件、兼容repomix.config.json)以及Chrome 浏览器扩展(在任意 GitHub 仓库页面一键调用 Repomix)。安装完成后,可用下面命令验证:

repomix --version repomix --help

--help输出的全部选项定义于 src/cli/cliRun.ts,它基于 commander 组织,按"基础选项 / CLI 输入输出 / 输出选项 / 文件选择 / 远程仓库 / 配置 / 安全 / Token 计数 / MCP / 技能生成 / 监视模式"等分组。该文件还实现了一个贴心的语义纠错:当你输入excludeomitskipformatminimize等与真实选项语义相近(而非拼写错误)的词时,CLI 会提示Did you mean: --ignore?之类建议。

从入门到实战:常用命令行能力

在掌握快速开始之后,下面这些能力覆盖了绝大多数真实使用场景(详细用法见 使用指南):

  • 打包指定目录repomix path/to/directory
  • 只包含特定文件repomix --include "src/**/*.ts,**/*.md"(glob 语法)
  • 排除文件repomix --ignore "**/*.log,tmp/"
  • 远程仓库repomix --remote user/repo,或直接repomix user/repo(自动探测);支持--remote-branch main指定分支/tag/commit。从 src/cli/cliRun.ts 可见,owner/repo简写只有在本地路径不存在、且通过git ls-remote探活确认仓库可达时才会被当作远程处理,避免误触克隆
  • stdin 文件列表git ls-files "*.ts" | repomix --stdinrg -l "TODO|FIXME" --type ts | repomix --stdinfzf -m | repomix --stdin等;--stdin传入的文件仍会遵守常规的 include/ignore 规则,路径支持相对与绝对形式并自动去重
  • 拆分输出repomix --split-output 1mb生成repomix-output.1.xmlrepomix-output.2.xml等编号文件,支持500kb1.5mb等带小数单位;文件按一级目录分组以保持上下文,单个文件/目录不会被拆散
  • 代码压缩repomix --compress基于 Tree-sitter 抽取类、函数、接口等关键结构,去除实现细节以显著降低 Token 数,同时保留 imports/exports 与类型定义(解析策略见 src/core/treeSitter/parseStrategies)
  • Git 集成--include-diffs加入未提交改动、--include-logs加入提交历史(默认最近 50 条,可用--include-logs-count 10调整),帮助 AI 理解"哪些文件经常一起改动"等开发模式
  • Token 分布可视化repomix --token-count-tree输出层级树状 Token 统计,也支持阈值过滤(如--token-count-tree 1000只看 1000+ token 的文件),便于定位重 Token 文件、规划 include/ignore 与压缩策略
  • 其他实用选项--remove-comments删除注释、--output-show-line-numbers显示行号、--copy复制到剪贴板、--no-security-check关闭安全扫描、--stdout直接输出到标准输出(与--output -等价)、--watch监视文件变更自动重新打包

配置:用配置文件固化你的工作流

重复性任务建议通过repomix --init生成默认配置文件repomix.config.jsonrepomix --init --global则在主目录生成全局配置,作为找不到本地配置时的兜底。配置文件支持 TypeScript(repomix.config.ts/.mts/.cts)、JavaScript(.js/.mjs/.cjs)与 JSON(.json5/.jsonc/.json)三种形态,按 TS > JS > JSON 的优先级自动查找。TypeScript/JavaScript 配置还支持defineConfig与动态值(例如用时间戳生成输出文件名)。

以下为关键配置项速查(完整表格见 配置指南):

配置项说明默认值
output.filePath输出文件名"repomix-output.xml"
output.style输出样式:xml / markdown / json / plain"xml"
output.compress是否用 Tree-sitter 压缩代码false
output.fileSummary是否在开头输出文件数、大小等摘要true
output.directoryStructure是否输出目录结构true
output.removeComments是否删除注释false
output.showLineNumbers是否输出行号false
output.splitOutput按每部分大小拆分输出未定义
output.tokenBudget输出超过该 Token 数时以非零码退出(CI/Agent 上下文护栏)未定义
output.git.includeDiffs是否包含 git difffalse
output.git.includeLogs是否包含 git logfalse
output.git.includeLogsCountgit log 条数50
include包含的 glob 模式[]
ignore.useGitignore是否使用.gitignoretrue
ignore.useDotIgnore是否使用.ignoretrue
ignore.useDefaultPatterns是否使用内置默认忽略模式true
ignore.customPatterns额外忽略模式[]
security.enableSecurityCheck是否执行 Secretlint 安全检测true
tokenCount.encodingToken 计数编码(如o200k_base"o200k_base"

忽略规则的优先级从高到低为:自定义模式 > 忽略文件(嵌套目录中更深者优先,同目录下合并)> 默认模式。二进制文件(图片、PDF、编译产物等)默认不进输出内容,但会保留在目录结构清单中,让 AI 知道它们存在;超过input.maxFileSize(默认 50MB)的文件会被整体忽略。可在配置中加入"$schema": "https://repomix.com/schemas/latest/schema.json"以获得编辑器的 schema 校验与自动补全(本仓库即带有一份示例配置 repomix.config.json)。

下一步阅读

本文是官方"入门"指南的展开。要继续深入,建议按以下顺序阅读本仓库内的对应文档:

  • 安装指南:npx / npm / yarn / pnpm / bun / Homebrew / Docker / VSCode 扩展 / 浏览器扩展等全部安装方式与环境要求;
  • 使用指南:目录、远程仓库、stdin、拆分输出、Git 集成、Token 树等完整 CLI 用法;
  • 配置指南:配置文件格式、全部选项表格、include/ignore 模式、文件处理器、按文件包含级别等进阶主题;
  • 输出格式:四种输出格式的取舍与选择建议;
  • 安全特性:Secretlint 检测机制与敏感信息防护细节;
  • MCP 服务器:以 MCP 方式把 Repomix 直接集成进 AI 助手(对应 src/mcp/mcpServer.ts 及其工具实现)。

如果你在用法或配置上遇到问题,仓库内还有 FAQ 可查阅。官方还提供 Discord 社区用于求助、经验分享与功能建议;发现 bug 时可以在项目 issues 中反馈。

【免费下载链接】repomix📦 Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file. Perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude, ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.项目地址: https://gitcode.com/GitHub_Trending/rep/repomix

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询