1. 为什么 repomix-rs 值得单独写一篇:从打包代码到喂给 AI 的完整链路
如果你最近在折腾 AI 编程助手,大概率遇到过这个尴尬:项目一打开,想让模型读几个核心文件,结果要么是手动复制粘贴到对话框里,要么是写一堆提示词让模型自己去猜目录结构。文件一多,Token 直接爆掉,模型还经常"看漏"关键实现。repomix-rs就是来解决这个问题的——它是一个用 Rust 重写的代码库打包工具,能把整个项目压缩成一份结构化、带目录树、带 Token 统计的上下文文件,专门喂给 AI 用。
它适合谁?三类人最明显:一是手里有中大型 Rust / Python / TypeScript 项目、想让 Claude 或 GPT 读懂全貌的开发者;二是用 Cursor、Claude Desktop、Cline 这类支持 MCP 的工具、希望"对话即打包"的 Agent 玩家;三是在 CI 里做代码审查、需要稳定可复现上下文快照的团队。相比原版 TypeScript 的 repomix,repomix-rs 在扫描速度、内存占用、原生 MCP 支持上都有明显差异,尤其是上万文件级别的仓库,差距会从"能跑"变成"跑不跑得动"。
但光有打包还不够。打包出来的上下文最终要送到模型那里,而模型接入这一环,很多人是散着配的:这个工具填一个 Key,那个工具填一个 Base URL,换模型又要改一遍。这篇就按"repomix-rs 打包 → TaoToken 统一 Key 接入 → 实际验证模型读到内容"这条链路走一遍,配置片段都能直接复制。你不需要先成为 Rust 专家,只要会敲命令、会改 JSON 就能跟上。
2. TaoToken 前置准备:统一 Key 与 API 通道怎么拿
在讲 repomix-rs 的配置之前,先把"模型侧"的入口理清楚。因为后面无论是用 Claude Code、Cline 还是自己写脚本调模型,都需要一个稳定的 Base URL 和 Key。我这边统一走TaoToken的 API 通道,好处是同一个 Key 可以对接多种模型,不用为每个工具单独申请。
第一步,打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册并登录。登录后进入控制台,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,在左侧找到 API Keys 菜单,点进去创建一个新的 Key。创建时建议起一个能认出用途的名字,比如repomix-ctx-test,方便后面排查是哪个工具在用。
创建完成后,Key 只会完整显示一次,复制下来存到安全的地方。这里有个坑我踩过:有人把 Key 直接写进项目里的.env然后提交到 Git,结果被 Secretlint 扫出来报警——repomix-rs 内置了 Secretlint,打包时会提示疑似密钥文件,这其实是好事,说明它在帮你兜底。所以 Key 请放在项目外的全局配置或系统环境变量里。
接下来确认 API 入口。TaoToken 的 API Base URL 是:
https://taotoken.net/api注意这个地址不带任何查询参数,是纯粹的接口前缀。不同工具对 Base URL 的写法要求不一样:有的要求写到/v1,有的只要域名前缀,具体在下面各工具的配置里我会写清楚。模型 ID 方面,你可以先在模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 里试一下当前可用的模型名称,确认能正常对话后,再把同样的模型 ID 填到配置文件里,避免"Key 没问题但模型名写错"这种低级错误。
如果你打算长期做编码类 Agent 任务,可以顺带看一下 Coding Plan 页面 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它更适合高频、长上下文的场景。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到参数不确定时以文档为准。
3. 可复制配置:repomix-rs 打包 + TaoToken 接入三件套
这一节是全文的核心,分两块:先让 repomix-rs 把代码打包好,再让 AI 工具通过 TaoToken 读到这份打包结果。
3.1 安装并运行 repomix-rs
先装工具。如果你之前装过原版 repomix,建议先卸掉避免命令冲突:
npm uninstall -g repomix npm install -g repomix-rs repomix --versionrepomix --version能输出版本号就说明装好了。然后在项目根目录执行打包:
cd /path/to/your-project repomix . --style markdown --output repomix-output.md如果你想要更省 Token 的版本,加上--compress,它会用 Tree-sitter 解析代码,只保留类型签名和函数声明:
repomix . --compress --style markdown --output repomix-output.md打包完成后,当前目录会生成repomix-output.md,里面包含目录树、文件内容、Token 统计。这个文件就是我们要喂给 AI 的上下文。
3.2 用配置文件固定打包行为
每次都敲一长串参数容易漏,建议在项目根目录放一个repomix.config.json。这个文件格式和原版兼容,内容如下:
{ "output": { "filePath": "repomix-output.md", "style": "markdown", "compress": true, "fileSummary": true, "directoryStructure": true }, "include": ["src/**/*.rs", "Cargo.toml", "README.md"], "ignore": { "useGitignore": true, "useDefaultPatterns": true, "customPatterns": ["**/*.lock", "target/**", "**/*.snap"] }, "security": { "enableSecurityCheck": true }, "tokenCount": { "encoding": "o200k_base" } }几个关键点:compress: true对应命令行--compress;ignore.customPatterns里把target/**排掉,否则 Rust 编译产物会把上下文撑爆;tokenCount.encoding用o200k_base,这是 tiktoken-rs 的实现,和主流模型的实际计数更接近,避免"预估 64K 实际超了"的情况。配好之后直接跑repomix就行,不用再带参数。
3.3 TaoToken 接入三件套:Base URL + Key + Model ID
现在把打包结果接到 AI 工具。以 Claude Code 为例,它读取的是~/.claude/settings.json(或项目级.claude/settings.json)。配置片段如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-5" } }这里三件套对应关系是:Base URL 填https://taotoken.net/api,Key 填你在控制台创建的sk-开头密钥,Model ID 填模型对话页面里确认可用的名称。注意ANTHROPIC_BASE_URL不要自己加/v1,按文档给的写法来。
如果你用的是 Codex 类工具,它读的是~/.codex/auth.json,写法不同:
{ "OPENAI_BASE_URL": "https://taotoken.net/api", "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_MODEL": "gpt-5" }Cline 这类 VS Code 插件则是在设置面板里填:API Provider 选 OpenAI Compatible,Base URL 填https://taotoken.net/api,API Key 填 TaoToken 的 Key,Model ID 填对应模型名。三件套缺一不可,尤其是 Model ID,写错了会直接报模型不存在。
3.4 MCP 场景:让 repomix-rs 直接暴露给 Agent
repomix-rs 原生支持 MCP,一条命令就能把打包能力暴露出去:
repomix --mcp然后在 MCP Client 的配置里加一段。以 Claude Desktop 为例,编辑claude_desktop_config.json:
{ "mcpServers": { "repomix-rs": { "command": "repomix", "args": ["--mcp"] } } }这样 Agent 就能通过pack_codebase、pack_remote_repository、read_repomix_output、grep_repomix_output这几个工具,在对话里直接完成"打包 → 读取 → 提问"的闭环。注意 MCP 只负责把代码打包成上下文,模型调用仍然走 TaoToken 的 Key,两者是配合关系,不是替代关系。
4. 验证请求:从打包到 AI 真正读到内容
配置写完不代表通了,得实际验证一次。我一般分三步走。
第一步,确认打包文件生成正常。执行:
repomix . --style markdown --output repomix-output.md ls -lh repomix-output.md head -n 40 repomix-output.md你应该能看到文件大小合理(几 MB 以内),开头有目录树和文件摘要。如果文件是 0 字节或者只有几行,多半是include写得太窄,把源码目录排掉了。
第二步,确认 Token 统计。打包输出里会有一段 Token 计数,比如:
Total Tokens: 48213 Total Files: 87这个数字要和你的模型上下文上限对比。如果超过上限,回到配置里开compress或缩小include范围。
第三步,让模型真正读一次。以 Claude Code 为例,进入项目目录后启动,然后输入:
请读取 repomix-output.md,告诉我这个项目的入口文件是哪个,以及它依赖了哪些核心模块。如果配置正确,模型会基于打包内容给出具体回答,而不是泛泛而谈。这一步能同时验证两件事:TaoToken 的 Key 和 Base URL 通了,模型也确实读到了 repomix-rs 的输出。如果模型回答"我无法访问文件",说明它没读到上下文,问题多半在 MCP 或文件路径上,而不是 Key。
再补一个纯 API 的验证方式,适合排查是模型侧还是工具侧的问题:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5", "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'返回里有choices字段且内容是OK,说明 Key 和 Base URL 没问题。这时候如果工具里还是读不到 repomix 输出,就聚焦查 MCP 配置和文件路径。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
配置过程中最容易撞的几个报错,我按实际遇到的频率列一下,对照着查。
401 Unauthorized。这个最常见,九成是 Key 问题。先确认 Key 有没有复制完整,sk-后面有没有漏字符;再确认 Key 有没有被禁用或额度耗尽。还有一种情况是 Base URL 写错,比如把https://taotoken.net/api写成了带/v1的地址,导致请求打到了不存在的路径。对照三件套逐个检查:Base URL、Key、Model ID。
local proxy failed / connection refused。这个报错通常出现在工具试图走本地代理时。检查你的环境变量里有没有残留的HTTP_PROXY、HTTPS_PROXY,如果有就临时清掉再试。另外确认网络能正常访问https://taotoken.net/api,可以用上面的 curl 命令直接测。
reading 'choices' of undefined。这是典型的响应结构不符合预期。原因一般是 Base URL 指向了一个返回非标准 JSON 的地址,或者模型 ID 写错导致接口返回了错误对象。解决办法是先跑 curl 看原始返回,确认返回里有choices数组,再回头改工具配置。
OAuth 相关报错。有些工具默认走 OAuth 登录流程,而不是 API Key。如果你看到类似OAuth token expired或invalid_grant,说明工具没走 API Key 模式。回到设置里把认证方式切成 API Key,填 TaoToken 的 Key,别用账号登录那套。
MCP 工具调用无响应。如果repomix --mcp启动了但 Agent 调不到工具,检查 MCP Client 配置里的command路径是不是全局安装后的真实路径。可以用which repomix确认。另外 MCP 配置改完要重启 Client 才生效,这点很容易忘。
打包文件过大导致超上下文。这不是报错,但会让模型截断内容。回到repomix.config.json,开compress,把target/**、node_modules/**、**/*.lock加进customPatterns,再重新打包看 Token 数。
6. 语义一致 CTA:按你的场景选入口
走到这里,链路已经跑通了:repomix-rs 负责把代码打包成 AI 能读的上下文,TaoToken 负责提供统一的 Key 和 API 通道,两者配合就能让模型真正"读懂"你的项目。
如果你现在卡在排障或接入环节,比如 401、Base URL 写法、auth.json 字段不确定,直接看接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有三件套的完整说明;Key 的创建和管理在 API Keys 页面 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。
如果你只是想先验证某个模型能不能正常读 repomix 输出,去模型对话页面 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 手动贴一段打包内容试一次,最快。
如果你打算长期用 Agent 做编码任务、频繁打包大仓库,Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 会更合适,省得每次单独配。
最后留一个我自己的习惯:把repomix.config.json和 MCP 配置一起提交到项目仓库(Key 除外),这样团队里任何人 clone 下来,装好 repomix-rs、填上自己的 TaoToken Key,就能复现同一套上下文打包流程。上下文一致了,模型给出的回答才稳定,这比每次手动挑文件靠谱得多。