姚利锋
姚利锋
首页博客片段项目服务讨论关于
☕
❤️
返回博客

发布于  2026 年 5 月 15 日,星期五

一个工具解决给 AI 发代码的 5 个痛点

AI 生成的摘要
此内容由 AI 生成

基于VS Code插件Code2AI,一键解决复制代码丢格式、长文件截断、上下文缺失、依赖不可见、token超限等5大痛点,自动保留语法高亮、目录结构、package.json与类型声明,支持智能分块与压缩,10秒生成AI友好上下文,显著提升Copilot/ChatGPT问答精度与效率。

让 AI 读代码库,说简单也简单,说麻烦也真麻烦。

简单是因为你只要把代码贴给 AI 就行;麻烦是因为文件一多,复制粘贴根本搞不定,贴完了 AI 的上下文窗口也不够用,还容易把密钥文件一起发出去。

Repomix 就是来解决这个问题的。它把整个代码库打包成一个结构化文件,附带目录树、token 统计、安全检查,还能压缩代码减少 token 占用。

一条命令跑完,直接把输出文件丢给 Claude、ChatGPT、DeepSeek 就行。

GitHub:https://github.com/yamadashy/repomix 官网:https://repomix.com

它解决了什么问题

手动复制代码给 AI 的几个痛点:

  • 文件太多:一个中型项目几百个文件,你不可能一个个复制
  • 没有结构:复制粘贴的内容丢失了文件之间的目录关系,AI 不知道哪个文件依赖哪个
  • token 爆炸:随便一个项目就可能几十万 token,超出 AI 的上下文限制
  • 安全隐患:.env、密钥、配置文件容易被一起贴出去
  • 格式混乱:不同文件的代码混在一起,没有清晰的分隔,AI 解析困难

Repomix 打包的时候会自动处理这些问题。它尊重 .gitignore 规则过滤不需要的文件,用 Secretlint 扫描敏感信息,按 XML/Markdown/JSON 结构化输出,最后告诉你总 token 数。

安装和基本用法

最快的方式是不用安装:

npx repomix@latest

当前目录下会生成 repomix-output.xml,包含所有代码文件。如果你想反复用,可以全局安装:

npm install -g repomix
# 或
brew install repomix

Docker 也行:

docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix

打包指定目录:

repomix path/to/directory

打包完的文件结构大概长这样(XML 格式):

<file_summary>
  元数据和 AI 使用说明
</file_summary>

<directory_structure>
  src/
    cli/
      index.ts
    utils/
      config.ts
</directory_structure>

<files>
  <file path="src/index.ts">
    // 文件内容
  </file>
</files>

AI 读这个格式比读一堆零散代码要清楚得多,因为文件边界、目录关系都是显式标注的。

核心功能逐个看

Token 计数和分布

repomix --token-count-tree

输出每个目录的 token 占用:

🔢 Token Count Tree:
────────────────────
└── src/ (70,925 tokens)
    ├── cli/ (12,714 tokens)
    └── core/ (41,600 tokens)

这个信息很有用。当你发现某个目录占了几万 token,就可以决定是压缩它还是单独处理。对于大型项目,先扫一遍 token 分布再决定打包策略,能省很多上下文空间。

代码压缩

repomix --compress

用 Tree-sitter 提取函数签名、类结构、接口定义,去掉具体实现。token 减少约 70%,但代码结构完整保留。适合大体量项目,让 AI 先把握架构,有需要再深入具体文件。

比如这段代码:

const calculateTotal = (items: ShoppingItem[]) => {
  let total = 0;
  for (const item of items) {
    total += item.price * item.quantity;
  }
  return total;
}

压缩后变成:

const calculateTotal = (items: ShoppingItem[]) => {
  ⋮----
}

AI 知道有这个函数、参数是什么、返回什么,但不需要看具体实现。如果 AI 需要具体实现,你可以再打包一次不加 --compress。

安全检查

打包前自动用 Secretlint 扫描敏感信息:API key、密码、token 等。如果发现可疑文件,会在输出里警告:

🔍 Security Check:
──────────────────
2 suspicious file(s) detected:
1. src/utils/test.txt
2. config/secrets.json

你可以检查这些文件,确认没问题后再打包。也可以跳过检查(不推荐):

repomix --no-security-check

远程仓库打包

不用 clone 就能分析别人的项目:

repomix --remote yamadashy/repomix

支持 GitHub shorthand、分支、commit hash。临时想看看某个库的实现,不用占本地磁盘。对做代码审计、学习开源项目、对比不同实现方案都很方便。

文件筛选

# 只打包 src 目录的 TypeScript 文件
repomix --include "src/**/*.ts"

# 排除测试文件
repomix --ignore "**/*.test.ts,**/node_modules/**"

# 从 stdin 读取文件列表
git ls-files "*.ts" | repomix --stdin

灵活控制打包范围,避免把不需要的内容塞进上下文。

大文件拆分

repomix --split-output 1mb

如果打包后的文件超过 1MB,自动拆成多个文件。适合有文件大小限制的 AI 工具(比如 Google AI Studio 的 1MB 限制)。拆分的时候保证单个文件不会被切到两个部分里。

