内容提要
本文介绍Hermes Agent的长会话架构,核心是稳定Prompt前缀以命中缓存、分层压缩上下文(保留头尾总结中段)、用SessionDB存储快照,并通过SQLite租约机制防止多进程并发写坏历史。压缩失败时有回退或暂停策略,确保长期会话的可靠性与可恢复性。
延伸解读
稳定前缀是缓存命中的关键
长会话中,供应商侧的 Prompt Cache 能否持续命中直接影响延迟和成本。Hermes Agent 将系统提示词分为 Stable、Context、Volatile 三层,并在新会话首次构建后冻结整个 System Prompt 写入 SessionDB,恢复时尽量复用原始字节。这意味着中途更新 MEMORY.md 不会立刻改写系统提示词,而是等到新会话或压缩触发重建。这种设计牺牲了即时灵活性,但换来了缓存命中率和身份一致性。
压缩不是简单截断,而是结构化交接
默认压缩器先清理旧工具输出,再切出 Head/Middle/Tail,用辅助模型按 Goal、Constraints、Progress 等生成结构化 handoff,并保留最近尾部原文。重压缩时更新已有 summary 而非从零开始。Lean 模式进一步把路径、SHA、PR 号等可验证标识符机械化,并支持通过 session_search 找回被压缩的内容,让长会话可恢复性更强。
失败策略:宁可暂停也不丢历史
摘要失败时,Hermes Agent 不会静默清空中段。辅助模型不可用会回退主模型;网络、鉴权等不可恢复错误直接 abort 保持消息不变;其他失败插入 deterministic fallback 并进入 cooldown。若设置 abort_on_summary_failure 为 true,则所有摘要失败都保留原会话,等待手动 /compress 或 /new。这体现了对历史完整性的重视。
SQLite 租约机制防止并发写坏
多进程同时打开同一会话时,普通数据库事务无法覆盖长时间的工具执行。Hermes Agent 在应用层为每轮执行建立 turn lease,长任务定期续租,失去租约主动中断,避免交叉覆盖。SessionDB 使用 WAL 和 FTS5,但会在 NFS 等风险环境安全退回 DELETE 模式,绝不强制降级。这为长会话的并发安全提供了保障。
Q&A
Hermes Agent 如何解决长会话中 Prompt Cache 命中率低的问题?
Hermes Agent 通过将系统提示词组织为稳定前缀(Stable)、上下文(Context)和易变部分(Volatile)三层,并在新会话首次构建后冻结完整系统提示词写入 SessionDB,恢复时复用原始字节,从而保持前缀稳定,提高缓存命中率。
Hermes Agent 的上下文压缩默认策略是什么?
默认使用 ContextCompressor,分为四个阶段:清理旧工具输出、切分 Head/Middle/Tail、用辅助 LLM 总结 Middle 生成结构化 handoff、重新组装并修复消息序列。压缩时保留 System Prompt 和近期 Tail,总结中间部分。
Hermes Agent 如何防止多进程同时写坏会话历史?
Hermes Agent 使用 SQLite 的 WAL 模式,并在应用层实现 turn lease 机制。每个 Agent Turn 获取租约,长任务定期续租,失去租约时主动中断,确保同一时间只有一个进程写入,避免交叉覆盖。
Hermes Agent 在压缩失败时如何处理?
如果辅助模型不可用,会回退到主模型;网络、鉴权等错误会直接中止并保持消息不变;其他失败默认插入 deterministic fallback 并进入冷却期。若设置 abort_on_summary_failure 为 true,则所有摘要失败都保留原会话并等待手动操作。
Hermes Agent 的 Lean Tail 模式与 legacy 模式有何区别?
legacy 模式保留较大的原文尾部,保留更多工具细节但压缩后仍可能很重;Lean Tail 模式将尾部压到 10K-25K,增加分块 digest、标识符索引和 session_search 恢复指针,使活跃上下文更小,可恢复性更强,但压缩边界会多几次 summarizer 调用。
Hermes Agent 中 System Prompt 在会话中途更新 MEMORY.md 后会立即生效吗?
不会。会话中途更新 MEMORY.md 不会立即改写 System Prompt,变更会在新会话或压缩触发的 Prompt 重建时进入新快照,以避免打断前缀缓存和身份漂移。
Hermes Agent 的 SessionDB 如何存储系统提示词以避免重复?
SessionDB 按哈希存储系统提示词,避免同一份长 Prompt 在数据库中重复占用空间。