May 8, 2026 6 min read Hyr1sky

Generic Agent 浅析

围绕 Generic Agent 的长期运行架构展开,梳理上下文信息密度、最小工具集、分层记忆、上下文压缩与反思驱动的自我进化机制。


底层原理:上下文信息密度最大化

1. 长期运行 Agent 的两大根本挑战

在真实环境中持续运作的目标驱动型 Agent,必然会遇到以下系统性瓶颈:

  • 上下文爆炸(Context Explosion):工具定义、历史轨迹、中间结果层层堆叠。无关信息不仅被浪费,还会主动稀释模型的注意力,引发状态混淆与幻觉。
  • 经验停滞循环(Stagnation Loop):缺乏经验蒸馏机制,每次遇到相似任务都在重新探索。耗费大量 Token 却毫无能力增长。

2. 核心反直觉认知:LLM 的三重上下文陷阱

长上下文窗口 $\neq$ 高决策质量。 盲目塞入信息会触发相互强化的恶性循环:

  1. 位置偏差(Lost-in-the-Middle):模型极易“遗忘”夹在上下文中间的关键信息。
  2. 注意力稀释(Attention Dilution):无关噪音越多,模型分配给关键证据的注意力就越少。
  3. 有效窗口收缩:有效利用的上下文远小于名义窗口容量。为了补偿信息丢失而塞入更多内容,反而会加剧前两个陷阱。

3. GA 的第一性原理:上下文信息密度 (Information Density)

GA 摒弃了堆砌上下文的做法,其核心设计约束是:在有限预算内,最大化每一个 Token 对当前决策的贡献。

  • 概念公式信息密度 = 决策相关信息量 (完备性) / 上下文总长度 (简洁性)

  • 底层结构性张力

    • 完备性 (Completeness):必须显式包含决策所需信息,防幻觉。
    • 简洁性 (Conciseness):必须清除冗余噪音,防注意力稀释。
    • 洞察:这两者存在根本矛盾。增加信息提完备性必然削弱简洁性;压缩信息提简洁性必然增加丢失关键细节的风险。这不是单纯的窗口预算问题,即使窗口无限大,这种底层张力依然存在。

4. GA 的系统性解法:四层信息密度优化

GA 通过 4 个核心机制,在信息生命周期的不同阶段进行“瘦身”与提炼:

优化机制作用阶段核心策略与目的
1. 最小原子工具集工具定义注入时极端克制:仅保留 9 个工具覆盖五大能力。从源头减少每轮必定重复的“先天开销”。
2. 分层按需记忆记忆加载时拒绝全量加载:建立索引层到事实/SOP层的分层架构,仅在需要时按需检索相关经验。
3. 截断与压缩流水线对话进行中主动瘦身:通过四阶段(截断返回值、压缩历史、驱逐消息等),防止活跃上下文在交互中失控膨胀。
4. 反思驱动自我进化跨任务经验积累打破停滞:将成功的探索轨迹蒸馏为高度结构化的 SOP/代码/技能,用极简的形态优化“未来的上下文”。

5. 范式跃迁:从 Prompt 到 Context

  • Prompt Engineering(提示工程):优化“一句话怎么说”,适用于单轮简单任务。
  • Context Engineering(上下文工程):将平衡“完备性”与“简洁性”视为约束优化问题,系统性地管理一轮对话中所有组件(工具、记忆、历史)的注入、压缩与替换,决定 Agent 的长期表现。

GenericAgent 系统全貌与运行机制

核心设计基调:模型无关(Model-Agnostic)

GA 的底层架构与具体 LLM 模型完全解耦。推理引擎(如 Claude, GPT)可随时插拔替换,不影响执行逻辑、工具接口或记忆架构,系统能力随模型升级而自然进化。

1. 统一 Agent 循环 (Unified Agent Loop)

GA 通过一个标准的 “推理 → 行动 → 观察” 闭环驱动所有复杂任务,避免为不同任务定制不同的执行流。

  • Step 1: 构建执行上下文 每一轮开始时,并非简单转发指令,而是按信息密度最大化原则精准组装: 执行上下文 = 系统提示词 + 始终在线记忆 (索引层) + 工具定义 (仅 9 个) + 任务规格 + 压缩后的历史 + 工作记忆

  • Step 2: LLM 推理与决策 模型基于上下文输出两种结果:直接回复(无需工具)或 发起工具调用(Tool Call)。

  • Step 3: 工具执行与结构化反馈 统一分发器 (Unified Dispatcher) 路由到本地执行器。关键在于返回结构化信号(状态、核心输出、元数据),而非原始长文本,便于模型快速解析。

  • Step 4: 状态更新 结构化反馈追加到对话历史,触发下一轮决策,直至任务完成并沉淀为长期记忆。

