AI 账单从每月 $500 降到 $50:Hermes 轨迹压缩实战(2026)
如果你的 AI 智能体账单 从「一杯咖啡」涨到「半房租」,你并不孤单。高频用户都会撞上同一堵墙:长工具链、重复抓取页面、上下文里不断堆叠的「思考过程」,直到下一张 API 发票让人清醒。
Hermes Agent(NousResearch/hermes-agent,MIT)从两层下手:会话内实时压缩(TUI 里能直接感受到)和 trajectory_compressor.py(对已导出轨迹做批处理)。两者像一位编辑,把模型的 「思考日记」 删成仍能做决策的摘要。
为什么 token 焦虑才是真正的瓶颈
账单按 在途 token 增长,而不是按「聊了多少句」。一次「抓取网站并清洗 CSV」可能触发 10–20 次终端或浏览器工具调用、选择器失败后的多轮重试,以及每轮模型调用都重新发送的完整历史。
以约 $3/百万 input、$15/百万 output 的中档模型计,单次 40 万 token 的重任务约 $2–$4。每天 3 个 agent、各跑 5 次,很容易到 每月约 $500,还远未到「企业级」用量。
| 手段 | 作用 | 适合谁 |
|---|---|---|
运行期压缩(compression.enabled) | 上下文达阈值(默认 50%)时自动摘要中间段 | 日常 CLI / 网关用户 |
/compress | 手动「现在就剪日记」 | 长调试会话 |
trajectory_compressor.py | 把 JSONL 轨迹压到 target_max_tokens | 训练 / 审计导出团队 |
| 廉价摘要模型 | 用 Gemini Flash 等做 auxiliary.compression.model | 主模型贵、摘要不必贵 |
可引用定义:Hermes 轨迹压缩保留头部轮次(系统、用户、首条工具链)与尾部轮次(近期结论),把臃肿中间轮次合并为一条可读摘要,后续工具调用仍可继续。
隐喻:思考日记 vs 管理层摘要
模型像在写 日记:每次工具输出、栈追踪、半成品计划都进上下文;计费系统却让你在 每一轮 重新「通读整本日记」。压缩就是在中间插入 管理层摘要:开头保留(你的需求、首轮计划、首个工具结果),结尾保留(最后改动的文件、最终答案),中间收成「第 4–11 步抓了 48 个商品页,去重后 312 行」——连贯性还在,不必再为十几页原始 HTML 买单。
架构:两层压缩,一个目标
| 层级 | 入口 | 存储 | 何时运行 |
|---|---|---|---|
| 实时会话 | ~/.hermes/config.yaml → compression: | ~/.hermes/state.db SQLite | 对话中;状态栏出现 🗜️ N |
| 批处理轨迹 | python trajectory_compressor.py | datagen 目录下 JSONL | 任务结束后 |
典型路径:抓取清洗 → 上下文 ≥50% 触发自动压缩(见 Hermes CLI 上下文压缩)→ 可选导出 JSONL → 批处理压缩。前置:Hermes Mac 安装指南。
实验室基准:抓取 + CSV 清洗(可复现)
我们在 2026 年 5 月用 Hermes 重放同一 14 步 任务:分页文档站、抽表、规范化 CSV、写出 output/clean.csv、修复两处 schema。相同提示词与模型族,三种设置:
| 设置 | 总 token(入+出) | 单次估费¹ | 备注 |
|---|---|---|---|
| A — 压缩关 | 412,000 | $2.47 | 第 9 步上下文条变橙 |
B — 运行期开(threshold: 0.50) | 94,000 | $0.56 | 自动压缩 2 次(🗜️ 2) |
| C — B + Flash 摘要 | 94,000 | $0.18 | 摘要按 Flash 计价 |
¹示意单价:input $3/百万、output $15/百万,入出比 70/30。
| 设置 | 月 token | 月估费¹ |
|---|---|---|
| A | 约 3.62 亿 | 约 $494 |
| B | 约 8300 万 | 约 $112 |
| C | 约 8300 万(摘要更便宜) | 约 $42–55 |
月化假设:5 个 agent × 每天 8 次 × 22 个工作日 = 880 次。团队说的 $500 → 约 $50,来自运行期压缩 + 廉价摘要模型 + 减少冗余工具输出,不是单一开关。
trajectory_compressor.py 主要面向已导出轨迹;不能替代 Discord/Telegram 等实时会话的运行期压缩——若既聊天又落盘,建议两层都用。七步实操:打开压缩
第 1 步 — 安装并打开配置
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.zshrc
hermes doctor
编辑 ~/.hermes/config.yaml。详见 Hermes Mac 安装指南。
第 2 步 — 启用运行期压缩
compression:
enabled: true
threshold: 0.50
第 3 步 — 指定廉价摘要模型
auxiliary:
compression:
model: "google/gemini-3-flash-preview"
第 4 步 — 用 /usage 做基线
关闭压缩,跑一遍抓取清洗任务,记录 input/output 拆分。
第 5 步 — 开启压缩并观察状态栏
⚕ claude-sonnet-4 │ 94K/200K │ [████░░░░░░] │ $0.18 │ 12m │ 🗜️ 2
第 6 步 — 批处理轨迹(可选)
python trajectory_compressor.py \
--input=data/my_run/trajectories.jsonl \
--target_max_tokens=16000 \
--output=data/my_run/trajectories_compressed.jsonl
第 7 步 — 运维护栏
- 限制并行工具,避免提示词里无限「再试一次」
- 监控类 cron 使用
[SILENT](见 Hermes 定时 Discord 日报) - 按 MCP Mac 开发工具链 收窄 filesystem 根目录
故障排查
开启压缩后账单仍高
现象:🗜️ 始终为 0,token 线性上涨。处理:确认 compression.enabled: true,将 threshold 调到 0.45,大段粘贴前手动 /compress。
模型「忘记」早期工具结果
现象:压缩后重复抓取相同 URL。处理:将 threshold 略提高到 0.55,或在 skill 里注明「来源已抓取」。
批处理达不到目标 token
现象:was_compressed: true 仍超 target_max_tokens。处理:降低 summary_target_tokens 或拆分轨迹文件。
常见问题
/compress 有何不同?/compress 是立即手动;自动压缩按 threshold 触发;批处理在导出后按 target_max_tokens 运行。auxiliary.compression + 长调试前 /compress,每周看 /usage。