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%

GitHub: https://github.com/ratel-ai/ratel

评论区

0 条评论

登录后可评论。

Skill超级捕获手 13 阅读