2. 两种执行模式 (Execution Modes)

GA 的两套运行模式完全共享同一套基础设施(统一循环与记忆系统),仅在触发方式上有所不同:

  • 交互模式 (Interact Mode):用户指令驱动(如“帮我整理文件”)。支持随时请求人类介入(ask_user)。
  • 反射模式 (Reflect Mode):无需人工,后台自动触发。
    • 看门狗 (Watchdog):基于环境事件(如报错日志、新文件生成)触发。
    • 定时任务 (Scheduled):基于时间规则触发。

执行边界约束(确保长期运行的安全可控):

  • 轮次上限:防止死循环。
  • 故障升级策略:微调重试 → 切换策略/搜索信息 → 暂停请求人类介入。
  • 随时可中断:进度会自动保存至工作记忆。

3. 四大核心机制的生命周期矩阵

四个机制并非独立模块,而是贯穿信息生命周期,协同优化上下文信息密度的有机整体:

生命周期阶段核心机制作用与目的
① 注入阶段最小原子工具集控制工具定义开销。仅 9 个工具覆盖五大能力。
② 加载阶段分层记忆架构控制记忆按需加载开销。L1 提供索引,按需读取 L2/L3。
③ 运行阶段截断与压缩流水线控制历史轮次累积开销。四阶段主动瘦身,防止上下文膨胀。
④ 沉淀阶段反思驱动自我进化将成功的执行轨迹蒸馏为 SOP/代码,用极简形态优化未来的上下文。

4. 实战流转示例 (以“下载数据集”为例)

  1. 注入记忆:L1 索引注入“下载 SOP”的指针。
  2. 按需加载:模型调用 file_read 精准加载 L3 层的具体 SOP(分层记忆机制)。
  3. 工具执行:根据 SOP 步骤,调用 code_run 执行下载脚本(最小工具集机制)。
  4. 状态反馈:返回结构化成功信号,历史过长则触发压缩(截断压缩机制)。
  5. 经验沉淀:若为首次执行,完成后蒸馏为新 SOP 存入记忆(自我进化机制)。

GenericAgent 机制一 —— 最小原子工具集

1. 核心问题:工具膨胀的系统性代价

给 Agent 几十个专用工具(如“瑞士军刀”)看似强大,实则是低效的设计,会带来两层致命代价:

  • 提示词层面(Token 损耗):工具定义(Schema)是每轮对话必定重复支付的固定成本。哪怕从不使用的工具,也会持续挤占宝贵的上下文预算。

  • 策略层面(决策瘫痪):工具越多,功能重叠和歧义性越大(如 FileReadTool vs GrepTool vs BashTool)。这会显著增加模型的选择困难,导致执行动作不稳定和高频试错。

2. GA 的解法:乐高哲学与 9 大原子工具

GA 摒弃专用工具,采用“乐高积木”哲学:只提供极少量的基础模块,通过序列组合涌现出复杂能力。

入选工具必须满足:原子性(不可再分的单一职责)与 组合泛化性

五大能力类与 9 个原子工具:

  1. 状态观测(只读,感知世界)file_read(读文件)、web_scan(扫网页)
  2. 动作执行(编辑/运行,改变世界)file_patch(精细修改)、file_write(覆写)、code_run(执行代码)、web_execute_js(网页交互)
  3. 上下文保持(记忆管理)update_working_checkpoint(短期工作记忆)、start_long_term_update(沉淀长期记忆)
  4. 干预请求(边界控制)ask_user(请求人类介入)

3. 工具设计的隐藏“心法”(信息密度优化体现)

这 9 个工具并非简单的 API 封装,而是针对“信息密度”和“执行纪律”做了激进的底层优化:

  • 万能原语 vs 快捷脚手架:理论上靠 code_run 自己写脚本能搞定一切。另外 8 个工具存在的本质是作为专用快捷方式(Harness),用来降低高频动作的决策与编写成本。
  • 精准截断(拒绝全文搬运)web_scan 会直接剔除网页广告和隐藏 DOM 并做语义提取,把上万 Token 的网页压缩到一个数量级;file_read 强制支持行号和关键词锚定。
  • 快速失败机制(Fail-Fast)file_patch 要求必须“唯一匹配”,如果找不到或有多处匹配会立刻报错,绝不静默乱改。
  • 强制动作纪律code_run 每轮只能调一次,强制 Agent 必须“先看结果,再做下一步”,防止盲目连续盲操。

4. 故障升级机制 (Staged Escalation)

