首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一个工具压缩代码减少 70% token,还能自动扫密钥

一个工具压缩代码减少 70% token,还能自动扫密钥

作者头像
Immerse
发布2026-05-18 17:40:18
发布2026-05-18 17:40:18
1740
举报
文章被收录于专栏:沉浸式AI沉浸式AI

大家好,我是 Immerse

专注分享 AI 玩法独立开发AI 出海的 AGI 实践者,更多干货欢迎关注公众号 #沉浸式AI 或访问 yaolifeng.com


让 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 数。

安装和基本用法

最快的方式是不用安装:

代码语言:javascript
复制
npx repomix@latest

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

代码语言:javascript
复制
npm install -g repomix
# 或
brew install repomix

Docker 也行:

代码语言:javascript
复制
docker run -v .:/app -it --rm ghcr.io/yamadashy/repomix

打包指定目录:

代码语言:javascript
复制
repomix path/to/directory

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

代码语言:javascript
复制
<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 计数和分布

代码语言:javascript
复制
repomix --token-count-tree

输出每个目录的 token 占用:

代码语言:javascript
复制
🔢 Token Count Tree:
────────────────────
└── src/ (70,925 tokens)
    ├── cli/ (12,714 tokens)
    └── core/ (41,600 tokens)

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

代码压缩

代码语言:javascript
复制
repomix --compress

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

比如这段代码:

代码语言:javascript
复制
const calculateTotal = (items: ShoppingItem[]) => {
  let total = 0;
  for (const item of items) {
    total += item.price * item.quantity;
  }
  return total;
}

压缩后变成:

代码语言:javascript
复制
const calculateTotal = (items: ShoppingItem[]) => {
  ⋮----
}

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

安全检查

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

代码语言:javascript
复制
🔍 Security Check:
──────────────────
2 suspicious file(s) detected:
1. src/utils/test.txt
2. config/secrets.json

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

代码语言:javascript
复制
repomix --no-security-check

远程仓库打包

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

代码语言:javascript
复制
repomix --remote yamadashy/repomix

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

文件筛选

代码语言:javascript
复制
# 只打包 src 目录的 TypeScript 文件
repomix --include "src/**/*.ts"

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

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

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

大文件拆分

代码语言:javascript
复制
repomix --split-output 1mb

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

输出格式选择

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

代码语言:javascript
复制
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

代码语言:javascript
复制
- uses: yamadashy/repomix/.github/actions/repomix@main
  with:
    output: repomix-output.xml
    compress: true

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

Node.js 库

代码语言:javascript
复制
import { runCli } from 'repomix';
const result = await runCli(['.'], process.cwd(), options);

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

MCP Server 集成

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

代码语言:javascript
复制
repomix --mcp

配置进 Claude Code:

代码语言:javascript
复制
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 生成

代码语言:javascript
复制
repomix --skill-generate

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

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

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

代码语言:javascript
复制
repomix --remote user/repo --skill-generate

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

配置

Repomix 支持多种配置格式:repomix.config.tsrepomix.config.jsrepomix.config.json

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

代码语言:javascript
复制
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 先理解项目架构,再逐文件分析。

学习开源项目

代码语言:javascript
复制
repomix --remote facebook/react --compress

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

生成文档

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

找 bug

代码语言:javascript
复制
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 开源,可以直接用、改、分发。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非同质前端札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 它解决了什么问题
  • 安装和基本用法
  • 核心功能逐个看
    • Token 计数和分布
    • 代码压缩
    • 安全检查
    • 远程仓库打包
    • 文件筛选
    • 大文件拆分
    • 输出格式选择
  • 多入口支持
  • MCP Server 集成
  • Agent Skills 生成
  • 配置
  • 实际使用场景
  • 跟 Gitingest 的区别
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档