AI 前沿

2026 Mac mini M4:Hermes Agent trajectory_compressor 記憶與 Token 最佳化指南

MacHTML Lab2026.05.28 約 18 分鐘
Hermes Agent trajectory_compressor 記憶 Token 最佳化 Mac mini M4 2026

Hermes AgentNousResearch/hermes-agent)在仓库根目錄提供 trajectory_compressor.py,用于在不把操作者刚完成的工作全部丢弃的前提下,把超长 Agent 轨迹压进模型上下文窗口。常时在线的 Mac mini M4 上若跑着閘道、cron 与数小时研究循环,Token 压力会表现为工具输出被截断、后续轮次失败,以及整段 transcript 重复发送带来的意外帳單。本篇 Type C 說明文梳理上游預設值、头—中—尾三区壓縮模型、交互式 /compress 与批处理 CLI 的差异,并给出可在 macOS 上执行的六步跑通清单。

若仍在選型,请先阅读 2026 年 macOS 与 Mac mini M4:Hermes Agent 對比 OpenClaw——壓縮策略应在确定会话落点之后再调。上游参考:main 分支 trajectory_compressor.pyHermes README,以及规划统一内存时的 Apple Mac mini 規格

揭露:下文会简要提及 MacHTML 可选的云 Mac mini 租用,用于常时在线演練。

為何 Mac mini 上會撞上 Token 上限

Agent 框架不会像聊天网页那样“只存最后一句”——每次调用模型都会重放结构化消息列表。Telegram 閘道加上本地工具链,一天下来 system、human、gpt、tool JSON 叠加到数万 Token 并不罕见。提供商硬截断或静默截断时,操作者常怪模型“变笨”,实质往往是 transcript 超出预算。Mac mini M4 的价值在于可 7×24 跑閘道而不休眠,但硬體不会自动扩大上下文——壓縮是維運手段,不是芯片功能。

Hermes 用 trajectory_compressor.py 把轨迹目錄重写为更短、语义等价的版本:保留首条 system、human、gpt、tool 所承载的人设与安全边界;中间段壓縮为约 750 Token 的摘要;尾部保留最近 4 轮 原文。壓縮后預設总上限 target_max_tokens=15250。策略含义很明确:中间大胆压,正在操作的尾部绝不截肢。

Token 最佳化同样关乎成本。经 OpenRouter 推理时,为一句追问重发 4 万 Token 轨迹既费钱又慢。相较每轮换更大上下文模型,在演練用 Mac mini 上先做壓縮往往更划算。请与上文選型文对照,避免在计划下周替换的閘道上投入大量壓縮调参。

Apple 统一内存下,16 GB 可跑 Hermes 閘道与轻量工具,但并行子 Agent、本地 Ollama 与未壓縮巨日志会争抢同一池子。壓縮主要解决模型窗口,也能减轻閘道 fan-out 时巨型消息数组的内存占用。部署前请对照 Mac mini 官方規格

核心壓縮模型

上游实现可概括为三区策略,便于事后审计:

  • 保护头:保留首条 system、human、gpt、tool,人设与初始工具模式不丢。
  • 摘要中段:头尾之间的内容经 OpenRouter 預設模型压成约 summary_target_tokens=750 的叙述。
  • 保护尾:保留最近 protect_last_n_turns=4 轮,近期纠错与工具报错仍可被模型直接引用。

預設 target_max_tokens=15250 是壓縮后 transcript 的天花板。请按生产模型可用窗口(扣除工具与 completion 余量)调整,而非营销页上的“最大上下文”。摘要預設走 OpenRouter 的 google/gemini-3-flash-preview,兼顾速度与成本;合规场景请换批准模型并记录被壓縮的轨迹目錄——摘要必有损,应保留决策与阻塞项,而非每一行堆栈。

壓縮不能替代 Hermes 策展記憶或 FTS5 会话搜索:前者跨周持久,后者是单线程失控时的紧急刹车

