让 Agent 在对话中发展:自进化机制的五层实现

[复制链接]
发表于 2026-6-14 22:06:58 | 显示全部楼层 |阅读模式
自进化 (Self-evolution) 是 Agent Harness 的焦点模块,拥有自进化本领后 Agent 才华在长期的任务交互中不绝发展,总结和改进本身的技能、记任命户的反馈和偏好,从被动应答升级为可以或许自动复盘和自我发展的 Agent。本文以 CowAgent 开源项目为例,先容 Agent 框架中五层自进化机制的架构筹划和工程实现。
团体筹划

要实现 Agent 的自我进化,不但是让它记取信息,更要能通过连续的反馈改进和修复本身。自进化机制根据深度差别可以分别为:记载信息、生存信息、自动办法、整理沉淀、自我重构,差别深度必要改进的对象、触发的时机和影响范围都差别。
在具体实现上,有两个关键点要思量: "什么时间触发进化" 和 "要改进的是什么"。在 CowAgent 中,完备的自进化机制由五个层级共同构成,分别对应差别的进化深度,包罗:底子的影象和知识维护、上下文智能总结、会话后自动复盘、梦乡影象整理、源码自更新。团体架构如下:

层级改进内容触发时机进化深度底子影象和知识维护影象 / 知识 / 提示词每次对话中记载上下文智能总结影象上下文超限时生存会话后自动复盘技能 / 影象 / 提示词 / 任务会话空闲后办法梦乡影象整理长期影象天天定时沉淀源代码自更新代码被动/自动触发自我重构一、底子影象和知识维护

最底子的一层自进化实在发生在每一次的对话过程中,Agent 通过大模子的工具决定本领以及体系提示词的引导,判定对话中是否包罗有代价的信息,并通过内置工具把偏好、决定、究竟、履历辅导等写进长期影象,把可复用的知识写进知识库,把涉及到 Agent 设定及运行规则等内容写入提示词文件。
这三类信息维护的对象和时机各不雷同:

  • 影象:长期化在工作空间的文件中,又分焦点影象和天级影象。焦点影象(MEMORY.md)存放用户偏好、关键决定这类长期有效的究竟,会被注入到每次对话的体系提示词里,以是必须保持精粹;天级影象(memory/YYYY-MM-DD.md)按天记载关键变乱和对话择要,只在 Agent 用影象检索工具时才加载。
  • 知识库:以 Markdown 源文件存于工作空间、向量化数据存于数据库,按主题构造、页面间交织引用成知识图谱。当对话中发生搜刮学习、深度研究等任务时,Agent 会自动把整理后的知识沉淀进来。
  • 提示词:操行设定(AGENT.md)、规则(RULE.md)、用户信息(USER.md)等也支持在对话中被及时修改,它们都会加载进体系提示词,让 Agent 根据反馈连续调解自身设定,贴适用户风俗。

上图示例:用户在一次提问中表达了偏好并让 Agent 研究一个新概念,Agent 在答复的同时自动把偏好写进影象、把整理后的资料沉淀进知识库
二、上下文智能总结

上一节关于长期影象的维护办理的是怎样记取关键信息,而这一节重要办理的是 Agent 在进化中怎样不丢失信息。上下文是短期影象,项目中提供了可设置的轮次和 Token 长度限定,当超限时不能简朴裁剪掉旧消息,而是要把此中的告急信息提炼总结后写入天级影象中。整个智能压缩分四步处理惩罚:

  • 截断超长工具结果:第一道也是最便宜的一道。汗青轮次里单个工具结果(如一次返回上万行的检索)凌驾阈值时,只生存首尾两段加一句省略阐明,正在举行的当前轮次不动。这一步纯字符串处理惩罚、不调模子,通常就能挡住大部门增长。
  • 按完备轮次裁剪:轮次超限时,以"一轮完备对话"为最小单位裁掉最早的一半,而不是逐条删消息——如许能包管一次工具调用的入参和实行结果始终成对生存,不会给模子留下"调用了工具却没有结果"的残破上下文。被裁的内容并不是抛弃,而是由 LLM 举行整理、提炼、总结,一方面写入当天的天级影象长期化,另一方面注入回生存消息的开头,让模子在丢掉原始细节后仍能接住前文的来龙去脉。
  • 按 Token 压缩:当裁完轮次仍超出 Token 限定时,再做进一步更精致化的裁剪,当轮次本就不多时会对每一轮做文本压缩(只留用户的首条提问和 Agent 的末条复兴,剥掉中心的工具调用链);当轮次较多时则继续裁剪并总结更早的前一半对话。
  • 溢出兜底:当模子 API 直接抛出上下文溢出,同样会先把当前对话总结进影象,再做一次更激进的截断,这是末了一道保险。

