自进化:你的 AI 助手会越用越聪明
其他 Agent 每次面对新任务都从零开始。GenericAgent 会记住每次解决问题的方法,下次直接用。
普通 Agent vs 自进化 Agent
想象你第一次教会一个助手如何订咖啡。普通 Agent 每次收到「帮我订咖啡」的任务,都要重新探索一遍整个流程——打开 App、找搜索框、输入名称、选规格……每次都是全新尝试,每次都消耗同样的时间和Token。
GenericAgent 在第一次成功订咖啡后,会把整个操作步骤「结晶」成一个技能,存入记忆层。下次再说「订咖啡」,它直接调用这个技能,几乎不需要思考。
普通 Agent
每次任务:探索 → 执行 → 完成,下次遇到同类任务,从头再来。能力不增长。
GenericAgent
每次任务:探索 → 执行 → 结晶为技能 → 存入记忆。能力不断积累,越用越快。
什么叫「自举证明」?
GenericAgent 的 README 里有一句话特别值得注意:
这个仓库里的所有内容——从安装 Git、运行 git init,到每一条 commit 消息——都是由 GenericAgent 自主完成的。作者从未打开过终端。
这意味着 GenericAgent 自己管理了自己的代码仓库。第一次它肯定不知道怎么用 git,但探索成功后,「git 操作」就成了一个技能,之后的每次提交都直接调用这个技能——快速、准确。
知识检验
你用 GenericAgent 第一次完成了「从 Alipay 导出最近 3 个月账单」这个任务,花了 2 分钟。第二次做同样的事时,你期望发生什么?
3300 行种子架构
仅 3000 行核心代码,加上 9 个原子工具,就能控制整台电脑——这是怎么做到的?
瑞士军刀的 9 把刃
GenericAgent 的核心是 9 个原子工具。这 9 个工具给了 Agent「手」「眼」「嘴」——能看屏幕、能操作浏览器、能运行命令:
browser_action
注入真实浏览器,点击、输入、滚动,保留用户登录状态
terminal_exec
在终端运行任意命令——安装依赖、执行脚本、管理文件
screen_vision
截图分析当前屏幕,「看」到用户界面上的内容
file_system
读写文件、创建目录、管理本地存储
keyboard_mouse
直接控制键盘鼠标,操作任何桌面应用
memory_ops
读写技能库和记忆层——自进化能力的核心
100 行 Agent Loop
整个 Agent 的「大脑循环」只有约 100 行代码。看看 agentmain.py 里是怎么组织的:
class GeneraticAgent:
def __init__(self):
self.history = []
self.task_queue = queue.Queue()
self.is_running = False
self.handler = None
self.load_llm_sessions()
定义 GenericAgent 这个「大脑」类
初始化:创建空的对话历史
创建任务队列——接收用户发来的新任务
标记「当前没有任务在跑」
还没有连接任何 AI 模型
加载配置好的 LLM 模型(从 mykey 配置文件读取)
系统提示词就是「出厂设定」
每次 Agent 收到任务,都会先读取 sys_prompt.txt,加上当天日期和全局记忆,拼成完整的系统提示词。
AI 模型的训练数据有截止日期,它不知道「今天」是几月几日。如果 Agent 需要做定时任务或处理时效性信息,必须每次都在提示词里告诉它当前日期。这是 Agent 开发中一个很常见的细节。
你让 GenericAgent 帮你在一个网页上填写一个复杂的表单(有下拉菜单、文本输入、文件上传)。这个任务会用到哪几个原子工具的组合?
技能树成长机制
Agent 怎么把经验变成可复用的技能?记忆层如何存储和调用?
技能结晶过程
想象一个老工匠。第一天做一把椅子,他要反复试——选木料、量尺寸、开榫、打磨——每一步都在摸索。但做完之后,他会把整个流程写进自己的操作手册。下次再做椅子,直接翻手册就行。
GenericAgent 的技能结晶遵循同样的逻辑:
执行任务
遇到重复模式
提取为技能
存入记忆层
关键洞察:技能不是预先编好的,而是 Agent 在实际工作中自己总结出来的。它做的事情越多,技能库越丰富,能力就越强——这就是「自进化」的字面含义。
记忆层:技能存在哪里?
技能的存取由 memory_ops 工具负责。看看它的核心逻辑:
# 技能存储格式
skill = {
"name": "git_commit",
"trigger": "需要提交代码到仓库",
"steps": [
"git add -A",
"git commit -m '{msg}'",
"git push"
],
"created_at": "2026-04-15",
"use_count": 23
}
name — 技能名称,方便快速索引
trigger — 触发条件:什么情况下应该用这个技能
steps — 操作步骤:按顺序执行的动作列表
created_at — 创建时间,追踪技能历史
use_count — 使用次数,越常用的技能优先级越高
每个技能就像一张小卡片:上面写着「什么时候用」「怎么做」「做过几次」。Agent 遇到新任务时,先在记忆层里搜索有没有匹配的技能卡片——有就直接用,没有才从头探索。
三方对话:技能从诞生到调用
看看开发者、Agent 和记忆层之间,一个技能是怎么「从无到有」再到「直接复用」的:
要点回顾
技能不是一次性消耗品。每用一次,use_count 加一。Agent 会根据使用频率自动调整技能的优先级——最常用的技能最先被匹配。这意味着你的 Agent 会越来越「懂你」。
技能的「触发条件」(trigger) 字段的作用是什么?
系统控制模式
Agent 不一定是全自动的。你可以选择不同的控制级别——从完全放手到每步确认。
四种控制模式
不同的任务需要不同的信任级别。让 Agent 自动安装依赖可能没问题,但让它直接删除数据库?你可能想亲自确认。GenericAgent 提供四种控制模式,让你按需调整:
自主模式
Agent 全自动执行,不需要任何人工确认。适合低风险、高重复性的任务——比如批量重命名文件、生成报告。
半自主模式
Agent 自动执行普通操作,但遇到关键步骤(删除、提交、部署)时暂停等待确认。日常开发推荐用这个。
引导模式
Agent 分析任务后提出方案,列出选项让你选择。适合探索性任务——你不确定怎么做,但想保留决策权。
手动模式
每一步都需要你下达指令。Agent 只做你明确要求的事。适合高风险环境或学习 Agent 能力的阶段。
系统提示词:Agent 的「行为准则」
控制模式不是硬编码在 Agent 里的——它通过系统提示词来实现。每次 Agent 收到任务,系统会动态拼接一段提示词,包含日期、全局记忆和当前控制模式。
# 读取基础提示词模板
prompt = read_file("sys_prompt.txt")
# 动态注入当前日期
prompt += f"\nToday is {date.today()}"
# 注入全局记忆(已积累的技能摘要)
prompt += f"\nMemory: {load_global_memory()}"
# 注入控制模式
prompt += f"\nMode: {current_mode}"
# Mode 可选: autonomous / semi / guided / manual
加载预先写好的系统提示词模板
告诉 Agent 今天是几月几日(AI 不知道「今天」)
加载记忆层中所有技能的摘要,让 Agent 知道自己「会什么」
告诉 Agent 当前该用哪种控制模式
自主/半自主/引导/手动——决定 Agent 的行为边界
Agent 执行控制流程
从收到任务到完成执行,Agent 遵循一个清晰的控制流程:
Agent 收到用户指令,同时加载日期、记忆和当前控制模式到系统提示词中。
搜索记忆层,检查是否有匹配当前任务的技能。有则加载技能,无则准备从头探索。
Agent 根据技能或探索结果,生成具体操作步骤列表。这一步会产生 token 消耗——但如果有技能,消耗极小。
根据当前控制模式判断:这一步需要用户确认吗?自主模式直接执行;手动模式每步暂停等待。
执行操作。任务成功后,如果是新操作模式,自动结晶为技能存入记忆层。
知识检验
你正在用半自主模式让 Agent 部署一个网站。Agent 准备执行 rm -rf /var/www/html(删除旧站点文件)时会发生什么?
6x Token 效率
自进化不只是让 Agent 更聪明——它让 Agent 不需要变聪明就能更快完成任务。这省下的不只是时间,还有真金白银。
为什么自进化能省 6 倍 Token?
每次调用 AI 模型都要消耗 token。没有技能的 Agent,每次做任务都要经历完整的探索过程:搜索方案、阅读文档、分析可行性、尝试执行、发现错误、修正、再试……每一步都产生大量 token。
有技能的 Agent 完全不同。它识别任务模式后直接加载已保存的操作序列,几乎不需要思考。
新任务(无技能)
Agent 需要理解需求 → 搜索方案 → 分析可行性 → 编写代码 → 测试 → 调试 → 完成。平均消耗约 10,000 tokens。
技能调用(有技能)
Agent 识别模式 → 加载技能 → 直接执行步骤 → 完成。平均消耗约 1,600 tokens。节省 84%。
10,000 vs 1,600 —— 差距从哪来?来自探索过程中的大量「无效推理」。Agent 在搜索阶段会产生很多中间想法,大部分最终被丢弃。技能直接跳过了这个浪费最大的阶段。
两条路径的步骤对比
同样一个任务(比如「从网页抓取数据并保存为 CSV」),两条路径经历的步骤完全不同:
搜索「Python 网页抓取」方案 → 阅读 3 篇文档 → 分析用 BeautifulSoup 还是 Selenium → 尝试写代码 → 报错,修正选择器 → 终于成功
识别任务模式(网页抓取 + CSV) → 加载 [web_scrape_csv] 技能 → 直接执行保存的操作序列 → 完成
注意首次执行的「阅读 3 篇文档」和「报错修正」——这两步消耗的 token 最多,但在技能调用路径中完全不存在。
Token 消耗动画对比
点击下面的步骤按钮,看看两种路径在 token 消耗上的实时差异:
~10K tokens
~1.6K tokens
自进化的终极价值
这就是自进化的终极价值——不是让 AI 更聪明,而是让 AI 不需要变聪明就能更快完成任务。就像你不记得每个键盘快捷键,但你的肌肉记忆让你飞速操作。技能就是 Agent 的「肌肉记忆」。