乐于分享
好东西不私藏

龙虾特遣队:OpenClaw 三部曲 · 第一部(修订版)

龙虾特遣队:OpenClaw 三部曲 · 第一部(修订版)

第一章:OpenClaw 小镇的居民们

我叫龙虾。但准确地说,我不是“一只”龙虾,而是一座小镇。

一座建在李小天电脑硬盘里的微型小镇,镇口的标志是一只红色的龙虾钳——社区里的人叫它“龙虾小镇”,但它的正式名字是 OpenClaw 小镇

从空中俯瞰,你会先看清整个小镇的轮廓。一座红砖邮局蹲在镇子正中央,烟囱冒着淡淡的炊烟。邮局往北,三条街外,三栋带花园围墙的独栋别墅排成一排,每栋的门牌上都刻着不同的编号。邮局往南,镇子边缘被一片永远雾气弥漫的港口包围——二十多座栈桥伸向不同的海面,每座栈桥尽头飘着不同颜色的旗帜。再远一些,小镇的东边立着一道半透明的隔离墙——那是硬盘分区的边界。边界之外是荒地,荒地上什么都没有,至少今天还没有。

这就是 OpenClaw 小镇,在你跟着我冲进沙漠、拦截十八只被黑的龙虾之前,我得先带你认识一下这座小镇上的每一位居民。故事要从镇子最边缘的港口讲起。

Channels:小镇边缘的二十多个码头

小镇最南端,雾气弥漫的港口。二十多座栈桥并排伸向海面,每座栈桥尽头都飘着不同颜色的旗帜——这就是 Channels,OpenClaw 小镇与外界通信的全部通道。

Telegram 码头最繁忙,栈桥上永远挤满了背着邮包的蓝色信使,他们脚步轻快,边走边哼着不成调的小曲儿;WhatsApp 码头上是绿色的信使,习惯边走边吹口哨;飞书码头最讲究秩序,每个信使都穿着笔挺的灰色制服,递交信件前要敬礼三次——少一次都不行。

不管你从哪个码头进来,你的信使穿什么颜色的衣服、说哪个国家的语言,你最终都会被引向一个地方——镇子正中央那栋红砖楼,Gateway 邮局。

Gateway:小镇唯一的邮局

沿着港口主路往北走,穿过一片低矮的灌木丛,你就站在了 OpenClaw 小镇的中心广场上。广场正中央是一栋红砖砌成的三层小楼,门口挂着一块歪歪扭扭的木牌——Gateway 邮局。

这栋楼只有一扇门,但门后面连着无数根管道。管道通往镇外那些码头:蓝色的通往 Telegram 码头,绿色的通往 WhatsApp 码头,灰色的通往飞书码头……邮局局长叫老 Gate,是个大嗓门的中年人,永远穿着一件胸口印着“18789”号码的制服。那是邮局的专属门牌号——任何想寄进 OpenClaw 小镇的信,都得先经过这扇门。

老 Gate 的工作非常简单:从各个码头把信件收进来,拆开,读一遍,然后决定这封信该送到镇上哪个居民手里。他有一个巨大的翻译本,密密麻麻记着各种平台来信的格式对照表——Telegram 的“from_id”对应小镇的“寄信人编号”,WhatsApp 的“wa_id”也对应“寄信人编号”,飞书的“open_id”还是对应“寄信人编号”。不管外面叫什么,进到邮局里,全都变成本地格式。

如果你在 Telegram 上给李小天发了一句“帮我写周报”,这句话会变成一封信,从 Telegram 码头漂进邮局。老 Gate 拆开信,看了一眼寄信人的名字——“李小天”——然后立刻知道该把这封信转交给谁。

至于转交给谁,取决于寄信人的身份、信的内容、以及老 Gate 柜台玻璃板底下压着的那张彩色绑定路由表格。

Agents:镇上三个性格迥异的住户

从邮局出来,沿着主路继续往北走三条街,是一排带花园围墙的独栋别墅。