两种入口:/compress 与批处理 CLI

入口适用场景行为
/compressTUI 或閘道会话中感觉上下文告急与当前轨迹绑定的交互式壓縮
python trajectory_compressor.pydata/ 历史目錄、CI 夹具、迁移前归档可指定采样率、Token 上限、输入路径的批处理

勿混用:斜杠命令是操作台;Python 入口用于可复现維運。对仍在写入的 live 目錄做批处理可能竞态——先静默会话或复制到临时目錄。实验可用 --sample_percent=15 抽样评估质量,上线前改为 100%。

示例与預設参数表

参数預設說明
target_max_tokens15250壓縮后上限
summary_target_tokens750中段摘要预算
protect_last_n_turns4尾部保留轮数
摘要模型google/gemini-3-flash-preview可通过环境变量覆盖
python trajectory_compressor.py --input=data/my_run
python trajectory_compressor.py --input=data/my_run --sample_percent=15
python trajectory_compressor.py --input=data/my_run --target_max_tokens=16000

live 会话中,在工具链变长但任务未完成时执行 /compress,尤其在下挂子 Agent 或重试失败工具之前。团队规范建议:在里程碑后壓縮,而非每次工具成功都压,以免摘要抹掉仍需要的细节。

六步跑通

  1. 在 Mac mini 上克隆/更新 Hermes,确认根目錄存在 trajectory_compressor.py
  2. 在用于批处理的 shell 中导出 OpenRouter(或所选)API 密钥。
  3. data/ 选取 Token 膨胀明显的轨迹,复制副本以便 diff。
  4. 預設参数批跑:python trajectory_compressor.py --input=data/my_run,检查头尾消息完整。
  5. 按生产模型余量调整上限(如 --target_max_tokens=16000),并以 --sample_percent=100 复跑后固化配置。
  6. 启动 Hermes 会话,人为拉长上下文后执行 /compress,确认模型仍理解保护尾中的最新修正。

将选定預設值写入内部 runbook,与閘道端口、LaunchAgent 标签并列,避免后人通过生产事故“重新发现”。

故障排查

摘要失败或中段为空

检查 OpenRouter 凭据、模型白名单与限速。换更小输入目錄排除畸形 tool JSON。若合规禁止 Gemini Flash,请换批准模型并更新文档,不要静默关闭壓縮。

壓縮后“忘记”近期修改

临时提高 protect_last_n_turns 或降低 summary_target_tokens 激进程度。确认未在消息仍追加时对 live 目錄批处理。对副本 diff 尾部消息。

若需不依賴 Mac 常開的 Telegram 閘道,請參閱:便宜 VPS 部署 Hermes Agent Docker 與 Telegram 機器人

需要限定倉庫讀取、npm test 與受控自動修復?閱讀 2026 Hermes Agent MCP 對接 Claude Opus 4.8:合規本機程式碼演練場

常見問題

壓縮会取代 Hermes 記憶文件吗?

不会。壓縮只缩短单条轨迹;策展記憶与技能库仍是长期存储。二者并用:記憶管数周,壓縮管当晚失控会话。

OpenClaw 用户能用此脚本吗?

脚本随 Hermes 分发,OpenClaw transcript 结构不同——请先迁移或导出,并按選型文隔离閘道。

摘要成本如何?

与中段轮数及 OpenRouter 单价成正比。实验阶段可用 15% 采样,信任預設值后生产跑 100%。

壓縮加閘道需要多少内存?

仅批处理壓縮时 16 GB 往往够用;同一台机器还跑閘道、本地模型与并行子 Agent 时建议 24 GB,见 Apple 規格

在雲端 Mac mini 上演練 Hermes 壓縮

租用常時在線的 Mac mini M4,批次壓縮長軌跡、驗證 /compress,並在上線前把閘道工作階段控制在 Token 預算內。

Mac 上的 Agent 環境
常時在線演練