
《OpenClaw100讲》
3. 应用篇:skill例子
最近养龙虾有一些心得,准备都输出出来。讲什么?从评论里选大家想听的,暂定100讲。

昨天一个11年的老粉留言,说想听skill,那我就接着上一个Case,分享怎么将代码升级成skill。
还是昨天那个业务场景:
1. 登录知识星球;
2. 拉取昨天的帖子;
3. 为每个帖子点赞;
画外音:登录,读请求,写请求,很多业务符合这样的场景。
怎么用skill来实现呢?
上一篇文章,我让OpenClaw写代码的过程中,已经沟通过,业务的流程(登录,拉取帖子,点赞)。


所以这个时候,OpenClaw是知道业务流程的。
如果之前没有沟通,我们得告诉OpenClaw登陆页是什么,星球主页是什么,业务流程是什么(登陆,拉取帖子,点赞)。
画外音:建议先阅读《我用OpenClaw,5分钟写出一个程序(第二讲)》,了解怎么用代码实现。
接着,我和OpenClaw说,把这个过程用skill实现,每天早上8:30自动执行。

OpenClaw告诉我,要创建skill,然后加到openclaw cron里去,并询问是否立刻创建。
我立刻让他帮我创建。

哐哐哐,创建好了,流程和我们之前沟通的一样。
这么神吗?我感觉他只写了正常逻辑代码,完全没有异常处理啊。
于是我问了一个登陆失败的异常分支:

哐哐哐,OpenClaw对skill进行了升级。

之前让OpenClaw写代码的时候,我提醒过他要存储cookie,要复用cookie实现免登陆,于是我又问他:

他回复了我cookie存储的位置。
这明显有问题啊,新建了一个xingqiu-auto-like的skill,他却读取了之前代码项目xingqiu里的js配置,明显是两个无关的系统耦合啊。
画外音:OpenClaw是有记忆的,他记得之前代码的配置。
我询问OpenClaw两个项目是否耦合,有什么优化手段?


OpenClaw反馈,确实耦合了,有两个优化方案:
方案一:彻底解耦
方案二:保持不变
并建议方案1,询问我是否解耦。
of course,立刻解耦。

哐哐哐,之前的代码项目被删除了,改成了独立的skill项目,不再相互依赖。
这个时候我登录服务器,查看skill文件,却没有发现配置。我K,OpenClaw是不是框我?于是我又问他:要不要增加一个配置,把cookie存下来?

这次真的加入配置,保存cookie了。

询问我是否增加配置,升级skill。
我发现cookie的目录有点问题,放在了根目录下的data文件夹里,而不是skill目录下。我同意执行skill升级,但要求data目录放到skill里。

项目完成:
1. 展示了skill目录结构,data在skill里;
2. 展示了配置项;
3. 展示了升级后的skill流程;
OpenClaw说的不知道靠不靠谱,我准备清空cookie测试一下重新登录:

你猜结果怎么着?

虽然删除了cookie文件,但仍然直接登录成功了,没有让我扫码登录。并且OpenClaw解释了原因:cookie文件被删除,但浏览器做了会话持久化。
于是乎,我让OpenClaw再清除浏览器登陆状态,重新测试登陆过程。

这次测试成功了,弹出二维码让我登录。
我进行扫码登录。

这回好了,自动化流程完全正常!
But,这次流程耗时比较长,我又发起了新的提问:测试过程中有没有重试(过程可能很曲折)?如果有,根据经验更新skill(结果是正确的)。

果然,OpenClaw根据潜在异常,升级了skill:
1. tab不存在,怎么优化...
2. 页面未加载,等2秒重试...
3. 按钮失败,等1秒重试...
4. 二维码超时,继续下一步...
5. 一个点赞失败,记录并继续...
...
这,就是我和OpenClaw聊天,实现一个skill,每天早上定时执行帮我登录知识星球,拉取帖子,自动点赞的过程。
嗯哼?有什么启示?
怎么通过“聊天”让OpenClaw写skill?
7大步骤和要点:
1. 告知目标(知识星球自动点赞),流程(登录,拉取帖子,点赞),初始配置(登录页,星球主页);
2. 询问一些潜在细节(cookie免登录);
3. 与其他系统(代码,skill)解耦;
4. 配置化(登录页,星球首页,文件目录等);
5. 数据私有化(data放在skill里);
6. 测试;
7. 异常分支补充;
打架也可以试一试,“聊天”写几个skill,让OpenClaw来替代自己的一些例行工作。
希望大家有收获!
相关文章:
下一讲,你想听什么?评论里告诉我!
OpenClaw100讲,欢迎围观!