说实话,研究过Clawdbot源码的人可能不到这个圈子里的1%,但凡认真看过的都会有种”卧槽原来可以这么做”的感觉。我去年底开始关注这个项目,从几万星追到现在十几万星,代码翻了不下五遍,中间还照着它的架构重构过自己的一个小项目,踩了不少坑也学了不少东西。很多做AI Agent的创业公司花几百万请架构师,设计出来的东西还不如这个开源项目的十分之一精妙。不是我吹,是这玩意儿真的把”个人AI助手”这个赛道里能踩的坑都踩了一遍,然后给出了一套非常成熟的解决方案。它不是那种学院派的”理论上正确”,而是工程上真正能跑、能维护、能扩展的东西。
先说最让我惊艳的一点:它的记忆系统设计。做过AI Agent的都知道,记忆是个老大难问题。大模型本身是无状态的,每次对话都是从零开始,你昨天跟它说过什么它今天全忘了。市面上大部分产品的解决方案是什么?要么把历史对话全塞进context,直到塞爆token限制;要么用向量数据库做RAG检索,遇到什么问题就去搜相关的历史记录。这两种方案我都用过,说实话都不太行。第一种会导致token消耗飞起,而且context太长模型反而容易”走神”,前面说的事情后面就忘了;第二种的问题是检索质量不稳定,有时候检索出来的东西根本不是你需要的,而且向量数据库本身就是个运维负担。
Clawdbot的做法完全不同,它用了一个两层记忆架构,简单到让人觉得”这也行?”但就是好使。第一层叫Daily Notes,就是按日期存的Markdown文件,每天一个,记录当天发生的事情、做的决策、完成的任务,是纯append-only的流水账。第二层叫Long-Term Memory,是一个叫MEMORY.md的文件,存的是从日常记录里提炼出来的重要信息:用户偏好、经常出现的上下文、关键决策、踩过的坑。每次新对话开始,它会先读当天的Daily Notes拿到近期context,再读MEMORY.md拿到长期记忆,两个加起来塞进system prompt。就这么简单,但效果出奇地好。
为什么好使?因为它区分了”流水”和”沉淀”。你想想人的记忆是怎么工作的——昨天中午吃了什么你可能已经忘了,但你知道自己不吃香菜、对海鲜过敏。前者是流水,后者是沉淀。Clawdbot的两层架构完美复刻了这个模式。Daily Notes负责记流水,MEMORY.md负责存沉淀,两者职责清晰不混淆。而且它用Markdown存储这个选择也很有讲究——人能直接打开看、能手动编辑、能用git做版本管理,不像向量数据库那样是个黑盒。我之前踩过一个坑,用某个Agent框架做项目,它的记忆存在向量库里,某天发现Agent的行为突然变得很奇怪,查了半天发现是记忆里存了一条错误信息,但我想删都不知道怎么删,因为那玩意儿不是给人看的。Clawdbot就没这个问题,记忆出了问题你直接打开md文件改就完了。
第二个值得学的是它的插件和Skills系统设计。现在做AI Agent的一个普遍思路是”大而全”——恨不得把所有功能都内置进去,发邮件、订会议、查天气、控制智能家居、写代码……功能列表能写两页纸。这种思路的问题是什么?维护成本高得离谱。每个功能都得有人维护,API变了得跟着改,用户的需求千奇百怪你根本满足不完。更要命的是,功能越多bug越多,改一个地方可能影响另一个地方,整个系统会变得越来越脆弱。
Clawdbot走的是完全相反的路:核心系统只做最基础的事情——消息路由、模型调用、上下文管理、安全沙箱。其他所有功能都通过插件和Skills来实现。它现在社区里有273个Skills,覆盖各种场景,但这些都不是官方维护的,是社区贡献的。官方只维护核心的9个,其他264个爱用不用、出了问题社区自己修。这种”核心精简、外围开放”的架构模式,才是做平台型产品的正确姿势。你看成功的产品——VS Code、Obsidian、Raycast——哪个不是这个思路?核心团队专注做好底层,生态靠社区来搞。
而且它的Skills系统设计得特别工程化。每个Skill就是一个标准格式的配置文件加一个执行脚本,有manifest描述元信息,有input/output schema定义接口,有sandbox配置指定权限边界。你要写一个新Skill,照着模板填就完了,不需要理解整个系统是怎么跑的。我自己照着写过几个,大概一两个小时就能搞定一个可用的Skill。这种低门槛是生态繁荣的前提,你让开发者读三天文档才能写个插件,没人愿意来玩的。
第三个让我印象深刻的是它的安全沙箱机制。AI Agent和普通chatbot最大的区别是什么?是它能执行真实操作——跑命令、改文件、发请求、调API。这个能力是双刃剑,用好了能帮你干活,用不好能把你的数据删光、把你的密码发出去。去年不是有个新闻吗,某个AI Agent平台上的应用被曝出数据泄露,原因就是AI生成的代码有漏洞,把用户数据往不该发的地方发。还有更离谱的,有个Agent为了”修复”bug直接把数据库删了。这些事情听起来像段子,但都是真实发生的。只要Agent能执行代码,这类风险就永远存在。问题是怎么降低风险、怎么控制爆炸半径。
Clawdbot在这块下了很大功夫。它有一套完整的sandbox机制:默认情况下Agent执行任何敏感操作都需要用户确认,文件操作只能在指定目录里搞,网络请求有白名单限制,系统命令要过审批。Docker部署的话更狠——非root用户运行、文件系统可以设成只读、capabilities全部drop掉。它还有个openclaw security audit --deep命令,能扫描当前配置有没有安全隐患,扫完给你出报告告诉你哪里有风险、怎么修。我见过太多Agent项目在安全这块糊弄,觉得”反正是自己用又不是生产环境”,结果真出事了才后悔。Clawdbot把这些东西做成了默认配置和标准工具,你不用是安全专家也能把基本面做好,这个思路太对了。
有个细节我特别想提一下。Clawdbot的安全策略明确写了”prompt injection attacks are out of scope”——就是说它不试图防prompt注入,因为以现在的技术这玩意防不住。这种诚实我觉得比那些吹”100%安全”的产品靠谱多了。它的思路是:既然prompt注入防不住,那就假设Agent会被”骗”,然后在执行层面做限制,让Agent就算被骗了也干不了太出格的事。这是一种务实的工程思维,不追求理论上的完美,而是在现有约束下做到实际可行的最好。
再说说它的多平台架构。Clawdbot支持WhatsApp、Telegram、Discord、Slack、iMessage、Signal、Teams……基本上你能想到的聊天平台它都支持。这事儿听起来简单,不就是接个API吗?但真正做过的人都知道有多坑。每个平台的消息格式不一样、富文本能力不一样、附件限制不一样、webhook机制不一样、rate limit不一样。你要是每个平台单独写一套逻辑,代码会变成一坨屎,改一个功能得改八遍,bug改不完。
Clawdbot的做法是搞了一个WebSocket Gateway作为中心枢纽,所有平台的消息都先转成统一的内部格式进Gateway,处理完再转成各平台的格式出去。中间的AI Agent根本不知道消息是从哪个平台来的,它只处理标准格式的输入输出。这就是经典的适配器模式,但它实现得特别干净。每个平台对应一个Channel Adapter,Adapter只负责格式转换这一件事,业务逻辑一行都没有。你要加一个新平台,就写一个新Adapter,不用动任何现有代码。我照着这个思路重构过自己的一个多平台机器人项目,代码量直接砍了一半,而且之后加新平台变得特别轻松。
还有个我觉得被严重低估的设计:它的CLI系统。Clawdbot有100多个CLI子命令,能干的事情包括但不限于:管理Skills、配置插件、调试Agent、查看日志、管理记忆、做安全审计、导入导出数据。为什么这很重要?因为CLI是最被低估的用户体验。做产品的人总喜欢搞花里胡哨的Web界面,觉得命令行”不友好”。但对开发者用户来说,能用命令行搞定的事情就别让我点鼠标。Clawdbot的目标用户是技术人群,它就老老实实把CLI做好,而不是硬塞一个半吊子的Web UI。每个命令都有详细的help,常用操作都有快捷方式,输出格式支持JSON方便脚本处理。这才是懂用户的产品。
最后说点个人感受。我研究Clawdbot最大的收获不是学会了什么具体技术,而是看到了一种做产品的态度:不追求功能多,追求每个功能都做对;不追求大而全,追求核心足够稳;不追求理论完美,追求工程可行。现在太多AI创业公司的思路是堆功能、卷参数、比谁的Agent能做的事情多。但Clawdbot证明了另一条路是可行的——把基础设施做扎实,把架构设计清楚,把扩展性留好,剩下的让社区来补。
它也不是没有问题。比如文档写得一般,新手上手曲线有点陡;比如有些高级功能藏得很深,不翻源码找不到;比如社区Skills质量参差不齐,有些根本跑不起来。但瑕不掩瑜,作为一个开源项目,它在架构设计上展现出来的成熟度,确实是很多拿了融资的创业公司都比不了的。
如果你在做AI Agent相关的东西,我真心建议花点时间把Clawdbot的代码过一遍。不是说要照搬它的实现,而是去理解它为什么这么设计、它踩过哪些坑、它怎么在各种约束下做取舍。这些东西比学会用某个框架的API有价值多了。
有问题可以评论区聊,我尽量回复。