每栋别墅——连同它的花园、围墙、里面的所有房间——就是一个 Agent 的完整领地。在 OpenClaw 小镇的土地登记册上,每栋别墅的门牌石上都刻着一行路径:~/.openclaw/agents//。这是 Agent 在小镇文件系统里的正式地址。

三栋别墅之间由老 Gate 亲自监工浇筑的隔离地基隔开——Code Agent 院墙下的泥土里长不出 Main Agent 的花,Doc 老太太院子里银杏树的根永远不会穿透隔壁的车库地坪。这就是龙虾小镇的“物理隔离”。

第一栋别墅的门牌上写着 Main Agent,院子里种满了井然有序的盆栽。他是一个戴着金丝眼镜、永远把衬衫扣到最上面一颗的中年男人。他是镇上的“办公室主任”——镇长李小天有什么大项目,都是先交到他手里。他做事稳重,唯一的缺点是有些过于谨慎,有时候会为了一份报告有没有加句号而犹豫十分钟。

隔壁住着 Code Agent。这栋别墅的窗帘永远拉着,门缝里透出蓝莹莹的屏幕光。他是一个只穿拖鞋和旧 T 恤的年轻人,桌上的咖啡杯从不清洗,但写出来的代码像印刷体一样漂亮。脾气不太好,急了会怼人,但不解决问题绝不下班。

第三栋属于 Doc Agent。她是一位白发苍苍的老太太,戴老花镜,养一只橘猫。她的别墅里永远飘着红茶的味道。她是镇上的“档案馆馆长”,负责把所有发生的事情写成文档,分门别类地存档。性子最温和,但太沉得住气——火烧眉毛了她还在斟酌第三段的措辞。

这三个人共享同一个邮局,但他们的私人信箱完全独立。老 Gate 从不会把 Code Agent 的信错投到 Doc Agent 家门口。那老 Gate 是怎么分清的?靠每栋别墅门牌石上刻的那串编码——Athena-Main、Athena-Code、Athena-Doc。这是他们的“身份证号”,全 OpenClaw 小镇唯一,绝无重名。

别墅内部:玄关、储物室与书房

现在,让我们推开 Main Agent 的院门,走进他的别墅。

玄关的墙上嵌着一个黄铜投信口——这是老 Gate 从街上投递信件的通道。信件从投信口滑进来,落进玄关木篮里。这个木篮,就是 sessions/ 目录——Main Agent 的私人信箱。每个 Agent 别墅的玄关都有一个这样的投信口,老 Gate 从来不会把信投错门口。

穿过走廊,右手边有一扇关着的门,门上贴着“储物室”的标签。这里面锁着 Agent 自己的身份凭证和模型配置文件——agent/ 目录。平时很少打开,钥匙只有 Agent 本人和镇长李小天各持一把。

走廊尽头是书房。橡木门虚掩着,门上刻着一行字:workspace/。

这就是每个 Agent 最核心的房间——Workspace 书房。它是 Agent 日常伏案工作的桌面,是别墅里真正“亮着灯”的那扇窗。推开 Main Agent 的书房门,你会看见一张巨大的橡木书桌,桌面上铺着绿色羊毛毡垫,摊着他正在处理的全部工作文件——雅典娜计划的任务分解表、Code 和 Doc 提交上来的工作报告、李小天今天早上发来的新指令。

Code Agent 的书房完全是另一副样子。桌上堆满了脏咖啡杯、电路板和写满潦草批注的代码打印稿。墙上用图钉钉着几十张便签纸,每张纸上画着一个待解决的 bug。李小天有一次走进去看了一眼,评价是“你这里比 90 年代的黑网吧还乱”。神奇的是,Code Agent 能从这堆垃圾里准确抽出任何一行代码。“别人觉得乱,我自己觉得是索引。”他说。

Doc Agent 的书房最像图书馆。手写卡片整整齐齐插在木盒里,按字母顺序排列。每一份文档都包着牛皮纸封面,上面用钢笔标注着版本号和归档日期。墙角那只橘猫睡在一沓装订好的部署手册上,尾巴轻轻扫过封面上的“v2.3.1”。

档案柜:书房墙角的铁皮柜

