春节前,科技圈被一只“龙虾(OpenClaw)”突袭了。
朋友圈里的各类标题党简直不忍直视:“AGI降临!”“最强记忆管理!”“打工人的终结者!”
看了看底层代码,第一感受是:“确实是一次很棒的产品级创新,但要说技术上的颠覆?uh#&en!%#^感觉好像也没有
但是!只有用了才有发言权。所以这篇文章分两部分:
- 实战环节:用OpenClaw创建一个新技能——"中医方剂卡片生成"
- 原理拆解:分析OpenClaw到底戳中了用户的哪些爽点
先看看最终效果,这是我和龙虾折腾大半天的最终成果,完整技能详见ark_of_mind
动手篇:用龙虾捏一个“老中医”智能体
在动手之前,先聊聊"技能"到底是什么。大致上可以分两类:
| 类型 | 举例 | 本质 |
|---|---|---|
| 操作手册类 | 如何写入PPTX | 工具的使用说明书 |
| 任务完成类 | 个股财报分析 | 端到端的工作流SOP |
我们普通开发者要干的,就是把业务里那些恶心、重复、不想再干第二次的SOP,沉淀成后者的“技能(Skill)”。而龙虾的特点就是把“Skill”做到了极致,万物皆Skill。
但如果说skill一定是Agent的未来么?对这一点我个人并不完全看好。Skill的优点很明显,上手成本低,并且可以随模型对话进行持续改进优化,似乎有了进化的潜力。但本身它不具备任何约束效力,每一步指令都是软约束。这在高精密场景又似乎是个bug。所以要拥抱,但同时也对新的形态保持open mind吧。
下面我们进入“中医方剂卡片”技能的正式制作过程
第一步:该独立时要独立(创建独立智能体)
让我们先创建一个独立智能体,一个独立的智能体拥有独立的
- workspace:存储后面会提到的所有记忆文件
- agentDir:模型配置,鉴权信息等等
openclaw agents add card-maker
为什么要单开一个Agent? 如果在代码编辑器里,一个项目一个Agent很正常(需要独立环境和Git仓)。但在龙虾里,问题有点模糊,因为龙虾有“全局记忆”。
如果只是临时的系统或任务,用主Agent(主进程)就行。但如果你要做一个长期迭代的复杂项目,强烈建议单开一个独立的Agent。这就好比你不会让你的“私人生活助理”和“无情的写Bug机器”共用一个大脑一样。独立的Agent拥有干净的上下文,不会因为你昨晚让它查了菜谱,今天就在代码里给你加两勺盐。
第二步:用魔法创建魔法(善用skill-creator)
身边朋友问:"做个啥技能呀?"一拍脑门啥也想不出来。
这里给两个思路:
- Demo反推:把你原来干的活(未来再不想干的)拿来,逆向工程
- Histroy压缩:把过往你和模型对话中重复过很多次的对话拿来,压缩抽象
至于怎么写这个Skill的代码?千万别自己手搓!如果你足够了解它,你就不想手搓了。直接召唤 Claude 官方的skill-creator技能:
skill-creator会引导模型一步步获取创建技能所需的信息。
第三步:反复拉扯=进化?(技能持续优化)
技能搭好后,就是反反复复的测试。这里你能明显感受到国内外模型的“脑回路差异”。国内有些模型因为缺乏AI相关的训练数据,一上来就喜欢用传统后端开发的思维去搭框架,动不动就给你搞个复杂的类、加一堆后处理,完全偏离了 Skill 轻量化的设计初衷。
分享2个开发tips:
- 系统级施压:在 Agent.md 里把最核心的SKILL设计原理写进去,别让它放飞自我。
- 重要的事情说三遍:每一次大的优化和调整指令后,都反复强调要follow
skill-creator的说明
最重要的一点,在和Agent合作的过程中积累的经验一定要记下来
🗣️ “Note it Down(记在你的小本本上)!”
这句指令是当前 Agent 框架下让 AI 进化的核心。我让这个做卡片的 Agent 把踩过的坑全写进了它的长期记忆里(后面会细讲这个机制)。
技能搭建虽然充满艺术性和想象力,但最终是要变成生产力的。所以验证和量化评估非常重要。
这一章我只尝试了“AI测试->我来反馈->AI修改->记笔记”的循环,量化评估等我试了Claude新版skill-creator后再来补充。 我的做法是:
- 清空上下文(注意这一点很重要)
- 让模型基于技能进行批量测试
- 每个卡片给出反馈
- 让模型基于反馈优化,再更新到Skill中
3个版本迭代后,我就拥有了基本符合我审美的技能效果(哈哈前几个版本不要太浮夸)
架构拆解篇:龙虾到底凭什么火?
玩完了Demo,我们来扒一扒龙虾的底层逻辑。它为什么能给用户带来所谓的“AGI体感”?
🌍 【环境变了】从云端“仙女”变成了本地“牛马”
Agent部署环境的变化其实才是我认为最核心的变化。
以前的Agent基本都是云端部署——Agent住在一个空空如也的Docker里,对用户、对用户环境一无所知。所以以前的Agent都是"任务型"的:写文档、做PPT、生成网页。
而OpenClaw能干什么?
- 帮你自动分类邮箱
- 帮你回复钉钉消息
- 帮你整理桌面文件夹
- 帮你在日历上订阅日程并提醒
核心不是能力变了,而是这只龙虾从云端落了地。飞在空中的龙虾,怎么能碰到地面上形形色色的人呢?
但代价是什么?极度危险。 它有了你的操作权限,这意味着它能帮你回消息,也能一键删掉你的毕业论文。现在网上甚至有个openclaw.allegro.earth的网站,展示了20多万个在公网未加防护的 OpenClaw 示例。
所以说这在安全和企业使用上还有一段路要走。
✅ 【CORE】交互体感变了:Task Oriented -> User Oriented
环境变化带来的是工作内核的变化。因为拥有了更多"人"的信息维度,交互体验上的"AGI"味道更浓了。
而真正赋予OpenClaw用户维度理解能力的,是它的记忆机制。
🧠 【Memory】养龙虾的核心:什么信息随使用变化?
养龙虾的核心在两点:记忆和技能。
技能偏项目化,而记忆系统更有AGI色彩。来看看它的设计原理:
- 所有记忆都存储在Markdown中,文件是唯一形式
- 模型不记忆对话Session之外的任何信息,只读写文件
- 采用最简单的文本格式,方便人类阅读和编辑
身份记忆
Openclaw提供了以下几种身份记忆信息,默认保存在每个agent的工作目录下,包括
USER.md:你是谁(我不说,你懂的,各种你的喜好和八卦)。IDENTITY.md:它是谁。SOUL.md:这个最有趣,它是AI的“灵魂和底线”。
更新方式有两种:
- 初始化更新:首次通过openclaw onboard进入时,会根据BOOTSTRAP.md的指令引导用户更新。我的“一卦”长这样(USER.md就不给你们看了哈哈):
- 手动更新:所有.MD文件可以手工编辑,所以不用工具、不用模型,你自己可以编辑所有以上的记忆文件。
三个文件的定位:
- USER + IDENTITY:让Agent更懂你,也让Agent更像人
- SOUL:需要长期打磨,把你的人生哲学和处事原则灌输给它
💡 有趣的灵魂万中无一,所以SOUL是龙虾行为模式的核心。
官方自带的SOUL文件其实非常有趣,白话翻译几条核心原则:
别说废话:少给我来“好问题!”、“我很乐意帮忙!”这套虚的,直接干活。
允许有脾气:你可以觉得这事很无聊。一个没个性的助手就是个搜索引擎。
别做伸手党:自己先看文档、搜上下文。实在搞不定再问我。带答案来,别带问题来。
懂点规矩:你主人的家底都给你看了,处理对外事务(发推、发邮件)长点心。
行为记忆
如果说身份记忆是人格化的核心,那行为记忆是让龙虾成为你助手的核心。 龙虾设计了一长,一短两种行为记忆
| 类型 | 文件 | 作用 | 加载时机 |
|---|---|---|---|
| 短期/日常记忆 | memory/YYYY-MM-DD.md | 按天组织的日志,知道你每天干什么 | 只加载最近两天,剩余按需加载 |
| 长期/核心记忆 | MEMORY.md | 决策和持久化事实,Agent进化的核心 | 每次主对话都加载 |
短期记忆的更新机制: 只提供append模式,自动触发条件:
- 当前对话上下文长度超过阈值
- 用户输入
/new开启新对话
触发后,OpenClaw会启动独立Agent,对最近15条对话进行摘要总结。下面是我配置龙虾第一天、接入钉钉插件后,在重启对话时模型保存的当日memory:
而短期记忆的摘要指令非常简单,并没有之前我们看过的很多记忆项目中反复的分类,但效果现在确实缺少有效的评估机制,比较见仁见智。 “” 长期记忆的更新:
老实说,当前版本的OpenClaw对长期记忆的管理有些混乱——记什么、什么时候触发,完全靠Agent自主控制。
感兴趣的朋友可以看看这个Git Issue,大佬们在讨论如何在文档中明确Memory机制对长期记忆的定位。
但好消息是:所有文件都可以通过指令更新。你可以说:
- "请把这些记下来"
- "请更新到你的长期记忆中"
就像前面我在SKILL制作过程中把多轮调优积累的经验都放到了MEMORY里面。但当前龙虾的长期记忆确实比较粗浅。何时更新、何时失效、究竟压缩什么经验,并说不清除。
再有就是记忆搜索功能,需要你接入OpenAI的向量模型才能使用,方案也比较常规就是BM25(0.3)+向量(0.7),也都支持用户自行配置,这里就不多展开了。
【GateWay】交互形式简化:从对话中来回到对话中去
这块技术细节暂时不展开,后面会有一章借着多智能体群聊,细说Gateway和钉钉、飞书、Slack这些聊天软件的接入。
但我个人认为Gateway层的加入有点返璞归真的感觉:
从ChatGPT最初爆火就是简单的对话框,但这两年随着任务复杂化,大家把功能做得越来越复杂——Workflow、Canvas、CLI……
可是最初想象中的Jarvis,其实就是简单的对话啊。
当然不同场景,最趁手的工具可能有不同形态。但最能击中大众的,可能还是对话。
💓 【HearBeat】简单却有趣的新技能:心跳&定时任务
最后再说下龙虾的心跳机制,很有趣的实现思路。不大的功能,造就了无数博主博人眼球的标题,AI帮我盯盘!AI帮我自动下单!每周AI自动写周报!
毕竟原来AI都是被动响应人类的提问,而有了心跳机制,AI可以主动向人类发问
这背后其实是两个机制,OpenClaw巧妙地将两种调度模式结合:
| 特性 | 心跳 | Cron |
|---|---|---|
| 定时精度 | 近似(可漂移) | 精确 |
| 会话上下文 | 主会话 | 主会话或隔离会话 |
| 批处理能力 | 强(可批量检查多项) | 弱(独立任务) |
| 成本效率 | 高(批量检查) | 低(独立调用) |
| 智能决策 | 强(基于上下文) | 弱(预设逻辑) |
Cron很好理解是精准的后端定时,在几点几点,触发一个独立的定时任务。而心跳的设计很巧妙,为了和当前用户的状态无缝衔接,心跳的触发是放在当前主对话中的,可以直接关联前后对话的上下文,整个触发机制如下
系统定时器触发(every 30 min可配置)
↓
后端发送用户消息: "Read HEARTBEAT.md if it exists..."
↓
模型看到:常规系统提示词 + 这条特殊用户消息
↓
模型执行:读取HEARTBEAT.md文件(使用`read`工具)
↓
模型根据HEARTBEAT.md内容决定回复:
- 有需要关注的事项 → 回复具体内容
- 无事项 → 回复"HEARTBEAT_OK"