GenericAgent:一个充分利用上下文信息的自主进化智能体

现在开源社区有很多Agent的插件,一股脑的把MCP、Skills、Subagent等部件都塞进去,都宣传自己才是那个最强大的解决方案。与MCP类似,Skills也是出现了开发者比用户更多的现象。这不禁令我思考起一个问题:我们真的需要这么多Skills吗?如果每个人都需要不同的Skill,那么更合适的做法是让Agent在处理具体任务的时候,把个人复杂的业务流程沉淀为Skills,而不是在一开始就预先定义。

针对这种情况,现在一些Agent主打能自我成长,能自动创建新技能,比如之前介绍过的Hermes。但是今天我将要介绍一个新的Agent,即GenericAgent,它的设计精髓可以概括为分层记忆系统 + 9个原子工具,相比之前的Hermes,同样是用Python编写的,但是代码量更少,仅需约3000行代码,更容易学习其中的核心精髓。

一、关键特性简析

1. 极简循环

agent_loop.py中, agent_runner_loop函数实现了最纯粹的循环逻辑,仅约100行代码就实现了经典的ReACT范式,不像其他Agent框架一样冗余。

python 复制代码
# agent_loop.py
while turn < handler.max_turns:
    # 1. 思考与决策
    response_gen = client.chat
    (messages=messages, tools=tools_schema)
    # 2. 工具分发与执行
    for ii, tc in enumerate(tool_calls):
        gen = handler.dispatch(tool_name, 
        args, response, index=ii)
        outcome = (yield from gen)
    # 3. 状态反馈与上下文更新
    messages = [{"role": "user", "content": next_prompt, "tool_results": tool_results}]

2. 自我进化

GenericAgent的自我进化是通过它的长程记忆更新工具start_long_term_update实现的:

python 复制代码
# ga.py 中的记忆蒸馏提示词片段
def do_start_long_term_update(self, args, response):
    prompt = '''### [总结提炼经验] ... 
    - 环境事实(路径/凭证/配置)→ file_patch 更新L2
    - 复杂任务经验(关键坑点/重要步骤)→ L3 精简 SOP
    **禁止**:临时变量、未验证信息...'''

do_start_long_term_update方法中,Agent会触发一个蒸馏过程。它要求LLM回顾最近的任务,提取「经过验证成功且长期有效」的环境事实、用户偏好和复杂任务经验。

3. Token节省策略

llmcore.py中,有一段非常实用的优化:

python 复制代码
# llmcore.py
def compress_history_tags(messages, 
keep_recent=10, max_len=800):
    # 自动截断过长的thinking和tool_result标签
    _pats = {tag: re.compile(rf'(<{tag}>)
    ([\s\S]*?)(</{tag}>)') 
             for tag in ('thinking', 
             'tool_use', 'tool_result')}
    # ... 只有最近的 10 条消息保留较多细节,旧消息仅保留摘要

compress_history_tags会自动截断历史消息中过长的<thinking><tool_use><tool_result>等标签内容。 除了标签截断外,还有以下策略同样用于Token优化:

  • 滑动窗口管理 :trim_messages_history实时监控Token消耗,当接近上限时自动剔除最早的对话,并确保首条消息始终是user角色。

  • HTML 简化 : web_scan在获取页面时,会调用simphtml.py过滤掉侧边栏、广告等无关内容,并将复杂的HTML结构压缩为极简格式,大幅降低了输入Token。

  • 分层记忆注入 :通过L0-L4的分层机制,只将当前任务最相关的知识注入Prompt,避免了全量历史的堆砌。

二、分层记忆架构深度分析

GenericAgent的分层记忆系统是其核心,旨在通过最小化上下文占用实现长期能力的稳步增长。

1. 记忆层级架构概览

通过对memory_management_sop.md的分析可知,GenericAgent的记忆被分为以下5个层级:

层级 名称 存储位置 职责
L0 元规则 assets/sys_prompt.txt 核心公理、系统约束和基础行为准则
L1 记忆索引 memory/global_mem_insight.txt 极简导航索引(严格控制 ≤30 行),用于快速定位 L2/L3 知识
L2 全局事实 memory/global_mem.txt 存储稳定的环境事实(路径、配置、凭证、常量等)
L3 任务技能 memory/ 目录下的 .md 或 .py 针对特定复杂任务的可复用流程(SOP)或工具脚本(Skill)
L4 会话归档 memory/L4_raw_sessions/ 从已完成任务中提炼的原始记录,用于长程反射和回溯

从上述表可以看出,最小充分指针是GenericAgent的核心设计理念,在memory_management_sop.md中明确提到: 「上层只留能定位下层的最短标识,多一词即冗余」。

  • L1 (30行) :只写「微信消息 -> wechat_sop.md」。
  • L3 (SOP) :只写「第一步:执行 xxx.py,第二步:注意 xxx 坑点」。
  • L3 (Py) :将具体的执行逻辑封装在 Python 代码中。

这种分层设计确保了Agent在面对复杂任务时,不会因为System Prompt过长而迷失在无关信息中,同时也极大地节省了Token成本。

2. 实现细节

2.1 记忆的注入与感知

agentmain.py中,系统通过get_system_prompt()将L0和L1注入到每一轮对话的System Prompt中:

python 复制代码
# agentmain.py
def get_system_prompt():
    with open(os.path.join(script_dir, 
    f'assets/sys_prompt{lang_suffix}.txt'), 
    'r', encoding='utf-8') as f: 
        prompt = f.read() # 加载L0
    prompt += get_global_memory() # 加载L1索引 
 
    return prompt

上述的get_global_memory()函数通过读取global_mem_insight.txtinsight_fixed_structure.txt 来组装L1的内容。有了这层索引之后,LLM可通过L1中的关键词(如 wechat -> wechat_sop.md )感知到L3技能的存在,随后自主调用file_read读取详细信息。

2.2 记忆的固化与更新

系统通过两个核心工具实现从「临时记忆」到「永久记忆」的进化:

  1. update_working_checkpoint ga.py中的do_update_working_checkpoint方法,用于在任务进行中设定临时记忆点,防止长任务中的上下文丢失。

  2. start_long_term_update 这是进化的关键 。当任务完成时,Agent调用此工具触发长程记忆提取,它会引导LLM阅读memory_management_sop.md,确保只有被工具调用验证过的事实才允许写入。

2.3 自动归档与压缩

L4层级通常由后台调度器处理。调度器首先扫描temp/目录下的原始对话记录,然后调用压缩脚本compress_session.py对长对话进行摘要,最后将摘要存入L4目录,供未来类似任务参考。

三、结论

GenericAgent通过3000行代码证明了:

  • 分层记忆比海量上下文更高效

  • 原子工具的组合比预设插件更灵活

  • 自我反思机制是AI从个人助手向智能终端转变的关键

GenericAgent给我的启发是Agent的核心不在于它现在能做什么,而在于它如何记住它是怎么做到的。侧面佐证了未来Agent的发展方向可能就是完全闭环、能够自我修正、自我进化的,而不再需要人为设定很多工具和技能,甚至也不需要人为介入Agent的执行流程。

相关推荐
踩着两条虫2 小时前
VTJ:ProjectModel 核心设计
低代码·架构·ai编程
ZZH_AI项目交付2 小时前
一个 iOS 埋点 SDK 从 0 到 1,再到真实项目接入打磨
ios·app·ai编程
容沁风2 小时前
保持上网认证
ai编程·智谱
安思派Anspire2 小时前
安德烈·卡尔帕西扼杀了RAG。还是他没有?大语言模型维基模式
llm·aigc·openai
灵机一物2 小时前
灵机一物AI原生电商小程序、PC端(已上线)-从 Vibe Coding 到 Wish Coding:AI 编程范式跃迁与蚂蚁灵光技术解读
ai编程
踩着两条虫2 小时前
VTJ:项目模型系统
前端·低代码·ai编程
sunneo2 小时前
专栏A-AI原生产品设计-02-Agent设计范式
人工智能·产品运营·产品经理·ai编程·ai-native
Trouvaille ~2 小时前
零基础入门 LangChain 与 LangGraph(七):真正理解 LangGraph——从工作流、状态图到三个核心案例
python·langchain·agent·workflow·langgraph·ai应用开发·智能体开发
扬帆破浪2 小时前
免费开源的WPS AI插件 察元AI助手:generateMultimodalAsset:类型校验与分支派发
人工智能·开源·ai编程·wps