[!important] 为我家的小龙虾求点口粮
Token 消耗量巨大,小龙虾要断粮了
希望大家留点猫粮 投喂小龙虾
最近大概一周左右的时间,在疯狂地使用小龙虾(OpenClaw),就这么称呼吧,在语音输入法下英文不太方便。
- 它是很好用的
- 他是很烧 token 的
- 它也是不完善的
- 它的发展是非常快的
在使用中确实存在一些技巧,或者只是经验,再或者 只是因为它尚不完善,所以存在一些需要人工补足的细节。
前一篇中我已经说过:如果你购买了一个机器人,你要做的就是打开开关,然后问它应该如何使用。理论上,小龙虾确实认真地向这个方向努力了。但在实际情况中,受到种种因素的影响,效果并没有想象中那么好。
安装篇
其实它的安装非常简单,NPM 一键安装,只不过一条指令的事情。之后,之后就是有引导的配置过程。
但这里并不是安装教程,我自己也不知道如何配置。不过有一个非常小白友好的消息,Cherry Studio 里面自带了小龙虾的一键安装。我测试下来非常的简单,可以说是真正意义上的一键安装。
找到位置以后,点击安装,你需要的就是等待,这个过程中可能会有一个 node.js 需要联网的提示,点击允许就行了。安装好以后就可以直接运行了,如果遇到状况可以尝试重启 Cherry Studio。如果界面白屏,可以刷新一下。
他直接跳过了安装引导。当然,你会问模型怎么设置?在启动前,你可以选择 Cherry Studio 中你已经设置好的模型,只需要选择一下,就会自动设置好。
然后就可以直接使用 WebUI 进行聊天了。不过我觉得这个界面有蛮多 bug 的,真的不怎么好用。但起码,他先打通了你与 AI 之间的交流途径。剩下的可以问 AI 进行操作。
交流渠道
并不想讲那些大家都会讲的。其实我在 AI 的辅导下也配置不明白。
说一个坑:它的网页界面只支持本机打开,所以如果跨设备,可能需要做一下反代。如果直接使用 IP 打开,可能导致其中的一些文件锁住,当然,也不算太大问题就是了。
但是,其实它是支持 API 调用的,只是不知道为什么,几乎没有人讲起这件事情。所以理论上用一个 AI 聊天的客户端就可以接入它进行聊天了,当然这个默认是没有开启的。我今天测试了一下,可能需要自定义一下请求的 Headers,但这样的自定义,我不知道哪个客户端能够完美支持。反正今天使用 AI 给出的 curl 命令确实成功跑通了,但是还没有找到能够配置成功的客户端。
初始化
一个非常容易被忽略的点。第一次和他交流,他会让你做一些设定,但是基本上都是非常简单的几个问题。在对他完全没有了解的时候,如果问题多了,确实体验会不太好。但只是这样极其简单的设定其实留下了大片的空白,对日后的使用影响还是非常大的。
所以最好在你准备好之后,让他带着你再对这些初始设定进行一下补全。或者你也可以手动翻阅它 workspace 下的文件名大写的几个文件。
这件事情非常重要。
关于记忆
官方的默认记忆方案其实挺简陋的,只是靠规则去进行规划和规范。而且官方的方案也属于逐步完善的,所以如果安装得比较早,到后期可能还需要自己在这方面对 AI 进行一下补全。
首先,最好自己理解官方的分层记忆方案。如果不理解,就让 AI 给你讲解一下。以下我直接说一些要点。
- 如果想让他记住某件事情,要强调记一下,记住它。这样的关键词应该能够触发他将这些信息写入日记。而日记是他以后会进行检索,查找记忆的位置。
- 如果一个设定你希望它长期保持,应该写入长期记忆。但他 workspace 下那几个文件名大写的文件,其实都属于长期记忆。毕竟设定文件也属于长期影响它的。所以不同信息类型,最好让它自己决定存入哪个文件。
- 在一定情况下,它会触发自动的压缩上下文,但这个操作就可能导致信息的丢失。所以应该在上下文长度达到一定值的时候,也就是距离被压缩比较近的情况下。让它先将当前上下文中的重点信息进行保存。
可以安装一下官方的记忆技能,差不多就能做到上面这些了。
工作手册
理论上它是内置文档的,而且自带文档查询工具。但有时候也会觉得他工作得怪怪的。所以可以参照如下方案:
- 让他克隆官方仓库,但只要 docs 文件夹;
- 让他克隆官方的 skills 仓库,但只要其中所有的 md 文件。
- 让他自己书写一个日后更新这两个仓库的脚本。
这样你就可以让他在本地文档里检索最新的文档和技能了。如果性能许可,最好安装一下 QMD 之类的工具来提升检索速度和效果。如果不安装,它也可以自己使用 grep
命令进行检索。
稳定性
我觉得在使用中首先需要的是模型对指令的遵循能力。然后,如果模型在计算机和编程方面的能力足够强的话,那它能实现的效果还是相当令人惊叹的。
你可以要求他,对于任何事情的回答,要有结论,有证据链。对于任何文件都要先读取再使用,避免在使用前被其他程序或者你自己修改而导致与他记忆中的内容不符(说直白点,就是避免他的幻觉)。
然后一些常用操作尽量让它写成脚本,这样在它运行脚本的时候,就不太容易出现与预期不一致的状况。
定时器
其实就是定时自动向大模型发送一个预定的指令。这非常的提示词工程,提示词书写的好坏直接影响它的执行效果。因为你希望它自动运行,所以在运行过程中是没有人类监督的。所以要线性地讲清楚每一个步骤,并且在最后让他进行检验,来确保效果。最好这个执行是可以生成日志的,或者让它自行记录日志。这样方便你回查具体的状况。
如果真的出现问题,也可以让他进行自查,多数时候他是能够给出可以接受的解释的。
然后定时器最好自己检查一下。稍微复杂一些的状况,让他自己去设定,最终的结果常常不如人意。如果再反复修改,就会越来越乱。
你需要检查它设置的时间间隔。以及发送的提示词。
避免卡住
因为它的主智能体是单线程的。如果你连续向他发送消息,会有一个消息队列,它逐个进行处理。在这个过程中,如果再有定时器激活,状况就会有些热闹。更可怕的是,如果它正在运行某个命令,可能就需要一直等待命令的结果。而命令如果再卡住……事情就变得更加有意思了。
所以这时候要实行 MCSW 策略。即 Main chat,sub work。要求它主线程只用来聊天,任何复杂的、需要等待的、可能造成卡顿的工作,全部都交给子线程去完成。这个优化策略是应该官方去做的,然而似乎没有做。总之,你最好认真地去要求他实行这个策略。(写入某个设定文件中。)
子线程
第一个非常重要的问题:子线程是不带上下文的,全靠主线程向他交代任务。所以主线程交代任务的能力是非常重要的。如果主线程交代任务不清楚,子线程必然是无法准确完成的。所以尽可能使用好的模型,能极大地提升使用体验。
然后子线程可以设置的参数其实非常多,这不需要你手动设置,但如果有需求,一定要和 AI 交代清楚。
调用子线程可以指定模型,也可以指定模型是否开启思考。这样就可以让擅长这件事情的模型去做了。
然后对于像定时触发这种和重复执行的情况,如果涉及子线程,最好让 AI 把交给子线程的提示词先写好,写在文档内,在执行的时候直接复制过去。避免每次重新生成提示词导致的效果不一致。而且你也可以预先检查提示词,杜绝某些歧义。尽可能向子线程交代清楚具体的操作方法,并给出各种示例。
遇到问题
让他自己修,或者让他指导着你修。(非常重要的前提:要用足够强的模型,否则就是以其昏昏,使人昭昭)。而对于所有操作,都要求他查证文档,给出相应的证据链。这样多数时候是能够解决问题的。
如果修改配置,请一定要让它先备份再修改。这样,如果因为修改配置导致它无法启动,你只需要将备份恢复过去就可以了。也就是你并不需要明白什么道理,就可以方便地把它解救回来。
持续性
不要相信那些他自己逛论坛玩之类的事情。它没有我们想象的那么灵活。多数时候还是我们说一件事情,都做一件事情。只是它可以持续地完成一个稍微复杂一些的工作流。但并不太能持续不断无休止地工作。
所以长期的自动工作还是要依靠定时器去不断触发。或者一些其他方法去不断触发它。
虽然想象起来很美好,但实际……真的很吃 token。开不起呀。
关于上下文
现在模型可以接受的上下文长度算是非常长了。然后和小龙虾很多时候我们并不会去新开一个对话,既然能够一直聊天,谁还会去考虑其他事情呢?这很合理,但这也导致,几乎每一次请求,他都带了巨大的负荷。虽然聊得很爽,但是 token 的消耗量也确实很大。目前感觉正常的一天聊下来。不是持续的,就是时不时聊两句,大概相当于让他陪着你工作的状态。一天两三千万 token 的消耗差不多。如果聊得频繁,应该可以轻松上亿。
所以,如果你聊完某个话题以后,打算转换话题,其实可以让他先压缩一下上下文的。这样也避免前面的内容占比比较大,引发他产生幻觉。
今天先到这里吧,其他的问题想起来再说。
[!important] 为我家的小龙虾求点口粮
。°(°¯᷄◠¯᷅°)°。
Token 消耗量巨大,小龙虾要断粮了
希望大家留点猫粮 投喂小龙虾
