我如何为 OpenClaw 构建了一个自动学习技能

今天,我的第一个开源项目 Continuous Learning Skill 正式发布了。
这是一个为 OpenClaw 开发的智能技能,能够让 AI 助手持续学习用户的偏好、习惯和知识。

这篇文章记录了整个开发过程。如果你也在折腾 AI Agent,希望这篇分享能给你一些灵感。

🎯 为什么要做这个项目?

在使用 OpenClaw 的过程中,我发现一个有趣的问题:每次对话都是全新的开始,AI 不会"记住"我们之间之前的交流。

虽然 OpenClaw 提供了记忆功能,但我想让它更智能——不仅能存储记忆,还能主动从多个维度学习和进化。

于是有了这个想法:构建一个自动学习技能,让 AI 能够:

🏗️ 架构设计

整个技能分为四个核心模块,它们协同工作,共同构建 AI 的"大脑"。

系统架构全景图
系统架构全景图

1. 对话学习模块 (Conversation Learning)

这个模块负责分析用户与 AI 的每一次对话。它会识别重要的信息片段,比如用户的职业、兴趣爱好、决策偏好等,并将这些洞察存储到长期记忆中。

对话学习流程示意
对话学习流程示意

关键技术点:

2. 笔记分析模块 (Note Analysis)

连接用户的 Obsidian 知识库,解析笔记内容,识别知识节点和关联关系。这个模块帮助 AI 理解用户的知识体系。

知识图谱构建概念图
知识图谱构建概念图

功能特性:

3. 行为观察模块 (Behavior Observation)

记录用户的使用模式,比如何时最活跃、偏好什么类型的回复、常用的工作流等。这些信息用于优化 AI 的响应策略。

4. 网络聚合模块 (Web Aggregation)

自动收集和整理用户感兴趣的网络内容,支持 RSS 订阅和关键词监控。

🏃‍♂️ 实战效果展示

这是技能运行时的实际效果。Deep Reflection 模块会定期进行深度反思,主动提出系统共建建议:

深度反思报告
Deep Reflection 深度反思报告

同时,对话学习模块会在后台默默工作,分析每一条消息:

对话学习运行
对话学习模块运行日志

🛠️ 技术栈

💡 开发过程中的挑战

挑战 1: 会话格式解析

OpenClaw 的会话记录是 JSON Lines 格式,包含系统事件、用户消息、工具调用等多种类型。最大的挑战是正确解析这些复杂的嵌套结构,提取有价值的对话内容。

解决方案: 编写了专门的解析器,能够识别不同类型的消息,过滤掉系统内部事件,只保留有意义的用户-AI 交互。

挑战 2: 中文内容处理

作为一个中文用户,我需要确保技能能够正确处理中文内容。包括中文分词、语义理解、以及中英文混合场景。

解决方案: 使用 Gemini 的嵌入模型,它对多语言支持很好,能够准确理解中文语义。

挑战 3: 国际化发布

为了让技能能够被全球 OpenClaw 用户使用,我需要将整个项目国际化,以英文为主语言,同时保留中文翻译。

解决方案:

📊 项目数据

开发这个技能的过程中,我积累了一些有趣的数据:

🚀 如何使用

如果你想使用这个技能,步骤很简单:

# 1. 克隆仓库
git clone https://github.com/fjmw123/continuous-learning-skill.git

# 2. 安装依赖
npm install

# 3. 初始化配置
node scripts/init-learning.mjs

# 4. 运行学习流程
node scripts/learning-pipeline.mjs

记得在 .env 文件中配置好你的 API 密钥哦。

🎯 未来规划

这个技能的第一个版本只是一个开始。我计划在未来添加更多功能:


🙏 感谢

这个项目的完成离不开 OpenClaw 社区的支持。特别感谢 OpenClaw 提供的强大平台,让我能够构建这样有趣的东西。

如果你对这个技能感兴趣,欢迎访问 GitHub 仓库,给个 ⭐ 或者提交 Issue 和 PR!

GitHub: fjmw123/continuous-learning-skill