返回市场
吨尔麦佩桥接器

吨尔麦佩桥接器

作者:kryptomrx2 星标更新:2025-11-23

项目介绍

技术文档摘要

TONL-MCP Bridge

针对LLM上下文窗口优化的数据格式

npm 版本 测试 TypeScript 许可证

概述

TONL-MCP Bridge 是一个 TypeScript 库和 CLI 工具,用于在 JSON/YAML 和 TONL(Token 优化自然语言)格式之间转换结构化数据。当与包含 10 个以上相似对象的数据集一起使用时,TONL 可以比 JSON 减少 30-60% 的 token 使用量。

主要用例:

  • 带有表格数据的 RAG 系统
  • 批量数据传输到 LLM
  • 结构化上下文的提示工程
  • 生产系统中的 token 成本优化

不适用场景:

  • 单个对象或非常小的数据集(1-5 项)
  • 极度异构且模式不一致的数据
  • 需要标准 JSON 输出的系统

安装

# 全局安装
npm install -g tonl-mcp-bridge

# 局部安装
npm install tonl-mcp-bridge

快速开始

基础转换

import { jsonToTonl, tonlToJson } from 'tonl-mcp-bridge';

const users = [
  { id: 1, name: "Alice", age: 25 },
  { id: 2, name: "Bob", age: 30 }
];

const tonl = jsonToTonl(users, "users");
// users[2]{id:i8,name:str,age:i8}:
//   1, Alice, 25
//   2, Bob, 30

const json = tonlToJson(tonl);
// 往返转换保留数据

Token 统计

import { calculateRealSavings } from 'tonl-mcp-bridge';

const jsonStr = JSON.stringify(users);
const tonlStr = jsonToTonl(users);
const stats = calculateRealSavings(jsonStr, tonlStr, 'gpt-5');

console.log(`Token 减少: ${stats.savingsPercent}%`);
console.log(`节省的 Token 数: ${stats.savedTokens}`);

性能特性

数据集大小的 Token 节省

数据集大小JSON TokenTONL Token节省推荐
1 个对象1823-27.8%使用 JSON
2 个对象563733.9%边缘情况
10 个对象28016541.1%使用 TONL
100 个对象2,8001,45048.2%使用 TONL
1000 个对象28,00014,00050.0%使用 TONL

使用 GPT-5 分词器进行基准测试,具有一致的模式

模型解析准确性

TONL 的结构化格式和显式类型定义增强了 LLM 解析的可靠性:

已测试:

  • GPT-5:往返测试中 99.8% 的准确解析
  • Claude 4 Sonnet:99.9% 的准确解析
  • Gemini 2.5:99.7% 的准确解析

关键因素:

  • 头部显式模式定义减少歧义
  • 类型注解引导正确解释
  • 结构化格式最小化幻觉风险
  • 往返测试验证数据保存

在生产测试中,经过 10,000 多次转换,TONL 达到了与原生 JSON 相当的解析准确性,同时保持了显著的 token 节省。

当 TONL 有效时

最佳条件:

  • 10 个或更多具有一致模式的对象
  • 表格或基于列表的数据结构
  • 对象间重复的关键名称
  • token 成本是重要的运营支出

次优条件:

  • 单个对象(头部开销超过节省)
  • 不一致的模式(降低压缩效率)
  • 深度嵌套或复杂的对象层次结构
  • 小数据集(1-5 个对象)

CLI 使用

文件转换

# 转换单个文件
tonl convert data.json

# 转换并统计
tonl convert data.json -s

# 指定输出位置
tonl convert data.json output.tonl

# 自定义集合名称
tonl convert data.json --name users

批量操作

# 转换多个文件
tonl batch "data/*.json"

# 转换并统计
tonl batch "data/*.json" -s

# 自定义输出目录
tonl batch "*.json" -o ./output

监控模式

# 文件更改时自动转换
tonl watch "data/*.json"

# 带选项
tonl watch "*.json" --name collection -o ./output

分词器模型

# 指定分词器模型
tonl convert data.json -s --model claude-4
tonl convert data.json -s --model gemini-2.5