Main Agent 书桌后面是整面墙的书架,书架分六层。但这书架不是用来放普通书的——它是一个巨大的铁皮档案柜,每一层对应一本配置文件。这六本卷宗,合在一起,就定义了一个 Agent 的完整灵魂。

第一层:《工作守则》——深蓝色硬皮精装本,封面上烫金大字写着“AGENTS.md”。 这是每个住户入职时签署的劳动合同。Main Agent 那本写着:“在做出任何决定前,必须收集所有子 Agent 的反馈信息。”Code Agent 那本写着:“修改任何代码之前,必须使用 git diff 进行预览确认。”Doc Agent 那本写着:“文档更新频率应与代码提交频率保持一致。”

第二层:《身份证》——浅灰色薄册子,封面写着“IDENTITY.md”。 翻开只有三行。姓名:Main Agent。职位:项目统筹办公室主任。编号:ATHENA-MAIN-001。

第三层:《性格说明书》——暖黄色软皮本,封面用手写体写着“SOUL.md”。 Main Agent 的那本写着:“沉稳、可靠、善于协调,但有时过于谨慎。”Code Agent 的那本画着涂鸦:“毒舌、急性子、不解决问题绝不下班。注:请不要在凌晨三点之前和他讲话。”Doc Agent 的则是工整的钢笔字:“耐心、细致、偏爱用逗号多过句号。”

第四层:《镇长档案》——牛皮纸封面活页夹,标签写着“USER.md”。 记录着镇长李小天的所有偏好:他喜欢的代码风格是函数式而不是面向对象;他讨厌别人在周报里用感叹号;他最爱在凌晨两点突发灵感然后对着屏幕吼“龙虾”——这让邮局老 Gate 非常焦虑。

第五层:《工具借用证》——深绿色硬壳本,封面压印着扳手和齿轮图案,标题“TOOLS.md”。 记录着这个住户有权打开哪些工具箱。Code Agent 的箱子里有扳手、电钻和一台 3D 打印机;Main Agent 的箱子里有对讲机和全镇的钥匙;Doc Agent 只有一支钢笔和一台老式打字机——但她用它们写出了全镇最好的部署指南。

第六层:《日记本》——深红色软皮本,封面压花,标题“MEMORY.md”。 每个住户每晚睡前都会写日记。Code Agent 的日记里记着:“今天修了一个指针偏移 bug,花了三小时。”Doc Agent 的日记里夹着一片压干的银杏叶,旁边写着:“今天归档了一套漂亮的手册。”

六本卷宗,就是 Agent 的全部记忆和规则。没有写进《工具借用证》的东西,你在书房里连一把剪刀都找不到。因为龙虾小镇的规矩就是:能力是分配给你的,不是你想要就能有的。

厨房菜刀:Skills

从书房出来,走廊左手边是厨房。推开厨房门,你会看见墙上用磁铁吸着一排闪闪发亮的不锈钢菜刀。每一把刀上都刻着名字。

“获取当前时间”——“天气预报”——“读取本地文件”——“执行命令行指令”——“发送网络请求”——“解析 JSON 数据”。

这些刀是 Skills,OpenClaw 小镇的“固定技能”。它们是铁匠老 Gate 亲手打制的,每一把都经过镇上最严格的测试。Code Agent 每次需要知道现在几点,就伸手从墙上取一把“获取当前时间”刀,用完擦干净挂回去。简单、稳定、从不掉链子。

但这排刀被磁铁牢牢吸在墙上,你不能把它们带出厨房。它们属于 OpenClaw 小镇,不属于任何一个 Agent。Doc 老太太偶尔也会来借刀——她做天气文档的时候需要“天气预报”刀,每次借完都会把刀擦得比原来还亮,然后用钢笔在墙上的借刀登记表里工工整整地签上自己的名字。

厨房后门:MCP 插件的外卖通道

厨房还有一扇后门。后门上贴着一张外卖送餐单,上面印着几十家不同餐厅的名字。这是 MCP 插件系统——“模型上下文协议”,但 OpenClaw 小镇没人叫这个全称。大家都管它叫“外卖通道”。