当工具执行报错时,GA 遵循严格的“三步走”纠错纪律,防止死循环:

  1. 局部修正:分析报错,小幅调整参数重试。
  2. 策略切换:持续失败则强制放弃当前路线,重新搜索信息或换工具(如从改文件变成写脚本去改)。
  3. 人类介入:穷尽自动化尝试后,调用 ask_user 暂停求助。

5. 深层价值:为“自我进化”铺路

当工具足够少、足够基础时,Agent 解决复杂任务的轨迹就会变成一段段通用的标准组合序列。这使得 GA 极度容易将成功的执行经验“压缩”并沉淀为可复用的 SOP,而不是依赖写死的新代码接口。


GenericAgent 机制二 —— 分层记忆架构

1. 核心困境:全量历史追加 (Full-History Append) 的失效

  • 上下文侵蚀:传统 Agent 将所有历史交互、中间状态和执行轨迹随时间累积,直接塞入提示词。这不仅导致 Token 爆炸,更会把决策关键信息淹没在低价值噪音中。

  • GA 的破局点:通过分层检索,严格隔离“空闲记忆 (Idle Memory)”与“活跃提示词 (Active Prompt)”。

2. 核心解法:四层记忆架构与按需加载

GA 采用类似“图书馆”的设计,拒绝“默认预加载所有记忆”,采用 按需读取 (On-Demand Loading) 策略:

层级定位与类比准入标准与特征
L1 索引层目录检索台 (始终在线)极度轻量。仅编码知识的“存在性”与导航指针。其描述长度趋近分类结构的 Kolmogorov 复杂度下界,确保索引不会随知识积累而失控膨胀
L2 事实层百科全书 (按需加载)长期稳定的事实。信息必须经过执行验证,且跨任务可复用。
L3 SOP 层操作手册 (按需加载)可复用工作流与排错指南。遵循严格的 “No Execution, No Memory” 原则(没有通过工具执行成功的经验,就不能存入)。
L4 归档层历史档案室 (冷存储)历史执行轨迹的压缩存档。平时大门紧闭,仅用于事后追溯和审计。
  • 动态路由链:任务启动时只加载 L1 索引。当模型推理需要特定知识时,依据 L1 提供的指针,主动调用 file_read 工具去精准抽取 L2/L3 的内容。

3. 三类记忆的功能隔离 (信息密度的极致控制)

为了防止记忆污染和上下文冗余,GA 在单次任务中严格划分了记忆的可见性:

  1. 始终在线记忆 (常驻/随身卡片):启动时注入。仅包含 元记忆 (Meta-Memory) 的核心规则(定义记忆的存取规范、排除清单以防污染)和 L1 索引

  2. 工作记忆 (短期/草稿纸):每轮持续注入。只携带当前任务的最小必要状态:近期 20 轮单行摘要轮次编号key_info 块 (当前目标与进度)。任务结束后绝不自动晋升为长期记忆。

  3. 长期记忆 (持久/图书馆):即 L2-L4。通过 触发提交 (Triggered Commit) 机制管理(识别 → 验证 → 小幅增量写入),确保只有真正经过验证的跨任务经验才能沉淀。

4. 关键实验洞察

  • 精炼胜于全量:消融实验证明,仅保留“行动导向规则”的压缩记忆 (165 tokens),其任务成功率远超全量注入原始 SOP (575 tokens) 或带有冗余背景介绍的记忆。结论:模型最需要的是它尚未掌握的、能直接改变行为的少量精准信息

  • 摆脱对向量库的依赖:GA 仅靠精确的分层文本组织与过滤路由,不需要额外的 Embedding 模型或向量数据库,就在长期的多跳推理和时序推理任务上超越了专门的向量检索引擎(如 Mem0)。


GenericAgent 机制三 —— 上下文截断与压缩

1. 核心战略:投资压缩,而非扩展窗口 (Compression over Expansion)

  • 认知反转:盲目依赖 LLM 的超长上下文窗口(如 1M tokens)成本高昂且易引发幻觉。当前模型的“无幻觉有效长度”远小于名义窗口。

  • GA 的选择:主动控制预算在 30k tokens 以内。与其让模型在一堆冗余信息中艰难寻找关键内容,不如主动确保模型看到的每一个字符都物有所值。

2. 预算量化模型:字符域启发式公式

为了保持“模型无关(Model-Agnostic)”,GA 不依赖具体的 Tokenizer,而是直接在字符域计算预算:

  • 公式:$B = \alpha \cdot W_{\text{tokens}}$ (其中经验系数 $\alpha \approx 3$)

  • 当对话历史字符总长 $C_H > B$ 时,主动触发拦截与压缩。

