Hermes Agent /compress指令阶段性总结压缩技巧【方法】
在长会话里想精准控制上下文体积,避免模型因为 token 超限报错或者响应越来越慢,又不想丢掉关键的任务状态——/compress 指令就是 Hermes Agent 提供的最直接、最可控的手动压缩入口。
先说几个核心判断。这个指令不是等着自动触发的,它属于即时干预操作,能让你在完成一个阶段性目标后,立刻把中间的调试过程“打包归档”,然后干净地继续下一步。
/compress 基础触发与默认行为
直接输入
/compress
这一步不依赖 token 估算,不用等自动触发,属于即时干预。特别适合这样的场景:你刚写完 API 接口文档并通过测试,想把中间那些调试、报错、改参数的来回对话“打包起来”,然后清爽地继续下一个任务。
/compress here N:锁定尾部保留轮数
拿场景说话吧。假设你想说“保留最近 5 轮不要动”,那就写:
/compress here 5
这行指令会强制保留最近 5 轮完整消息——包括用户提问、工具调用、执行结果、助手回复在内,全部不动,其余部分压缩。这里 N 必须是正整数,最小值为 1。
如果你写
/compress here 0
/compress
需要注意一点:here 后面的数字只控制“从尾部向前数多少轮不压缩”,它不保证这些轮次一定在当前 token 预算内。如果单轮消息本身就非常大——比如你上传了 10MB 的日志文件并让模型输出全文——那么即使设置了保尾轮数,依然可能触发后续的自动压缩机制。
/compress focus topic:按语义主题定向压缩
这个模式用起来稍微讲究一点,分三步走。
第一步,确认当前会话中存在明确的主题锚点。比如你之前输入过“帮我检查 deployment.yaml 的 Helm values 配置”,或者 Agent 曾经生成过一个标题为【Helm 部署参数校验】的摘要块。这类文本会被 ContextCompressor 自动标记为 topic boundary。
第二步,执行
/compress focus Helm
第三步,压缩完成后,你会看到新生成的摘要块开头带有一个 [FOCUS: Helm] 标识,表示这段是主题保留区。这个标识不可删除,否则下次 /compress focus 就无法定位锚点了。
关键在哪儿?
/compress focus nonexistent
压缩后验证与纠错
压缩完了别急着走。马上跑一行
/history -n 3
但万一发现压缩之后 Agent 忘记了刚确认过的约束条件——比如“必须用 Python 3.11”——说明那条信息没有被纳入 protected tail 或 focus topic 区域。这时候不要慌,立即执行