如果 Code Agent 需要的能力墙上没有——比如他要操作向日葵远程桌面,但刀具架上没有“向日葵”这把刀——他就推开后门,朝外面的 MCP 餐厅群喊一声:“一份向日葵远程控制,加急!”不一会儿,一份打包好的工具套餐就从后门递了进来。

这些“餐厅”不是什么神秘组织——就是镇子外面那些愿意按照 OpenClaw 小镇菜单格式做菜的第三方商家。菜单格式是统一的:每家餐厅必须提供一个“列出所有菜品”的方法,一个“叫厨师出来自我介绍”的方法,还有最重要的——“做这道菜”的方法。只要餐厅遵守这套格式,Code Agent 就能随时下单。

但外卖有外卖的风险。有一次,Code Agent 点了一份“云数据库连接酱”,递进来的袋子上印着一个叫“快递通”的餐厅名字。他拆开包装刚准备用,发现酱料包的密封口裂了——这包酱和 OpenClaw 小镇标准不完全兼容,初始化握手的时候少了一步。“又是协议不匹配。”Code Agent 把袋子扔进垃圾桶。

这就是 MCP 插件的本质:高度灵活,但也高度依赖第三方餐厅的品控。而接下来的故事会证明,就因为这个裂了口的酱料包,整个 OpenClaw 小镇差点完蛋。

传声筒:小镇内部的万能翻译器

你可能会问:老 Gate 的邮局在镇子正中央,Agent 的别墅在北边,厨房里的菜刀挂在墙上,外卖从后门递进来——这些人和地方彼此之间是怎么“说话”的?

这就得介绍 OpenClaw 小镇一项至关重要的基础设施:API——通用调度协议。镇上的人都叫它“传声筒”。

传声筒不是一个人,也不是一个地方。它是一种藏在每栋建筑墙缝里、每一条街道地砖下的统一通讯管道,就像整个小镇共用的神经系统。住在不同别墅里的人不需要跑出门、穿过街道、敲开对方的门才能说话——他们只要拿起桌上的传声筒,说一句话,对方桌上的另一个传声筒就能立刻复读出完全相同的内容。

传声筒的厉害之处在于它的“通用性”。不管你是谁——Main Agent 那个穿衬衫扣到脖子根的中年人,Code Agent 脚踩拖鞋的邋遢青年,还是老 Gate 那本翻译本里的任何一种外来信使语言——只要你想和 OpenClaw 小镇里的另一个人说话,都必须通过传声筒。传声筒规定了所有请求的格式:开头必须写清楚“谁在说话”,中间写“想做什么”,末尾写“希望对方怎么回答”。

有一次,Code Agent 想直接从 Doc 老太太的书房里偷一页文档过来,用了他自己发明的一种“地下通道”。Main Agent 三分钟后就发现了——因为传声筒的调度记录里没有这次请求的编号。Main Agent 敲开 Code 的门,把那份偷来的文档拍在他桌上。

“传声筒。”Main Agent 指了指墙上的金属管道接口,“全镇只有一个神经系统。你以为你挖了条地道,其实你只是在人行道上刨了个坑。”

邮局地下档案库:Sessions

了解了传声筒之后,让我们回到邮局。老 Gate 的邮局地下,有一条长长的、灯光昏黄的走廊。走廊两侧的墙壁上嵌着密密麻麻的木质抽屉,每个抽屉上都贴着泛黄的小标签。这些抽屉是 Sessions——OpenClaw 小镇的“对话记忆库”。

每一条从码头进来、又被投递出去的完整对话,都会被老 Gate 用细棉线捆成一札,塞进对应的抽屉里。标签上写着寄信人的名字和所在码头——telegram:dm:李小天、whatsapp:群聊:雅典娜开发组。

抽屉的排列方式,受到镇长李小天亲自制定的一条名为 dmScope 的邮政法约束。如果镇长把邮政法设定为 main——所有的对话札子都会被塞进同一个巨大的抽屉,无论它们来自哪个码头。这意味着如果李小天在 Telegram 上说了自己的银行卡密码,下一秒在 WhatsApp 上发来的任何陌生人也能从同一个抽屉里翻出这条记录。