三、会话后自动复盘

会话后复盘 是自进化中自动性最强、也是最焦点的部门,当一段对话告一段落、进入空闲时,Agent 会自动回顾整个会话内容,把对话中袒露的标题修复、将可复用流程固化为技能、把没做完的任务接着完成等。
3.1 进化内容

起首来看在复盘中重要做哪些改进:

  • 优化和创建技能:当某个 Skill 在用的时间袒露了标题(比方设置错误、缺少步调、内容逾期等),会直接修改技能文件让标题不再复发;如果在对话中跑出了一套可复用的流程,则会自动固化成一个新技能,在下次雷同任务时可以更稳固地实行。这一步让 Agent 从「技能的使用者」变成「技能的维护者」。
  • 收尾未完成任务:把答应了用户但没做完、或因暂时性故障 (比方网络颠簸、情况标题等) 停止的任务,举行 review 并再次实验完成。
  • 补齐影象 / 知识 / 提示词:作为查缺补漏,主对话本身就会自动写入影象和知识库,以是这里只作为兜底。

上图示例:Agent 在会话后复盘中发现可复用的工作流程,创建为一个新技能,并自动关照用户
在改进中有两个关键的筹划弃取:

  • 技能和未完成任务是重要代价,影象、知识、提示词只作为查缺补漏,由于这部门已有其他多层机制覆盖,无需太多重复关注。
  • 修复源头而不是只记载标题:如果标题根因在技能本身,准确的动作是改技能,而不但是在影象里记一句「技能 X 有个错」,这是现在很多 Agent 项目都存在的标题。记载症状不能制止复发,只有优化源头才华根除标题。
3.2 触发时机

自动复盘会在会话竣事、空闲一段时间后触发,且必要积聚肯定对话轮次才值得复盘,简朴说就是「用户不再继续聊了,且这段对话有富足的信息量」,两个条件都满足才触发一次。
在项目中,可以通过 Web 控制台的开关一键开启和关闭自进化开关,别的触发空闲时间 (默认10分钟) 和 会话轮次阈值 (默认6轮会话) 也可以通过设置文件举行进一步调解。

3.3 安全可控

让 Agent 动手改本身,一个最告急的标题就是 "会不会改坏、会不会打搅用户"。一个支持自主修改的体系,最容易出现的几个标题包罗:1. 把错误的信息写进影象或技能等;2. 实行下令时越权改到体系内置的模块;3. 修改完无法追溯和回退。
以是这一层的筹划就是围绕 可追溯、可回滚、隔离实行 的安全可控目标来实现:

  • 隔离实行:每次的复盘是一个独立的异步暂时任务,使用同一个主模子,但可用工具集大幅收紧(只能读上下文、改影象与技能),不污染、也不会拖慢主对话,同时项目自带的内置技能会在代码层面举行掩护。
  • 变更可回滚:在 Agent 改动前会自动备份干系文件,用户如果不认同某次改动,直接在对话发送消息 (比方 "把刚才的改动打消") 即可还原工作空间。
  • 变更可追溯:Agent 会将每一次变更记载长期化存储于空间中,在「Web 控制台-影象-自主进化」页面中可以追踪具体信息。
  • 未变更则不打搅:复盘后会查对是否有现实的改动,如果有变更则会自动将内容推送给用户,否则全程静默、用户无感知。

