
Repomix 使用指南从仓库打包到 Git 集成与 Token 优化的完整实战手册【免费下载链接】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/repomixRepomix 是一个将整个代码仓库打包成单个 AI 友好文件的命令行工具方便你把代码库直接喂给 Claude、ChatGPT、DeepSeek、Gemini 等大语言模型。本文以官方使用指南为核心结合仓库源码系统讲解 Repomix 的常用打包场景、输出格式、Git 集成、Token 优化与配置初始化读完你即可熟练使用 CLI 完成目录打包、远程仓库处理、文件筛选、输出拆分与代码压缩等全套操作。快速开始一条命令打包整个仓库在任意项目根目录下直接运行repomixRepomix 会自动收集当前目录下的全部代码文件自动遵循.gitignore、.ignore等规则并按默认格式生成打包输出文件一次调用即可获得可供 LLM 分析的单文件产物。这也是后续所有高级用法的起点——所有选项都可以叠加在repomix基础命令之上。常用打包场景打包指定目录默认打包当前目录也可以通过位置参数指定任意目录repomix path/to/directory从源码看目录参数在 src/cli/actions/defaultAction.ts 中会经path.resolve(cwd, directory)解析为绝对路径后再进入打包流程因此相对路径与绝对路径均可使用。包含指定文件include如果只想打包特定类型或特定路径的文件使用--include配合 glob 模式repomix --include src/**/*.ts,**/*.md--include支持逗号分隔的多个 glob 模式内部通过 src/shared/patternUtils.ts 的splitPatterns拆分为模式数组后写入配置见 defaultAction.ts随后与默认包含模式合并生效。glob 语法遵循 fast-glob 的 pattern syntax支持**任意层级、*单层通配与花括号扩展等。排除指定文件ignore与 include 相对--ignore用于排除不需要进入打包输出的文件repomix --ignore **/*.log,tmp/--ignore同样支持逗号分隔的多个模式。需要说明的是ignore 模式的优先级高于 include即使某个文件同时被--include命中只要匹配 ignore 模式最终仍会被排除这一点与下文 stdin 输入的行为一致。拆分输出为多个文件--split-output大型代码库打包后的输出可能超过某些 AI 工具的单个文件大小上限例如 Google AI Studio 的 1MB 限制。此时使用--split-output自动把输出拆分为多个带编号的文件repomix --split-output 1mb输出形如repomix-output.1.xmlrepomix-output.2.xmlrepomix-output.3.xml大小单位支持500kb、1mb、2mb、1.5mb等支持小数值。源码 src/shared/sizeParse.ts 揭示了单位换算规则kb按 1024 字节、mb按 1024×1024 字节计算正则^\s*(\d(?:\.\d)?)\s*(kb|mb)\s*$/i表明单位大小写不敏感、前导空格会被容忍、数值必须为正。[!NOTE] 拆分时文件会按顶层目录分组以保留目录上下文单个文件或单个目录永远不会被拆散到多个输出文件中。拆分算法的细节见 src/core/output/outputSplit.ts它先把所有文件按顶层目录如src/、docs/分组再按组逐个渲染并测量 UTF-8 字节数。若某个分组自身就超过上限会沿目录树向下细分一级subdivideSplitGroup直到每组都能容纳当细分到单文件仍然超限时才会报错退出。此外只有第一个分片会包含 Git diff/log 内容makeChunkConfig会关闭后续分片的includeDiffs与includeLogs避免大段重复信息占用额度。打包远程仓库--remote无需先手动 cloneRepomix 可以直接打包远程仓库# 使用 GitHub URL repomix --remote https://github.com/user/repo # 使用 owner/repo 简写 repomix --remote user/repo # 省略 --remote自动识别简写 repomix user/repo # 指定 branch / tag / 特定 commit repomix --remote user/repo --remote-branch main repomix --remote user/repo --remote-branch 935b695从 src/core/git/gitRemoteParse.ts 可以看到user/repo简写会被自动补全为https://github.com/user/repo.gitisValidShorthand判断同时支持 Azure DevOps 仓库含 SSH、HTTPS 与 legacy*.visualstudio.com域名URL 中/tree/branch、/commit/sha形式的 ref 会被解析出来与--remote-branch等价。执行流程src/cli/actions/remoteAction.ts为若是 GitHub 仓库优先尝试下载归档带 60 秒超时与 2 次重试失败后自动回退到 git 浅克隆随后在临时目录中对克隆结果执行与本地一致的打包流程。远程模式下--config只允许绝对路径以避免从克隆仓库中加载不可信的配置文件。stdin 文件列表输入--stdin允许你把文件路径列表通过管道喂给 Repomix从而获得选择文件的最高灵活性# 使用 find 找出所有 TS 文件 find src -name *.ts -type f | repomix --stdin # 使用 git 获取被跟踪的文件 git ls-files *.ts | repomix --stdin # 使用 ripgrep (rg) 列出文件 rg --files --type ts | repomix --stdin # 使用 grep 找出包含特定内容的文件 grep -l TODO **/*.ts | repomix --stdin # 使用 ripgrep 找出包含指定内容的文件 rg -l TODO|FIXME --type ts | repomix --stdin # 使用 sharkdp/fd 列出文件 fd -e ts | repomix --stdin # 使用 fzf 从全部文件中挑选 fzf -m | repomix --stdin # 先用 find 收集再用 fzf 交互式多选 find . -name *.ts -type f | fzf -m | repomix --stdin # 使用 ls 配合 glob 模式 ls src/**/*.ts | repomix --stdin # 从包含文件路径列表的文件中读取 cat file-list.txt | repomix --stdin # 直接用 echo 输入 echo -e src/index.ts\nsrc/utils.ts | repomix --stdin--stdin的使用要点stdin 指定的文件会叠加到 include 模式上因此 include/ignore 的常规行为依然生效——如果某个文件匹配 ignore 模式即使通过 stdin 传入也会被排除路径可以是相对路径或绝对路径Repomix 会自动处理路径解析与去重若在交互式终端TTY下使用--stdin而未提供管道输入会直接报错提示。底层实现在 src/core/file/fileStdin.tsfilterValidLines会剔除空行以及#开头的注释行resolveAndDeduplicatePaths把相对路径基于当前工作目录解析为绝对路径并用 Set 去重读取过程通过 readline 逐行收集等待 EOF 后才返回全部路径因此像 fzf 这类需要时间的交互式工具也能正常工作。代码压缩--compress在尽量保留代码结构的前提下减少 token 数量repomix --compress # 也可以作用于远程仓库 repomix --remote yamadashy/repomix --compress压缩的详细机制见 压缩指南。配置层面compress默认值为false见 src/config/configSchema.ts开启后会在打包阶段对文件内容做结构感知的精简处理适合在上下文窗口紧张时使用。Git 集成--include-diffs / --include-logs把 Git 信息一并打包为 AI 分析提供开发上下文# 包含 git diff尚未提交的改动 repomix --include-diffs # 包含 git log默认最近 50 条提交 repomix --include-logs # 指定包含的提交数量 repomix --include-logs --include-logs-count 10 # 同时包含 diff 与 log repomix --include-diffs --include-logs这些选项对应的配置默认值可在 src/config/configSchema.ts 中确认includeDiffs默认为falseincludeLogs默认为falseincludeLogsCount默认为50最小值 1。开启后输出会额外提供最近变更git diff 展示尚未提交的修改开发模式git log 揭示哪些文件通常一起被修改提交历史最近的提交信息反映开发重点文件关联帮助理解哪些文件在同一提交中被同时改动。Git 相关处理分布在 src/core/git/ 目录如 diff 计算在gitDiffHandle.ts、log 获取在gitLogHandle.ts两者结果会作为附加内容注入打包输出。Token 计数树--token-count-tree了解代码库的 token 分布是优化 AI 交互的关键一步。使用--token-count-tree可视化整个项目的 token 用量repomix --token-count-tree该命令输出项目的层级视图并标注每个目录/文件的 token 数 Token Count Tree: ──────────────────── └── src/ (70,925 tokens) ├── cli/ (12,714 tokens) │ ├── actions/ (7,546 tokens) │ └── reporters/ (990 tokens) └── core/ (41,600 tokens) ├── file/ (10,098 tokens) └── output/ (5,808 tokens)还可以设置最小 token 阈值只关注较大的文件repomix --token-count-tree 1000 # 只显示 token 数 ≥ 1000 的文件/目录实现层面src/cli/reporters/tokenCountTreeReporter.ts 与 src/core/tokenCount/buildTokenCountStructure.ts文件路径按/拆分构建树形结构目录的 token 数由其下所有文件与子目录递归汇总calculateTokenSums展示时按字母序排序并只显示达到阈值的条目。token 计数基于gpt-tokenizer的编码实现src/core/metrics/TokenCounter.ts编码可配置。它可以帮助你定位高 token 文件识别可能撑爆 AI 上下文上限的大文件优化文件筛选用--include/--ignore调整打包范围规划压缩策略针对 token 贡献最大的文件优先压缩平衡内容与上下文为 AI 分析准备恰到好处的代码材料。输出格式Repomix 支持四种输出格式通过--style指定repomix --style xml # XML默认 repomix --style markdown # Markdown repomix --style json # JSON repomix --style plain # 纯文本各格式的渲染器分别位于 src/core/output/outputStyles/markdownStyle.ts、plainStyle.ts、xmlStyle.tsJSON 对应测试见 tests/core/output/outputStyles/jsonStyle.test.ts。详细对比可参考 输出格式指南。附加选项删除注释repomix --remove-comments支持的语言列表与细节见 注释删除指南。配置默认值为false开启后打包时会剥离源码注释以压缩体积。显示行号repomix --output-show-line-numbers输出内容中的每个文件会带上行号便于 AI 回复时引用精确位置。showLineNumbers默认值为false见 configSchema.ts。复制到剪贴板repomix --copy打包完成后自动把输出内容复制到系统剪贴板方便直接粘贴到 AI 对话中。对应的copyToClipboard配置默认值为false复制逻辑见 src/core/packager/copyToClipboardIfEnabled.ts。关闭安全检查repomix --no-security-checkRepomix 默认会对打包文件做安全检查如检测密钥等敏感信息。此选项用于显式关闭该检查具体检测内容参见 安全指南。相关实现位于 src/core/security/其中securityCheck.ts负责整体流程validateFileSafety.ts负责文件级校验。配置文件初始化repomix --init该命令在当前目录生成repomix.config.*配置文件模板后续可通过配置文件固化 include/ignore、输出格式、token 预算等全部选项替代每次手写冗长的 CLI 参数。完整的配置项说明见 配置指南配置加载与合并逻辑见 src/config/configLoad.ts 和 src/config/configSchema.ts。相关资源输出格式深入了解 XML、Markdown、JSON 与纯文本格式命令行选项完整 CLI 参考Prompt 示例面向 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考