编码 Agent 正在学会「自我进化」——从 Superpowers 到 OpenViking 的技术拆解

0 阅读1分钟

编码 Agent 正在学会「自我进化」——从 Superpowers 到 OpenViking 的技术拆解

过去一周的 GitHub Trending 出现了一个有意思的现象:排行榜前十里,有一半跟 AI Agent 的「技能框架」相关。Superpowers 冲到了 89k stars,claude-mem 拿下 37k,learn-claude-code 接近 30k,字节跳动的 OpenViking 也到了 14k。

这不是巧合。编码 Agent 正在经历一次范式转变——从「接收指令,执行任务」变成「规划目标,调度资源,自己学着变聪明」。

我花了几天时间把这几个项目都跑了一遍,聊聊我的观察。

先说结论

如果你现在还在用「一个大 prompt + 一堆工具」的方式搭 Agent,可能需要重新想想了。2026 年 Q1 的趋势很明确:

  1. Agent 需要「技能」而不只是「工具」
  2. 记忆管理从文本文件进化到语义数据库
  3. 子 Agent 协作从串行走向并行自治

下面挨个拆。

Superpowers:89k stars 背后的方法论

先聊 Superpowers,因为它的思路最有代表性。

这个项目的核心其实不是代码,是一套软件开发方法论。它给编码 Agent 加了几个关键约束:

用户提需求 → Agent 先提问搞清楚真实意图
        → 拆解成可执行的实施计划
        → 启动子 Agent 逐个完成任务
        → 主 Agent 审查子 Agent 的产出
        → 循环直到完成

听起来很简单?但真正跑起来你会发现,这套流程解决了一个最头疼的问题:Agent 跑偏。

在没有规划约束的情况下,让 Claude Code 或 Cursor 去做一个复杂功能,它大概率会在第三步开始偏离你的预期。加了测试也不好使,因为它写的测试本身就是按它理解的方向来的。

Superpowers 的做法是在「写代码」之前强制插入一个「对齐」环节。它不是直接开干,而是先把方案用人话写出来给你看,你点头了才开始实施。实施过程中每个子任务都是独立的 context window,不会互相污染。

这和传统的 ReAct 循环有本质区别。ReAct 是「想一步做一步」,Superpowers 是「先想完再做」。在实际体验里,后者的完成率高了不止一倍。

它强调 TDD(测试驱动)和 YAGNI(不做多余的事),这两条在 Agent 场景下意外地好用。Agent 最爱干的事就是加一堆你没要的功能,YAGNI 直接给它画了条线。

claude-mem:让 Agent 真正「记住」你的项目

如果 Superpowers 解决的是「怎么做」,claude-mem 解决的就是「记住做过什么」。

这个 Claude Code 插件做的事情说白了就一句话:自动记录 Agent 每次会话干了什么,压缩成摘要,下次开会话的时候自动注入回去。

# 伪代码描述 claude-mem 的核心循环
session_end():
    observations = capture_tool_usage()     # 抓取工具调用记录
    summary = compress(observations)        # AI 压缩成摘要
    store(summary, semantic_index)          # 存到语义索引

session_start():
    relevant = search(semantic_index, current_context)  # 检索相关记忆
    inject(relevant, system_prompt)         # 注入到当前会话

看起来不复杂。但实际用起来体验差别很大。

一个常见场景:你花了三天在一个项目上迭代,中间开了十几次 Claude Code 会话。到第四天再打开,Agent 对之前做的所有决定一无所知。你得重新解释一遍「为什么用这个库」「为什么 API 这样设计」。

claude-mem 把这个问题自动化了。它不只是记录「你做了什么」,而是记录「你为什么这样做」。这是语义压缩的价值——不是存日志,是提炼决策。

它现在有 37k stars,说明这个痛点是真实存在的。不过我得说,它的方案还比较初级。所有记忆都是文本级别的检索,没有结构化。这就引出了下一个项目。

OpenViking:字节跳动对 Agent 记忆的重新定义

OpenViking 的野心大得多。它不是做一个记忆插件,而是要做 Agent 的「上下文数据库」。

传统 RAG 的做法是把文本切片、向量化、扔进向量数据库。检索的时候用余弦相似度捞出来。问题在于——这是扁平的。你查「用户认证」,它可能把登录、注册、OAuth、JWT 全给你捞出来,但没有层次关系。

