ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Repomix 使用指南:将仓库打包为 AI 友好的单一文件(CLI、配置与输出格式全解析)

Repomix 使用指南:将仓库打包为 AI 友好的单一文件(CLI、配置与输出格式全解析) Repomix 使用指南将仓库打包为 AI 友好的单一文件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 友好文件XML、Markdown、JSON 或纯文本的命令行工具适用于代码审查、重构辅助、给 Claude / ChatGPT / Gemini 等大模型提供完整仓库上下文等场景。本文以 Repomix 官方法语文档首页website/client/src/fr/index.md为主体结合仓库源码深入讲解 CLI 用法、输出格式、配置参数、安全检测与 token 计数的底层实现读完即可上手并理解其工作原理。Repomix 是什么Repomix 的核心能力是把你的整个代码库打包成一个文件。无论你是在做代码审查、代码重构还是希望 AI 助手介入你的项目Repomix 都能让你把整个仓库的上下文一次性分享给 AI 工具Claude、ChatGPT、Gemini、Grok 等。从仓库的 package.json 可以确认Repomix 的定位正是 A tool to pack repository contents to single file for AI consumption将仓库内容打包为单一文件供 AI 消费当前仓库版本为 1.18.0。项目官网将其核心特性概括为四点面向 AI 优化AI-Optimized以 AI 易于理解和处理的方式格式化你的代码库Git 感知Git-Aware自动尊重项目的.gitignore规则注重安全Security-Focused内置 Secretlint检测符合已知凭据格式的文件并将其排除在输出之外Token 计数Token Counting提供每个文件及整个仓库的 token 数用于评估 LLM 上下文窗口限制。快速上手体验用 Repomix 生成打包文件如repomix-output.xml后把它发给 ChatGPT、Claude 等 AI 助手并附上类似这样的提示词Ce fichier contient tous les fichiers du dépôt combinés en un seul. Je souhaite refactoriser le code, veuillez donc dabord lexaminer.该文件包含了仓库中所有文件的合并内容。我希望重构代码请先审查它。AI 会基于完整代码库给出综合分析在讨论具体改动时AI 还能帮你生成代码配合 Claude 的 Artifacts 等能力甚至可以直接返回多个相互依赖的文件为什么选择 RepomixRepomix 的优势在于它可以与 ChatGPT、Claude、Gemini、Grok 等任何订阅制 AI 服务配合使用在提供完整代码库上下文的同时免去逐个文件探索的麻烦使分析更快、通常也更准确。当整个代码库都作为上下文可用时它可以支撑实现规划、缺陷排查、第三方库安全检查、文档生成等一系列应用场景。使用 CLI 工具Repomix 作为命令行工具使用功能强大且高度可定制。CLI 工具可以访问私有仓库因为它使用你本地安装的 git 进行克隆与读取。快速开始无需安装即可在你的项目目录中立刻体验npx repomixlatest也可以全局安装以便反复使用# 使用 npm 安装 npm install -g repomix # 或使用 yarn yarn global add repomix # 或使用 bun bun add -g repomix # 或使用 HomebrewmacOS/Linux brew install repomix # 然后在任意项目目录中执行 repomix执行后Repomix 会在当前目录生成一个repomix-output.xml文件包含整个仓库的 AI 友好格式内容。基本用法打包整个仓库repomix打包指定目录repomix path/to/directory使用 glob 模式 打包特定文件或目录repomix --include src/**/*.ts,**/*.md排除特定文件或目录repomix --ignore **/*.log,tmp/打包远程仓库# 使用简写格式 npx repomix --remote yamadashy/repomix # 使用完整 URL支持分支和特定路径 npx repomix --remote https://github.com/yamadashy/repomix npx repomix --remote https://github.com/yamadashy/repomix/tree/main # 使用 commit 的 URL npx repomix --remote https://github.com/yamadashy/repomix/commit/836abcd7335137228ad77feb28655d85712680f1初始化新的配置文件repomix.config.jsonrepomix --init生成打包文件后就可以与 Claude、ChatGPT、Gemini 等生成式 AI 工具配合使用。CLI 分发的内部细节从 src/cli/cliRun.ts 可以看到CLI 基于 Commander 构建位置参数支持多个目录默认[.]。除--remote显式指定外Repomix 还会自动识别位置参数中的显式远程 URLhttps://、git、ssh://、git://甚至支持owner/repo形式的 GitHub 简写——当该参数不是本地路径、且通过 HEAD-only 的git ls-remote探测确认仓库可达时才会触发远程克隆误写的本地路径不会引发意外的克隆操作src/cli/cliRun.ts。使用 Docker也可以使用 Docker 运行 Repomix适合需要隔离环境或偏好容器化的场景# 基本用法当前目录 docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix # 打包指定目录 docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix path/to/directory # 处理远程仓库并输出到 output 目录 docker run -v ./output:/app -it --rm ghcr.io/yamadashy/repomix --remote https://github.com/yamadashy/repomix输出格式Repomix 支持四种输出格式通过--style选择# XML 格式默认 repomix --style xml # Markdown 格式 repomix --style markdown # JSON 格式 repomix --style json # 纯文本格式 repomix --style plain不同格式对应的默认输出文件名在源码 src/config/configSchema.ts 中有明确定义XML 为repomix-output.xml、Markdown 为repomix-output.md、纯文本为repomix-output.txt、JSON 为repomix-output.json。从源码看输出生成由 src/core/output/outputGenerate.ts 负责它按格式编译对应的 Handlebars 模板src/core/output/outputStyles/xmlStyle.ts、markdownStyle.ts、plainStyle.ts并缓存已编译模板以避免重复编译。配置文件定制创建repomix.config.json保存持久化设置{ output: { style: markdown, filePath: custom-output.md, removeComments: true, showLineNumbers: true, topFilesLength: 10 }, ignore: { customPatterns: [*.test.ts, docs/**] } }CLI 选项的优先级高于配置文件中的设置。配置文件的加载顺序与优先级详见法语文档中的配置指南依次查找 TypeScriptrepomix.config.ts/.mts/.cts、JavaScript / ESMrepomix.config.js/.mjs/.cjs、JSONrepomix.config.json5/.jsonc/.json并支持全局配置文件作为本地配置缺失时的兜底可通过repomix --init --global生成。深入源码打包流水线与配置原理打包主流程Repomix 的打包核心实现在 src/core/packager.ts。pack()函数的主流程依次为搜索文件Search Files对每个根目录调用searchFiles同时后台预加载 token 计数缓存、预取 git 文件变更统计排序文件Sort Files对收集到的路径去重排序并按output.filePathStyle生成显示路径收集文件Collect Files并行执行文件内容读取、git diff 与 git log 获取安全检查与文件处理并行安全检查在 worker 线程中运行文件处理在主线程执行互不争抢 CPU生成输出Generate Output与指标计算并行进行显著缩短整体耗时计算指标Calculate Metrics统计每个文件的字符数与 token 数。其中安全检查会对 git diff 的工作区改动、暂存区改动以及 git log 历史内容一并扫描src/core/security/securityCheck.ts确保连待提交的改动中的敏感信息也不会泄漏到输出文件里。配置 Schema参数与默认值配置文件的所有字段与默认值都由 Valibot schema 在 src/config/configSchema.ts 中定义关键默认值如下配置项默认值说明input.maxFileSize5242880050MB超过该大小的文件将被跳过output.filePathrepomix-output.xml输出文件名随 style 变化output.stylexml输出风格xml/markdown/json/plainoutput.filePathStyletarget-relative路径显示方式cwd-relative为相对当前工作目录output.fileSummary/directoryStructure/filestrue/true/true是否输出摘要、目录结构、文件内容output.removeComments/removeEmptyLinesfalse/false是否移除注释、空行output.compressfalse是否用 Tree-sitter 压缩代码结构output.topFilesLength5摘要中显示的最大文件数output.showLineNumbersfalse是否显示行号output.copyToClipboardfalse是否同时复制到剪贴板output.includeEmptyDirectoriesfalse是否在目录结构中包含空目录output.git.sortByChangestrue是否按 git 变更频率排序文件output.git.sortByChangesMaxCommits100分析变更时的最大 commit 数output.git.includeDiffs/includeLogsfalse/false是否包含 git diff / git logoutput.git.includeLogsCount50包含的最近 commit 数ignore.useGitignore/useDotIgnore/useDefaultPatternstrue/true/true是否使用.gitignore、.ignore、内置默认忽略模式ignore.customPatterns[]额外忽略的 glob 模式security.enableSecurityChecktrue是否启用 Secretlint 安全检查tokenCount.encodingo200k_basetoken 计数的编码GPT-4oCLI 中对应的大量参数如--output、--style、--compress、--remove-comments、--token-count-tree、--token-budget、--split-output、--include-diffs、--watch等定义于 src/cli/types.ts 和 src/cli/cliRun.ts。值得注意的细节--stdout与--output互斥--quiet与--verbose互斥--watch不能与--remote、--stdout、--stdin、--copy、--split-output、--skill-generate组合使用src/cli/cliRun.ts。忽略规则的优先级Repomix 支持多种忽略来源法语文档 configuration.md 给出了明确的优先级顺序从高到低自定义模式ignore.customPatterns忽略文件.repomixignore、.ignore、.gitignore、.git/info/exclude嵌套目录中的忽略文件优先级更高同一目录下的多个文件合并处理默认模式当ignore.useDefaultPatterns为 true 时。内置的默认忽略列表定义在 src/config/defaultIgnore.ts覆盖版本控制目录.git/**、依赖目录**/node_modules/**、日志、构建产物dist/**、build/**、缓存目录、.env环境变量文件、各类语言锁文件package-lock.json、Cargo.lock、go.sum等以及 Repomix 自身的输出**/repomix-output.*。这些默认模式可以通过--no-default-patterns关闭。文件包含与排除的 glob 语义--include与--ignore都支持逗号分隔的多个 glob 模式例如src/**/*.js,*.md。忽略优先级按上述顺序执行此外 Repomix 默认不把二进制文件内容写入打包输出但其路径仍会出现在目录结构部分input.maxFileSize则用于过滤超大文件。Token 计数评估 LLM 上下文成本Repomix 内置的 token 计数功能使用 gpt-tokenizer 中的TokenCounter。它通过resolveEncodingAsync懒加载 BPE rank 数据并默认以o200k_base对应 GPT-4o编码计数也可通过--token-count-encoding切换为cl100k_baseGPT-3.5/4等其他编码。计数时将所有内容视为普通文本不将特殊 token 排除以便与 LLM 实际上下文的估算保持一致。CLI 还提供两个与 token 相关的实用参数--token-count-tree [threshold]输出带 token 数的文件树可加阈值只显示 token 数 ≥ N 的文件如--token-count-tree 100--token-budget number当打包输出超过指定 token 数时以非零退出码失败作为 CI / Agent 上下文限制的护栏输出仍会生成但调用方可据此判断超限。这些统计通过 worker 线程池并行计算src/core/metrics/calculateMetrics.ts并带有 token 计数缓存src/core/metrics/tokenCountCache.ts以加速重复打包。安全检查Secretlint 集成security.enableSecurityCheck默认开启会在打包前使用 Secretlint 的实现看扫描任务按每批 50 个文件打包分发到最多 2 个 worker 线程以减少 IPC 开销检测到可疑文件后其内容会从最终输出中排除src/core/packager.ts从根源上防止凭据泄漏进发给 AI 的文件。可用--no-security-check关闭。高级功能速览Repomix 还提供面向进阶用户的强大能力法语文档中均有对应指南MCP 服务器作为 Model Context Protocol 服务器接入 AI 助手支持--mcp与--sandbox [dir]沙箱模式将文件工具限制在工作区目录内GitHub Actions在 CI/CD 工作流中自动化打包代码压缩基于 Tree-sitter 的智能压缩官方称可减少约 70% 的 token--compress/output.compress: true作为库使用将 Repomix 集成进 Node.js 应用src/index.ts 导出了pack、collectFiles、processFiles、TokenCounter、runCli、defineConfig等完整 API自定义指令通过--header-text、--instruction-file-path向输出中添加自定义 prompt安全特性内置 Secretlint 与安全检查细节最佳实践经过验证的 AI 工作流优化策略。需要更详细的说明时可查阅法语文档的完整指南目录以及仓库根目录的 README.md 与 CLAUDE.md。总结Repomix 把给 AI 喂代码库这件事简化成了单条命令它自动尊重.gitignore、内置默认忽略规则与 Secretlint 安全扫描支持四种输出格式与丰富的 CLI/配置项并提供 token 计数、代码压缩、git 集成、MCP 服务器等进阶能力。无论是本地仓库还是远程 GitHub 仓库无论是代码审查、重构还是文档生成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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表