OpenHuman TokenJuice 压缩机制
概述
TokenJuice 是 OpenHuman 内置的 Token 压缩引擎,官方宣称可以降低最高 80% 的 Token 消耗。它的核心思路是:在所有工具调用结果进入 LLM 上下文之前,先经过一层规则压缩。
为什么这很重要?因为 auto-fetch 每 20 分钟扫一次 Gmail 的 200 封邮件、扫一次 GitHub diff、扫一次 Slack 频道——没有压缩这一层,频繁调用 LLM 的 Token 账单会非常惊人。
压缩效果
| 场景 | 未压缩 | 压缩后 | 节省 |
|---|---|---|---|
| 处理 6 个月邮箱历史 | 几百美元 | 个位数美元 | ~97% |
| 单次工具调用结果 | 10k+ Token | 2k Token | ~80% |
三层规则架构
TokenJuice 的压缩规则分为 3 层,后面覆盖前面:
1. Builtin(内置规则)
内置的默认压缩规则,覆盖常见命令:
git命令输出npm/cargo包管理命令docker/kubectl容器命令ls等基础命令
开箱即用,无需配置。
2. User(用户规则)
存放在 ~/.config/tokenjuice/rules/ 目录下,跨项目生效。
适合个人偏好的压缩设置,例如:
- 忽略特定格式的日志行
- 合并连续的空白行
- 截断超过 N 行的输出
3. Project(项目规则)
存放在仓库根目录的 .tokenjuice/rules/ 目录下,通过 Git 共享给团队成员。
适合项目级别的压缩策略,例如:
- 丢弃与项目无关的调试日志
- 按段落摘要编译输出
- 特定工具输出的正则匹配
压缩策略
TokenJuice 支持多种压缩策略,全部以 JSON 文件配置,无需重新编译即可生效:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 截断 | 保留前 N 行/后 N 行 | 长日志输出 |
| 去重 | 移除重复行 | 重复的错误信息 |
| 合并空白 | 连续空行合并为一行 | 格式化输出 |
| 正则丢弃 | 匹配正则的行直接丢弃 | 调试日志清理 |
| 按段摘要 | 每个段落用一句话概括 | 长文档处理 |
配置示例
json
{
"rules": [
{
"pattern": "^DEBUG\\s+",
"strategy": "discard",
"description": "丢弃 DEBUG 级别日志"
},
{
"pattern": "(.{200,})",
"strategy": "truncate",
"max_lines": 50,
"description": "超过 200 字符的行截断到 50 行"
},
{
"strategy": "deduplicate",
"description": "移除完全相同的连续行"
}
]
}与技术架构的关系
TokenJuice 处于数据进入流程的咽喉位置——所有原始数据在进入 Memory Tree 和 LLM 上下文之前,都会被它处理一遍。
最后更新:2026-05-22
