Hermes Agent通过五层机制保障上下文连贯性:学习闭环驱动技能抽象与复用、双轨记忆系统协同调用、KEPA提示反向传播优化、模型无关接口抽象、迭代预算强制工具执行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您观察到Hermes Agent在完成任务后自动更新技能或调用工具时表现出上下文连贯性,则可能是由于其底层大语言模型与执行循环深度耦合所致。以下是解析其工作机理的关键路径:
一、学习闭环驱动的执行流程
该机制使Hermes Agent脱离传统静态提示调度,转而依赖“用户请求→工具执行→技能抽象→记忆固化→复用触发”的动态演进链。每一次成功任务不仅交付结果,还强制触发内部状态写入,形成可检索、可迭代的认知增量。
1、系统识别用户输入中的复合意图(如“对比过去72小时GitHub PR评论中提及‘regression’的全部条目,并按作者归类”);
2、LLM依据当前工具可用性与权限约束,生成结构化工具调用序列,而非仅描述计划;
3、执行完成后,自动将完整调用链、参数边界、失败重试点及输出格式偏好提取为Markdown技能文件,存入skills/目录;
4、关键实体(如仓库名、时间窗口、关键词)与语义标签同步写入MEMORY.md,并建立FTS5全文索引锚点;
5、下次匹配相似语义标签时,直接加载对应Skill并注入最新记忆上下文,跳过LLM重复推理阶段。
二、双轨记忆系统的协同调用
记忆并非日志堆叠,而是由客观事实存储与主观人格建模两个独立但联动的子系统共同支撑。LLM在每次响应生成前,必须从FTS5中召回高相关度记忆片段,并将其作为system prompt的一部分注入输入上下文。
1、工具返回结构化数据后,LLM自动提炼三元组:实体名称、ISO 8601时间戳、语义标签(如“#ci_failure”“#preference_chinese”);
2、实体与标签写入MEMORY.md,同时写入FTS5数据库,支持布尔+模糊混合查询;
3、用户对话中显式表达的偏好(如“默认不生成表格”、“所有错误信息必须附带curl命令复现”)被Honcho模块识别并更新至USER.md;
4、在生成响应前,系统执行FTS5召回,将最高匹配度的MEMORY.md段落与USER.md人格特征拼接为增强system prompt,送入LLM推理。
三、KEPA提示反向传播机制
该机制将LLM输出质量反馈至提示工程层,实现不修改模型权重前提下的动态提示优化。每一次用户否定(如回复“不对,重来”)或执行超时均被标记为负样本,用于重构下一轮提示模板。
1、当某次技能执行失败或用户显式否定输出,系统将原始提示、中间工具调用日志、LLM响应及用户反馈打包为负样本;
2、负样本经轻量级分类器判定为“角色失准”“约束缺失”或“上下文截断”,触发对应提示模板字段重写;
3、重写后的提示模板立即参与下一轮调度,无需人工干预或模型微调;
4、若连续三次同一类负样本触发相同修复动作,系统自动生成提示变更记录并存入memories/目录供审计。
四、模型无关的接口抽象层
Hermes Agent不绑定特定大语言模型,而是通过标准化的Model Interface Protocol(MIP)接入不同后端。该协议定义了token流控、tool call schema、stop sequence协商等核心契约,确保LLM仅需满足基础JSON Schema输出能力即可接入。
1、启动时读取config.yaml中model.provider字段(如ollama、vllm、groq)及对应endpoint配置;
2、所有LLM请求统一序列化为MIP标准payload,含system、user、tools三字段,其中tools字段为OpenAPI v3兼容的工具描述数组;
3、LLM响应必须包含tool_calls字段且符合预设JSON Schema,否则触发schema校验失败并进入重试流程;
4、响应流式传输至前端前,先经本地schema validator校验,未通过则丢弃整条响应并标记为模型不可靠,切换至备用模型实例。
五、迭代预算控制与工具强制执行
为防止LLM陷入空想或无限规划,Hermes Agent在运行时施加硬性约束:默认最多90次迭代,且每次迭代必须产生至少一次有效工具调用。该设计从根本上杜绝“只说不做”的行为模式。
1、每次LLM输出后,系统检查response内容是否含合法tool_calls字段且调用参数通过schema验证;
2、若未触发工具调用,系统自动注入强约束提示:“你必须使用以下工具之一完成任务,禁止仅用文字描述步骤”;
3、迭代计数器在每次工具调用返回后递增,达到上限前若仍未完成目标,则触发fallback skill或返回结构化error report;
4、所有工具调用日志实时写入run_logs/目录,含timestamp、tool_name、input_hash、output_truncated字段,供后续KEPA分析使用。


















