Repomix 技术分享笔记

10 阅读4分钟

概况

Repomix:开源 CLI 工具,将整个代码仓库打包成单个 AI 友好文件(默认 XML,也支持 Markdown / JSON / Plain),方便喂给 Claude、Gemini、ChatGPT、Grok 等 LLM 进行:代码审查、重构、调试、文档生成、安全审计等

优点

  • 全仓库上下文 → AI 分析更准确
  • 尊重 .gitignore + 自定义忽略规则
  • 内置 Secretlint 防敏感信息泄露
  • 自动 token 统计(控制成本)
  • 支持压缩(token 减少约 70%)
  • 支持远程 GitHub 仓库、分割大文件、VS Code 插件等功能

前置条件

  • Node.js 18+

  • Git 仓库(可选,但推荐使用 .gitignore

  • 安装方式:

    • 推荐临时使用(无需全局安装):

      npx repomix@latest
      
    • 全局安装:

      npm install -g repomix
      # 或
      yarn global add repomix
      # 或
      brew install repomix
      
  • 大项目注意:LLM 上下文长度限制 → 建议使用 --compress--split-output

基本使用

在项目根目录运行:

# 方式一:临时运行(推荐)
npx repomix@latest
# 方式二:已全局安装
repomix
# 方式三:指定路径 / 自定义忽略
repomix src/                            # 仅打包 src 目录
repomix --ignore "**/tests/**"          # 排除 tests 目录
# 方式四:远程打包(无需克隆,神器!)
repomix --remote https://github.com/yamadashy/repomix

# 临时 npx 方式
npx repomix --remote https://github.com/yamadashy/repomix
  • 默认输出:当前目录生成 repomix-output.xml
  • 使用方式:直接复制内容粘贴给 AI,或上传文件(Claude 支持附件)

简单 Prompt 示例

这个文件包含了整个仓库的所有代码。
请先完整阅读并理解项目结构,
然后帮我重构 main.dart 中的登录逻辑,使其更模块化。

常用命令选项

--style markdown|json|plain       # 更改输出格式
--compress                         # 压缩代码(大项目强烈推荐)
--split-output 1mb                 # 分割大文件(支持 kb/mb)
--include "src/**/*.ts"            # 只包含匹配的文件
--ignore "**/*.log,dist/"          # 额外排除
--remote user/repo                 # 远程仓库
--copy                             # 复制结果到剪贴板
--token-count-tree                 # 显示 token 分布树
--help                             # 查看全部选项

针对不同技术栈的打包示例

  • 前端

    repomix src/ --include "src/**/*.{tsx,jsx,css}"
    
  • Flutter

    repomix lib/ --include "lib/**/*.dart,pubspec.yaml"
    
  • 后端(以 Python/Go 为例):

    repomix src/ --include "src/**/*.py,go.mod"
    

进阶配置(repomix.config.json)

放在项目根目录,支持 JSON5(可写注释)。

生成模板:

repomix --init          # 本地
repomix --init --global # 全局

完整示例配置(带注释):

{
  "$schema": "https://repomix.com/schemas/latest/schema.json",

  "input": {
    "maxFileSize": 50000000          // 字节,超大文件跳过,默认 50MB
  },

  "output": {
    "filePath": "repomix-output.xml",
    "style": "xml",                  // xml / markdown / json / plain
    "compress": true,                // Tree-sitter 压缩,token 减 ~70%
    "removeComments": true,
    "removeEmptyLines": true,
    "showLineNumbers": true,
    "splitOutput": "1mb",
    "directoryStructure": true,
    "fileSummary": true,
    "headerText": "这是一个完整仓库打包,用于代码审查与重构。",
    "instructionFilePath": "repomix-instruction.md",
    "git": {
      "sortByChanges": true,
      "includeDiffs": true,
      "includeLogs": true,
      "includeLogsCount": 20
    }
  },

  "include": [
    "src/**",
    "**/*.md",
    "pubspec.yaml"
  ],

  "ignore": {
    "useGitignore": true,
    "customPatterns": [
      "**/*.log",
      "build/**",
      "tests/e2e/**"
    ]
  },

  "security": {
    "enableSecurityCheck": true      // Secretlint 扫描
  },

  "tokenCount": {
    "encoding": "o200k_base"         // 推荐:o200k_base (GPT-4o / Claude 最新)
  }
}

自定义指令文件(repomix-instruction.md)

示例内容:

# 项目专属指令(给 AI 的)

这是一个 Flutter + Node.js 全栈项目。

请严格遵守以下规则分析代码:
1. 优先关注 lib/ 下的页面与状态管理(Riverpod/Bloc)。
2. 后端检查路由安全、输入校验、防注入。
3. 建议使用 MVVM 架构重构。
4. 所有输出用中文 + Markdown 格式,带代码块。
5. 如果发现安全问题,必须给出修复代码示例。

推荐 Prompt 模板(通用结构)

<文件内容>     // 粘贴完整的 repomix-output.xml / .md

现在你是一个10年经验的全栈高级工程师,已完整阅读并理解整个项目(包括目录结构、文件总结、代码、Git 历史等)。

任务:
[你的具体需求,例如:进行全面架构审查、找出性能瓶颈、重构登录模块、生成 API 文档等]

要求:
- 用中文回复
- 输出 Markdown 格式:标题分层、代码块、列表
- 如果涉及修改,给出 diff 或完整新代码
- 优先级:准确性 > 完整性 > 简洁性

具体场景示例

  1. 架构 & 安全审查

    请对整个仓库进行架构审查:
    1. 评估整体分层设计、可维护性、可扩展性
    2. 找出潜在安全漏洞(XSS、注入、认证绕过等)
    3. 列出高优先级问题 + 修复建议(带代码示例)
    
  2. Flutter 重构

    这是一个 Flutter 项目,请重构 lib/screens/login_screen.dart:
    - 使用 Riverpod 替换 setState
    - 优化 UI 为响应式(适配手机/平板)
    - 提取公共 widget
    - 给出重构前后对比
    
  3. 文档生成

    基于完整代码,生成一份专业 README.md,包括:
    - 项目概述
    - 技术栈
    - 目录结构说明
    - 运行/部署步骤
    - 核心模块介绍
    - 常见问题 FAQ
    

总结

Repomix 是目前最简单高效的“全仓库喂 AI”工具,5 秒上手,极大提升代码质量、review、重构效率。

强烈建议:每个人用 npx repomix@latest 试试自己的项目,亲身感受全上下文带来的 AI 能力飞跃。

小贴士

  • 大项目优先:--compress + --split-output
  • Claude / Gemini 用 --style xml + compress 效果最佳
  • 长期项目建议配置 repomix.config.json + repomix-instruction.md

有配置或 Prompt 心得欢迎继续分享~ 🚀

希望这个 Markdown 版本清晰易读、适合直接复制分享或放入笔记/博客!
如果需要调整标题层级、增加代码高亮语言标识或其他细节,随时告诉我~ 更详细的使用方法

【金山文档 | WPS云文档】 Repomix技术分享笔记(www.kdocs.cn/l/cr2JomIPp…