1、什么是 OpenClaw?
因为有些同学可能之前没听过,我们先来说说OpenClaw是什么。OpenClaw(社区昵称:龙虾,曾用名Clawdbot/Moltbot)是一款本地优先、自托管、多通道统一接入的开源AI Agent执行引擎,MIT协议开源,GitHub星标超200k。它不是普通聊天机器人,而是能真正执行任务的个人/团队AI助手:通过自然语言指令,完成文件操作、浏览器自动化、系统命令、定时任务、第三方服务调用等真实工作。OpenClaw其实最早火的时候名字叫CrawlBot,它的标志是一个龙虾图案。后来因为商标问题被迫改名,中间迅速改名叫Moltbot,最后定为现在的名字——OpenClaw。所以大家在网上看到的CrawlBot、Moltbot、OpenClaw,其实是一个东西,只是中间换了名字。本质上是一个个人的AI Agent智能助手。这里面有三个关键字:
1.个人:它是一个反PaaS化的东西。我们日常用的豆包、千问、GPT、Claude等平台,是你自己在跟服务器交互,回复都是用相同的逻辑。而OpenClaw是开源项目,你可以把它搭建在自己的个人电脑或者云端,是一个完全属于你个人的、个性化的东西。好处首先是数据安全、隐私,大部分数据和配置都存在你自己的电脑或云端,不太会泄露。其次,也是最重要的,就是个性化。你可以给它调教各种性格、技能,连回复风格和逻辑都可以完全定制,变成一个非常非常个性化的、属于你自己的助手。
2.自主性:这里用Agent这个词,我对Agent的定义可能和现在泛化的“智能体”不太一样。这里的Agent是和Workflow对应的,它不是一个你事先用代码写好的编排式助手,而是用Agentic技术、可以自主完成任务的助手。它是一个基于ReAct架构的智能助手,能够完成各种任务,足够智能。
3.助手:这个产品的定位就是帮你完成任务,这可能和数字分身不一样,数字分身是代替你,而助手是替你完成任务。因为Agent本身有自主性,你不需要说太多,只要把明确需求告诉它,它就可以很好地帮你完成任务。
2、OpenClaw为什么会火?
在谈技术之前,先分析一下为什么OpenClaw能火。技术本身其实没什么门槛,它甚至是用WebCode一个周末搭出来的项目,很多人都说它就是个“胶水项目”,就是把各种各样的东西攒在一起。但它就是火了,为什么?更多的还是在产品逻辑上。现在不缺技术,缺的是好的AI产品。
(一)能力的强大
1 真的能把任务完成。对比一下现在的千问、豆包等,虽然它们后面的模型也感觉蛮强大的,但事实上它们给ToC端开放的资源非常有限,能接入的工具也非常有限。前段时间大家玩元宝,会发现它好像啥都干不了,没有代码能力,也没有浏览器能力。而OpenClaw利用了Agent Loop这种Reactive 的机制,再加上它基本上接入的都是Claude、在模型能力的提升。但不管怎样,最终它达到的效果就是真的能把事情完成。
2 把人从电脑前解放出来。像ClaudeCode或Cursor这类助手能力甚至比OpenClaw要强,但为什么没有OpenClaw火爆?主要原因还是它们依赖于你在电脑前面。现在的Agent大部分还没办法完全脱离人,总会有一些 Human in the Loop 之类的东西。而OpenClaw最大的一个点就是它接入了各种IM平台,国外像WhatsApp、纸飞机、Discord,国内现在已经接入了、飞书、钉钉等。接进去之后,这些IM平台能把你的助手变成一个随叫随到的管家。尤其如果你再把它放在自己的工作电脑上,就真的能做到像之前说的:代码写一半放那儿不用管,自己出去玩,然后通过几条命令控制你自己的电脑把剩下的任务完成。这其实是一个非常棒的产品设计。
3 主动性。其实是一个非常强的特点。它把过去我们对AI助手的理解一我叫你你才来、一次性短期任务——彻底改变了。OpenClaw的这种主动性,真正实现了长期计划性任务的自动完成。如果放到公司里,比如一个PMO去跟项目进度,那些长期性的事情:有哪些Todo、项目有什么风险,它都可以主动通知到具体的人,告诉你什么时候该解决了。
(二)话题性的东西
1.个性化。大厂其实并不是做不出个性化的东西,但它们的设计和安全一直都比较严格。而OpenClaw不一样,因为是你自己开源的、自己调教的龙虾。你可以让它扮演各种各样的个性:你可以让它非常主动,天天没事找你闲聊;也可以让它做一个非常理性的龙虾,只做你交代的任务。这些能力完全是个性化定制的,尤其是现在Skill出来了以后,你想给你的龙虾装备什么样的Skill,都是按照你自己的个性需求去定制的。这种独一无二的“养虾经历”特别容易让人产生分享欲。为什么OpenClaw在社交平台上一下子火成这样?很多人主动分享,一下就爆了,其实跟大家本身的传播有很大关系。
2.自主进化。OpenClaw运行在你自己的电脑上,同时它又有你电脑本身的各种权限和能力。所以它能做到什么呢?它可以自己改自己的代码。这就会产生很多惊喜。像网上有个例子:Peter,也就是OpenClaw的创始人,说他那天给OpenClaw发了一段语音,但他没想着OpenClaw能解决,因为他之前没有给OpenClaw语音识别的能力。但因为OpenClaw调教得比较好,主动性比较强,它接到这段语音后,自己上网找到了ASR的API,注册账号,把Peter的语音转成文字,然后解析并回复了Peter。这就是它能自主进化的例子,带来了极大的惊喜感。这些惊喜一旦进入社区传播,即使真正自主进化的案例不多,但只要有几个传播开来,大家就会疯狂尝试,获取更多惊喜,最终让整个产品火起来。
3、OpenClaw的现存问题
虽然优点很多,但OpenClaw更像是专门给极客的玩具,还不能算是一个ToC产品。为什么呢?主要有两点:严重安全问题超高和Token消耗成本高。
1.安全问题这是最让人难受的。我至今不敢在自己的电脑上长期跑 OpenClaw,因为不管是prompt 注入,还是它本身代码的安全漏洞,都非常严重。你可以看到社区里有很多人把银行卡号都告诉它,让它去登录操作,但泄露的案例也非常多。现阶段,这些东西确实只有极客们才能真正驾驭。而且,如果你想让它相对安全一些,配置成本也很高。还有提示词的调教、需要做的隔离等,门槛真的非常高。所以到目前为止,我个人非常不建议大家把OpenClaw放在个人电脑上长期跑。
2.超高的Token消耗成本。它的主动性、一切能力都依赖于它在后台不停地跑,而且想要完成任务必须用很好的模型。OpenClaw底层基于Palmimo开源框架,这个框架的理念是:好的模型已经把大部分东西都训练进去了,所以提示词上并不需要给太多指导。因此 OpenClaw底层的SystemPrompt 构造其实相对简单。但这也导致,如果你用不好的模型比如很多人说在本地跑OpenClaw,我觉得纯属浪费时间和钱一那些小模型连ReAct都干不好,根本不可能完成复杂任务。所以你必须要用好的模型,但现在好模型都超贵,再加上Token消耗。待会讲到SystemPrompt 构造时大家就会知道,它基础的SystemPrompt就需要1.5万左右的Token。这还只是初始阶段,如果随着使用时间更长、Memory更多、设置的Skill 更多,那基础SystemPrompt基本上就要两三万Token。可想而知,钱烧得有多快。我自己用的话,还没用特别好的模型,基本上还是用Kimi和之前的千问比较多。之前也尝试过它的极限,用过Claude,但真的是烧钱,几个问题出去,充的500块钱就不剩多少了。所以这个成本不是一般人能承受的。其实它的上下文还有很大的优化空间,这也是我觉得后面会优化的方向,也是OpenClaw目前不太适合大多数C端用户的原因。有同学问能不能用中间的这种订阅或代理?现在有很多能做,用一些订阅套餐,但基本上最近被封禁了一大批。因为说实话,不管用什么订阅,底层还是在烧那么多Token。你用了那么多Token,不是你亏就是厂家亏一Token本身意味着GPU算力,意味着成本。厂家为了不亏,就会想办法封禁这些套餐订阅,或者用小模型、量化模型替代,那效果就会变差。所以这个问题还是比较难解决的。
4、OpenClaw的核心技术亮点
除了核心逻辑,我们再细讲一下OpenClaw里面一些在系统设计上非常优秀的地方。
4.1上下文工程
一个 agent 能不能跑得更好,很大程度上依赖于上下文工程。在OpenClaw里,有几个强大的机制来保证给到大模型的上下文非常高效,能够完成当前任务。
(1)system prompt 动态加载
OpenClaw的核心上下文管理一动态system promptSystemPrompt动态组装这是OpenClaw各种能力最基础的支持。怎么理解呢?在OpenClaw发给模型请求之前,它会先拼装system prompt。除了基础的react相关prompt(比如需要让模型输出工具调用和工具参数)之外,更重要的是动态加载了OpenClaw工作区的几个md文件.
- soul.md:这个非常有意思。当时Peter在开源OpenClaw的时候,唯一没有开源的就是他自己那只龙虾的soul.md,我们至今不知道他那个性格写成了什么样。但你可以去社区查一下,社区里有大量分享的soul.md,都写得非常有意思。比如有些让OpenClaw以“渣女语录”的方式说话,或者设置成自己理想型的性格和语气。这些东西本质上就是让模型在跟你聊天时,拟态成你想要的样子。
- identity.md:这部分更多是给agent自己的身份定义,包括你管自己叫什么名字,是什么样的风格。它和soul.md的区别在于,soul是更本质的东西,是很多决策的影响因素,而identity更多是比较表面的东西。
- user.md:这里存放的是关于用户的信息。作为个人助手,它的主人是谁?这里记录的是你作为用户的资料,包括你的身份、职业、喜欢什么、不喜欢什么。
- agent.md:这里面更多是关于你的agent的知识和一些记忆相关的东西。当然长期记忆也在里面,但agent.md更多的是说你会特定地调教它,比如当它搜索什么东西时用这个工具、搜那个东西时用那个工具,或者调教它做某件事的SOP是什么。这类东西都会放在agent.md 里,也就是你的agent在能力和知识上的一些强化指令。
- tools.md:约定了你的OpenClaw能调用哪些工具,包括前面提到的skills在哪里、需要加载哪些skill.md,也包括很多本地工具的定义,以及你什么时候该调用这些工具、不能调用哪些工具。
- 除此之外,还有心跳检查清单、长记忆,以及一次性引导。一次性引导是指你第一次与OpenClaw聊天时,它会有一个个人引导,跟你聊一些事情,同时把这些文件都记录好。
之所以能有前面说的各种个性化,正是因为当你在使用和聊天时w会根据情况自定更新这些文件。比如某天你聊到了一个自己的偏好,它发现这个偏好应该记在user.md里,就会自己记进去。当你不断调教它,告诉它性格应该这样那样,或者你在对话里说“你应该记住这个、记住那个”,它也会把这些信息记在相应的md文件里。这就让你的OpenClaw成了一个非常个性化、能被你调教的龙虾。但这也带来另一个问题:system prompt会变得巨大,进而影响整个任务的执行。这也是为什么一定要用非常强的模型—我们都知道模型的注意力有限,一个特别小的模型,输入超过几万token时,它甚至可能不知道你在说什么。但强的模型就没有问题。所以,如果你的 system prompt 写得很多,它甚至能直接用上5万多token,这会导致实际运行中你能用到的有限注意力变得越来越小,当然个性化也会更强。这是它上下文管理里非常重要的一个机制。这些md文件是OpenClaw给定的吗?OpenClaw在运行时,会生成一个初始的soul.md或identity.md,同时在新手引l导时也会问你很多东西来构建这些md文件。但首先,你自己随时可以查看并编辑这些md文件。也就是说,如果你不愿意用对话去调教它,可以直接自已设定它的性格,或者从网上下载别人的龙虾性格装进去,它就会按那个来运行。关于加载,这些文件都是固定加载的一当然也有机制决定如何加载,但大部分与它的主对话中,这些md 都会被无脑加载到 system prompt里,所以会造成刚才说的system prompt巨大。
(2)上下文的剪裁和压缩
OpenClaw本质上并不是一个multi-agent架构,而是一个单 agent 架构。单 agent 架构就是说,在刚才的循环里,它会不停地执行工具使用和工具结果拼接,并不断把新的message追加到模型上下文里。这就带来一个问题:systemprompt已经有5万多token了,每一次工具调用又会把入参和出参都累加到上下文里,这样上下文很容易爆掉。这也是单agent的最大问题。为了规避这个问题,OpenClaw自己做了一套上下文管理能力,叫做上下文的剪裁和压缩。
- 剪裁:最占上下文的东西是工具结果。比如你是一个读文件的工具,结果就是文件全部内容;是一个网络搜索工具,返回的就是20条搜索结果的标题和摘要;是一个读网页的工具,返回的就是HTML。可想而知,工具结果一定最占上下文。如果像刚才说的一直累加,token数就会爆炸,上下文很快就满了。OpenClaw的上下文剪裁机制会自动把n次前的工具结果全部隐掉,只记录模型当时的thought和工具入参。这样能极大缓解上下文不断追加的压力。
- 压缩:除了剪裁,它还会做上下文的压缩。它会为上下文设定一个阈值,比如模型假设接受100K,但通常不会设那么高,可能到80K时,框架发现上下文已经80K了,就会自动调用一个叫做“no reply tools”的机制。这个调用会做几件事:第一,把当前上下文的所有原始信息存到memory里的“每天日志记录”中,这里面记录的是没被压缩前的完整上下文。所有的原始信息都会被存下来,包括模型的thought、工具入参以及工具的原始结果,都会存在这个文件里。存完之后,系统会进行压缩:用模型对之前的全部上下**一次压缩,只保留最关键的信息。这样压缩后的messagelist变得非常精炼,但同时并没有丢掉详细信息,因为详细信息已经写入了md文件。当需要查看之前的记录时,可以通过memory工具去检索。这样的设计让上下文在快要爆掉之前主动压缩,是保证任务能够顺利完成的重要机制。
(3)长记忆搜索
刚才提到,龙虾经常会突然记起之前聊过的一件小事,让人觉得特别暖心。这是怎么做到的呢?它通过一套双层的长记忆机制来实现。
第一层是memory.md。这个文件是模型在心跳触发时,不定期检查之前的聊天记录和运行日志,把最核心的记忆点或你在对话中明确要求“记住这件事”的内容,写入memory.md。这样在下次拼接system prompt时,这些长期记忆就会被加载到上下文中,模型就能知道这些信息。
第二层是一个系统内置的memory search工具。它的搜索目标是刚才写入的那些带日期名的md文件(即原始上下文)。具体做法是:在每次记录memory时,同时为这些原始信息创建向量索引。底层没有用专门的向量数据库,而是用了SQLite自带的轻量级向量索引。搜索时还会结合关键词索引,进行混合搜索:先做向量搜索(对比相似度召回一部分),再做关键词精确匹配召回另一部分,两者权重约为7:3。最后将结果加权合并、重排序,并基于时间等策略返回最相关的topK内容。这样龙虾就能用到历史上的记忆,给出暖心的回答。以上就是三个上下文能力(动态systemprompt、上下文剪裁压缩、长记忆搜索)如何支撑一个单agent架构的OpenClaw既能高效运行任务,又能记住大量信息。
4.2后台任务:双调度机制
前面提到产品特性时说到,OpenClaw之所以话题性强,是因为它的自主性特别强,会主动提醒你各种事情。这种自主性底层靠的是双调度机制的后台任务。说起来其实很简单。后台任务分为
- 精确时间:比如你跟它说“今晚8点提醒我参加直播”,它会建立一个精确时间的cron任务。
- 间隔时间:比如“接下来每隔20分钟提醒我一次”,它会记录间隔任务。
- Cron表达式:比如“工作日每天上午8点提醒我起床”,或“交易日每天9点半给我搜一下行情”,这些会记录为cron表达式任务。当你和OpenClaw聊天时,它会根据你的安排把任务记成cron任务。这些cron任务有两种执行环境:一种是在主session里执行,另一种是用单独的session执行。这对应之前讲的消息路由部分——每个渠道(比如号)会对应到具体的某个session,后台任务也可以创建新的会话来执行。
定时任务如果指定在某个session上执行,它会用该session的上下文来运行;如果用main,则会用后台主session的上下文来执行定时任务。任务执行完后,结果会放到哪里呢?在记录cron任务时,同时会记下通知要发送到哪个channel。这里的channel可能是last(最近一次的channel),也可能是你指定的某个channelID。比如你正通过某个聊天让它创建任务,它就会记住当前channel的ID,后续用这个channel通知你。
Heartbeat机制
heartbeat每30分钟无脑唤醒一次,让 agent做点事情。它做什么呢?每30分钟它会检查心跳清单(即之前提到的上下文里的心跳检查清单)。在日常聊天中,当OpenClaw认为某个任务可能是长期任务、需要时不时处理时,就会把这些待办事项放进心跳检查清单。这些待办任务会在heartbeat调度时被检查到。比如,之前聊天知道某人生日是某天,它会把“在生日那天发祝福”放到心跳清单。每30分钟唤醒时,它会根据当前日期判断是否需要完成清单里的任务。如果需要,就主动发起;如果不需要,就静默返回所以,两种机制一精确指定的定时任务和定期轮询的心跳任务——共同保证了OpenClaw的主动性:定期检查该做什么,并主动完成。底层就是这样的调度机制。
4.3工具调用与Skills渐进式披露
OpenClaw 使用标准的skills 渐进式披露方式来调用各种工具,而且做得非常巧妙。
OpenClaw在工具中加载了预先安装好的skills。关于Claude当时发布的skills协议,它其实分为三层:
第一层是skills的元数据,即对每个skill的描述(description),通常不超过100 token,简单说明有哪些技能、干什么用、何时调用、技能在哪里。这是skills.md头部的部分。
在system prompt加载时,OpenClaw只加载所有已安装skill(比如150个)的名字和最小描述,同时把一整段XML作为工具描述放到一个“加载skill“的工具里。当OpenClaw决定要用某个skill(比如GoogleCalendar)时,它会调用那个“加载skill”的工具,入参就是skill名称。然后“加载skill“工具会去读取对应skill的.md文件(通过read工具),把文件的原文作为消息加到上下文里,再返回给大模型。在skill.md文件中,通常描述了一系列信息,比如技能的具体内容、需要调用的脚本、执行步骤,或者用哪些shell命令来解决什么问题。一旦这些描述被加载到上下文的某个tool result message中,模型就知道了这个技能的存在。当需要调用某个功能时,模型会根据skill.md中的说明,执行对应的脚本来完成工具调用。工具调用通常通过shell执行,执行结果再加载回上下文,从而完成整个技能的加载。这就是skills渐进式披露的底层原理。它的首要效果是节省上下文。对于一个单 agent 来说,如果想把150个能力的全部细节都直接塞进system prompt,那token数可能就不是5万,而是50万都打不住。但通过渐进式披露,system prompt只保留技能名称和最小描述,具体操作步骤和调用方式则在需要时动态加载。这样既避免了无关信息占用上下文,也让整个prompt不会变得臃肿。比如不需要Google日历时,就没必要把它的十几种脚本调用方式都放在system prompt里浪费token。这正是渐进式披露的好处,如今已成为自主运行agent加载技能的标准范式。
OpenClaw不仅实现了这套机制,还做了一件非常有意思的事:技能的一键安装。比如你想拥有一个管理notebook的技能,但不知道具体怎么实现。你只需直接对OpenClaw说“我想要一个管理notebook的能力”,OpenClaw就会自己去ProHub(通过bash命令)搜索相关skill,找到后自动用ProHub install把它安装到自己的技能列表中。从此你的龙虾就获得了使用notebook的能力。这体现了工具和agent的自主进化一之所以标准协议(如MCP、skills)强大,是因为它们能让agent低成本地获取新能力。而OpenClaw更进一步,它能自己修改自己的代码,在自己的环境中安装插件,从而通过对话实现技能的获取,这是非常有趣的进化特性。有同学提到,使用skill时总要手动提醒模型。这涉及两方面:一是模型能力。如果模型不够强,面对5万token的上下文,让它集中注意力去调用某个 skill 本身就是挑战。二是prompt设计。skill的description只有100token的容量,如何在这短短的描述中清楚告诉模型“什么时候该调用这个skill”非常关键。除了说明能力,一定要强调在何种场景下必须使用该skill。这两点(模型能力和prompt技巧)缺一不可。
5、复刻OpenClaw
如果你想做一个OpenClaw,其实很简单,按照下面的蓝图去做就行。

