算力敏感型用户最担心的并非模型回答不准确,而是每次点击发送后,账单数字跳动得比心跳还快——Hermes Agent 后台默默运行着9个辅助模型,加载了全部Skill描述,甚至还注入了三个月前的对话日志,这些都在无意义地消耗Token。你无需更换模型,也无需重写代码,只需做好五处精准配置,就能让Token消耗从“按秒计费”回归到“按需结算”。

禁用闲置 Skill,砍掉最高频的冗余上下文
每个启用的 Skill 都会将其 SKILL.md 全文塞进每次请求的上下文,1个Skill相当于200–800 tokens,10个未使用的Skill就是一场小型Token海啸。
打开 ~/.hermes/config.yaml → 找到 skills: 下的已启用列表 → 逐条核对每项Skill最近7天是否被调用过(执行 hermes skill list --used-last-7d 查看)。
【禁用操作不可逆:删除前务必确认该Skill未被任何自动化流程依赖】
将确定不用的Skill行前加 # 注释,例如:# - web_get;保存后重启Agent,下次请求上下文立即减少对应长度。
为9类辅助任务单独指定轻量模型
视觉分析、网页提取、上下文压缩、会话搜索等9类后台任务默认复用你的主模型,但它们根本不需要DeepSeek-R1级别的推理能力——使用 gpt-4o-nano 或 gemini-flash 即可,成本直降85%。
方法一:全局轻量化配置
在 ~/.hermes/config.yaml 中添加 auxiliary 块:
auxiliary:
vision: gpt-4o-nano
web_extract: gemini-flash
compression: gpt-4o-nano
session_search: gpt-4o-nano
skills_hub: gpt-4o-nano
approval: gpt-4o-nano
mcp: gemini-flash
flush_memories: gpt-4o-nano
title_generation: gpt-4o-nano
方法二:按密钥池策略动态分配
若你已配置Z.AI密钥池,可在 credential_pool_strategies 下为 auxiliary 单独设模型路由:
credential_pool_strategies:
zai: least_used
auxiliary_models:
vision: zai-gemini-flash
web_extract: zai-gpt4o-nano
这一步完成后,后台9个“隐形烧钱点”全部转入低成本通道。
启用四层记忆架构,切断历史注入源头
第一步:冻结核心记忆
将最关键的项目上下文写入 ~/.hermes/MEMORY.md,严格控制在800 tokens以内;在 config.yaml 中设置 memory: core_file: "MEMORY.md"。
第二步:清空长时记忆缓存
执行 hermes memory flush --older-than 90d 清理90天前所有SQLite日志;保留的长期记忆仅通过语义检索召回摘要,不会全量注入。
第三步:关闭用户画像自动更新
在 config.yaml 中设 user_profile: auto_update: false,避免每次对话都追加新偏好字段。
第四步:技能库按需加载
确认已启用渐进式加载:skills: load_strategy: "on_demand",确保默认只传递技能名+20字符描述,完整SKILL.md仅在触发时加载。
完成这四步后,基础上下文稳定压在1500 tokens以内,技能数量翻倍也不再推高开销。
限制输出长度并植入终止锚点
问答类任务设 max_completion_tokens=128,结构化提取类强制设为32——这不是随意拍定,而是经过A/B测试验证的临界值。
在用户指令末尾硬性追加终止信号:
“输出完毕,无需补充说明。”
“JSON格式闭合后立即停止,不加注释。”
“只返回纯数字结果,不带单位、不加句号。”
模型看到这些锚点会显著降低补全倾向;配合流式响应(stream: true),客户端检测到“}”或“```”后可立即中断连接,避免接收冗余尾部。
开启系统提示词缓存与滑动窗口压缩
第一步:启用Anthropic兼容缓存
在 config.yaml 中添加:
prompt_caching:
enabled: true
cache_system_prompt: true
ttl: 3600
第二步:调整压缩阈值
将 compression.threshold 从默认0.5提高至0.75,避免过早压缩丢失关键上下文;同时设 protect_last_n: 30,确保最近30轮对话始终完整保留。
第三步:启用滑动窗口截断
在 context_window 设置中加入 sliding_window: true,并设 window_size: 8,这样Agent只维护最近8轮交互,旧内容自动淘汰。
这三步叠加后,系统提示词实现零重复消耗,长会话Token增长曲线被彻底压平。
