乐于分享
好东西不私藏

Openclaw入门

Openclaw入门

写在开头

  • • Tip 1:先理解,再质疑;小龙虾当前还有很多不足,网上也列举了很多,但是对于这种新工具,要有开放的心态首先尝试学习,理解,发现他的能力;只有理解了,才能客观评价他的不足;
  • • Tip 2: 先宏观,再细节;这篇文章是尝试以最通俗的方式和类比把Openclaw是什么给非技术背景的同学讲清楚,如果真想了解具体的实现,请移步 https://github.com/openclaw/openclaw (Star 316K;对比 Linux Star 223K)

基础概念

大模型(脑子)

不要神化大模型,大模型全称是大语言模型 (LLM = Large Language Model),粗浅的理解他是一个“成语接龙”的模型,在模型训练的阶段学习了公开能获取的语料(各种各样形式的文本),因为学习量很大就掌握了人类说话(自然语言)的习惯,能够进行“成语接龙”。比方说,你和他说“锄禾”,他预测下一个字是“日”的概率最高,就返回“日”,接下来下一个字是“当”的概率最高,就输出了“当”,以此类推;

基于这样的成语接龙,大模型已经能和你很好的对话了。但是大家经常会听到几个词:

  • • 提示词工程 (Prompt Engineering) :大模型没有回复给你想要的答案,首先想一下是不是你问问题的方式不对;打个比方:饭店厨师问你:先生吃什么;你说:随便;那上来的菜很可能不是你想要的;所以你要组织你的语言(Prompt),更加好的告诉他你的需求是什么 - 两荤两素,少糖,重辣,不要香菜;这样你的需求才能被更好的传递给厨师/大模型,给你做出你想要的菜;
  • • 知识库(RAG):你的问题/需求描述的很详细了,返回的结果还不是你想要的;这很有可能是这个厨师没有你想吃的菜的菜谱,不知道怎么做;所以这个时候你就要把菜谱一起给到厨师,同时和他讲 - 我要两荤两素,其中的一个荤是红烧肉,红烧肉的菜谱我一并给你;
  • • 微调(SFT):菜谱什么的都给了厨师,还是不行;很可能你点的是西餐,厨师是个中餐厨子;这个时候就需要把厨师送回培训学校,重新训练他的西餐技能;

这是最直观的理解,通常情况下,优化你大模型的回复应该是 首先考虑 提示词工程,不行再考虑RAG,最后微调(个人甚至绝大部分企业是没必要去微调的);背后大模型训练是理论(Transformer/Scaling Law...)+ 技术(分布式/优化算法/PEFT...)+ 框架(DeepSpeed/Megatron/Llama-Factory...)三位一体的系统工程;一般人不需要了解这么多,就像你会用手机,但不需要知道手机里面各种元器件是怎么设计出来的一样;

比较正式的定义

智能体(四肢)

大模型已经能够理解人类语言并能和人类对话了,做个问答机器人已经足够了。但是如果想让大模型开始执行其他比较复杂的任务,还需要给他装上躯干和四肢;这样可能还是不好理解,打个比方,厨师炒菜 - 现在这个厨师已经能完全理解怎么做你想吃的菜了,但是这个厨师没有手脚 - 只是在语言上理解,先切菜,再烧油,再炒菜;所以你就需要给他长出手脚,这个手脚就是智能体。

这可能是我想到最通俗的解释了,先这样理解。实际场景下 - 智能体是对大模型的封装并链接到不同的技能来完成复杂任务;可能很多人会告诉你智能体就是大模型,智能体和大模型是一体的,智能体是串联了大模型和不同的能力等等。这些都太似是而非,最终创造个东西是为了解决问题做事情的,把智能体理解成一个人,里面装了大脑,装了手脚,能操作东西,有不同的技能,能解决问题,才是最本质的方式。通常情况下,智能体通过大模型来理解用户的意图,生成相应的作业任务,然后智能体来链接不同的能力 - 比方说打开个Excel,比方说识别个图片等等,最后完成用户的请求的。把他理解成是一个张了脑子,能做事情的数字人就好了;

比较正式的定义 - 看到这样的云里雾里的大部分人已经放弃了

Openclaw (智能体平权)

Openclaw为什么火了呢,在我看来他打开了创建智能体的新方式。今年前创建智能体,主要有两种方式:

  • • 代码方式:通过代码来构建智能体(LangChain / LangGraph;AutoGen(微软)CrewAI / OpenAI Assistants API),只有会写代码的人才能创建智能体;
  • • 页面拖拽:通过图形化界面拖拽配置的方式来生成智能体(Dify/Coze等),会用这个工具的才能生成智能体;

可以看到多多少少还是有些入门门槛的;而Openclaw他是可以直接通过提示词(也就是你和他直接对话,下指令),他就能直接帮你生成智能体(注1,先不要纠结智能体和技能-Skill的区别,后面会讲;注2,也不要纠结现在他写代码的能力还是不完善,这个会快速迭代的)。所以,他能让“每个人都能创建智能体”,做到了智能体平权。

能做什么

此处偷个懒,直接问deepseek

怎么做的

