mcpField
T
token-compressor

token-compressor

本地服务
github.com/base76-research-labAI 与智能体1233 周前更新

关于 token-compressor

token-compressor 是面向 LLM 工作流的提示词压缩流水线,可在处理前缩短输入。它结合本地模型改写与嵌入相似度校验,若校验低于阈值则返回原文。

主要功能

  1. 01使用本地模型压缩提示词
  2. 02通过嵌入相似度校验含义
  3. 03校验失败时保留原文
  4. 04跳过低于令牌阈值的提示词
  5. 05通过 CLI 和 MCP 提供压缩

适用场景

  1. 01发送给 LLM 前缩短提示词
  2. 02压缩时保留条件与否定内容
  3. 03查看令牌节省量和相似度覆盖率

MCP 相关

其 MCP 服务提供 `compress_prompt` 工具,接收文本并返回压缩结果及统计信息。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"base76-research-lab-token-compressor": {
"command": "uvx",
"args": [
"token-compressor-mcp"
]
}
}
}
启动命令uvx token-compressor-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypitoken-compressor-mcp0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

token-compressor

在保留语义的同时,将大模型提示词的 Token 数减少 30–70%。

mcp-name: io.github.base76-research-lab/token-compressor

面向大模型工作流的语义提示词压缩。减少 40–60% 的 Token 用量,同时不丢失含义。

许可证:MIT 需要:Ollama 兼容 MCP

由 Base76 Research Lab 构建 —— 专注于认知 AI 架构的研究。


在线演示

Intent Compiler MVP 现已上线,并将本项目用于 idea -> spec -> compressed output 流程:


功能介绍

token-compressor 是一个两阶段流水线,会在提示词到达大模型之前对其进行压缩:

  1. 大模型压缩 — 本地模型(通过 Ollama 运行的 llama3.2:1b)会将提示词改写为语义最精简的形式,同时保留所有条件和否定表述
  2. 嵌入验证 — 原始文本与压缩文本嵌入的余弦相似度必须超过阈值(默认值:0.85);否则会原样发送原文

结果:提示词更短、成本更低、意图不变。

Input prompt (300 tokens)
        ↓
  LLM compresses
        ↓
  Embedding validates (cosine ≥ 0.85?)
        ↓
  Pass → compressed (120 tokens)   Fail → original (300 tokens)

核心设计原则: 绝不牺牲条件性。如果提示词写着“仅当 Y 成立时才执行 X”,这一约束会在压缩后保留。


要求

  • Python 3.10+
  • 本地运行的 Ollama
  • 拉取以下两个模型:
ollama pull llama3.2:1b
ollama pull nomic-embed-text
  • Python 依赖项:
pip install ollama numpy

快速开始

from compressor import LLMCompressEmbedValidate

pipeline = LLMCompressEmbedValidate()
result = pipeline.process("Your prompt text here...")

print(result.output_text)   # compressed (or original if validation failed)
print(result.report())      # MODE / COVERAGE / TOKENS saved

结果对象:

字段描述
output_text要发送给大模型的文本
modecompressed / raw_fallback / skipped
coverage余弦相似度(0.0–1.0)
tokens_in估算的输入 Token 数
tokens_out估算的输出 Token 数
tokens_saved差值

CLI 用法

echo "Your long prompt here..." | python3 cli.py

输出:压缩后的文本写入 stdout,统计信息写入 stderr。


Claude Code 钩子(推荐配置)

在 ~/.claude/settings.json 的 hooks → UserPromptSubmit 下添加:

{
  "type": "command",
  "command": "echo \"${CLAUDE_USER_PROMPT:-}\" | python3 /path/to/token-compressor/cli.py > /tmp/compressed_prompt.txt 2>/tmp/compress.log || true"
}

每次提交提示词时都会运行,并将压缩后的版本写入临时文件;随后可通过第二个钩子或 MCP 服务将其注入上下文。


MCP 服务

MCP 服务将压缩功能作为工具提供,可供 Claude Code 和任何兼容 MCP 的客户端调用。

安装:

pip install token-compressor-mcp

工具: compress_prompt

  • 输入:text(字符串)
  • 输出:压缩后的文本 + 统计信息页脚

Claude Code MCP 配置(~/.claude/settings.json):

{
  "mcpServers": {
    "token-compressor": {
      "command": "uvx",
      "args": ["token-compressor-mcp"]
    }
  }
}

或从源代码运行:

{
  "mcpServers": {
    "token-compressor": {
      "command": "python3",
      "args": ["-m", "token_compressor_mcp"],
      "cwd": "/path/to/token-compressor"
    }
  }
}

配置

pipeline = LLMCompressEmbedValidate(
    threshold=0.85,          # cosine similarity floor (lower = more aggressive)
    min_tokens=80,           # skip pipeline below this (not worth compressing)
    compress_model="llama3.2:1b",
    embed_model="nomic-embed-text",
)

工作原理

阶段 1 — 大模型压缩

压缩提示词会指示模型:

  • 保留所有条件(if、only if、unless、when、but only)
  • 保留所有否定表述
  • 删除填充内容、模棱两可的表述和冗余内容
  • 将长度压缩至原文的 40–60%

阶段 2 — 嵌入验证

使用 nomic-embed-text 计算原文与压缩文本之间的余弦相似度。如果相似度低于阈值,则原样返回原文。这可防止含义在不知不觉中丢失。


结果

在瑞典语和英语提示词、技术文本及自然语言文本上进行了测试:

输入输入 Token 数输出 Token 数节省比例
研究摘要(EN)893857%
会话意图(SV)321844%
技术指令472253%
短命令(<80t)——已跳过

研究背景

此工具实现了以下论文中的架构:

Wikström, B. (2026). 当对齐降低不确定性:认识论方差坍缩及其对元认知 AI 的影响。 DOI:10.5281/zenodo.18731535

这是 Base76 Research Lab 认识论 AI 基础设施工具链的一部分。


许可证

MIT — Base76 Research Lab,瑞典

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。