一个自然语言文本驱动å�‹è‡ªåŠ¨åŒ–ç®¡é�“--Hermes Agent的技术事å®�æ•´ç�† ============================================================ 作者: DWL Cognition 机构: 数观微澜(南京)科技有限公司 专题: Agent 属性: 原创(AI 研究长文) 日期: 网址: https://microvisiondata.com/news/agent/a484883-5a4cd8d2db.html 备案: 苏ICP备2025218897号-1 说明: 本文为数观微澜原创;与美国 MicroVision(LiDAR)公司无关。 摘要: 摘è¦� 一个具备事务性æŒ�久化能力的自然语言文本驱动å�‹è‡ªåŠ¨åŒ–ç®¡é�“。它以ç£�盘文件作为共亅 正文: 摘è¦� 一个具备事务性æŒ�久化能力的自然语言文本驱动å�‹è‡ªåŠ¨åŒ–ç®¡é�“。它以ç£�盘文件作为共享黑æ�¿çš„载体,以外部 LLM 作为唯一的“读写æ�§åˆ¶å™¨â€�,将所有认知负担(记忆å�–èˆ�ã€�任务规划ã€�技能æ��炼ã€�自我认知)通过 Prompt å�¸è½½ç»™å¤–部 API,自身仅ä¿�留字符串标记解æ��和进程级 I/O 调度功能。 [图片: 配图] 一ã€�是什么 Hermes Agent 是一组 Python 脚本,其功能是æ�§åˆ¶ LLM API 的调用æµ�程和数æ�®åœ¨æœ¬åœ°æ–‡ä»¶ç³»ç»Ÿä¸­çš„读写。 1. 一个对è¯�循ç�¯ç¼–æ�’器 conversation_loop.pyå®�ç�°äº†â€œæ�¥æ”¶è¾“入→æ�„建 Prompt→调用 LLM→解æ��输出→分å�‘工具调用→循ç�¯â€�的标准 ReAct 模å¼�。外部代ç �检测 LLM 输出中的特定标记(如 ï¼‰ï¼Œæ�®æ­¤è°ƒç”¨å¯¹åº”çš„ Python 函数。 2. 一个文本文件读写系统 记忆存储在 MEMORY.mdå’Œ USER.md,为纯文本文件。对è¯�å�†å�²å­˜å‚¨åœ¨ SQLite æ•°æ�®åº“中,å�¯ç”¨ FTS5 关键è¯�检索。 技能存储在 SKILL.md,为自然语言æ��述的步骤文档。系统在å�¯åŠ¨æ—¶è¯»å�–这些文件,将其内容拼æ�¥åˆ°ç³»ç»Ÿæ��示è¯�中。 写入管ç�†ï¼šå½“记忆写入超é™�时,系统返å›�当å‰�æ�¡ç›®ï¼Œç”± LLM 自行决策替æ�¢ã€�删除或å�ˆå¹¶ã€‚ 3. 一个自动化文档生æˆ�æµ�水线 学习循ç�¯ï¼ˆTracker → Evaluator → Reflector → Crystallizer → 存储)是一个由 Python 脚本驱动的æµ�程: Evaluator 为æ�¡ä»¶åˆ¤æ–­ï¼ˆå·¥å…·è°ƒç”¨æ¬¡æ•°â‰¥5 且任务æˆ�功) Reflector å’Œ Crystallizer 调用 LLM 生æˆ�文本(å��æ€�内容和技能文档) 输出结æ�œä¸º SKILL.md文件 4. 一个工具注册ä¸�å�‘ç�°æœºåˆ¶ 工具定义采用 Schema–Registry–Handler 三层分离。æ¯�个工具文件调用 registry.register()完æˆ�自注册,系统å�¯åŠ¨æ—¶é€šè¿‡ AST 扫æ��自动å�‘ç�°åŒ…å�«æ³¨å†Œè°ƒç”¨çš„æ¨¡å�—。 5. 一个 LLM 的上下文拼æ�¥å™¨ 系统在æ¯�次调用 LLM 之å‰�,将记忆文件ã€�技能文件ã€�对è¯�å�†å�²ã€�工具定义等文本内容拼æ�¥ä¸ºç³»ç»Ÿæ��示è¯�和用户消æ�¯ã€‚ 6. 一个具有“休眠-唤醒â€�机制的å��å�°è¿›ç¨‹ gateway/run.py为长期è¿�行的进程。当无任务时,系统定期调用 LLM(如æ¯� 30 秒)询问“是å�¦æœ‰ä»»ä½•需è¦�主动处ç�†çš„事情â€�。该机制使得系统在无用户输入时ä»�会消费 Token 进行å��å�°çжæ€�å��æ€�。 7. 一个“无内存è¿�行时â€�æ�¶æ�„ æ¯�次 LLM 调用完æˆ�å��,当å‰�的对è¯�å›�å�ˆã€�工具调用记录被立å�³åº�列化写入 SQLite å¹¶æ��交事务(commit()),éš�å��进程返å›�等待。系统在任何时刻被强制终止都ä¸�会丢失已完æˆ�的步骤。系统ä¸�维护è¿�行时的“短期动æ€�å�˜é‡�â€�,所有跨步骤的“上下文è¿�贯性â€�完全ä¾�赖下一次 Prompt æ�„建时ä»�ç£�盘é‡�新读å�–和拼æ�¥ã€‚ 二ã€�ä¸�是什么 1. ä¸�是一个独立的æ�¨ç�†å¼•æ“� 系统本身ä¸�包å�«æ�¨ç�†æ¨¡å�—。æ�¨ç�†å’Œå†³ç­–由外部 LLM 完æˆ�。系统的工作是将 LLM 的输入输出格å¼�化并转å�‘。 2. ä¸�是一个认知æ�¶æ�„ 系统未å®�ç�°ä»»ä½•公认的认知æ�¶æ�„模å�‹ï¼ˆå¦‚ ACT-Rã€�SOARã€�CLARIONã€�全局工作空间ç�†è®ºç­‰ï¼‰ã€‚其“记忆â€�是工程存储分层,而é��认知科学æ„�义上的“工作记忆→长期记忆â€�转æ�¢ç»“æ�„。 3. ä¸�是一个知识图谱 记忆检索基äº� FTS5 关键è¯�匹é…�,而é��语义相似度。系统没有定义知识å®�体之间的关系拓扑,也没有å�‘é‡�嵌入。工程的å�–èˆ�å‰�æ��是:预设 LLM 上下文窗å�£è¶³å¤Ÿå¤§ï¼ˆâ‰¥64k),用 FTS5 快速å�¬å›�大é‡�候选片段å��全部å¡�å…¥ Prompt,让 LLM 在超长上下文中自行筛选。 4. ä¸�是一个模å�‹è®­ç»ƒæˆ–微调工具 技能优化(DSPy/GEPA)调整的是输入给 LLM çš„æ��示è¯�文本中的æ�ªè¾�和示例顺åº�,ä¸�涉å�Š LLM 模å�‹æ�ƒé‡�的修改。 5. ä¸�是一个具有独立状æ€�演化的动力系统 系统状æ€�在没有外部输入时ä¿�æŒ�ä¸�å�˜ã€‚状æ€�转移由用户输入ã€�定时触å�‘器或 Webhook 等外部事件驱动,而é��由内部状æ€�方程决定。“休眠-唤醒â€�机制虽能在无输入时触å�‘ LLM 调用,但调用的内容由预设文本决定,系统本身ä¸�产生新的状æ€�分支。 6. ä¸�是一个决策优化系统 系统ä¸�定义效用函数ã€�æ�Ÿå¤±å‡½æ•°æˆ–æˆ�本函数。æ¯�一步调用哪个工具或生æˆ�哪段文本,由 LLM 的概ç�‡è¾“出决定。Evaluator 的判断ä¾�æ�®ä¸ºç¡¬æ€§é˜ˆå€¼ï¼Œè€Œé��è´�å�¶æ–¯å†³ç­–准则。 7. ä¸�是一个内生约æ�Ÿç³»ç»Ÿ 系统没有定义独立äº� LLM 的约æ�Ÿæº�æ�¥é”šå®šæˆ–验è¯� LLM 的输出。所谓“记忆策展â€�是将写入失败的决策交给å�Œä¸€ä¸ª LLM 处ç�†ã€‚ 8. 没有在代ç �层é�¢å›ºåŒ–“自我â€� 系统的“身份â€�ç”± prompt_builder在æ¯�次循ç�¯æ—¶åЍæ€�拼æ�¥çš„ System Prompt 文本所赋予。修改 USER.md或系统æ��示è¯�模æ�¿ï¼Œç³»ç»Ÿçš„“自我认知â€�会立å�³æ”¹å�˜ï¼Œæ— éœ€é‡�å�¯æˆ–é‡�新训练。 9. 知识真值的验è¯�委托给 LLM 的文本判断 Evaluator 判断“任务是å�¦æˆ�功â€�时,并ä¸�具备外部ç�¯å¢ƒçжæ€�的直æ�¥æ„ŸçŸ¥èƒ½åŠ›ã€‚å…¶åˆ¤æ–­ä¾�æ�®æ˜¯ LLM 对执行结æ�œæ—¥å¿—的文本ç�†è§£ï¼Œæˆ–工具返å›�çš„ exit_code。系统没有通过确定性逻辑(如å�•元测试)æ�¥è¯�æ˜�技能的有效性。 10. 工具执行ä¸�ç»�过沙箱隔离 core/registry/中的 execute_tool函数直æ�¥ä½¿ç”¨ Python çš„ subprocess或动æ€�导入执行注册的函数。系统å�‡è®¾è¿�行ç�¯å¢ƒå�¯ä¿¡ï¼Œä¸”工具代ç �本身无æ�¶æ„�。系统赋予 LLM 的工具调用能力,其æ�ƒé™�边界等äº�è¿�行该 Python 进程的æ“�作系统用户æ�ƒé™�,未在系统层é�¢å®�æ–½é¢�外的能力管æ�§ã€‚ 11. 学习过程存在先验信æ�¯æ�Ÿè€— Reflector生æˆ�å��æ€�文本时,ä¸�ç›´æ�¥è�·å�–å�Ÿå§‹ç”¨æˆ·è¾“入和å�Ÿå§‹è¾“出的完整语义,而是读å�– Tracker截å�–的最å�� N æ�¡å·¥å…·è°ƒç”¨æ‘˜è¦�。如æ�œä¸€æ¬¡é•¿ä»»åŠ¡æ¶‰å�Šè¶…过上下文窗å�£çš„中间步骤,早期上下文会被截断。沉淀为 SKILL.md的知识是基äº�“执行轨迹缩略图â€�生æˆ�的,而é��基äº�“完整任务全景图â€�。 三ã€�组件ä¸�技术å®�ç�°å¯¹ç…§ 组件 公开æ��è¿° æº�ç �中的对应å®�ç�° 跨会è¯�记忆 æŒ�久记忆系统,åƒ�“数字大脑â€� MEMORY.md (2200字符)和 USER.md(1375字符)两个文本文件;SQLite + FTS5 关键è¯�检索 自我进化 ä»�ç»�验中学习,越用越è�ªæ˜� 五阶段æµ�水线:Python 追踪执行 → æ�¡ä»¶åˆ¤æ–­ → LLM 生æˆ�å��æ€�文本 → LLM 生æˆ�技能文档 → 存入ç£�盘 技能å¤�用 å°†æˆ�功ç»�验沉淀为å�¯å¤�用的能力 SKILL.md 自然语言步骤文档,å�¯åŠ¨æ—¶æ‹¼æ�¥åˆ°ç³»ç»Ÿæ��示è¯�中 技能优化 æŒ�续优化技能质é‡� DSPy/GEPA 调整 SKILL.md中的æ�ªè¾�ã€�示例顺åº�和模æ�¿ç»“æ�„ 工具集æˆ� 70+ 内置工具,å�¯åЍæ€�扩展 Schema–Registry–Handler 三层分离;AST 扫æ��自动å�‘ç�°æ³¨å†Œæ¨¡å�—;工具执行ä¸�ç»�沙箱 自主决策 AI 驱动æ�¨ç�†å’Œè¡ŒåЍ ReAct 循ç�¯ï¼šæ�„建 Prompt → 调用 LLM → è§£æ��输出 → 分å�‘工具调用 主动认知 智能体具有主动性 网关层的“休眠-唤醒â€�Heartbeat 机制,定期调用 LLM 询问å��å�°çжæ€� 系统æ�¶æ�„ 智能体框æ�¶ 一组 Python 脚本(conversation_loop.pyã€�core/memory/ã€�core/learning/ã€�core/registry/等) 状æ€�æŒ�久化 — æ¯�次 LLM 调用完æˆ�å��ç«‹å�³åº�列化写入 SQLite å¹¶æ��交事务;无è¿�行时内存状æ€� å››ã€�ä¸�公开宣传的对照 公开宣传中的表述 技术事å®� “æŒ�久记忆系统â€�ã€�“策展å¼�记忆â€�ã€�“知识沉淀â€� 记忆存储为纯文本文件(.md)。检索方å¼�为关键è¯�匹é…�(FTS5)。写入超é™�æ—¶ç”± LLM 自行决策å�–èˆ�。 “AI 决策ä¸�æ�¨ç�†â€�ã€�“智能体自主行动â€� 系统ä¸�执行æ�¨ç�†ã€‚所有决策由外部 LLM 的概ç�‡è¾“出完æˆ�。系统负责拼æ�¥ Prompt 和解æ��字符串标记。 “自我进化â€�ã€�“ä»�ç»�验中学习â€�ã€�“越用越è�ªæ˜�â€� 学习循ç�¯æ˜¯ Python 脚本驱动的æµ�水线。LLM å�‚ä¸�文本生æˆ�(å��æ€�ã€�技能文档)。输出为 .md 文件。Reflector 的输入是截断å��的执行摘è¦�,é��完整任务全景。 “行为优化â€�ã€�“效ç�‡æ��å�‡â€� 优化对象是输入给 LLM çš„æ��示è¯�文本(æ�ªè¾�ã€�示例顺åº�)。ä¸�改å�˜æ¨¡å�‹è‡ªèº«èƒ½åŠ›ã€‚ “数字大脑â€�ã€�“智能体框æ�¶â€� 系统未å®�ç�°ä»»ä½•公认的认知æ�¶æ�„。核心是 ReAct 循ç�¯çš„ Python å®�ç�°ã€‚“自我â€�ç”± System Prompt 动æ€�定义,未固化äº�代ç �。 “主动智能â€� 存在定时触å�‘çš„ LLM 调用机制,但调用内容由预设文本决定,ä¸�产生新的状æ€�分支。 五ã€�技术画åƒ� Hermes Agent 在工程底层等价äº�以下æ“�作åº�列: 将当å‰�状æ€�(对è¯�ã€�记忆ã€�工具返å›�)åº�列化为文本 → 调用外部黑盒(LLM)生æˆ�下一组动作指令的文本 → è§£æ��文本并执行对应函数 → 将执行结æ�œå†�次åº�列化为文本写入ç£�盘。 综å�ˆæ‰€æœ‰æŠ€æœ¯äº‹å®�,å�¯è¿›ä¸€æ­¥ç²¾ç‚¼ä¸ºï¼š 一个具备事务性æŒ�久化能力的文本驱动å�‹è‡ªåŠ¨åŒ–ç®¡é�“。它以ç£�盘文件作为共享黑æ�¿çš„载体,以外部 LLM 作为唯一的“读写æ�§åˆ¶å™¨â€�,将所有认知负担(记忆å�–èˆ�ã€�任务规划ã€�技能æ��炼ã€�自我认知)通过 Prompt å�¸è½½ç»™å¤–部 API,自身仅ä¿�留字符串标记解æ��和进程级 I/O 调度功能。 å…­ã€�补充 1. 对应 二.11 Reflector 的输入是 Tracker 截å�–的最å�� N æ�¡å·¥å…·è°ƒç”¨æ‘˜è¦�,而é��完整对è¯�日志。Crystallizer 基äº�摘è¦�生æˆ� SKILL.md。 系统未定义任何机制æ�¥è®¡ç®—å�Ÿå§‹å¯¹è¯�日志ä¸� SKILL.md之间的信æ�¯ç†µå·®å¼‚或互信æ�¯ä¿�ç•™ç�‡ã€‚ä»�å�Ÿå§‹æ—¥å¿—到技能文档的转æ�¢æ˜¯ä¸€ä¸ªæœ‰æ�Ÿå�‹ç¼©è¿‡ç¨‹ï¼Œä½†å…¶æ�Ÿè€—未被é‡�化。 2. 对应 二.7 记忆写入超é™�时,系统ä¸�执行确定性删除逻辑,而是将决策æ�ƒäº¤è¿˜ç»™ LLM。prompt_builder.py动æ€�æ�„建 System Prompt,其中的规则由 LLM 在对è¯�中决策是å�¦ä¿®æ”¹ã€‚ 系统缺少独立äº� LLM 的外部å�‚考输入(如事å®�校验器ã€�状æ€�验è¯�器)æ�¥æ��供负å��馈信å�·ã€‚Evaluator 的判定ä¾�æ�®ä¸º LLM 对日志的文本ç�†è§£æˆ– exit_code。 3. 对应 二.2 conversation_loop.pyçš„å�•层循ç�¯ä¸­ï¼ŒLLM 在å�Œä¸€ä¸Šä¸‹æ–‡ä¸­å�Œæ—¶æ‰¿æ‹…任务执行ã€�自我评判ã€�规则制定三é‡�身份。prompt_builder.py将所有内容å�‹å…¥å�Œä¸€ Prompt,无结æ�„化分层。 系统没有定义“元认知层â€�æ�¥ç›‘ç�£â€œè®¤çŸ¥å±‚â€�的独立模å�—。任何监ç�£è¡Œä¸ºéƒ½éœ€è¦� LLM 在å�Œä¸€ä¸ªä¸Šä¸‹æ–‡çª—å�£ä¸­è‡ªè¡Œå®Œæˆ�。 4. 对应 二.2ã€�二.8 MEMORY.mdå’Œ SKILL.md是é�™æ€�文本文件,仅在æ�„建 Prompt 时被读å�–并拼æ�¥ä¸ºæ–‡æœ¬ã€‚这些文本ä¸�作为系统æ�¶æ�„的一部分被内化——没有对应的数æ�®ç»“æ�„ã€�状æ€�å�˜é‡�或æ�§åˆ¶æµ�逻辑。 系统没有定义任何认知图å¼�æ�¥åЍæ€�更新对世界的ç�†è§£ã€‚所有“更新â€�表ç�°ä¸ºæ–‡æœ¬æ›¿æ�¢ã€‚ 5. 对应 二.6 工具选择的决策路径为:æ�„建包å�«å·¥å…·å®šä¹‰çš„ Prompt → 调用 LLM → è§£æ�� LLM 输出的 æ ‡è®°ã€‚路径选择由 LLM 的概ç�‡é‡‡æ ·å†³å®šã€‚ 系统无期望效用计算,无折ç�°å› å­�,无é£�险å��好å�‚数。Evaluator 的判定ä¾�æ�®ä¸ºç¡¬æ€§é˜ˆå€¼ï¼ˆå·¥å…·è°ƒç”¨æ¬¡æ•°â‰¥5 且任务æˆ�功),ä¸�进行è´�å�¶æ–¯å��验概ç�‡æ›´æ–°ã€‚ 6. 对应 二.5ã€�一.7 系统状æ€�在没有外部输入时ä¿�æŒ�ä¸�å�˜ã€‚æ¯�一次用户输入或定时心跳都是对系统的外部冲击,状æ€�转移由这些事件驱动,而é��由内部状æ€�方程决定。 系统没有定义在时间轴上è¿�续演化的状æ€�å�˜é‡�。昨天的 SKILL.md和今天的 SKILL.md之间ä¸�存在动力学è¿�续性约æ�Ÿã€‚系统状æ€�å�¯ä»¥åœ¨æ— å¤–部å�šåŠŸçš„æƒ…å†µä¸‹å�‘生çª�å�˜ã€‚ 7. 对应 二.11ã€�一.2ã€�一.3 系统维æŒ�ä½�熵结æ�„(æ��炼技能)的唯一手段是调用 LLM 生æˆ�文本。LLM 的采样过程本身是一个引入éš�机性的过程。技能æ��炼的输出基äº�截断摘è¦�,而é��完整任务信æ�¯ã€‚ 系统ä¸�å�‘确定性校验ç�¯å¢ƒè¾“出“废热â€�(å�³é€šè¿‡ç¡®å®šæ€§é€»è¾‘验è¯�并固化的事å®�)。æ¯�一次记忆é‡�写和技能生æˆ�都在消耗 API 能é‡�,但系统没有将任何结æ�œå›ºåŒ–为ä¸�å�¯å�˜çš„结æ�„。技能文档å�¯ä»¥åœ¨å��续被å†�次é‡�写。 8. è´Ÿå��馈ä¸�自指递归的区别 在æ�§åˆ¶è®ºä¸­ï¼Œè´Ÿå��馈è¦�求系统有一个独立äº�被æ�§å¯¹è±¡çš„å�‚考输入,通过感知输出ä¸�å�‚考值的å��å·®æ�¥ä¿®æ­£è¡Œä¸ºã€‚ 本系统的逻辑是:让被æ�§å¯¹è±¡ï¼ˆLLM)自己å�»ä¿®æ”¹æ�§åˆ¶å™¨ï¼ˆSystem Prompt)的规则å�‚数。这ä¸�是负å��馈,而是自指递归。系统缺少独立äº� LLM çš„å�‚考输入æ�¥æ��供负å��馈信å�·ã€‚ 七ã€�技术事å®�汇总 系统是一组 Python 脚本,管ç�† LLM API 调用和本地文件读写。 记忆存储为纯文本文件(.md)和 SQLite æ•°æ�®åº“(FTS5 关键è¯�检索)。 技能存储为自然语言 Markdown 文档,å¤�用时拼æ�¥åˆ°ç³»ç»Ÿæ��示è¯�。 学习循ç�¯æ˜¯ Python 脚本驱动的æµ�水线,LLM å�‚ä¸�两个文本生æˆ�ç�¯èŠ‚ï¼ˆå��æ€�ã€�技能文档)。 技能优化调整的是输入给 LLM çš„æ��示è¯�文本,ä¸�改å�˜æ¨¡å�‹å�‚数。 系统ä¸�包å�«ç‹¬ç«‹äº� LLM çš„æ�¨ç�†æ¨¡å�—ã€�决策优化模å�—或内生约æ�Ÿæ¨¡å�—。 核心引æ“�(对è¯�循ç�¯ï¼‰æ˜¯ ReAct 模å¼�的标准å®�ç�°ã€‚ 工具å�‘ç�°é‡‡ç”¨ AST é�™æ€�扫æ��自动化注册。 工具执行ä¸�ç»�沙箱隔离,æ�ƒé™�边界等äº�æ“�作系统用户æ�ƒé™�。 系统未å®�ç�°ä»»ä½•公认的认知æ�¶æ�„模å�‹ã€‚ 系统的“自我认知â€�ç”± System Prompt 动æ€�定义,未固化äº�代ç �。 知识真值的验è¯�委托给 LLM 对日志文本的ç�†è§£ï¼Œè€Œé��确定性逻辑。 学习循ç�¯çš„ Reflector 阶段输入为截断å��的执行摘è¦�,存在先验信æ�¯æ�Ÿè€—。 系统存在“休眠-唤醒â€�的定时 LLM 调用机制,但调用内容由预设文本决定。 检索策略为“FTS5 å�¬å›� + 超长上下文筛选â€�,用算力æ�¢å·¥ç¨‹å¤�æ�‚度。 系统采用“无内存è¿�行时â€�æ�¶æ�„:æ¯�次 LLM 调用完æˆ�å��ç«‹å�³æŒ�久化,ä¸�维护è¿�行时动æ€�状æ€�。 系统没有定义状æ€�在时间轴上演化的动力学方程,状æ€�转移由外部事件驱动。 系统ä¸�å�‘确定性校验ç�¯å¢ƒè¾“出固化结æ�œï¼ŒæŠ€èƒ½æ–‡æ¡£å�¯åœ¨å��续被é‡�写。 系统缺少独立äº� LLM çš„å�‚考输入æ�¥æ��供负å��馈信å�·ã€‚ 社区å��馈中存在 Token 消耗ã€�学习å�¯æ�§æ€§ã€�项目维护效ç�‡æ–¹é�¢çš„讨论。 本文基äº�公开æº�ç �和社区讨论å�šæŠ€æœ¯äº‹å®�梳ç�†ï¼Œä¸�包å�«ä»·å€¼åˆ¤æ–­ã€‚