四、梦乡影象整理

梦乡影象整理 (Deep Dream) 由天天夜间的定时任务 (默认 23:55) 自动完成。起首会将当天各会话的上下文 (短期影象) 整理写进天级影象,随后实行一次影象蒸馏,读取当前的焦点影象和当天的天级影象,交由模子举行去重、归并相近条目、修剪、提炼新信息并更换旧信息,输出一份精粹后的焦点影象,同时会天生一篇叙事风格的梦乡日志日志,记载这次整剃头现了什么、归并和清算了什么。
梦乡整理是天天运行的全局视角的自进化,对当天全部会话的一次通盘梳理,办理的正是随着时间推移,长期影象最容易出的两个标题:不绝膨胀 和 自相抵牾。整个过程依照几条焦点规则:

  • 寄义相近的多条归并成一条更高密度表述;
  • 从天级日志日志里萃取值得永世记取的新信息(偏好、决定、规则、履历、辅导);新旧影象辩论以新条目更换旧条目;
  • 暂时记载、空条目、已被覆盖的冗余则直接清算,终极将焦点影象 (MEMORY.md) 控制在肯定命量内 (约 50 条以内)。

为了让影象整理更安全可控,在实现上做了几层掩护:

  • 当天没有新日志日志时直接跳过,绝不空覆写已有的焦点影象
  • 对日志内容和每条消息分别做哈希去重,同样的内容不会被重复写入天级影象(纵然对话跨天)
  • 在提示词层面强束缚整理的真实性,制止凭空天生不存在的影象
除了天天定时跑,也支持手动触发指定整理近来 N 天的影象,全部的梦乡整理内容会以日志的情势长期化生存在工作空间中。
五、源代码自更新

源码自更新指的是 Agent 在运行过程中可以或许及时修改自身代码并重启,以办理无法通过外置技能、工具等办理的标题,由于存在肯定不可控性,这里更多做开放性讨论。
出于安全性思量,现在 CowAgent 项目没有把源码自更新作为内置开放的功能,但用户可通过指定要求来实现该结果。项目默认就是源码安装方式,Agent 天然有访问源代码的权限,只需将项目代码路径告诉 Agent 并给出明白改动需求即可让其修改自身代码并重启,如果想要让 Agent 可以或许更自动地修改代码,还可以封装为 Skill 或 Prompt 作为内置本领。
修改代码是修改 Agent 本领本身,不像变更影象、技能等数据,影响面更大。源码自更新存在两个难点:

  • 怎样制止 Agent 把代码改坏,影响正常启动
  • 怎样在当进步程中关闭自身并重启新的进程
为相识决这两个标题,项目中实现了一个 cow self-restart 的 CLI 下令,专门用于 Agent 的自重启。起首会对代码举行运行自检,出现任何依靠导入或表明器错误都会停止重启;自检通事后则会启动一个脱离于当进步程树的接力进程,在这个进程中对旧的进程举行关闭,并启动新的进程,实现优雅自重启。
而在开源项目场景中,Agent 修改自身代码实在另有另一个标题,就是版本辩论。当当地修改代码后,一定会相对主干分支形因素叉,后续官方版本更新后,代码拉取就有大概存在辩论,这个时间就必要依靠人工大概 Agent 资助举行办理了。

上图示例:Agent 自行定位到自身代码标题并修改,再通过下令完成自检与重启
总结

总结一下,我们通过不绝递进的五层筹划让 Agent 学会自动调解本身的提示词、影象、知识、技能、乃至是源码,回顾团体筹划思绪,难点实在不是实现修改本身的本领,而是让它可以或许改得克制、改得可控。目标实在很淳厚:真正实现一个越用越懂你、越用越少犯错的 Agent,而不是天天重新认识你一遍的 Agent。
文中的实现来自开源项目 CowAgent,感爱好可以参考其 源码 与 文档。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表