Repomix 基本使用完全指南:从仓库打包到 Token 优化的一站式 CLI 实战

发布时间:2026/9/12 16:19:55
Repomix 基本使用完全指南:从仓库打包到 Token 优化的一站式 CLI 实战 Repomix 基本使用完全指南从仓库打包到 Token 优化的一站式 CLI 实战【免费下载链接】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 友好文件的命令行工具本指南基于官方 Basic Usage 文档系统讲解 Repomix CLI 的核心使用场景从一条命令打包整个仓库到按目录、glob 模式、stdin 管道精筛文件再到远程仓库克隆、输出拆分、Git 集成、Token 统计与压缩等进阶能力。读完本文你将能够熟练运用 Repomix 的各种命令行选项把任意规模的项目整理成最适合喂给 Claude、ChatGPT、Gemini 等大语言模型的上下文文件。快速开始一条命令打包整个仓库在项目根目录下执行repomixRepomix 会自动扫描当前目录遵循.gitignore与默认忽略规则收集所有代码文件并生成默认的repomix-output.xmlXML 是默认输出格式。从源码看这一过程由 pack 主流程 驱动依次完成文件搜索、路径排序、内容收集、安全扫描、文件处理、输出生成与 Token 度量文件搜索searchFiles基于根目录与配置include/ignore 模式收集候选文件见 fileSearch.ts文件收集与处理collectFiles读取磁盘内容随后应用文件处理器并执行processFiles见 fileProcess.ts并行化文件收集与 Git 操作diffs/logs通过Promise.all并行执行互不阻塞见 packager.ts。常见使用场景打包指定目录默认打包当前目录若要打包某个特定目录直接把它作为位置参数传入repomix path/to/directory底层会将传入目录通过path.resolve(cwd, directory)解析为绝对路径后交给pack见 defaultAction.ts。只包含指定文件--include使用 glob 模式精确挑选要打包的文件repomix --include src/**/*.ts,**/*.md支持逗号分隔多个模式--include内部通过splitPatterns拆分成模式数组匹配规则与 fast-glob 语法一致。该选项会写入配置的include字段在文件搜索阶段与 ignore 规则共同决定哪些文件进入打包结果见 defaultAction.ts 与 configSchema.ts。排除文件--ignorerepomix --ignore **/*.log,tmp/--ignore设置自定义排除模式customPatterns同时默认启用.gitignore、.ignore点文件与内置默认忽略规则这些规则分别由useGitignore、useDotIgnore、useDefaultPatterns控制均可通过--no-gitignore、--no-dot-ignore、--no-default-patterns显式关闭见 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等十进制小数同样有效如2.5mb。[!NOTE] 为保证上下文完整文件按顶层目录分组单个文件或目录绝不会被拆分到多个输出文件中。实现细节--split-output的值经 parseHumanSizeToBytes 解析为字节数——正则只接受kb/mb单位大小写不敏感1kb1024 字节1mb1024² 字节非法值或非正数会直接报错。拆分算法在 outputSplit.ts 中实现先按路径首段顶层目录构建分组buildOutputSplitGroups再逐个渲染分组并精确测量 UTF-8 字节数若单个分组超限会向下一层目录递归细分subdivideSplitGroup直到拆分为单文件仍超限才抛出错误。同时非首个分片会关闭 git diffs/logs 以避免重复的大段内容见 makeChunkConfig。由于每次都要完整渲染当前累计的分组来精确度量大小该算法复杂度为 O(N²)对典型的 10~20 个顶层目录规模完全可接受注释见 outputSplit.ts。注意--split-output要求写入文件系统因此与--stdout、--copy、--skill-generate互斥冲突时会在运行前抛出错误见 validateConflictingOptions。打包远程仓库--remote无需先克隆直接打包 GitHub 上的仓库# 使用 GitHub URL repomix --remote https://github.com/user/repo # 使用 user/repo 简写 repomix --remote user/repo # 不带 --remote 的简写自动识别 repomix user/repo # 指定分支/标签/提交 repomix --remote user/repo --remote-branch main repomix --remote user/repo --remote-branch 935b695--remote接受 GitHub URL 或user/repo简写--remote-branch可指定具体分支、标签或提交哈希默认使用仓库的默认分支。相关实现可参阅 remoteAction.ts、gitHubArchive.ts 与 gitRemoteParse.ts。通过 stdin 传入文件列表--stdin把文件路径通过管道喂给 Repomix获得最大的文件选择灵活性# 使用 find 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允许你把文件路径列表管道式输入 Repomix在文件选择上提供最大灵活度。使用--stdin时指定的文件会被追加到 include 模式中因此常规的 include/ignore 行为依然生效——即使通过 stdin 指定匹配到 ignore 模式的文件仍会被排除见 fileSearch.ts 中的显式文件合并逻辑。[!NOTE]--stdin模式下的文件路径可以是相对路径或绝对路径Repomix 会自动完成路径解析与去重。实现细节stdin 读取由 fileStdin.ts 承担——readFilePathsFromStdin先检测 stdin 是否为 TTY交互终端下直接报错提示需要管道输入再通过 readline 逐行读取直到 EOF随后filterValidLines过滤空行与#开头的注释行最后resolveAndDeduplicatePaths将相对路径基于当前工作目录解析为绝对路径并去重fileStdin.ts。使用--stdin时不能再传目录参数校验逻辑见 defaultAction.ts。代码压缩--compress在保留代码结构的前提下显著降低 Token 数量repomix --compress # 也可以与远程仓库配合使用 repomix --remote yamadashy/repomix --compress--compress借助 Tree-sitter 解析代码抽取类、函数、接口等核心结构详见 code-compress 指南。解析策略定义在 src/core/treeSitter例如 TypeScript/JavaScript 使用 queryTypescript.ts 与 queryJavascript.ts 中的查询语句语言配置见 languageConfig.ts。配置项output.compress默认关闭见 configSchema.ts。Git 集成引入 Git 信息为 AI 分析提供开发上下文# 包含 git diffs未提交的修改 repomix --include-diffs # 包含 git 提交日志默认最近 50 条 repomix --include-logs # 指定包含的提交数量 repomix --include-logs --include-logs-count 10 # 同时包含 diffs 和 logs repomix --include-diffs --include-logs这为打包输出补充了极具价值的上下文近期变更Git diffs 展示未提交的工作区/暂存区修改开发模式Git logs 揭示哪些文件通常一起被修改提交历史最近的提交信息反映开发重心文件关联理解哪些文件在同一提交中被改动实现细节Git 操作与文件收集并行执行见 packager.ts。diff 处理见 gitDiffHandle.tslog 处理见 gitLogHandle.ts——其中以 NUL 字符\x00作为提交记录分隔符避免提交信息含换行时解析错乱--include-logs-count默认值为 50includeLogsCount默认 50见 configSchema.ts非数字输入会被拒绝cliRun.ts。若当前目录不是 Git 仓库相关功能会静默返回空。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-count-tree [threshold]的阈值是可选的见 cliRun.ts。该功能帮助你定位 Token 大户识别可能超出 AI 上下文窗口的文件优化文件选择用--include与--ignore模式调整打包范围规划压缩策略针对最大的贡献者启用--compress平衡内容与上下文为 AI 分析准备恰到好处的代码实现细节Token 树由 buildTokenCountStructure.ts 生成——buildTokenCountTree把每个文件的相对路径按/拆分成目录节点使用Map存储子目录以避免与files/tokenSum等元数据字段冲突calculateTokenSums自底向上汇总每个目录的 Token 总和。Token 计数底层使用 gpt-tokenizer默认编码由 metrics/TokenCounter.ts 实现并配套 tokenCountCache.ts 缓存以加速重复运行工作线程池在文件搜索阶段就预先启动预热见 packager.ts。输出格式--style指定输出格式共四种XML默认repomix --style xmlMarkdownrepomix --style markdownJSONrepomix --style json纯文本repomix --style plain四种格式的渲染器分别位于 src/core/output/outputStylesxmlStyle.ts、markdownStyle.ts、plainStyle.tsJSON 输出另见对应实现。CLI 传入的--style会被统一转为小写后写入配置见 defaultAction.ts。附加选项删除注释repomix --remove-comments借助 Tree-sitter 移除代码注释以压缩体积支持的编程语言与细节见 comment-removal 指南。配置项默认关闭见 configSchema.ts。显示行号repomix --output-show-line-numbers在输出中为每行代码添加行号前缀便于 AI 引用具体代码位置。复制到剪贴板repomix --copy打包完成后自动把输出复制到系统剪贴板方便直接粘贴给 AI 工具。配置项copyToClipboard默认关闭configSchema.ts复制动作由 copyToClipboardIfEnabled.ts 执行。禁用安全检查repomix --no-security-check默认情况下 Repomix 会扫描输出内容中的敏感信息如 API 密钥、密码等此选项可跳过该扫描安全检测的具体内容见 security 指南。扫描实现在 security/securityCheck.ts 与 securityCheckWorker.ts采用 worker 线程并行执行并在打包完成后从结果中剔除可疑文件见 packager.ts。配置文件初始化repomix --init在项目根目录生成repomix.config.json支持 json/yaml/ts/js 等格式把常用的 include、ignore、输出样式等参数固化到配置文件中替代每次手写冗长的 CLI 参数。配置的加载与合并顺序为默认值 → 配置文件 → CLI 参数后者优先级最高见 buildMergedConfig 与 configLoad.ts。详细配置项说明见 configuration 指南。相关资源输出格式 —— 深入了解 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),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询