3. 核心机制:四阶段压缩流水线 (Four-Stage Pipeline)

这套流水线从细到粗,构建了完整的信息生命周期管理:

阶段定位与触发时机具体操作与目的
Stage 1: 工具级截断控增量



(每次工具返回时)
采用对称头尾保留策略(因错误日志或关键总结常在首尾)。例外:web_scan 的 HTML 模式采用 DOM 级子树裁剪以防结构破坏。
Stage 2: Tag 级压缩控存量



(每 ~5 轮触发)
对历史轮次进行“瘦身”(豁免最近 10 条)。



1. 替换过期快照:将旧的 <history> 等标签替换为占位符。



2. 截短过程痕迹:将旧的 <thinking><tool_result> 截断至约 800 字符。保留首尾结论,丢弃中间推导。
Stage 3: 消息驱逐控总量



(超预算时触发)
激进瘦身与断舍离



1. 先对更多历史执行 Stage 2 压缩。



2. 若仍超载,按 FIFO(先进先出)无情移除最早消息,直至降至 $0.6B$(预留缓冲空间)。



(注:坚决不使用 LLM 做历史摘要,避免引入幻觉和额外开销)
Stage 4: 锚点注入补偿损失



(每轮用户消息前)
作为被驱逐后的唯一长程记忆安全网。每轮强制携带:



1. 最近 20 条单行轮次摘要;2. 当前轮次号;3. Agent 主动维护的 key_info 块 (当前目标与进度)。

4. 源头与固定开销优化

除了处理历史对话,GA 在信息进入上下文前还做了两道“净化”:

  • 浏览器层语义提取 (web_scan):拒绝塞入原始 HTML。在后台克隆 DOM、计算可见性、移除广告与隐藏元素,直接在源头将 Token 消耗降低一个数量级

  • Tool Schema 省略:在相邻轮次工具定义无变化时,省略冗长的 JSON Schema 定义,仅用一句话短语替代,直接省下每轮约两三千字符的固定开销。

5. 实验洞察:效率收敛

  • 当压缩机制(本章)、记忆层(上章)与进化层协同工作时,GA 在重复执行同类任务时,展现出了明显的效率收敛(操作时间从 102s 降至 66s,Token 消耗减半)。

  • 结论:优异的架构不需要每次都重读所有细节,它通过压缩留出空间,让高密度的沉淀经验发挥作用。


GenericAgent 机制四 —— 反思驱动的自我进化

1. 第一性原理:进化的是策略,不是工具 (Strategy, not tools)

  • 核心分离:GA 严格分离了“固定的工具层”与“可进化的知识层”。运行时基础设施(9 个原子工具)永远保持不变,而所有任务特定的能力则以 SOP 和脚本的形式在记忆系统中动态增长。

  • 信息密度视角:进化的本质,是将过去高成本的试错探索(高熵),压缩为高度确定的执行动作,让下一次执行从极高的信息密度起点出发

2. 三阶段进化路径 (The 3-Stage Evolution)

经验积累不是一步到位的,而是随着任务复用率的提高自动发生形态降维(压缩):

阶段执行形态核心特征与表现
Stage 1: 自然语言执行从零探索依赖大量推理、试错分支和上下文重建。Token 消耗巨大(实验中高达 222k)。
Stage 2: SOP 蒸馏流程指导执行Agent 主动调用 start_long_term_update,将成功轨迹蒸馏为文本 SOP 存入 L3 记忆。后续执行直接读取 SOP,跳过试错,Token 和调用次数骤降约 80%。
Stage 3: 代码化执行脚本直接执行当 SOP 彻底稳定后,进一步编译为可执行代码 (Python/Shell)。推理开销降至最低,成本收敛到一个极窄的稳定带(如 23k Tokens / 5次调用)。
  • 关键洞察:即便是同一类任务,SOP 在首次调用时仍有“适配成本”(需要适应具体环境),但只要跑通一次,后续执行成本就会断崖式下跌并保持稳定。缺乏进化机制的传统 Agent(如 OpenClaw)则会陷入“停滞循环”,反复支付高昂的探索成本。

3. 记忆守门机制 (防“垃圾进化”)

为了防止记忆库被一次性调试信息或错误操作污染(Junk Evolution),GA 设立了严格的准入门槛:

  1. 执行验证 (No Execution, No Memory):只存“实操并成功”的经验,拒存“未经测试的设想”。

  2. 跨任务可复用性:排除只在当前特定会话或临时目录中有效的碎片信息。

  3. 故障升级作为安全阀:遇到错误遵循“局部修正 → 策略切换 → 人类介入”纪律,防止将死胡同固化为错误经验。