Openclaw设计成这个样子:

  • • 最上层是交互接口:可以是网页和他对话/发起命令,可以是聊天工具,可以TUI (命令行窗口)
  • • 下面的框是你的电脑:上面装了Openclaw,Openclaw通过技能来执行各种操作,例如操作你的文件/浏览器还有本地程序;
  • • 右边是大模型:你的问题指令是通过大模型来理解,并生成相应的任务的;网上很多文章容易把Openclaw和大模型混为一谈,分开成两个独立的模块比较好理解,毕竟Openclaw可以接入多种大模型(包括本地的),所以世界上也是独立的,只是用户配置好之后,只需要和Openclaw交互,屏蔽了后面的大模型。

串联在一起,他是这样工作的:

  • • 用户问题 → Openclaw转发问题 → 大模型意图识别:这里面有两个场景
    1. 1. 常识类问题:不需要技能,大模型直接回答问题,并告诉Openclaw → OpenClaw 最终回复给用户。
    2. 2. 任务类请求:需要调用技能,大模型决定调用哪个技能,并告诉Openclaw → OpenClaw调用对应技能执行 → 技能返回结果 → 大模型将结果转为自然语言 → 最终回复给用户。
  • • 简单理解,大模型是一个外脑,Openclaw转发问题的时候,会一并带上很多其他信息(后续文章会讲到),其中包括有哪些技能可用,每个技能负责处理什么样的关键词,这样大模型就能知道该调什么技能了。

技能是什么

从上面介绍可以看到,除了问答类的场景,Openclaw的真正能力是通过技能(Skill)来实现的。技能是什么呢?技能就是被包装过之后的程序代码,对就是程序,就是代码,和日常情况下大家理解的程序/代码/应用没有本质区别;只不过这个程序被包装了,能够被大模型理解他的功能是什么,在什么情况下该被调用;

为了有点直观感受,看一下这个目录结构

这个是你安装过openclaw之后你的本地目录,高亮的部分是一个具体的技能(自己随便添加的一个统计文件的技能)。这样很容易看清,技能都被存放在~/.openclaw/workspace/下面。

这个file-counting-skill技能,里面最关键的是SKILL.md,用来描述对应的技能。当用户发起一个指令,openclaw会把所有技能的SKILL.md里面的“描述”一起发送给大模型,大模型通过语义匹配就知道,应该调用哪个技能里。所以,描述很关键,如果想让你的技能被正确的匹配,就需要把你的技能是做什么给描述清楚。简单看下,SKILL.md的一些信息,有个感觉,前面说的“描述”就是第二行的description

前面说到,技能/skill是对程序的包装,而这个包装就是SKILL.md,正是有了这个包装,大模型才知道该调用哪个技能。

而程序呢,可以看到就是在scripts目录下面,写的程序文件,和程序员们日常写的代码,没有任何区别,唯一的区别就是这些代码是openclaw自己写的(其实是通过大模型)。而且,如果会编程,完全可以自己改,自己写,都没问题。

另外一个特别的点(普通人不写代码也不需要理解),这种程序一定要写成命令行的形式,因为命令行的输入/输出都是文本,最适合和大模型交互。(这一点也很好理解,API封装的程序/服务是为了给程序互相交互 - 微服务,GUI/界面/封装的程序是为了给人交互使用,CLI/命令行封装的程序最适合给大模型交互调用)。

回头来看

端到端: 用户请求 -> Openclaw -> 大模型定调用哪个技能 -> Openclaw调用技能 -> 技能就是程序。

所以这里面并没有魔法,最终还是通过普通程序来实现用户想要执行的动作。大模型起到什么作用呢?意图识别,到底调用哪个程序完成任务;实活儿还是程序来实现。虽说是智能体平权,但是现在模型的理解能力/编码能力,稍微复杂一点的还是需要程序员介入的。

说了半天,怎么没有了智能体?到底什么是智能体,当你启动Openclaw的时候,你已经自动获得了一个智能体 (agent:main 不要纠结这个名称),只不过这个智能体只连接了大模型,只能做些问答。你所要做的就是要给这个智能体 1)先添加技能 2)通过智能体使用你添加的技能。

打个比方,你招聘了一个人(智能体),这个智能体唯一的能力就是对话(大模型),你要培训他(添加技能 - 对话的方式),接下来你就可以用它做事情(直接命令你的智能体做事情 - 对话的方式)

再深入一点,Openclaw是支持多智能体的,也就是你可以招聘多个人(智能体),你可以让每个智能体都有各自的技能,也可以让他们使用共享技能。换个角度理解,你可以在团队招聘一个全才(智能体安装了所有的技能),你也可以招10个人(智能体)每人一个技能。各有利弊,个人用户不需要搞的很复杂,一个智能体多个技能足矣;

结语

还有很多内容没有讲到,记忆功能,各种配置,小技巧,后续逐渐更新。写这个文章是想用最通俗的表述方式来做科普,太深入太全面各种异常分枝,实现细节,可能直接吓走没有技术背景的同学了。但错误之处,类比不当,还请多指正。技术细节问题有需要可以随时交流;