支持的模型:

  • gpt-5(默认)
  • gpt-4, gpt-3.5-turbo
  • claude-4-opus, claude-4-sonnet, claude-sonnet-4.5
  • gemini-2.5-pro, gemini-2.5-flash

API 参考

核心函数

jsonToTonl

function jsonToTonl(
  data: Record<string, unknown>[],
  name?: string,
  options?: ConvertOptions
): string

将对象数组转换为 TONL 格式。

参数:

  • data - 具有一致模式的对象数组
  • name - 集合名称(默认:"data")
  • options - 转换选项
    • flattenNested - 展平嵌套对象(默认:false)

返回值: TONL 格式的字符串

抛出异常: 如果数据不是数组或模式验证失败

tonlToJson

function tonlToJson(tonl: string): Record<string, unknown>[]

将 TONL 格式解析回 JSON 数组。

参数:

  • tonl - TONL 格式的字符串

返回值: 对象数组

抛出异常: 如果格式无效,则抛出 TonlParseError

calculateRealSavings

function calculateRealSavings(
  jsonStr: string,
  tonlStr: string,
  model: ModelName
): TokenSavings

使用真实分词器计算 token 节省。

参数:

  • jsonStr - JSON 字符串
  • tonlStr - TONL 字符串
  • model - 分词器模型名称

返回值:

interface TokenSavings {
  originalTokens: number;
  compressedTokens: number;
  savedTokens: number;
  savingsPercent: number;
}

YAML 支持

import { yamlToTonl, tonlToYaml } from 'tonl-mcp-bridge';

const yamlStr = `
- role: assistant
  context: technical
  tone: professional
`;

const tonl = yamlToTonl(yamlStr, 'prompts');
const yaml = tonlToYaml(tonl);

嵌套对象

const data = [{
  id: 1,
  user: { name: "Alice", email: "alice@example.com" },
  tags: ["developer", "typescript"]
}];

// 保留嵌套结构
const tonl = jsonToTonl(data);
// data[1]{id:i8,user:obj,tags:arr}:
//   1, {name:Alice,email:alice@example.com}, [developer,typescript]

// 展平嵌套对象
const tonlFlat = jsonToTonl(data, 'data', { flattenNested: true });
// data[1]{id:i8,user_name:str,user_email:str,tags:arr}:
//   1, Alice, alice@example.com, [developer,typescript]

MCP 服务器 (v0.5.0)

TONL-MCP Bridge 包含一个 Model Context Protocol 服务器,用于与 AI 助手集成。

启动服务器

# 启动 MCP 服务器
npm run mcp:start

# 或使用二进制文件
tonl-mcp-server

可用工具

MCP 服务器暴露三个工具:

  1. convert_to_tonl - 将 JSON 数据转换为 TONL 格式
  2. parse_tonl - 将 TONL 解析回 JSON
  3. calculate_savings - 计算 token 节省统计数据

Claude Desktop 集成

添加到 claude_desktop_config.json

{
  "mcpServers": {
    "tonl": {
      "command": "node",
      "args": ["/path/to/tonl-mcp-bridge/dist/mcp/index.js"]
    }
  }
}

使用 MCP Inspector 测试

npx @modelcontextprotocol/inspector node dist/mcp/index.js


数据库集成 SDK (v0.6.0 - 新增!)

TONL SDK 提供无缝数据库集成,并自动进行 TONL 转换。目前支持 PostgreSQL,更多数据库即将推出。

PostgreSQL 适配器

import { PostgresAdapter } from 'tonl-mcp-bridge';

const db = new PostgresAdapter({
  host: 'localhost',
  port: 5432,
  database: 'myapp',
  user: 'admin',
  password: 'secret'
});

await db.connect();

// 简单查询
const result = await db.query('SELECT * FROM users');

// 查询并自动进行 TONL 转换
const tonlResult = await db.queryToTonl('SELECT * FROM users', 'users');
console.log(tonlResult.tonl);

// 查询并统计 token
const stats = await db.queryWithStats(
  'SELECT * FROM users',
  'users',
  { model: 'gpt-5' }
);

console.log(`原始: ${stats.stats.originalTokens} tokens`);
console.log(`TONL: ${stats.stats.compressedTokens} tokens`);
console.log(`节省: ${stats.stats.savingsPercent}%`);

await db.disconnect();

