复旦大学知识工场实验室联合深圳企业夸夸菁领,正式开源了一个名为 GenericAgent 的自进化通用智能体项目。这个项目在开发者社区迅速引发关注,原因很直接——整个项目代码量仅约 3300 行,核心模块甚至只有数百行,却实现了传统智能体架构动辄 50 万行代码才能覆盖的能力。
这不是又一个套壳 wrapper。它在架构层面做了一件值得认真看的事。
先说它到底能干什么
GenericAgent 的定位是「自进化通用智能体」,三个关键词:自组织、自学习、自进化。具体来说,它能够:
- 自主读屏,理解当前屏幕上的 UI 元素和内容
- 操控键鼠,像人一样点击、输入、滚动
- 编写和执行代码
- 自主浏览网页、操作浏览器
- 甚至能发朋友圈、与人进行社交互动
没错,复旦团队演示了让 GenericAgent 自主发朋友圈并与好友互动的场景。这听起来像个噱头,但背后反映的是智能体对复杂 GUI 操作链路的完整掌控能力——从识别界面元素、理解交互逻辑,到规划操作步骤、处理异常反馈,整条链路都是自主完成的。

3300 行代码,怎么做到的?
这是最值得聊的部分。
传统的智能体框架,比如早期的 AutoGPT、BabyAGI,或者后来的各种 Agent 框架,普遍面临一个问题:为了覆盖足够多的场景,代码量急剧膨胀,模块之间耦合严重,维护成本极高。很多框架动辄几万甚至几十万行代码,开发者想读懂都费劲,更别说二次开发了。
GenericAgent 反其道而行之,走了一条极简路线。它的核心设计思路可以概括为:
把复杂度从代码转移到语义层。
具体来说,GenericAgent 采用了 Markdown 和语义文件系统来实现大模型的持续学习。它不是把所有逻辑硬编码在代码里,而是通过结构化的 Markdown 文档来定义操作规范(SOP)、记忆存储和技能描述。代码只负责最核心的调度和执行逻辑,「知识」和「经验」则以语义化的文档形式存在。
这带来一个巨大的优势:代码量就是上下文优势。
3300 行代码意味着什么?意味着你可以把整个项目的源码直接喂给大模型,让它完整理解整个系统的架构和逻辑。对于任何一个开发者来说,花一个下午就能通读全部代码。这在动辄几十万行的传统框架里是不可想象的。
项目的记忆和技能体系也很有意思。从仓库结构来看,它维护了专门的 memory/ 目录,里面存放着各种 SOP 指南,比如:
tmwebdriver_sop.md——Web 驱动操作的标准流程ljqCtrl_sop.md——控制逻辑的操作规范
这些 SOP 文档本质上就是智能体的「肌肉记忆」。当智能体遇到新场景时,它可以参考已有的 SOP 来规划行动;当它学会了新技能,又可以把经验沉淀为新的 SOP 文档。这就是「自进化」的含义——不是靠重新训练模型,而是靠不断积累和优化操作经验。
Token 消耗降低 6 倍,这个数字意味着什么
对于实际跑智能体任务的开发者来说,Token 消耗是一个非常现实的问题。
当前主流的 Agent 框架在执行复杂任务时,往往需要大量的 Token 来维持上下文、进行多轮推理和工具调用。一个稍微复杂点的浏览器操作任务,轻轻松松就能烧掉几万甚至几十万 Token。按照 GPT-4o 或 Claude 的定价,跑一个任务的成本可能就要好几美元。
GenericAgent 声称将 Token 消耗降低了 6 倍。如果这个数字可靠,那意味着同样的任务,成本直接从几美元降到不到一美元。对于想要在生产环境中部署智能体的团队来说,这是一个质的变化——从「玩具」变成了「可用」。
Token 消耗的降低主要得益于极简架构带来的上下文效率提升。代码量少,系统 prompt 就短;SOP 文档结构化程度高,检索效率就高;不需要在每次调用时都把整个框架的上下文塞进去。这是一个很朴素但很有效的优化思路。
如果你在用 API 跑类似的智能体任务,通过 OpenAI Hub 可以一个 Key 调用 GPT、Claude、Gemini、DeepSeek 等主流模型,国内直连且兼容 OpenAI 格式,方便你根据任务特点灵活切换底层模型,进一步优化成本。比如简单的 UI 识别任务用性价比更高的模型,复杂推理任务再切到 Claude 或 GPT-4o。
一个典型的调用示例:
from openai import OpenAI
client = OpenAI(
api_key="你的 OpenAI Hub Key",
base_url="https://api.openai-hub.com/v1"
)
# 用 Claude 做复杂任务规划
planning_response = client.chat.completions.create(
model="claude-sonnet-4-20250514",
messages=[
{"role": "system", "content": "你是一个任务规划智能体,根据用户目标拆解操作步骤。"},
{"role": "user", "content": "帮我打开浏览器,搜索最新的 AI 论文并整理摘要"}
]
)
# 用 DeepSeek 做性价比更高的子任务执行
execution_response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "根据以下操作步骤,生成具体的浏览器操作指令。"},
{"role": "user", "content": planning_response.choices[0].message.content}
]
)
这种「规划用强模型、执行用轻模型」的混合策略,配合 GenericAgent 的低 Token 消耗架构,能把智能体的运行成本压到相当低的水平。
浏览器操控:Chrome 插件 + CDP Bridge
GenericAgent 的一个亮点是它的 Web 操控能力。项目提供了一个 Chrome 插件(位于 assets/tmwd_cdp_bridge 目录),通过 Chrome DevTools Protocol(CDP)实现对浏览器的精细控制。
CDP 是 Chrome 提供的底层调试协议,Puppeteer 和 Playwright 等工具都是基于它构建的。GenericAgent 直接走 CDP Bridge,意味着它可以:
- 获取页面 DOM 结构和渲染信息
- 模拟真实的用户输入事件
- 截取屏幕快照用于视觉理解
- 拦截和修改网络请求
有意思的是,社区里已经有开发者在讨论把 GenericAgent 的 Web 操控代码「蒸馏」给 Claude Code 使用。也就是说,把 GenericAgent 积累的浏览器操作经验和 SOP,转化为 Claude Code 可以直接使用的知识。这种跨智能体的经验迁移,某种程度上验证了 GenericAgent 语义化记忆体系的可移植性。
跟同类项目比,它的位置在哪?
当前 Agent 赛道相当拥挤。我们简单做个对比:
| 项目 | 代码量 | 核心特点 | Token 效率 | 上手难度 |
|---|---|---|---|---|
| GenericAgent | ~3.3K 行 | 自进化、语义记忆 | 高(6倍优化) | 低 |
| AutoGPT | 数万行 | 通用自主 Agent | 中等 | 中等 |
| OpenInterpreter | 数千行 | 代码执行为主 | 中等 | 低 |
| Browser Use | 数千行 | 浏览器操控 | 中等 | 低 |
| Claude Code | 闭源 | 编码 Agent | 高 | 低 |
GenericAgent 的独特之处在于它同时做到了「极简」和「通用」。大多数极简项目只能覆盖单一场景(比如只做浏览器操控或只做代码执行),而 GenericAgent 通过语义化的 SOP 体系,理论上可以扩展到任意场景。
但也要说一句实话:目前项目还处于比较早期的阶段。社区里有开发者表示「mark 住了,等后续」,说明大家对它的潜力认可,但对成熟度还持观望态度。自进化能力到底能进化到什么程度、在复杂真实场景下的稳定性如何,这些都需要更多实际验证。
对开发者来说,值得关注的几个点
第一,极简架构的哲学值得学习。 不管你用不用 GenericAgent,它「把复杂度从代码转移到语义层」的思路都值得借鉴。在大模型时代,很多传统的软件工程范式正在被重新审视。代码不一定越多越好,有时候少即是多。
第二,SOP 驱动的自进化机制有想象空间。 如果智能体真的能通过不断积累 SOP 来持续提升能力,那它的成长曲线会非常陡峭。每个用户的使用过程都在为智能体贡献经验,这是一个正向飞轮。
第三,Token 成本的优化是实际落地的关键。 6 倍的 Token 消耗降低,如果能在更多场景下得到验证,会让很多之前因为成本问题搁置的 Agent 应用变得可行。
第四,跨智能体的经验迁移是一个有趣的方向。 社区已经在尝试把 GenericAgent 的经验蒸馏给其他 Agent 使用,这暗示了一种未来可能的生态模式——智能体之间不只是竞争关系,还可以互相学习。
写在最后
复旦团队用 3300 行代码证明了一件事:在大模型时代,智能体框架的核心竞争力不在于代码量的堆砌,而在于架构设计的优雅和对 LLM 能力的充分利用。
当然,开源项目的价值最终要靠社区来验证。GenericAgent 能不能从一个「令人眼前一亮的项目」变成一个「真正好用的工具」,取决于后续的迭代速度和社区生态的建设。
但至少在现在,它给了我们一个很好的参考样本:Agent 框架不一定要越做越重,有时候回归简单,反而能走得更远。
参考来源
- GenericAgent 社区讨论帖 - Linux.do — 开发者社区对 GenericAgent 的技术讨论和使用经验分享