Ratel Skill:让 AI Agent 摆脱工具过载、砍掉 80% Token 消耗的上下文引擎
Ratel:让 AI Agent 摆脱工具过载、砍掉 80% Token 消耗的上下文引擎
你有没有注意到:当 AI Agent 可用的工具越来越多,它的”智商”反而越来越低?
这听起来反常识,但背后有硬数据支撑。研究显示,当 Agent 装备超过 50 个工具时,模型正确调用工具的概率可以从 77% 暴跌至 8%。与此同时,每次请求还要为所有这些工具的 schema 付 Token 费用——哪怕本轮根本用不上。
Ratel 正是为解决这两个问题而生:它是 AI Agent 的上下文工程层,通过渐进式披露(Progressive Disclosure)机制,只在每个回合注入当前任务真正需要的工具和技能,实测 Token 消耗降低约 80%,同时恢复因工具过载而丢失的准确率。
功能与设计原则
Ratel 的核心设计理念是上下文成本与模型准确率是一对此消彼长的冤家——你塞进上下文的工具越多,模型要处理的信息越多,正确率越低,账单越厚。
Ratel 从这个根本矛盾出发,做了三件事:
- 渐进式披露(Progressive Disclosure):将所有工具和技能索引为目录,每次只注入与当前回合最相关的 3–5 个,而非全量灌入
- 进程内 BM25 检索:用搜索引擎同款的 BM25 算法做工具匹配,无需向量数据库,无需 embedding 模型,完全本地运行
- 常驻事实注入(Facts):Agent 永远需要的基础信息(店铺地址、品牌调性等)注册为 Facts,在上下文新鲜时自动维持,凉了才重新注入
认可度
- GitHub Star:约 421 星(截至 2026-08-31),今日新增 1,439 星,Trending 榜单常驻
- MCP Server:183 星(独立仓库 ratel-ai/ratel)
- 社区讨论:在 HN、Hacker News、aitoolnet、agents-report 等多个技术社区引发关注,官方 Discord 活跃
- Benchmark:公开在 benchmark.ratel.sh 展示各模型对比数据,接受社区审视
链接
GitHub:https://github.com/ratel-ai/ratel
官方文档:https://docs.ratel.sh
基准测试:https://benchmark.ratel.sh
原作者
Giacomo 和 Roberto,两名前 SaaS Agent 开发工程师,在帮助客户构建 AI Agent 过程中亲历了”工具越多、效果越差、成本越高”的困境,随后决定把自研的解决方案开源。
介绍
传统的 Agent 开发模式是把所有工具 schema 一股脑塞进 system prompt——每注册一个工具,就多一份 Token 开销,多一分模型误判风险。当 Agent 发展到 50+ 工具规模,这个问题会严重到让整个系统不可用:要么上下文爆炸,要么模型选错工具。
Ratel 的解决思路借鉴了搜索引擎的智慧:用 BM25 反向索引把工具和技能编目,每个对话回合先用检索找到最相关的子集,只把命中的 schema 注入模型。BM25 是 Lucene/Elasticsearch 的核心算法,成熟、确定、快,不需要 GPU 或 embedding 服务。
在此基础上,Ratel 还支持 Skills(技能包)和 Facts(常驻事实)。Skills 是结构化的工作流指令,可在需要时加载,不需要时完全不在上下文里。Facts 则解决了”每个回合都需要但不希望每回合都付 Token”的信息(品牌口吻、API 端点等),注册后只在上下文变凉时才重新注入。
Ratel 还提供 Claude Code / Codex 的本地代理模式(Ratel Local):无需修改任何代理代码或 MCP 配置,直接在 MCP 服务器前加一层 Ratel,即可获得相同的 Token 节省和工具可见性。
特点
- ~80% Token 节省:实测 120+ 工具的客服 Agent 减少 85% Token 用量,Claude Code 场景减少 78%
- 无外部依赖:纯进程内 BM25 检索,不需要向量数据库、embedding API 或额外基础设施
- 多语言 SDK:TypeScript(@ratel-ai/sdk)和 Python(ratel-ai),核心引擎为 Rust,性能有保证
- 框架无关:可对接 Vercel AI SDK、Mastra、Pydantic AI,也支持直接嵌入 Claude Code/Codex MCP
- 可观测:完整 OpenTelemetry 追踪,工具选择过程透明可见
- 开源友好:Apache-2.0(核心引擎)+ MIT(其他),商业使用无限制
使用方法
TypeScript SDK 安装与基本使用:
pnpm add @ratel-ai/sdk
import { readFile } from "node:fs/promises";
import {
SkillCatalog, ToolCatalog,
getSkillContentTool, invokeToolTool, searchCapabilitiesTool,
} from "@ratel-ai/sdk";
const catalog = new ToolCatalog();
catalog.register({
id: "read_file",
name: "read_file",
description: "Read a file from local disk.",
inputSchema: { type: "object", properties: { path: { type: "string" } } },
execute: async ({ path }) => ({ contents: await readFile(path, "utf8") }),
});
const skills = new SkillCatalog();
skills.register({
id: "inspect-local-file",
name: "inspect-local-file",
description: "Inspect a local file before answering questions about it.",
tools: ["read_file"],
body: "Read the requested file, then ground your answer in its contents.",
});
// 将这三个 tool 接入你的 Agent 框架
const search = searchCapabilitiesTool(catalog, skills);
const invoke = invokeToolTool(catalog);
const loadSkill = getSkillContentTool(skills);
Python SDK:
pip install ratel-ai
Claude Code / Codex(无需改代码):
# 安装 MCP 服务器
cargo install ratel
# 在 claude_desktop_config.json 中添加
{
"mcpServers": {
"ratel": { "command": "ratel" }
}
}
使用场景与人群
适用场景:
- 拥有 20+ 工具的复杂 Agent 系统(客服、代码助手、数据 pipeline 等)
- 需要控制 Token 成本的生产环境部署
- Claude Code / Codex 用户搭配多个内部 MCP 服务器,Token 账单高涨
- 需要可观测工具选择过程的团队
目标用户:
- AI Agent 开发者与架构师
- 关注 LLM 推理成本的工程团队
- 在 Claude Code 生态中深度使用的个人开发者
输入与输出案例
场景一:120 工具客服 Agent
- 输入:用户在一次对话中询问”如何重置我的密码”,Agent 需要从 120+ 工具中选出最相关者
- 没用 Ratel:每次请求注入全部 120 个工具 schema → Token 费用高,模型有时选错工具
- 用了 Ratel:BM25 检索命中”reset_password”、”account_recovery”两个工具,只注入这两个 schema → Token 节省 85%,准确率恢复
场景二:Claude Code + 多个 MCP 服务器
- 输入:开发者执行
/read命令查看项目文件 - 没用 Ratel:所有 MCP 工具 schema 注入每个 prompt → Token 消耗持续高位,错误工具调用频繁
- 用了 Ratel:Ratel Local 拦截,检索到”read_file”工具后才注入 → Token 节省 78%,错误调用减少 30%
评论区
登录后可评论。