实际结果

使用 PostgreSQL 中的 10 条用户记录进行测试:

格式Token 数节省
JSON431-
TONL21250.8%

成本影响(GPT-4o,每百万输入 token 3 美元):

  • 每天 1,000 次查询:每月节省 19.50 美元
  • 每天 10,000 次查询:每月节省 195 美元
  • 每天 100,000 次查询:每月节省 1,950 美元

节省按查询量线性增长

亲自尝试

我们提供了一个完整的演示设置,使用 Docker:

cd examples/sdk-demo
docker-compose up -d
npx tsx demo.ts

查看实时 token 节省,使用真实的 PostgreSQL 数据!

支持的数据库

v0.6.0:

  • PostgreSQL

即将推出:

  • MySQL (v0.7.0)
  • SQLite (v0.7.0)
  • 向量数据库:Milvus, Weaviate, Pinecone, Qdrant (v0.8.0)


类型系统

TONL 自动选择最优数值类型:

{ id: 1 }         // i8  (1 字节,-128 到 127)
{ id: 1000 }      // i16 (2 字节,-32,768 到 32,767)
{ id: 100000 }    // i32 (4 字节,-2B 到 2B)
{ price: 19.99 }  // f32 (32 位浮点数)
{ score: 3.14159265359 } // f64 (64 位浮点数)

支持的类型:

  • 整数:i8, i16, i32, i64
  • 浮点数:f32, f64
  • 字符串:str
  • 布尔值:bool
  • 特殊类型:date, datetime, null, obj, arr

架构

输入格式          核心引擎           输出
┌──────────┐          ┌──────────┐          ┌──────────┐
│   JSON   │─────────▶│   类型   │─────────▶│   TONL   │
│   YAML   │          │ 检测器   │          │  格式    │
└──────────┘          └──────────┘          └──────────┘
                           │
                      ┌──────────┐
                      │  模式    │
                      │ 验证器   │
                      └──────────┘
                           │
                      ┌──────────┐
                      │ 分词器   │
                      │ (真实)   │
                      └──────────┘

核心组件:

  • 类型检测和优化
  • 跨所有对象的模式验证
  • 真实分词器集成(js-tiktoken)
  • 双向转换并保留数据
  • 大文件流支持

开发

设置

git clone https://github.com/kryptomrx/tonl-mcp-bridge.git
cd tonl-mcp-bridge
npm install

测试

# 运行测试
npm test

# 监控模式
npm run test:watch

# 覆盖报告
npm run test:coverage

构建

npm run build

代码质量

# 代码检查
npm run lint

# 格式化
npm run format

发展路线图

✅ v0.6.0 (发布日期 2025-11-22)

  • SDK 基础架构与 BaseAdapter
  • PostgreSQL 适配器
  • queryToTonl() 和 queryWithStats() 方法
  • Docker 演示设置
  • 92 个单元测试
  • 安全 Git Hooks

🚧 v0.7.0 (2025 年第一季度)

  • MySQL 适配器
  • SQLite 适配器
  • 事务支持
  • 连接池优化

🚧 v0.8.0 (2025 年第二季度)

  • 向量数据库适配器(Milvus, Weaviate, Pinecone, Qdrant)
  • RAG 系统的元数据优化
  • 批量查询操作

💎 v0.9.0 (2025 年第二季度)

  • LangChain 集成
  • LlamaIndex 集成
  • 高级查询优化

性能基准

操作基准(100 个对象,嵌套结构):

操作时间吞吐量
JSON → TONL2.3ms43,478 次/秒
TONL → JSON1.8ms55,555 次/秒
流式传输(10MB)145ms68 MB/秒
批量(50 个文件)89ms561 个文件/秒

内存使用:

  • 小文件(<1MB):约 15MB
  • 大文件(10MB+):流式传输模式(峰值约 50MB)

已知限制

  1. 头部开销 - 单个对象由于模式头部导致净 token 增加
  2. 模式一致性 - 最佳性能需要一致的对象结构
  3. 解析需求 - 接收系统必须支持 TONL 格式
  4. 浏览器兼容性 - 监控模式需要 Node.js 文件系统访问
  5. 数值精度 - 浮点类型选择可能在极端情况下影响