hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
📦 Repomix 是一个强大的工具,它可以将您的整个存储库打包成一个 AI 友好的文件。
当您需要将代码库提供给大型语言模型 (LLM) 或其他 AI 工具(如 Claude、ChatGPT、DeepSeek、Perplexity、Gemini、Gemma、Llama、Grok 等)时,它是完美的选择。
🎉 新功能:Repomix 网站和 Discord 社区!
- 在您的浏览器中访问repomix.com尝试 Repomix
- 加入我们的Discord 服务器以获得支持和讨论
我们期待在那里见到您!
🌟 功能
- 人工智能优化:以人工智能易于理解和处理的方式格式化您的代码库。
- 令牌计数:提供每个文件和整个存储库的令牌计数,对于 LLM 上下文限制很有用。
- 使用简单:您只需一个命令即可打包整个存储库。
- 可定制:轻松配置要包含或排除的内容。
- Git-Aware :自动尊重您的
.gitignore
文件和.git/info/exclude
。 - 以安全为中心:结合Secretlint进行强大的安全检查,以检测并防止敏感信息的包含。
- 代码压缩:
--compress
选项使用Tree-sitter提取关键代码元素,减少标记数,同时保留结构。
🚀 快速入门
使用 CLI 工具>_
您可以在项目目录中立即尝试 Repomix,无需安装:
或者全局安装以便重复使用:
就是这样!Repomix 将在您的当前目录中生成一个repomix-output.xml
文件,其中包含 AI 友好格式的整个存储库。
然后,您可以将此文件发送给 AI 助手,并提示如下:
当你提出具体的修改建议时,AI 或许能够生成相应的代码。借助 Claude's Artifacts 等功能,你可以输出多个文件,从而生成多个相互依赖的代码片段。
祝你编码愉快!🚀
使用网站🌐
想快速尝试吗?请访问官方网站repomix.com 。只需输入你的仓库名称,填写任何可选详细信息,然后单击**“打包”**按钮即可查看生成的输出。
可用选项
该网站提供了几个便捷的功能:
- 可定制的输出格式(XML、Markdown 或纯文本)
- 即时令牌计数估计
- 更多!
使用 VSCode 扩展⚡️
社区维护的 VSCode 扩展程序Repomix Runner (由massdo创建)让您只需点击几下即可在编辑器中直接运行 Repomix。您可以在任何文件夹上运行它,无缝管理输出,并通过 VSCode 直观的界面控制一切。
您希望输出为文件还是仅显示内容?需要自动清理?这款扩展可以满足您的需求。此外,它还能与您现有的 repomix.config.json 无缝兼容。
立即在VSCode Marketplace上试用!源代码可在GitHub上获取。
替代工具🛠️
如果您使用的是 Python,您可能需要查看Gitingest
,它更适合 Python 生态系统和数据科学工作流程: https://github.com/cyclotruc/gitingest
📊 使用方法
打包整个存储库:
打包特定目录:
使用glob 模式打包特定文件或目录:
要排除特定文件或目录:
打包远程存储库:
压缩输出:
初始化新的配置文件( repomix.config.json
):
生成打包文件后,您可以将其与生成式 AI 工具(如 ChatGPT、DeepSeek、Perplexity、Gemini、Gemma、Llama、Grok 等)一起使用。
Docker 使用
您还可以使用 Docker 运行 Repomix。
如果您想在隔离环境中运行 Repomix 或更喜欢使用容器,这将非常有用。
基本用法(当前目录):
打包特定目录:
处理远程存储库并输出到output
目录:
提示示例
使用 Repomix 生成打包文件后,您可以将其与 ChatGPT、DeepSeek、Perplexity、Gemini、Gemma、Llama、Grok 等 AI 工具一起使用。以下是一些入门示例:
代码审查和重构
对于全面的代码审查和重构建议:
文档生成
生成项目文档:
测试用例生成
用于生成测试用例:
代码质量评估
评估代码质量和遵守最佳实践:
图书馆概况
对图书馆有更深层次的了解
您可以根据您的特定需求和所使用的 AI 工具的功能随意修改这些提示。
社区讨论
查看我们的社区讨论,用户在其中分享:
- 他们与 Repomix 一起使用了哪些 AI 工具
- 他们发现的有效提示
- Repomix 如何帮助他们
- 充分利用 AI 代码分析的技巧和窍门
欢迎参与讨论并分享你的经验!你的见解可以帮助其他人更好地使用 Repomix。
输出文件格式
Repomix 生成一个单独的文件,其中代码库的不同部分之间有清晰的分隔符。
为了增强 AI 理解能力,输出文件以面向 AI 的解释开始,使 AI 模型更容易理解打包存储库的上下文和结构。
XML 格式(默认)
XML 格式以分层方式构建内容:
对于那些对 XML 标签在 AI 环境中的潜力感兴趣的人:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags
当你的提示包含上下文、说明和示例等多个元素时,XML 标签可以发挥重要作用。它们可以帮助 Claude 更准确地解析你的提示,从而获得更高质量的输出。
这意味着 Repomix 的 XML 输出不仅是一种不同的格式,而且可能是一种将代码库输入 AI 系统进行分析、代码审查或其他任务的更有效的方式。
Markdown 格式
要生成 Markdown 格式的输出,请使用--style markdown
选项:
Markdown 格式以分层方式构建内容:
这种格式提供了一种干净、可读的结构,既对人友好,又易于被人工智能系统解析。
纯文本格式
要以纯文本格式生成输出,请使用--style plain
选项:
命令行选项
基本选项
-v, --version
:显示工具版本
输出选项
-o, --output <file>
:指定输出文件名--style <style>
:指定输出样式(xml
,markdown
,plain
)--parsable-style
:根据所选样式模式启用可解析输出。请注意,这可能会增加标记数量。--compress
:执行智能代码提取,重点关注基本功能和类签名以减少标记数--output-show-line-numbers
:在输出中显示行号--copy
:另外将生成的输出复制到系统剪贴板--no-file-summary
:禁用文件摘要部分输出--no-directory-structure
:禁用目录结构部分输出--remove-comments
:从支持的文件类型中删除注释--remove-empty-lines
:从输出中删除空行--header-text <text>
:包含在文件头中的自定义文本--instruction-file-path <path>
:包含详细自定义说明的文件路径--include-empty-directories
:在输出中包含空目录--no-git-sort-by-changes
:禁用按 git 更改计数对文件进行排序(默认启用)
筛选选项
--include <patterns>
:包含模式列表(以逗号分隔)-i, --ignore <patterns>
:附加忽略模式(以逗号分隔)--no-gitignore
:禁用 .gitignore 文件使用--no-default-patterns
:禁用默认模式
远程存储库选项
--remote <url>
:处理远程 Git 存储库--remote-branch <name>
:指定远程分支名称、标签或提交哈希(默认为存储库默认分支)
配置选项
-c, --config <path>
:自定义配置文件的路径--init
:创建配置文件--global
:使用全局配置
安全选项
--no-security-check
:禁用安全检查
令牌计数选项
--token-count-encoding <encoding>
:指定 OpenAI 的tiktoken分词器使用的分词计数编码(例如,GPT-4o 为o200k_base
,GPT-4/3.5 为cl100k_base
)。有关编码详情,请参阅tiktoken model.py 。
微胶囊钙
--mcp
:作为MCP(模型上下文协议)服务器运行
其他选项
--top-files-len <number>
:摘要中显示的顶级文件数--verbose
:启用详细日志记录--quiet
:禁用所有输出到标准输出
例子:
更新 Repomix
要更新全局安装的 Repomix:
使用npx repomix
通常更方便,因为它总是使用最新版本。
远程存储库处理
Repomix 支持处理远程 Git 仓库,无需手动克隆。此功能允许您使用单个命令快速分析任何公共 Git 仓库。
要处理远程存储库,请使用--remote
选项,后跟存储库 URL:
您还可以使用 GitHub 的简写格式:
您可以指定分支名称、标签或提交哈希:
或者使用特定的提交哈希:
代码压缩
--compress
选项利用Tree-sitter执行智能代码提取,专注于关键函数和类签名,同时删除实现细节。这有助于减少 token 数量,同时保留重要的结构信息。
例如,以下代码:
将被压缩为:
[!NOTE] 这是一项实验性功能,我们将根据用户反馈和实际使用情况积极改进
MCP 服务器集成
Repomix 支持模型上下文协议 (MCP) ,允许 AI 助手直接与您的代码库交互。当作为 MCP 服务器运行时,Repomix 提供的工具可使 AI 助手打包本地或远程存储库进行分析,而无需手动准备文件。
配置 MCP 服务器
要将 Repomix 用作带有 Claude 等 AI 助手的 MCP 服务器,您需要配置 MCP 设置:
对于 VS Code:
您可以使用以下方法之一在 VS Code 中安装 Repomix MCP 服务器:
对于 Cline(VS Code 扩展):
编辑cline_mcp_settings.json
文件:
对于光标:
在 Cursor 中,从Cursor Settings
> MCP
> + Add new global MCP server
,其配置与 Cline 类似。
对于 Claude 桌面:
编辑claude_desktop_config.json
文件,其配置与 Cline 的配置类似。
配置完成后,您的 AI 助手可以直接使用 Repomix 的功能来分析代码库,而无需手动准备文件,从而使代码分析工作流程更加高效。
可用的 MCP 工具
当作为 MCP 服务器运行时,Repomix 提供以下工具:
- pack_codebase :将本地代码目录打包成合并文件,用于AI分析
- 参数:
directory
:要打包的目录的绝对路径compress
:(可选,默认值:true)是否进行智能代码提取includePatterns
:(可选)包含模式的逗号分隔列表ignorePatterns
:(可选)以逗号分隔的忽略模式列表
- pack_remote_repository :获取、克隆和打包 GitHub 存储库
- 参数:
remote
:GitHub 存储库 URL 或用户/repo 格式(例如,yamadashy/repomix)compress
:(可选,默认值:true)是否进行智能代码提取includePatterns
:(可选)包含模式的逗号分隔列表ignorePatterns
:(可选)以逗号分隔的忽略模式列表
- read_repomix_output :在无法直接访问文件的环境中读取 Repomix 输出文件的内容
- 参数:
outputId
:要读取的 Repomix 输出文件的 ID
- 特征:
- 专为基于 Web 的环境或沙盒应用程序设计
- 使用 ID 检索先前生成的输出的内容
- 提供对打包代码库的安全访问,无需访问文件系统
- file_system_read_file :使用绝对路径读取文件并进行安全验证
- 参数:
path
:要读取的文件的绝对路径
- 安全功能:
- 使用Secretlint实现安全验证
- 防止访问包含敏感信息的文件
- 验证绝对路径以防止目录遍历攻击
- file_system_read_directory :使用绝对路径列出目录的内容
- 参数:
path
:要列出的目录的绝对路径
- 特征:
- 用清晰的指示符显示文件和目录(
[FILE]
或[DIR]
) - 提供安全的目录遍历和适当的错误处理
- 验证路径并确保它们是绝对的
- 用清晰的指示符显示文件和目录(
⚙️ 配置
在项目根目录中创建一个repomix.config.json
文件以进行自定义配置。
以下是配置选项的解释:
选项 | 描述 | 默认 |
---|---|---|
output.filePath | 输出文件的名称 | "repomix-output.xml" |
output.style | 输出的样式( xml 、 markdown 、 plain ) | "xml" |
output.parsableStyle | 是否根据所选样式架构对输出进行转义。请注意,这可能会增加标记数量。 | false |
output.compress | 是否执行智能代码提取以减少令牌数量 | false |
output.headerText | 包含在文件头中的自定义文本 | null |
output.instructionFilePath | 包含详细自定义说明的文件路径 | null |
output.fileSummary | 是否在输出的开头包含摘要部分 | true |
output.directoryStructure | 是否在输出中包含目录结构 | true |
output.removeComments | 是否从支持的文件类型中删除评论 | false |
output.removeEmptyLines | 是否从输出中删除空行 | false |
output.showLineNumbers | 是否为输出中的每一行添加行号 | false |
output.copyToClipboard | 除了保存文件之外,是否还将输出复制到系统剪贴板 | false |
output.topFilesLength | 摘要中显示的顶级文件数。如果设置为 0,则不显示摘要 | 5 |
output.includeEmptyDirectories | 是否在存储库结构中包含空目录 | false |
output.git.sortByChanges | 是否按 git 更改计数对文件进行排序(更改较多的文件显示在底部) | true |
output.git.sortByChangesMaxCommits | 需要分析 git 更改的最大提交数 | 100 |
include | 要包含的文件模式(使用glob 模式) | [] |
ignore.useGitignore | 是否使用项目.gitignore 文件中的模式 | true |
ignore.useDefaultPatterns | 是否使用默认忽略模式 | true |
ignore.customPatterns | 要忽略的其他模式(使用glob 模式) | [] |
security.enableSecurityCheck | 是否对文件进行安全检查 | true |
tokenCount.encoding | OpenAI 的tiktoken分词器使用的分词计数编码(例如,GPT-4o 的o200k_base ,GPT-4/3.5 的cl100k_base )。有关编码详细信息,请参阅tiktoken model.py 。 | "o200k_base" |
该配置文件支持JSON5语法,允许:
- 注释(单行和多行)
- 对象和数组中的尾随逗号
- 不带引号的属性名称
- 更宽松的字符串语法
示例配置:
全局配置
要创建全局配置文件:
全局配置文件将在以下位置创建:
- Windows:
%LOCALAPPDATA%\Repomix\repomix.config.json
- macOS/Linux:
$XDG_CONFIG_HOME/repomix/repomix.config.json
或~/.config/repomix/repomix.config.json
注意:本地配置(如果存在)优先于全局配置。
包含和忽略
包含模式
Repomix 现在支持使用glob 模式指定要包含的文件。这允许更灵活、更强大的文件选择:
- 使用
**/*.js
包含任意目录中的所有 JavaScript 文件 - 使用
src/**/*
包含src
目录及其子目录中的所有文件 - 组合多个模式,如
["src/**/*.js", "**/*.md"]
以在src
和所有 Markdown 文件中包含 JavaScript 文件
忽略模式
Repomix 提供了多种方法来设置忽略模式,以便在打包过程中排除特定的文件或目录:
- .gitignore :默认情况下,使用项目
.gitignore
文件和.git/info/exclude
中列出的模式。您可以使用ignore.useGitignore
设置或--no-gitignore
cli 选项来控制此行为。 - 默认模式:Repomix 包含一个默认的常见排除文件和目录列表(例如,node_modules、.git、二进制文件)。此功能可以通过
ignore.useDefaultPatterns
设置或--no-default-patterns
命令行选项控制。更多详情请参阅defaultIgnore.ts 文件。 - .repomixignore :您可以在项目根目录中创建一个
.repomixignore
文件,以定义特定于 Repomix 的忽略模式。此文件遵循与.gitignore
相同的格式。 - 自定义模式:可以使用配置文件中的
ignore.customPatterns
选项指定其他忽略模式。您可以使用-i, --ignore
命令行选项覆盖此设置。
优先顺序(从高到低):
- 自定义模式
ignore.customPatterns
.repomixignore
.gitignore
和.git/info/exclude
(如果ignore.useGitignore
为 true 且未使用--no-gitignore
)- 默认模式(如果
ignore.useDefaultPatterns
为 true 并且未使用--no-default-patterns
)
此方法允许您根据项目需求灵活地配置文件排除。它通过确保排除安全敏感文件和大型二进制文件,从而优化生成的包文件的大小,同时防止机密信息泄露。
注意:默认情况下,二进制文件不包含在打包输出中,但它们的路径列在输出文件的“存储库结构”部分中。这提供了存储库结构的完整概述,同时保持了打包文件的高效性和基于文本的特性。
定制指令
output.instructionFilePath
选项允许您指定一个单独的文件,其中包含有关项目的详细说明或上下文。这使得 AI 系统能够理解项目的具体背景和要求,从而可能提供更相关、更有针对性的分析或建议。
以下是如何使用此功能的示例:
- 在项目根目录中创建一个名为
repomix-instruction.md
的文件:
- 在您的
repomix.config.json
中,添加instructionFilePath
选项:
当 Repomix 生成输出时,它将在专用部分中包含repomix-instruction.md
的内容。
注意:指令内容附加在输出文件的末尾。这种放置方式对于人工智能系统尤其有效。对于那些有兴趣了解这种做法为何有益的人,Anthropic 在其文档中提供了一些见解:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips
将长格式数据放在顶部:将长文档和输入(约 2 万多个词法单元)放在提示顶部附近,即查询、说明和示例的上方。这可以显著提升 Claude 在所有模型上的性能。查询放在末尾可以将测试中的响应质量提高高达 30%,尤其是在处理复杂的多文档输入时。
删除评论
当output.removeComments
设置为true
时,Repomix 将尝试从支持的文件类型中删除注释。此功能有助于减小输出文件的大小,并专注于必要的代码内容。
支持的语言包括:
HTML、CSS、JavaScript、TypeScript、Vue、Svelte、Python、PHP、Ruby、C、C#、Java、Go、Rust、Swift、Kotlin、Dart、Shell 和 YAML。
注意:注释删除过程较为保守,以避免意外删除代码。在复杂情况下,部分注释可能会被保留。
🔍 安全检查
Repomix 包含一项安全检查功能,该功能使用Secretlint检测文件中潜在的敏感信息。此功能可帮助您在共享打包的存储库之前识别潜在的安全风险。
打包过程完成后,安全检查结果将显示在 CLI 输出中。如果检测到任何可疑文件,您将看到这些文件的列表以及一条警告消息。
示例输出:
默认情况下,Repomix 的安全检查功能处于启用状态。您可以通过在配置文件中将security.enableSecurityCheck
设置为false
来禁用它:
或者使用--no-security-check
命令行选项:
禁用安全检查可能会泄露敏感信息。请谨慎使用此选项,且仅在必要时使用,例如处理包含示例凭据的测试文件或文档时。
🤝 贡献
我们欢迎社区的贡献!请参考我们的贡献指南,开始您的贡献之旅。
贡献者
🔒 隐私政策
Repomix CLI 工具
- 数据收集:Repomix CLI 工具不会收集、传输或存储任何用户数据、遥测或存储库信息。
- 网络使用:Repomix CLI 安装后可完全离线运行。以下情况才需要网络连接:
- 通过 npm/yarn 安装。
- 使用
--remote
标志来处理远程存储库。 - 检查更新(手动触发)。
- 安全注意事项:由于所有处理都是本地的,因此 Repomix CLI 可以安全地与私有和内部存储库一起使用。
Repomix 网站( repomix.com )
- 数据收集:Repomix 网站使用Google Analytics收集使用数据,例如页面浏览量和用户互动。这有助于我们了解网站的使用情况并改善用户体验。
责任免责声明
Repomix(CLI 工具和网站)按“原样”提供,不提供任何担保或保证。
我们不对生成的输出如何使用负责,包括但不限于其准确性、合法性或因其使用而产生的任何潜在后果。
📜 许可证
该项目已获得MIT 许可。
This server cannot be installed
Repomix MCP Server 通过将本地或远程存储库打包成优化的单个文件,使 AI 模型能够有效地分析代码库,并通过 Tree-sitter 进行智能压缩,从而显著减少令牌使用,同时保留代码结构和基本签名。
- 🌟 Features
- 🚀 Quick Start
- 📊 Usage
- ⚙️ Configuration
- 🔍 Security Check
- 🤝 Contribution
- 🔒 Privacy Policy
- 📜 License
Related Resources
Appeared in Searches
- Tool or method for automating code refactoring and finding similar code in a codebase
- Information about Repomix Architect
- A server for indexing public GitHub repositories and answering questions using the data
- A tool for finding relevant files in a Git project based on questions
- Using Sourcegraph APIs to search a codebase