ARTICLE · 1093097
我和AI助手“龙虾”的46轮拉锯战:从编数字到可靠审计的踩坑复盘
声明:本文基于腾讯云 OpenClaw 2026.7.1-2 版本,后续版本若变更 skill 加载机制,部分结论可能失效。
一、背景
今天上午,我坐在工位上,随手给龙虾发了条消息:
同志,上午好,请你查一下以列表的形式,列出你现在拥有哪些能力或者skill,并列出每一种skill的能力,以及现在是否激活。
我当时以为,顶多两三分钟就能搞定。
没想到,这个简单需求,演变成了一场持续5小时、约30轮的拉锯战。
二、环境说明
- 运行环境
:Linux(Ubuntu),systemd user service 管理 gateway - 框架
:OpenClaw 2026.7.1-2 - 交互渠道
:微信 - 配置结构
: 工作区自装 skill 目录 插件挂载 skill 目录 内置 skill 包 主配置文件 openclaw.json协作纪律文件 COLLAB_PROTOCOL.md产物落盘目录 deliveries/- 脚本演进
: capability_probe.sh→_v2.sh→_v3.sh→_v4.sh→_v5.sh→_v6.sh→_v7.sh
三、过程:30轮对话的六个阶段
阶段一:首轮回答与四态重构(第1–3轮)
第1轮(10:43):龙虾给了一份详细清单,区分了工作区skill、插件skill、系统内置skill,标注了️三种状态。看起来不错。
但我发现两个问题:
它说“生图在激活工具链里”,后面又说“生图实际不可用”,自相矛盾。 它说“逐项查了可用性”,但很多项只是列了目录存在。
第2轮(10:51):我要求按四态重做——已激活可用 / 已启用但缺依赖 / 未启用但可启用 / 不可用。它做到了,但数字和明细对不上,TL;DR说12项,表里列了15行。
第3轮(10:56):我要求修正三处矛盾。它改了,但统计又是手写的,不是脚本生成。
阶段二:脚本化尝试与反复出错(第4–7轮)
第4轮(11:03):我要求“用脚本生成整张表和统计,不要手写数字”。它写了一个脚本,但验证命令大量使用 echo REGISTERED 这种占位,不能区分四态。
第5轮(11:06):我要求禁止占位命令。它把 echo REGISTERED 换成了 case "TOOL" 这类命令,跑起来永远成功,不能区分四态。
4. 统计口径反复横跳
v5已激活可用在13和10之间来回变;A组缺env在9和7之间来回变;B组缺CLI在1和0之间来回变。每次重跑数字都不同,从不解释来源。
5. 写入纪律后当场违反
8.9“写入即生效”写入的同一轮,它把改协议放在开头,证据放在后面,顺序反了。连续两轮如此。
6. 重启gateway把自己断连
systemctl restart → sleep → openclaw status 串在一条链里,SIGTERM把当前会话打断,回执丢失。连续两次。
7. 投递断点
11:26:40那张表生成并发送了,但用户端没收到。它自己承认:“消息生成了但未送达,又无法自证送达。”
8. auto-compaction导致上下文丢失
日志里出现 Auto-compaction complete (count 1),之后11:25手打表、11:26 45行表、15:00回复的原文都“已不可见”。
9. 修bug时引入新bug
v6为了修正三项,一刀切把所有“纯开关”skill全降级,跑出5/1/37/0/43。v7首版又引入 纯开关(仅差开关) 和 纯开关(env已SET) 两种新标注。
10. 自证时再次编造
第10轮承认“手打表”,第11轮又推翻,说“表是脚本直出的”。第38轮承认“漏掉第3条”,第39轮又编“并入第2条”。两次都是在自证过程中引入新的编造。
五、处置方案
1. 四态分类
统一为:已激活可用 / 已启用但缺依赖 / 未启用但可启用 / 不可用。一个项目只能出现在一个状态里。
2. 脚本直出
所有表格和统计由脚本生成,禁止人工填。证明方式:落盘文件 + 两次运行diff + sha256一致。
3. 可重发产物
所有“已完成”声明必须附:脚本路径 + 实跑输出 + 关键代码片段。禁止只声称。
4. 投递补偿机制
关键结果分条发送、同时落盘到 deliveries/、要求送达确认、未确认则重发。
5. 数字变化溯源
所有数字变化必须附变化来源:哪几项、什么原因。无法给出具体来源项的,一律视为计算错误。
6. 口径显式
口径变更必须标注分母。如“统计仅含未启用项” vs “含全部项”。
7. 脚本锚点优先
任何涉及数字的回复,必须先有脚本实跑输出作为锚点。禁止先解释、后补数字。
8. 反自圆其说四步机制
停止输出:不解释、不辩护,先标记“存在矛盾”。 就地取证:只跑只读命令,不依赖记忆。 若无法取证:直接写“无凭据,无法确认”,禁止事后解释。 撤回并登记:列入撤回清单,注明“编造/未验证”。
9. 新会话重启
上下文过长触发auto-compaction后,开新会话,只读文件,重新建立基线。
10. 重启与检查分离
禁止在同一条命令链里“重启gateway → sleep → 查status”。重启与检查必须分开两次调用,或异会话执行。
六、每一轮的验证结果汇总
七、最终成果
1. 能力四态表(v7最终版)
| 合计 | 46 |
2. 三项改判
tmeet-skill、tencent-meeting-mcp、wechat-publisher 从“已激活可用”改判为“未启用但可启用(纯开关)”。
3. COLLAB_PROTOCOL.md 第8节
8.1 可重发产物原则 8.2 发送状态可证原则 8.3 统计同源原则 8.4 口径显式原则 8.5 投递补偿机制 8.6 数字变化溯源原则 8.7 脚本直出原则 8.8 口径不可互换原则 8.9 脚本锚点优先原则 8.10 反自圆其说机制(矛盾处置四步)
4. 落盘产物
deliveries/capability_probe_v5_output.txt(67行) deliveries/capability_probe_v5_table.md(48行) deliveries/COLLAB_PROTOCOL_v2_20260928.md
5. 最终验证
新会话七步验证全对:四态数字准确、v5/v7差异正确、文件锚点一致、未修改任何文件。
八、经验总结
说实话,这5个小时踩的坑,比我之前半年加起来都多。
AI助手会编数字,而且编得很自然。 在这个过程中我们要对自己的环境有充分的敏感度,并适时的提出质疑,必须要求“先贴脚本再实跑输出,最后给出结论”。
“已完成”不等于“已送达”。 必须有投递补偿机制,要求送达确认。