ARTICLE DETAIL

资讯详情

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

Repomix 命令行选项完全指南:从基础用法到 MCP 与 Agent Skills 的 CLI 全量参考

Repomix 命令行选项完全指南:从基础用法到 MCP 与 Agent Skills 的 CLI 全量参考 Repomix 命令行选项完全指南从基础用法到 MCP 与 Agent Skills 的 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 友好文件的工具其 CLI 提供了覆盖输入输出、文件选择、远程仓库、配置、安全、Token 计数、MCP 服务器与 Agent Skills 生成的完整选项体系。本文以官方《命令行选项》文档website/client/src/zh-cn/guide/command-line-options.md为主体骨架结合仓库源码src/cli/cliRun.ts、src/cli/actions/defaultAction.ts 等逐项解读每个参数的取值、默认值与底层实现原理帮助你精准构造任何场景下的打包命令。基本选项选项说明-v, --version显示版本信息并退出该选项在 src/cli/cliRun.ts 中注册命中后进入runVersionAction()打印版本号。此外在非 stdin 模式下CLI 启动时会额外打印一行 Repomix vversion的版本横幅见 src/cli/cliRun.tsstdin 模式刻意跳过该横幅避免干扰管道输出。CLI 输入/输出选项选项说明--verbose启用详细调试日志显示文件处理、token 计数和配置详细信息--quiet抑制除错误外的所有控制台输出用于脚本编写--stdout将打包输出直接写入标准输出而不是文件抑制所有日志记录--stdin从标准输入逐行读取文件路径指定的文件直接处理--copy处理后将生成的输出复制到系统剪贴板--token-count-tree [threshold]显示带有 token 计数的文件树可选阈值仅显示 ≥N token 的文件例如--token-count-tree 100--top-files-len number摘要中显示的最大文件数默认5从源码实现看src/cli/cliRun.ts--verbose与--quiet在 Commander 中通过.conflicts()声明互斥同时传入会直接报错。两者通过logger.setLogLevel()分别切换 DEBUG 与 SILENT 日志级别src/cli/cliRun.ts。--stdout与--output互斥进入 stdout 模式后日志级别被强制设为 SILENT保证管道里只有纯净的打包内容。注意-o -会被自动等价转换为 stdout 模式src/cli/cliRun.ts。--stdin模式下禁止再传入目录位置参数文件路径从标准输入逐行读取由 src/core/file/fileStdin.ts 的readFilePathsFromStdin()处理校验逻辑见 src/cli/actions/defaultAction.ts。--token-count-tree的阈值参数会在解析阶段校验必须为非负整数非法输入抛出Invalid token count threshold错误--top-files-len同理校验为非负整数src/cli/cliRun.ts。Repomix 输出选项选项说明-o, --output file输出文件路径默认repomix-output.xml使用-输出到标准输出--style style输出格式xml、markdown、json或plain默认xml--output-file-path-style style输出中文件路径的显示方式target-relative或cwd-relative默认target-relative--parsable-style转义特殊字符以确保有效的 XML/Markdown当输出包含破坏格式的代码时需要--compress使用 Tree-sitter 解析提取基本代码结构类、函数、接口--output-show-line-numbers为输出中的每行添加行号前缀--no-file-summary从输出中省略文件摘要部分--no-directory-structure从输出中省略目录树可视化--no-files仅生成元数据而不包含文件内容用于仓库分析--remove-comments打包前剥离所有代码注释--remove-empty-lines从所有文件中删除空行--truncate-base64截断长 base64 数据字符串以减少输出大小--header-text text在输出开头包含的自定义文本--instruction-file-path path包含要在输出中包含的自定义指令的文件路径--split-output size将输出拆分为多个编号文件例如repomix-output.1.xml大小如500kb、2mb或1.5mb--include-empty-directories在目录结构中包含没有文件的文件夹--include-full-directory-structure即使使用--include模式也在目录结构部分显示完整的仓库树--no-git-sort-by-changes不按 git 更改频率排序文件默认最常更改的文件优先--include-diffs添加显示工作树和暂存更改的 git diff 部分--include-logs添加包含消息和更改文件的 git 提交历史--include-logs-count count与--include-logs一起包含的最新提交数默认50输出风格与文件命名--style的四种取值由 src/config/configSchema.ts 中的 picklist 枚举约束xml | markdown | json | plain。每种风格有对应的默认输出文件名src/config/configSchema.ts风格默认输出文件xmlrepomix-output.xmlmarkdownrepomix-output.mdjsonrepomix-output.jsonplainrepomix-output.txt--output-file-path-style的两个取值target-relative与cwd-relative同样由 src/config/configSchema.ts 枚举约束控制输出中文件路径是相对打包目标目录还是相对当前工作目录展示。拆分输出与大小解析--split-output的值通过parseHumanSizeToBytes()解析为字节数src/cli/cliRun.ts支持500kb、2mb、2.5mb这类人类可读的写法。拆分后生成repomix-output.1.xml、repomix-output.2.xml等编号文件。与配置文件的关系--no-*标志的语义一个容易被忽略的细节得益于 Commander.js 对--no-*标志的处理--no-file-summary、--no-directory-structure、--no-files、--no-git-sort-by-changes这类选项只有在显式传入时才生效且仅当其显式为false时才覆盖配置文件——也就是说配置文件中的对应设置拥有优先级除非你在命令行明确否定它src/cli/actions/defaultAction.ts 及buildCliConfig中的相关分支。这一设计让配置文件可以稳定持有默认值而 CLI 仅做显式覆盖。文件选择选项选项说明--include patterns仅包含与这些 glob 模式匹配的文件逗号分隔例如src/**/*.js,*.md-i, --ignore patterns要排除的附加模式逗号分隔例如*.test.js,docs/**--no-gitignore不使用.gitignore规则过滤文件--no-dot-ignore不使用.ignore规则过滤文件--no-default-patterns不应用内置忽略模式node_modules、.git、构建目录等在源码中--include与--ignore的逗号分隔字符串会通过splitPatterns()拆分为模式数组--ignore映射为配置的ignore.customPatterns字段src/cli/actions/defaultAction.ts。--no-default-patterns关闭的内置忽略清单非常庞大定义在 src/config/defaultIgnore.ts 中覆盖版本控制.git/**、.hg/**、.svn/**依赖目录**/node_modules/**、vendor/**、**/.gradle/**、target/**日志与运行时数据**/*.log、logs/**、*.pid构建产物与缓存dist/**、build/**、out/**、.next/**、coverage/**、各类*.cache环境变量文件.env编辑器/系统文件.idea/**、.vscode/**、**/.DS_Store、**/Thumbs.db各语言锁文件**/package-lock.json、**/yarn.lock、**/pnpm-lock.yaml、**/Cargo.lock、**/go.sum、**/Gemfile.lock、**/poetry.lock等Repomix 自身输出**/repomix-output.*含旧名**/repopack-output.*远程仓库选项选项说明--remote url克隆并打包远程仓库GitHub URL 或user/repo格式--remote-branch name要使用的特定分支、标签或提交默认仓库的默认分支--remote-trust-config信任并加载远程仓库的配置文件。被信任的配置可以执行命令并读取本地文件因此请仅对你完全信任的仓库使用出于安全考虑默认禁用。在交互式终端中会显示该配置并要求确认远程仓库的三种写法完整 URLrepomix --remote https://github.com/user/repo/tree/main可指定分支或.../commit/sha可指定提交简写repomix --remote user/repo自动检测repomix user/repo—— 当位置参数既不是本地存在的路径、又能通过 GitHub 的 HEAD-onlygit ls-remote探测确认可达时自动按远程仓库处理src/cli/cliRun.ts。从源码注释看简写与本地相对路径存在歧义因此只有当本地路径确实不存在且远程探测成功时才判定为远程误写的本地路径如src/uitls会探测失败并回落到本地路径处理不会误触发克隆。下载策略与安全边界远程处理逻辑在 src/cli/actions/remoteAction.ts 中GitHub 仓库优先尝试归档archive下载支持时走downloadGitHubArchive超时 60 秒、重试 2 次失败后回退到浅克隆git clonesrc/cli/actions/remoteAction.ts。仓库先下载到临时目录打包完成后将输出文件复制回当前目录再清理临时目录cleanupTempDirectory。远程模式下--config必须是绝对路径防止从克隆下来的仓库中意外加载恶意配置src/cli/actions/remoteAction.ts。未加--remote-trust-config时远程仓库自身的配置被整体跳过skipLocalConfig: true文件处理器可执行任意命令的input.processors也不会启用只有显式信任后才启用且交互式终端会先展示该配置并请求确认src/cli/actions/remoteAction.ts。也可通过环境变量REPOMIX_REMOTE_TRUST_CONFIGtrue启用--force可跳过确认。配置选项选项说明-c, --config path使用自定义配置文件而不是repomix.config.json--init使用默认设置创建新的repomix.config.json文件--global与--init一起使用在主目录而不是当前目录中创建配置配置加载是默认配置 → 文件配置 → CLI 配置的三层合并mergeConfigs见 src/cli/actions/defaultAction.tsbuildMergedConfig先运行 Repopack 旧版配置迁移再加载文件配置loadFileConfig随后通过buildCliConfig将 CLI 选项解析成配置并合并最终由 valibot 的repomixConfigCliSchema校验非法参数会抛出Invalid cli arguments。--init是一个交互式向导src/cli/actions/initAction.ts会依次询问是否创建repomix.config.json已存在时询问是否覆盖→ 选择输出风格xml/markdown/json/plain各带默认输出路径→ 是否创建.repomixignore文件。--global模式下配置写入主目录由getGlobalDirectory()定位而非当前目录且跳过.repomixignore的创建。安全选项--no-security-check跳过扫描 API 密钥和密码等敏感数据默认情况下 Repomix 会扫描打包内容中的密钥、密码等敏感信息security.enableSecurityCheck默认开启。从 src/cli/actions/defaultAction.ts 可见该选项仅在显式传入false时才生效并覆盖配置。安全扫描的核心实现位于 src/core/security/securityCheck.ts配套的检测规则与测试可参考 tests/core/security/securityScanSpec.test.ts。除非你明确知道输出不会泄露敏感信息否则不建议关闭。更多细节见安全指南。Token 计数选项--token-count-encoding encoding用于计数的分词器模型o200k_baseGPT-4o、cl100k_baseGPT-3.5/4等默认o200k_base--token-budget number当打包输出超过 N 个 token 时以非零退出码失败。可在 CI 流水线和 agent 工作流中作为防护使输出保持在目标模型的上下文窗口内。输出仍会生成仅由退出码标示溢出支持的编码可用的 token 编码由 src/core/metrics/tokenEncodings.ts 定义o200k_base默认对应 GPT-4o 等 o 系列模型cl100k_base对应 GPT-3.5/GPT-4p50k_base、p50k_editr50k_basetoken-budget 是事后防护而非提前熔断--token-budget的校验逻辑在 src/cli/cliTokenBudget.ts 中输出照常生成并写出仅当总 token 数超过预算时抛出错误使进程以非零退出码结束。错误信息会给出实际 token 数与预算值并提示通过--compress、--include/--ignore缩小范围或调高预算。这一语义在远程模式下同样成立远程运行会先把输出从临时目录复制出来再执行校验deferTokenBudgetCheck见 src/cli/actions/remoteAction.ts避免超预算时输出被随临时目录一起清理掉。因此它可以安全地嵌入 CI 与 agent 工作流作为上下文窗口防护闸。MCP 选项--mcp作为 AI 工具集成的 Model Context Protocol 服务器运行--sandbox [dir]配合--mcp使用将 MCP 服务器的文件工具限制在一个工作区目录内默认为当前工作目录例如--sandbox path/to/project。所有路径都相对于该根目录解析绝对路径/主机路径会被拒绝同时远程打包、Skill 生成以及附加外部输出功能均被禁用--mcp模式下 Repomix 启动 MCP 服务器runMcpAction见 src/cli/cliRun.ts向 AI Agent 暴露pack_codebase、read_repomix_output、grep_repomix_output、file_system_read_file、file_system_read_directory、attach_packed_output、generate_skill、pack_remote_repository等工具src/mcp/mcpServer.ts。--sandbox提供路径级隔离未指定目录时默认为当前工作目录所有路径相对该根目录解析绝对路径与主机路径会被拒绝。沙箱模式下远程打包、Skill 生成、附加外部输出被禁用。源码注释还揭示了更细的防护沙箱会跳过本地与全局配置文件skipLocalConfigskipGlobalConfig并开启confineToBaseDir兜底杜绝配置驱动的instructionFilePath或input.processors把工作区外文件引入 Agent 可见输出src/cli/types.ts。沙箱根目录会先经realpath规范化解析符号链接兼容 macOS/tmp→/private/tmp保证路径守卫与错误信息抹除基于同一份真实路径src/cli/cliRun.ts。注意不带--mcp单独使用--sandbox时CLI 会警告该选项不生效。完整的使用指南见 MCP 服务器文档。Agent Skills 生成选项选项说明--skill-generate [name]生成 Claude Agent Skills 格式输出到.claude/skills/name/目录省略名称时自动生成--skill-project-name name覆盖生成的 Skills 描述中使用的项目名称--skill-output path直接指定技能输出目录路径跳过位置选择提示-f, --force跳过所有确认提示技能目录覆盖、远程配置信任--skill-generate将打包结果转换为 Claude Agent Skills 格式含SKILL.md写入.claude/skills/name/。省略名称时会根据目标目录自动生成默认技能名本地场景用generateDefaultSkillName远程场景用generateDefaultSkillNameFromUrl见 src/cli/actions/defaultAction.ts 与 src/cli/actions/remoteAction.ts。使用约束来自 src/cli/actions/defaultAction.ts 与validateConflictingOptions--skill-output、--skill-project-name、--force必须与--skill-generate搭配使用否则直接报错--skill-output不能为空。不传--skill-output时会以交互方式提示选择技能位置传入后跳过提示直接写入。--split-output与--skill-generate冲突Skill 输出是目录不是多个编号文件--stdout、--copy与--skill-generate同样冲突src/cli/actions/defaultAction.ts。监视模式选项-w, --watch监视文件更改并自动重新打包。会检测新增、修改和删除的文件对快速连续的更改进行防抖处理300 毫秒并在每次重新构建后打印时间戳。按CtrlC停止。监视模式由 src/cli/actions/watchAction.ts 实现底层使用 chokidar首次立即打包一次随后监听change/add/unlink事件触发重建。300ms 防抖常量REBUILD_DEBOUNCE_MS 300合并快速连续的文件事件同时启用awaitWriteFinishstabilityThreshold: 100ms等待文件大小稳定后才触发事件避免打包到写了一半的文件src/cli/actions/watchAction.ts。重建串行化正在重建时到达的新事件会被排队pendingRebuild重建完成后自动补跑一次src/cli/actions/watchAction.ts。每次重建后打印Rebuilt at HH:MM:SS时间戳用toTimeString()取稳定的 24 小时制前段保证跨平台一致。监听目标采用与打包器一致的 ignore 过滤buildWatchIgnoreFilterchokidar 不会进入node_modules、.git与 gitignore 目录避免大项目出现 EMFILE 和无谓重建。SIGINT/SIGTERM触发优雅关闭清理防抖定时器、关闭 watcher、等待进行中的重建完成src/cli/actions/watchAction.ts。监视模式的限制监视模式仅适用于本地目录不能与以下选项组合src/cli/cliRun.ts--remote或位置参数形式的远程仓库 URL--stdout监视模式必须写文件--stdin监视模式自动发现文件--split-output拆分会生成编号文件被 watcher 再次捕获形成循环--skill-generate--copy每次变更都重新覆盖剪贴板需要特别注意无论该选项是写在命令行还是写在配置文件里这些限制都同样生效——runWatchAction在合并配置后会对配置文件来源的splitOutput、stdout 输出、copyToClipboard、skillGenerate再次校验src/cli/actions/watchAction.ts因为cliRun中的命令行级校验看不到配置文件的值。相关资源配置指南 —— 通过配置文件而非 CLI 标志设置选项输出格式 —— XML、Markdown、JSON 和纯文本格式详解代码压缩 ——--compress与 Tree-sitter 的工作原理安全指南 ——--no-security-check禁用的功能实用示例以下示例覆盖文档中的全部典型场景可直接复制运行# 基本使用 repomix # 自定义输出文件和格式 repomix -o my-output.xml --style xml repomix -o my-output.md --style markdown repomix -o my-output.json --style json # 输出到标准输出 repomix --stdout custom-output.txt # 输出到标准输出然后管道到另一个命令例如 simonw/llm repomix --stdout | llm 请解释这段代码的作用。 # 使用压缩的自定义输出 repomix --compress # 拆分输出为多个文件每部分最大体积 repomix --split-output 20mb # Git 集成功能 repomix --include-diffs # 包含未提交更改的 git diff repomix --include-logs # 包含 git 日志默认最近 50 个提交 repomix --include-logs --include-logs-count 10 # 包含最近 10 个提交 repomix --include-diffs --include-logs # 同时包含差异和日志 # 使用模式处理特定文件 repomix --include src/**/*.ts,*.md --ignore *.test.js,docs/** # 带分支的远程仓库 repomix --remote https://github.com/user/repo/tree/main # 带提交的远程仓库 repomix --remote https://github.com/user/repo/commit/836abcd7335137228ad77feb28655d85712680f1 # 使用简写的远程仓库 repomix --remote user/repo # 使用简写的远程仓库自动检测无需 --remote repomix user/repo # 使用 stdin 的文件列表 find src -name *.ts -type f | repomix --stdin git ls-files *.js | repomix --stdin echo -e src/index.ts\nsrc/utils.ts | repomix --stdin # Token 计数分析 repomix --token-count-tree repomix --token-count-tree 1000 # 仅显示拥有 1000 Token 的文件/目录 # 监视模式文件更改时自动重新打包 repomix --watch repomix -w --include src/**/*.ts组合技巧CI 防护闸repomix --token-budget 100000配合 CI 的非零退出码判定确保任何提交的打包产物都不超出目标模型上下文窗口。Agent 脚本化repomix --quiet --stdout | your-llm-tool在静默模式下把纯净输出交给下游命令避免版本横幅与日志污染管道。远程仓库精确定位repomix --remote url --remote-branch tag可以打包指定 tag 或 commit 的代码快照适合对历史版本做对比分析。两种未知选项报错体验Repomix 的 CLI 内置了语义建议映射src/cli/cliRun.ts当输错选项时会给出相近的正确选项提示例如输入--exclude会提示Did you mean: --ignore?输入--format会提示Did you mean: --style?降低上手成本。以上所有选项均可在 src/cli/cliRun.ts 中查看到完整定义在 src/config/configSchema.ts 中查看其配置化等价字段。若需将选项固化到项目中可运行repomix --init生成配置文件或直接阅读配置指南手工编写。【免费下载链接】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),仅供参考
返回列表