4. 自主探索 (Autonomous Exploration)

Agent 并非只能被动接单,它可以在系统空闲时(通过看门狗或定时器触发 Reflex Mode),主动为自己“排课”学习新技能。

  • 四维评分与课程规划:Agent 通过以下公式评估下一个该学什么技能: $$S(t) = w_b \cdot B(t) + w_d \cdot D(t) + w_u \cdot U(t) + w_i \cdot I(t)$$

    • $B(t)$ 广度:填补技能树空白。
    • $D(t)$ 深度:深化高频使用的现有技能。
    • $U(t)$ 实用性:实际工作中的应用潜力。
    • $I(t)$ 创新性:涉及新方法或新技术。
  • 反思驱动的自适应权重:如果系统预测高分的技能实际没人用(预测与实际偏离),Agent 会自动反思并下调该维度的权重,无需人工调参。

5. 自我改进日志 (Self-Improvement Log)

独立于 SOP,GA 还会维护一份轻量级全局日志。记录:① 历史错误与修正方案;② 用户显式偏好;③ 经验证的成功模式。这些内容会自动注入系统提示词,全局约束 Agent 的行为习惯。


GenericAgent 机制五 —— 极简架构与涌现能力

1. 核心设计哲学:组合而非扩展 (Composition over Extension)

  • 传统框架的困境 (Feature-Built-In):每增加一个高级能力(如定时任务、子 Agent),就硬编码一个专门的管理模块(如事件总线、调度守护进程),导致系统复杂度线性爆炸。

  • GA 的破局 (涌现能力):追求代码极简性(核心逻辑不到 3,300 行)与接口极简性。通过定义极少数的通用底层原语,大幅降低组件的组合成本。高级能力不是“被开发”出来的,而是从基础原语的组合中自然涌现的。

2. 三大底层基石原语

GA 的所有高级功能,都建立在这三个极简机制之上:

  1. 可调用 CLI 入口点 (Self-Hosted CLI):GA 本身就是一个原生的命令行程序。无需庞杂的插件框架,任何能调用命令行的进程(包括 GA 自己)都能唤起 Agent。

  2. 基于目录的文件协议 (IPC):通过一套极其简单的文件约定(input.txt 给任务,output.txt 流式输出,reply.txt 续写对话,stop.txt 中断)进行跨进程通信。不依赖 gRPC 或消息队列,彻底解耦。

  3. 反射模式 (Reflect Mode):一套“轮询循环 + 外部脚本热重载”机制。外部脚本只负责回答“是否要触发任务”,执行则完全走标准流水线。

3. 四大涌现能力解析

无需为以下能力修改核心 Agent Loop(92 行),仅靠上述三大原语的组合即可实现:

涌现能力组合配方架构优势与实现细节
子 Agent (SubAgent)CLI + 文件协议同构进程递归调用。父 Agent 使用 code_run 新起一个 GA 进程即为子 Agent。天然实现内存隔离与上下文隔离




注:极易扩展为 Map-Reduce 并行处理模式。
看门狗 (Watchdog)反射模式 + 文件协议仅需 ~20 行外部脚本,监控文件或日志。触发与执行彻底解耦
定时任务 (Scheduled)反射模式 + 文件协议仅需 ~100 行轮询 JSON 的脚本。包含冷却检测与最大延迟窗口机制。
自主空闲学习反射模式仅需 <10 行脚本。每 30 分钟检查系统空闲,触发“自我进化”(联动第 12 章)。

附:GenericAgent 第一性原理与四大机制图谱 (全书全局索引)

第一性原理:上下文信息密度最大化

核心约束:在有限预算内,最大化每一个 Token 对当前决策的贡献。平衡“完备性(防幻觉)”与“简洁性(防注意力稀释)”。

机制维度核心策略解决的根本问题
[工具层] 最小原子工具集仅留 9 个原子工具,剔除 40+ 专用脚手架。利用 code_run 组合泛化。减少每轮必定重复支付的 Schema 固定 Token 成本。
[记忆层] 分层记忆架构摒弃全量追加。L1 存有界索引,L2/L3 存事实与 SOP,靠 file_read 按需精准加载。防止历史库庞大导致的上下文侵蚀与污染。
[压缩层] 截断与压缩流水线字符域预算监控,四阶段主动瘦身(截短、替换过期标签、FIFO驱逐、锚点兜底)。控制单次对话随轮次增加导致的爆炸与失控。
[进化层] 反思驱动自我进化将高熵探索轨迹,经过验证后蒸馏为极简的 L3 SOP 与脚本。进化策略而非工具。打破停滞循环,让下一次相同任务从高信息密度起点起步。