OpenViking 用「文件系统范式」来组织上下文。它把 Agent 需要的东西分成三类:

  • 记忆(Memory):对话历史、决策记录、经验教训
  • 资源(Resource):文档、代码、数据
  • 技能(Skill):可复用的操作模式

然后用类似目录树的结构组织起来,支持三层分级加载:

L0: 热数据 — 当前任务直接相关的上下文
L1: 温数据 — 同一项目的背景信息
L2: 冷数据 — 历史经验和通用知识

这跟操作系统的内存分页有异曲同工之处。Agent 的 context window 是有限的,不可能什么都塞进去。分级加载让它在需要的时候才拉取,不需要的时候不占空间。

从工程角度看,OpenViking 的检索链路是可视化的。你能看到 Agent 从哪个目录、哪个层级拉了什么数据进来,这对调试非常有用。传统 RAG 的检索过程是个黑盒,出了问题你都不知道它为什么给了一段奇怪的上下文。

实测下来,对于需要长期维护的项目(比如一个跑了两个月的 Agent 工作空间),OpenViking 的效果明显好于纯文件方案。它能记住两个月前的一个架构决定,并且在当前任务需要的时候自动关联上。

不过它的安装门槛不低,需要 Python、Go、C++ 编译器,还得配 Embedding 模型的 API。如果你只是想给 Claude Code 加个记忆功能,claude-mem 的门槛低得多。

learn-claude-code:29k stars 的教学意义

shareAI-lab 的 learn-claude-code 是另一个角度——它不提供工具,提供理解。

整个项目就是从零构建一个类 Claude Code 的 Agent,分 12 个 session,每个 session 加一个机制。从最简单的「一个循环 + Bash」开始:

def agent_loop(messages):
    while True:
        response = client.messages.create(model=MODEL, messages=messages)
        if response.stop_reason == "tool_use":
            result = execute_tool(response.tool_calls)
            messages.append(result)
        else:
            return response.content

然后逐步加上:规划、子 Agent、技能加载、上下文压缩、后台执行、团队协作、任务自认领。

读完这 12 个 session,你会对 Agent 的整体架构有一个非常清晰的认知。特别是 s06(上下文压缩的三层策略)和 s09(子 Agent 的异步邮箱通信),这两个是在实际生产中最容易踩坑的地方。

说句不客气的话,很多人搭 Agent 其实连 s01 的核心循环都没搞明白就开始堆功能了。这个项目的价值就在于它把「理解」放在「使用」前面。

几个实操建议

聊了半天趋势,说点能落地的。

如果你在做一个长期项目的 Agent 辅助开发,建议组合使用 Superpowers 的规划方法 + claude-mem 的会话记忆。不需要全部安装,把规划的 prompt 模式抄过来,加上记忆的自动捕获,就能覆盖 80% 的场景。

如果你在从零搭建自己的 Agent 框架,先读 learn-claude-code 的 12 个 session,理解每一层的作用。不要一上来就用 LangChain 或 CrewAI,先搞明白最小可用的 Agent 是什么样的。

如果你有复杂的上下文管理需求(比如多项目、跨会话、长期记忆),可以关注 OpenViking。但要注意它的环境要求和运维成本。对于个人开发者,纯文件方案(MEMORY.md + 每日日志)可能已经够用了。

关于子 Agent 的编排,Superpowers 的串行模式(主 Agent 依次 review 子 Agent)在可靠性上明显优于完全并行。原因很简单——子 Agent 之间没有共享状态,并行跑的时候容易产生冲突。除非你的任务天然独立(比如同时翻译多种语言),否则串行更安全。

写在最后

回到开头的观察。这一波 Agent 技能框架的爆发,本质上是因为大家发现了一个事实:模型能力再强,没有好的框架约束,Agent 的表现也是不稳定的。

Prompt engineering 解决不了的问题,需要架构来解决。规划、记忆、技能这三件事,正在从「可选的增强」变成「必须的基础设施」。

这不是说模型不重要。而是说,在模型能力已经足够强的今天,瓶颈从「模型不够聪明」转移到了「我们不知道怎么用好它」。

这些开源项目提供的不只是代码,更是思路。值得花时间研究。


写于 2026 年 3 月 17 日。文中提到的项目 star 数为撰文时数据。