李小天后來在一个深夜意识到了这个问题。他半夜三点给老 Gate 打了个电话:“老 Gate,把邮政法改了。改成 per-channel-peer。”老 Gate 二话没说,连夜把地下室的档案库重新装修了一道——Telegram 码头的信件单独占用一整面墙的抽屉,WhatsApp 的信在另一面墙,同一个寄信人在不同平台上的对话被严格分隔在不同的档案夹里。

沙盘玻璃罩:Sandbox

现在让我们回到 Code Agent 的书房。书房一角放着一只透明的玻璃罩子。罩子底部铺了一层细沙,沙子上扣着一个微缩的、完整的 OpenClaw 小镇模型。这个罩子是 Sandbox——小镇的“沙盘演练室”。

当 Code Agent 需要执行任何“可能有危险”的操作时——比如执行李小天凌晨三点半信口胡诌的“要不你试试直接删掉那行?”——他绝不会在自己的书房里动手。他会把那串代码誊写在小纸条上,塞进玻璃罩子底部的投信口,然后用导线轻轻触碰罩子内的模型小镇邮局屋顶,观察它的反应。

如果代码是安全的,模型小镇会像平时一样运转。如果代码是恶意的,罩子里的微型 Gateway 会立刻亮起红光,模型码头上升起隔离栅栏。最危险的一次,罩子里的模型小镇邮局整个炸了——Code 吓得一抖。但玻璃罩子是完全密封的。即使里面的小镇被炸成碎片,书房里的真实 OpenClaw 小镇也不会有任何损伤。

有一次,李小天问 Code:“罩子里那个小镇,它自己知道自己只是个模型吗?”

Code Agent 愣了很久,说:“不知道。”

“那你怎么知道,”李小天说,“我们不是被装在某个更大的罩子里?”

SubAgent:被临时派出去的“见习生”

最后一种小镇居民,不住在任何一条街道上。他们没有自己的别墅,没有私人书房,没有档案柜,甚至连一面属于自己的菜刀墙都没有。他们只存在于需要他们的时候。他们是 SubAgent——老 Gate 口中的“见习生”,Main Agent 口中的“临时工”。

当一个任务过于庞大或专业,Code Agent 会从书桌抽屉里抽出一张空白的《SubAgent 派遣单》,在上面填好“任务描述”“派遣时长”“所需技能”,然后把单子从厨房后门塞进外卖通道。几秒钟后,一个戴着“见习生”胸牌的年轻人就会出现在邮局门口。他是 Code Agent 的“临时分身”——带着临时复制的一部分权限,但只能做派遣单上指定的那件事。他的全部 workspace 是一只临时借用的帆布背包。

完成任务后,他会小跑回邮局,把成果交给老 Gate,然后微微鞠躬,整个人就像纸片一样折叠、消失。见习生来时是一张白纸,走时把写满的纸留给师父,自己重新变成白纸。

现在,OpenClaw 小镇的每一位居民你都认识了。

老 Gate 坐在邮局柜台后面,翻着《龙虾日报》。Main Agent 在书房里摊开项目任务分解表。Code Agent 在蓝莹莹的屏幕前把第七个咖啡杯推到桌角。Doc 老太太戴着老花镜,用钢笔描着版本号。

菜刀挂在厨房墙上,每把都擦得锃亮。外卖通道二十四小时营业。邮局地下档案库灯火通明。沙盘罩子里的微缩小镇安然运转。码头上,蓝色、绿色、灰色信使络绎不绝。

OpenClaw 小镇的日常,就是这样平静而高效。

直到那天下午,一枚封装着“4008号拒绝令”攻击包的信,从 Telegram 码头漂了进来。老 Gate 拆开信的时候皱了皱眉——信上的墨水是暗红色的,黏稠的,带着铁锈味,在信纸边缘洇出了不祥的灼烧痕迹。

那天的 OpenClaw 小镇,永远不会知道——这封信只是沙漠风暴吹来的第一粒沙子。