
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/repomixRepomix 是一个将整个代码仓库打包为单一、AI 友好的文件的命令行工具非常适合将代码库喂给 Claude、ChatGPT、DeepSeek 等大语言模型使用。本文基于官方「基础使用Basic Usage」文档系统讲解从快速上手到远程仓库、stdin 输入、Git 集成、Token 优化等全部核心用法并结合仓库源码揭示每条命令背后的实现原理帮助你真正掌握 Repomix 的打包能力。快速上手安装 Repomix 后在项目根目录执行一条命令即可打包整个仓库repomix命令执行后会在当前目录生成repomix-output.xml默认输出文件可通过--output/-o修改路径。从源码看位置参数默认值即为当前目录在 cliRun.ts 中Commander 将[directories...]的默认值设为[.]而--output的默认描述为repomix-output.xml见 cliRun.ts。常见使用场景打包指定目录repomix path/to/directory支持一次传入多个目录参数。底层处理时runDefaultAction会把每个相对目录基于当前工作目录解析为绝对路径后交给核心的pack()函数见 defaultAction.ts。只包含指定文件--include使用 glob 模式 精确筛选文件repomix --include src/**/*.ts,**/*.md--include接收逗号分隔的 glob 模式列表在buildCliConfig中通过splitPatterns拆分为数组后写入配置见 defaultAction.ts。排除文件--ignorerepomix --ignore **/*.log,tmp/--ignore追加自定义排除模式同样逗号分隔与.gitignore、.ignore以及内置默认忽略规则node_modules、.git、构建目录等共同生效。若不想使用某类规则可用--no-gitignore、--no-dot-ignore、--no-default-patterns分别关闭见 cliRun.ts。注意--no-*系列参数只有在显式传false时才覆盖配置文件以保证配置文件中的设置不被意外篡改见 defaultAction.ts。将输出拆分到多个文件--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等支持小数值且大小写不敏感。解析逻辑在 sizeParse.ts 中正则/^\s*(\d(?:\.\d)?)\s*(kb|mb)\s*$/i匹配后kb按 1024 字节、mb按 1024×1024 字节换算非法输入会抛出明确的错误提示见 sizeParse.ts。[!NOTE] 文件按顶级目录分组以保持上下文完整。单个文件或目录绝不会被拆分到多个输出文件中。这一点在 outputSplit.ts 中有完整实现buildOutputSplitGroups以路径第一段顶级目录为键聚合文件outputSplit.ts当某个组单独超过大小上限时subdivideSplitGroup会向下一层目录细分后重新入队评估直到单个文件级——若单个文件本身仍超限则会报错拒绝拆分outputSplit.ts。另外非首个分片会自动关闭 Git diffs/logs 区块避免大段内容重复outputSplit.ts。远程仓库--remote# 使用 GitHub URL repomix --remote https://github.com/user/repo # 使用简写格式 repomix --remote user/repo # 不带 --remote 的简写自动检测 repomix user/repo # 指定分支/标签/提交 repomix --remote user/repo --remote-branch main repomix --remote user/repo --remote-branch 935b695实现细节值得注意自动检测有严格前提user/repo简写形式只有在该路径在本地不存在、且通过git ls-remote探测确认 GitHub 仓库可达时才会被当作远程仓库处理避免误触发克隆见 cliRun.ts。优先走归档下载对 GitHub 仓库runRemoteAction会先尝试下载 GitHub 归档带 1 分钟超时、2 次重试与进度回调失败后再回退到git clone浅克隆见 remoteAction.ts。输出回写当前目录打包完成后生成的输出文件会从临时目录复制回当前工作目录临时目录随后被清理见 remoteAction.ts。安全机制远程仓库默认不加载其自带配置文件skipLocalConfig必须显式使用--remote-trust-config并确认后才信任防止执行攻击者控制的配置见 remoteAction.ts。通过 stdin 输入文件列表--stdin通过管道把文件路径列表传给 Repomix实现最大灵活度的文件选择# 使用 find 命令 find src -name *.ts -type f | repomix --stdin # 使用 git 获取已跟踪文件 git ls-files *.ts | repomix --stdin # 使用 grep 查找包含特定内容的文件 grep -l TODO **/*.ts | repomix --stdin # 使用 ripgrep 查找包含特定内容的文件 rg -l TODO|FIXME --type ts | repomix --stdin # 使用 ripgrep (rg) 查找文件 rg --files --type ts | repomix --stdin # 使用 sharkdp/fd 查找文件 fd -e ts | repomix --stdin # 使用 fzf 从所有文件中选择 fzf -m | repomix --stdin # 使用 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选项允许你把文件路径列表通过管道传给 Repomix为选择要打包的文件提供了终极灵活性。使用--stdin时指定的文件实际上会被加入包含模式——这意味着正常的包含/排除行为依然生效通过 stdin 指定的文件如果命中排除模式仍然会被排除。[!NOTE] 使用--stdin时文件路径可以是相对路径或绝对路径Repomix 会自动处理路径解析与去重。源码层面的行为印证见 fileStdin.ts空行与#开头的注释行会被过滤filterValidLinesfileStdin.ts相对路径基于当前工作目录解析为绝对路径并通过Set去重resolveAndDeduplicatePathsfileStdin.ts使用 Node.jsreadline逐行读取并等待 EOF因此能兼容 fzf 这类交互式工具fileStdin.tsstdin 模式下不允许再传目录位置参数否则会直接报错见 defaultAction.ts--stdin与--watch互斥见 cliRun.ts。代码压缩--compress在保留代码结构的前提下显著降低 Token 数详细原理参见 代码压缩指南repomix --compress # 也可以用于远程仓库 repomix --remote yamadashy/repomix --compress--compress的底层实现基于 Tree-sitter 解析提取类、函数、接口等核心结构剥离冗余实现细节见 cliRun.ts 的参数描述。对应的解析策略实现位于 src/core/treeSitter/parseStrategies支持 TypeScript、Python、Go、Rust、C/C、Java、Vue 等十余种语言。Git 集成在打包结果中包含 Git 信息为 AI 分析提供开发上下文# 包含 git diff未提交的更改 repomix --include-diffs # 包含 git commit 日志默认最近 50 条 repomix --include-logs # 包含指定数量的提交 repomix --include-logs --include-logs-count 10 # 同时包含 diff 和日志 repomix --include-diffs --include-logs这为 AI 提供了宝贵的上下文近期变更Git diff 展示未提交的修改开发模式Git 日志揭示哪些文件通常被一起修改提交历史最近的提交信息反映开发重点文件关联理解哪些文件在同一提交中发生变更实现细节diffgetGitDiffs同时获取工作区 diff 与暂存区 diffgit diff --cached二者并行获取见 gitDiffHandle.ts非 git 仓库会静默跳过不报错gitDiffHandle.ts。日志getGitLogs以--include-logs-count || 50作为提交数上限见 gitLogHandle.ts解析时用 NUL 字符\x00作为提交记录分隔符即使提交信息含换行也能稳健切分gitLogHandle.ts。命令行参数校验--include-logs-count必须为非负整数否则报错见 cliRun.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 # 只显示 1000 token 的文件/目录这能帮助你识别高 Token 文件——可能超出 AI 上下文限制的文件优化文件选择——通过--include和--ignore模式规划压缩策略——针对 Token 消耗最大的部分平衡内容与上下文——为 AI 分析准备代码时实现层面--token-count-tree的阈值参数会经过严格的非负整数校验见 cliRun.ts渲染逻辑在 tokenCountTreeReporter.ts 中目录按子节点 Token 总和、文件按自身 Token 数过滤后以树形符号├──、└──输出阈值模式下无匹配项会给出明确提示tokenCountTreeReporter.ts。计数时默认使用o200k_baseGPT-4o 分词器可通过--token-count-encoding切换为cl100k_base等模型配合--token-budget还能在超出预算时以非零退出码终止适合 CI 或 Agent 上下文限制场景见 cliRun.ts。输出格式--styleXML默认repomix --style xmlMarkdownrepomix --style markdownJSONrepomix --style json纯文本repomix --style plain--style未指定时默认为xml见 cliRun.ts。各格式的渲染模板位于 src/core/output/outputStyles 目录例如 Markdown 模板包含 File Summary、Directory Structure、Files 以及可选的 Git Diffs 等区块见 markdownStyle.ts。更详细的格式对比参见 输出格式指南。其他常用选项移除注释--remove-comments支持的编程语言与细节参见 注释移除指南repomix --remove-comments显示行号--output-show-line-numbersrepomix --output-show-line-numbers复制到剪贴板--copyrepomix --copy禁用安全检查--no-security-checkRepomix 默认会扫描 API Key、密码等敏感信息具体检测范围参见 安全指南repomix --no-security-check其他值得掌握的配套选项定义见 cliRun.ts--stdout/-o -直接向标准输出写结果会抑制所有日志适合管道场景--verbose/--quiet控制日志详细程度二者互斥--parsable-style转义特殊字符确保输出是合法的 XML/Markdown--no-file-summary、--no-directory-structure、--no-files分别省略文件摘要、目录树或文件内容--header-text text、--instruction-file-path path向输出头部注入自定义内容。配置文件--init初始化配置文件repomix --init执行后会在当前目录生成带默认值的repomix.config.json配合--global可改为写入主目录。配置文件与 CLI 参数的合并优先级为内置默认值 配置文件 命令行参数合并逻辑见 defaultAction.ts。详细配置项参见 配置指南。此外在--watch-w模式下 Repomix 会监听文件变化并自动重新打包适合持续迭代场景。相关资源输出格式 —— XML、Markdown、JSON 与纯文本格式详解命令行选项 —— 完整 CLI 参考提示词示例 —— 用于 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),仅供参考