01

自进化:你的 AI 助手会越用越聪明

其他 Agent 每次面对新任务都从零开始。GenericAgent 会记住每次解决问题的方法,下次直接用。

普通 Agent vs 自进化 Agent

想象你第一次教会一个助手如何订咖啡。普通 Agent 每次收到「帮我订咖啡」的任务,都要重新探索一遍整个流程——打开 App、找搜索框、输入名称、选规格……每次都是全新尝试,每次都消耗同样的时间和Token

GenericAgent 在第一次成功订咖啡后,会把整个操作步骤「结晶」成一个技能,存入记忆层。下次再说「订咖啡」,它直接调用这个技能,几乎不需要思考。

🔄

普通 Agent

每次任务:探索 → 执行 → 完成,下次遇到同类任务,从头再来。能力不增长。

🌱

GenericAgent

每次任务:探索 → 执行 → 结晶为技能 → 存入记忆。能力不断积累,越用越快。

什么叫「自举证明」?

GenericAgent 的 README 里有一句话特别值得注意:

🤖
自举证明(Self-Bootstrap Proof)

这个仓库里的所有内容——从安装 Git、运行 git init,到每一条 commit 消息——都是由 GenericAgent 自主完成的。作者从未打开过终端。

这意味着 GenericAgent 自己管理了自己的代码仓库。第一次它肯定不知道怎么用 git,但探索成功后,「git 操作」就成了一个技能,之后的每次提交都直接调用这个技能——快速、准确。

知识检验

你用 GenericAgent 第一次完成了「从 Alipay 导出最近 3 个月账单」这个任务,花了 2 分钟。第二次做同样的事时,你期望发生什么?

02

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 里是怎么组织的:

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()
            
PLAIN ENGLISH

定义 GenericAgent 这个「大脑」类

初始化:创建空的对话历史

创建任务队列——接收用户发来的新任务

标记「当前没有任务在跑」

还没有连接任何 AI 模型

加载配置好的 LLM 模型(从 mykey 配置文件读取)

系统提示词就是「出厂设定」

每次 Agent 收到任务,都会先读取 sys_prompt.txt,加上当天日期和全局记忆,拼成完整的系统提示词

📋
「今天日期」为什么要写进提示词?

AI 模型的训练数据有截止日期,它不知道「今天」是几月几日。如果 Agent 需要做定时任务或处理时效性信息,必须每次都在提示词里告诉它当前日期。这是 Agent 开发中一个很常见的细节。

你让 GenericAgent 帮你在一个网页上填写一个复杂的表单(有下拉菜单、文本输入、文件上传)。这个任务会用到哪几个原子工具的组合?

03

技能树成长机制

Agent 怎么把经验变成可复用的技能?记忆层如何存储和调用?

技能结晶过程

想象一个老工匠。第一天做一把椅子,他要反复试——选木料、量尺寸、开榫、打磨——每一步都在摸索。但做完之后,他会把整个流程写进自己的操作手册。下次再做椅子,直接翻手册就行。

GenericAgent 的技能结晶遵循同样的逻辑:

1

执行任务

2

遇到重复模式

3

提取为技能

4

存入记忆层

关键洞察:技能不是预先编好的,而是 Agent 在实际工作中自己总结出来的。它做的事情越多,技能库越丰富,能力就越强——这就是「自进化」的字面含义。

记忆层:技能存在哪里?

技能的存取由 memory_ops 工具负责。看看它的核心逻辑:

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
}
            
PLAIN ENGLISH

name — 技能名称,方便快速索引

trigger — 触发条件:什么情况下应该用这个技能

steps — 操作步骤:按顺序执行的动作列表

created_at — 创建时间,追踪技能历史

use_count — 使用次数,越常用的技能优先级越高

每个技能就像一张小卡片:上面写着「什么时候用」「怎么做」「做过几次」。Agent 遇到新任务时,先在记忆层里搜索有没有匹配的技能卡片——有就直接用,没有才从头探索。

三方对话:技能从诞生到调用

看看开发者、Agent 和记忆层之间,一个技能是怎么「从无到有」再到「直接复用」的:

0 / 6 messages

要点回顾

🧠
技能成长的关键

技能不是一次性消耗品。每用一次,use_count 加一。Agent 会根据使用频率自动调整技能的优先级——最常用的技能最先被匹配。这意味着你的 Agent 会越来越「懂你」。

技能的「触发条件」(trigger) 字段的作用是什么?

04

系统控制模式

Agent 不一定是全自动的。你可以选择不同的控制级别——从完全放手到每步确认。

四种控制模式

不同的任务需要不同的信任级别。让 Agent 自动安装依赖可能没问题,但让它直接删除数据库?你可能想亲自确认。GenericAgent 提供四种控制模式,让你按需调整:

自主模式

Agent 全自动执行,不需要任何人工确认。适合低风险、高重复性的任务——比如批量重命名文件、生成报告。

半自主模式

Agent 自动执行普通操作,但遇到关键步骤(删除、提交、部署)时暂停等待确认。日常开发推荐用这个。

💬

引导模式

Agent 分析任务后提出方案,列出选项让你选择。适合探索性任务——你不确定怎么做,但想保留决策权。

👉

手动模式

每一步都需要你下达指令。Agent 只做你明确要求的事。适合高风险环境或学习 Agent 能力的阶段。

系统提示词:Agent 的「行为准则」

控制模式不是硬编码在 Agent 里的——它通过系统提示词来实现。每次 Agent 收到任务,系统会动态拼接一段提示词,包含日期、全局记忆和当前控制模式。

sys_prompt (动态拼接)

# 读取基础提示词模板
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
            
PLAIN ENGLISH

加载预先写好的系统提示词模板

告诉 Agent 今天是几月几日(AI 不知道「今天」)

加载记忆层中所有技能的摘要,让 Agent 知道自己「会什么」

告诉 Agent 当前该用哪种控制模式

自主/半自主/引导/手动——决定 Agent 的行为边界

Agent 执行控制流程

从收到任务到完成执行,Agent 遵循一个清晰的控制流程:

1
接收任务 + 拼接系统提示词

Agent 收到用户指令,同时加载日期、记忆和当前控制模式到系统提示词中。

2
记忆层匹配

搜索记忆层,检查是否有匹配当前任务的技能。有则加载技能,无则准备从头探索。

3
生成执行计划

Agent 根据技能或探索结果,生成具体操作步骤列表。这一步会产生 token 消耗——但如果有技能,消耗极小。

4
权限检查(控制模式生效)

根据当前控制模式判断:这一步需要用户确认吗?自主模式直接执行;手动模式每步暂停等待。

5
执行 + 结晶

执行操作。任务成功后,如果是新操作模式,自动结晶为技能存入记忆层。

知识检验

你正在用半自主模式让 Agent 部署一个网站。Agent 准备执行 rm -rf /var/www/html(删除旧站点文件)时会发生什么?

05

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」),两条路径经历的步骤完全不同:

🔍
首次执行:6 步探索

搜索「Python 网页抓取」方案 → 阅读 3 篇文档 → 分析用 BeautifulSoup 还是 Selenium → 尝试写代码 → 报错,修正选择器 → 终于成功

技能执行:3 步直达

识别任务模式(网页抓取 + CSV) → 加载 [web_scrape_csv] 技能 → 直接执行保存的操作序列 → 完成

注意首次执行的「阅读 3 篇文档」和「报错修正」——这两步消耗的 token 最多,但在技能调用路径中完全不存在。

Token 消耗动画对比

点击下面的步骤按钮,看看两种路径在 token 消耗上的实时差异:

Click "Next Step" to begin
👤
用户
📈
无技能
~10K tokens
有技能
~1.6K tokens
Step 0 / 7

自进化的终极价值

🌱
为什么「不变聪明」反而是优势?

这就是自进化的终极价值——不是让 AI 更聪明,而是让 AI 不需要变聪明就能更快完成任务。就像你不记得每个键盘快捷键,但你的肌肉记忆让你飞速操作。技能就是 Agent 的「肌肉记忆」。

技能结晶后,Agent 再次遇到相同任务时会发生什么?