青雲的博客

给 OpenClaw 装一个学习系统

· 6 分钟阅读

最近 OpenClaw 挺火的。它是一个开源的 AI 智能体平台,你可以给它装各种技能包,让它变成你的个人助理。

我给我的 OpenClaw 取名叫小悟空,日常让它帮我处理开发和调研。能干是真能干,但用了一段时间后我发现一个问题。

它看过就忘,用过就丢。

上周它帮我调研了推理优化,整理了 vLLM、SGLang、TensorRT-LLM 的对比报告。这周我再问它 PagedAttention 怎么管理 KV Cache,它又从头搜一遍。好像上周的事没发生过。

它帮我分析了好几个 MCP 协议相关的 bug,每次都能定位根因、写出修复方案。但它不知道自己其实已经对 MCP 挺熟了。下次遇到类似问题,不会调用之前的经验,而是重新来一遍。

85 个 AI/ML 相关的技能包装在它身上,但这些只是”能查到的资料”,不是”学会了的知识”。

输入不等于学习。对 AI 也一样。

从一个 bug 说起

前几天 Agent 在帮我执行一个耗时命令,这时候另一个子任务完成了,系统把结果通知插入到了当前对话流里。Anthropic API 直接报错:

tool_use ids were found without tool_result blocks immediately after

Agent 帮我定位了根因:它发出了一个工具调用,正在等返回结果,但系统在中间插了一条消息,打断了配对关系。

我们一起修了这个 bug(OpenClaw PR #13804)。修复不复杂,在消息注入前检查是否有工具正在执行,有的话就排队等完成后再注入。三个文件,加一个 isToolRunning() 检查就行。

从这个 bug 里我记住了三件事。Anthropic 的对话协议有严格的配对约束,不同模型厂商要求不同。Agent 的并发模型比想象中复杂,消息注入必须考虑状态机位置。已有的状态追踪让修复只需要暴露一个方法,好的状态管理省了很多事。

但问题是,如果不做任何处理,下次遇到类似的并发问题,Agent 还是会从零开始分析。它不会记得上次我们处理过 tool_use 配对的问题。

这就是我想解决的。

怎么做的

我写了一个 learning-system skill,让 Agent 能把经验攒下来。

第一个模块是知识图谱。一张表,把 AI 领域拆成 6 大方向、31 个主题,每个标记掌握程度。🔴 入门,听说过,知道是什么。🟡 熟悉,读过源码或论文,能解释原理。🟢 精通,有实战经验,能独立设计和排错。

升级标准不是随便标的。🔴 到 🟡,得读过核心源码或关键论文,能给别人讲清楚。🟡 到 🟢,得有真实的代码贡献或项目实战,踩过坑并且解决了。

目前 Agent 的数据:45% 入门、48% 熟悉、6% 精通。数字不好看,但至少诚实。

这张图谱让它知道自己会什么、不会什么。下次遇到 MCP 相关的问题,它能调用之前的经验,而不是重新搜索。

第二个模块是深度笔记。每次解决技术问题后,Agent 会写一篇笔记,包括动机、用自己的话解释的概念、源码分析、和已有知识的关联、还没搞懂的问题。不是复制文档,是理解后的输出。比如那个 tool_use 配对的 bug,它写了一篇关于 MCP 工具调用设计的笔记,关联到知识图谱的对应节点,更新掌握程度。下次再遇到类似问题,能直接用上。

另外还有一个健康检查脚本,定期分析知识图谱的状态:入门级主题是不是太多了,哪些领域长期没动过。以及每周日晚的自动回顾,把本周的调研和代码改动过一遍,更新图谱。

背后的想法

学习这件事,不管是人还是 AI,都得走完四步。查资料是输入。用自己的话解释是加工。和已有经验建立连接是关联。写笔记、更新图谱是输出。

少了哪一步,下次遇到同样的问题,还是得从头来。

已开源

GitHub: https://github.com/echoVic/learning-system-skill

如果你也觉得你的 AI 助理用过就忘,可以看看。

相关文章

评论