1.真正的自主决策agent
首先模型一定要好,要有非常好的模型核心。除此之外,你需要用到重要的react循环。这个循环你可以自己写(比如用模型function calling方式),也可以用现成框架,比如LangChain 。选定agentSDK后,你需要打磨这个循环,包括如何调用和解析工具,还要处理错误、控制上下文、处理各种失败情况,以及重试和超时策略。
2.安装基础工具
最基础的是:shell命令(没有它很难实现自我进化等操作)、文件操作(read/write/edit)、搜索(获取互联网知识,无头浏览器用Playwright)、代码解释器(让它能写和执行Python 或JS)。这些基础工具缺一不可,否则很难构建强大的 agent。
3.system prompt动态构建
当核心功能跑起来后,它已经能干一些事,但成功率不高。要提高成功率,需要做system prompt动态构建。你不必像OpenClaw那样写很多(soul、identity等),但需要有一套自己的system prompt管理机制,比如用Markdown文件让模型自动加载。
4.hook系统
你需要在各个关键点添加钩子,比如system prompt构建前后、模型调用前后、工具调用前后。这些钩子可用于调试、安全管控、动态加载和上下文管理。
5.会话管理
不能让agent只接收一次命令就结束。需要管理session:何时新建、何时复用、何时重试,以及session存储在哪里。
6.上下文工程
检测上下文溢出,生成摘要,做裁剪和压缩,如果想更强大,可以加一套长记忆系统,先从简单搜索开始,再逐步加入向量搜索和混合搜索,提升检索效果。
7.接入IM平台
完成以上后,你可能还在单机用命令行跑。要像OpenClaw那样用手机就能用,就需要接入IM平台。国内比较方便的是,因为飞书依赖企业环境,个人版受限;钉钉个人虚拟团队设置麻烦。的缺点是主动发消息接口被取消,agent必须回复某条消息,不够灵活。如果想接入更多channel,需要设计channel插件。
8.后台任务
IM搞定后,更强大的功能是后台任务,把短任务变成长任务。实现起来很简单:用CronTab或简单的心跳机制即可。
9.skill加载系统
很多框架自带(如Launchpad),接进来就能用;如果没有,你可能需要自己实现渐进式披露的加载机制。把这些都搞好,一个自己手搓的OpenClaw基本就完成了。这一套东西如果理解了原理,基本上花上一两周,再加上Webcoding的能力,搭建起来应该不成问题。这也是我后续课程里会带着大家做的实战部分。刚才讲的就是复刻整个项目的蓝图。当然,你之后可以自己再丰富,加入更多能力,比如语音、多模态等等。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/250820.html