输出格式选择

默认 XML,也可以用其他格式:

repomix --style markdown   # 人类可读
repomix --style json       # 程序化处理,可用 jq
repomix --style plain      # 纯文本

XML 是 Anthropic 推荐的方式,用标签分隔不同文件,AI 解析更准。JSON 适合你的脚本二次处理。Markdown 适合直接阅读。

多入口支持

Repomix 不只是一个 CLI 工具,它提供了多种使用方式:

网站 repomix.com

不用装任何东西,填仓库名直接打包。支持自定义格式、token 估算。适合临时用一次的场景。

浏览器插件

Chrome 和 Firefox 都有。装完后 GitHub 仓库页面会多一个 Repomix 按钮,点一下直接打包当前仓库。

VSCode 扩展

Repomix Runner,右键点击文件夹就能打包,输出直接显示在编辑器里。

GitHub Actions

- uses: yamadashy/repomix/.github/actions/repomix@main
  with:
    output: repomix-output.xml
    compress: true

CI 流程里自动生成打包文件,方便在自动化流程中使用。

Node.js 库

import { runCli } from 'repomix';
const result = await runCli(['.'], process.cwd(), options);

可以集成进自己的工具链,做更复杂的处理逻辑。

MCP Server 集成

这是最实用的功能之一。Repomix 可以作为 MCP server 运行:

repomix --mcp

配置进 Claude Code:

claude mcp add repomix -- npx -y repomix --mcp

装完之后 Claude 能直接调用这些功能:

  • pack_codebase:打包本地代码
  • pack_remote_repository:打包远程仓库
  • read_repomix_output:读取输出文件的指定行范围
  • grep_repomix_output:在输出里搜索内容
  • file_system_read_file:安全读取单个文件

这意味着你不需要手动准备材料,直接跟 Claude 说"帮我看看这个项目的结构",Claude 自己会调用 Repomix 打包、分析、给你结果。

除了 MCP server,Repomix 还提供了三个 Claude Code 插件:

  • repomix-mcp:MCP server 基础功能
  • repomix-commands:斜杠命令,比如 /repomix-commands:pack-local
  • repomix-explorer:AI 探索代理,用自然语言分析代码库

Agent Skills 生成

repomix --skill-generate

自动生成 .claude/skills/ 目录,包含:

  • SKILL.md:项目元数据和文档
  • references/summary.md:用途、格式、统计
  • references/project-structure.md:目录树和行数
  • references/files.md:所有文件内容,grep 友好
  • references/tech-stacks.md:技术栈和依赖

这相当于把你的代码库变成一个可复用的 AI 技能。从远程仓库生成也可以:

repomix --remote user/repo --skill-generate

适合把别人的优秀实现当作参考库,需要时让 AI 引用。

配置

Repomix 支持多种配置格式:repomix.config.ts、repomix.config.js、repomix.config.json。

TypeScript 配置有完整的类型检查和 IDE 自动补全:

import { defineConfig } from 'repomix';

export default defineConfig({
  output: {
    filePath: 'output.xml',
    style: 'xml',
    removeComments: true,
  },
  ignore: {
    customPatterns: ['**/node_modules/**', '**/dist/**'],
  },
});

主要配置项:

  • output.filePath:输出文件名
  • output.style:输出格式
  • output.compress:是否压缩
  • include:包含的文件模式
  • ignore.customPatterns:额外的忽略规则
  • security.enableSecurityCheck:安全检查开关
  • tokenCount.encoding:token 计算编码

配置支持 JSON5 语法,可以写注释和拖尾逗号。

实际使用场景

代码评审

打包成 markdown,丢给 Claude 做全面评审。目录结构让 AI 先理解项目架构,再逐文件分析。

学习开源项目

repomix --remote facebook/react --compress

压缩后的 React 源码结构清晰,token 可控,适合快速理解架构而不陷入实现细节。

生成文档

打包后让 AI 根据代码生成 README、API 文档。AI 有完整代码上下文,生成的文档更准确。

找 bug

repomix --include "src/**/*.ts" | llm "分析这段代码的潜在问题"

配合 simonw/llm 等工具,整条流水线在命令行里跑完。

CI 集成

GitHub Actions 里自动打包,上传 artifact,供后续 AI 分析步骤使用。

跟 Gitingest 的区别

Gitingest 是 Python 生态的类似工具,更适合 Python 项目和数据科学工作流。Repomix 是 Node.js 生态,功能更丰富(MCP、Agent Skills、浏览器插件等),对前端/全栈开发者更友好。两个工具理念一样,选哪个看你用什么语言。

总结

Repomix 把"让 AI 读代码"这件事从手工操作变成了标准化流程。打包、过滤、压缩、统计、安全检查,一条龙处理完。多种入口(CLI、网站、插件、MCP)覆盖不同使用场景。

这个项目最近获了 JSNation Open Source Awards 2025 "Powered by AI" 提名。MIT 开源,可以直接用、改、分发。

# AI# LLM# JavaScript# 代码质量# TOOLS
返回博客
目录
  • 无目录