tokencompress

tokencompress

A local, zero-cloud MCP server for token and text compression. It provides tools to compress, auto-compress, measure, and decompress text using offline rules, lossless gzip packing, or a local Ollama semantic model.

Category
访问服务器

README

tokencompress

本地、零云依赖的 token / 文本压缩工具包。把冗长 prompt、日志、长文压短,省 token、省钱、不联网。

  • 纯 Python,无强制依赖(可选 tiktoken 做精确 GPT 计数)
  • 四种形态随便挑:MCP 服务 / HTTP API / CLI / 当库导入
  • 离线规则压缩 + 可选本地 Ollama 语义压缩 + gzip 无损打包
  • 智能自动压缩:短输入原样放行,代码块/URL/JSON 自动豁免,只压正文

License: MIT

English

tokencompress is a local, zero-cloud token & text compression toolkit for LLM prompts, context windows, and log/transport volume.

  • 🔒 100% local — no API keys, no network calls. Rules & lossless run fully offline; semantic mode only talks to a local Ollama.
  • 🧩 Four interfaces — MCP server, HTTP API, CLI, and importable Python library.
  • 🌏 Bilingual — first-class Chinese + English filler/stop-word removal and phrase abbreviation.
  • 🤖 Smart auto-compress — short inputs pass through untouched; code blocks, URLs, and JSON are auto-exempt; only prose gets compressed.
  • 📦 Lossless mode — gzip + base64 packing for logs/transport, fully reversible.

Keywords: token compression, prompt compression, LLM context, local-first, privacy, MCP, CLI, Chinese NLP, text compression, Ollama.


安装

cd tokcompress
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt

没有自带 venv。按上面“安装”步骤建 .venv 即可;或 pip install . 后直接用系统 python3。


最简单的用法

1) 当库导入(推荐给写代码的人)

from tokencompress import compress, auto_compress, measure

# 手动压
r = compress("你的长文本……", method="rules")
print(r["compressed"])            # 压缩后的文本
print(r["metrics"]["token_ratio"])  # 0.71 表示省了约 29% token

# 智能自动压:短的不动,长的才压
out = auto_compress("你的长文本……")["compressed"]

2) 命令行(CLI)

# 压一段文字
python -m tokencompress compress "你的长文本……"

# 从管道读(最常用)
cat long_prompt.txt | python -m tokencompress autocompress -

# 只算 token 数
python -m tokencompress measure "你的长文本……"

3) tca 包装脚本(一行管道,最简)

# 压缩剪贴板
pbpaste | ./bin/tca

# 压缩文件
cat long_prompt.txt | ./bin/tca

# 自定义触发阈值(token 数,低于此值原样放行)
echo "很长的文本……" | ./bin/tca --threshold 300

可选:把下面这行加进 ~/.zshrc,之后任意位置都能用 tca:

alias tca="$HOME/path/to/tokencompress/bin/tca"   # 替换成你的实际路径

4) HTTP 服务(给别的程序调用)

python -m tokencompress serve --port 8787
curl -s -X POST localhost:8787/compress \
  -H 'Content-Type: application/json' \
  -d '{"text":"你的长文本……","method":"rules"}'

端点:/health /strategies /backends /measure /compress /decompress /autocompress

5) 接入 WorkBuddy(MCP)

把 examples/mcp_config.json 的内容加进 ~/.workbuddy/mcp.json 的 mcpServers, 重启 WorkBuddy 后,对话里就能直接让模型调用 compress_text / auto_compress_text 等工具。


压缩方法

method 说明 是否可逆 依赖
rules 离线规则流水线:去空白/去重/去填充词/短语缩写 否(有损但语义保留) 无
semantic 本地 Ollama 模型做语义压缩 否 本机 Ollama
both 先 rules 再语义 否 本机 Ollama(无则回退 rules)
lossless gzip + base64 打包,用于日志/传输 是 无

rules 流水线顺序:whitespace → dedup → filler → abbreviate → truncate 可用 compress(text, strategies_list=[...]) 指定只跑其中几步。


真实压缩率(本机实测)

案例 1:中英混合 prompt(method=rules)

输入:“我们需要因为时间成本的原因去写一个用于短视频生成的提示词,for example 我们可以这样描述:given a topic,in order to 让模型生成一段画面。actually 要注意避免图像畸变这个问题,basically 这个细节很重要,also 要让画面保持稳定。”

指标 压缩前 压缩后 比率
tokens(离线估算) 128 92 0.719
bytes 301 261 0.867

命中的规则:filler(去掉 actually/basically/also)、abbreviate(for example→e.g.、in order to→to)

输出:“我们需要因为时间成本的原因去写一个用于短视频生成的提示词,e.g. 我们可以这样描述:given a topic,to 让模型生成一段画面。 要注意避免图像畸变这个问题, 这个细节很重要, 要让画面保持稳定”

案例 2:重复日志(method=lossless)

输入:50 行相同的 INFO ... worker-7 processed batch id=8821 items=64 ok

指标 压缩前 压缩后 比率
bytes 3050 144 0.047

可逆:解压后与原文逐字节一致 ✓(适合日志归档/网络传输)

案例 3:智能自动压缩(auto_compress)

  • 短输入(≤ 500 token,可配 --threshold):原样放行,绝不误伤指令
  • 长输入(上面案例 1 重复 6 遍):自动压缩,token_ratio ≈ 0.717
  • 代码块( ```)、URL、文件路径、JSON 行:永远不压

常见问题

token 数是怎么算的? 离线估算:CJK ≈ 1 token/字符,拉丁文 ≈ 1 token/4 字符。 装了 tiktoken 后 measure(text, model="gpt-4o") 可拿到精确 GPT 计数。

会把我数据发到云端吗? 不会。rules / lossless 完全本地。semantic 只连本机 http://localhost:11434(Ollama),不联网、不经过任何第三方。

装了 Ollama 怎么启用语义压缩? 拉一个小模型(如 qwen2.5:3b),list_backends() 会显示 ollama: available。之后 compress(text, method="semantic") 即可。


文件结构

tokcompress/
├── tokencompress/        # 包本体
│   ├── __init__.py       # 导出 compress / measure / decompress / auto_compress ...
│   ├── core.py           # 统一入口
│   ├── strategies.py     # 规则流水线 + 无损打包 + 语义压缩
│   ├── tokenizer.py      # token 估算 / 后端探测
│   ├── cli.py            # 命令行
│   ├── http_server.py    # HTTP API
│   └── mcp_server.py     # MCP 服务
├── bin/tca               # 一键自动压缩包装脚本
├── examples/             # mcp_config.json / usage.md
└── requirements.txt

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选