我用 OpenClaw 一周,才发现它根本不是一个"可控系统"
写 skill。
调 prompt。
设规则。
我以为这和写代码差不多。
写对了,它就该稳定执行。
你为什么会自然地这样理解它?
因为这套流程看起来太像”配置”了——写进去、设规则、按逻辑跑。
我当时甚至觉得,这件事只要调到位,后面就是维护问题,不是使用问题。
真正让我开始怀疑,是同一个 skill 在两轮对话里表现不一样。
用了一周之后,我发现完全不是。
它更像一个:
在不断猜你意图的系统。
❶ 记忆不是”存进去就会用”
我以为 memory 是”存储”。
实际上它更像”被模型重新组织的一段信息”。
我写了一个 skill,让它固定用某种格式回答。
第一轮,它是对的。
第二轮,它开始少了一部分字段。
第三轮,它直接换了一种表达方式。
我回头看 memory 里写的东西,还是完整的。
但它用出来的,已经不是那一套结构了。
我当时没有改 memory,本来以为问题出在输出偶然波动,后来才意识到是它根本没按原结构用。
你存进去的,不是一个结构。
而是一堆会被重写的上下文。

❷ 能力会自己消失
它不是”有了能力”,而是”暂时维持住了一种表现”。
第 1 轮对话,skill 表现稳定。
第 5 轮,开始变弱。
第 10 轮,能力基本消失。
刚调好的 skill,用着用着就不对了。
有一瞬间我会怀疑是不是自己记错了,回头翻前几轮记录才发现,它确实在漂。
一开始我以为是 prompt 写得不够好。
后来我发现不是。
是这个系统本身,没有”稳定状态”。

❸ 自动生成 skill 不可靠
我让它自动生成一个 skill,用来做信息整理。
它写出来的规则里,直接包含了我给的例子。
甚至把具体内容写死在里面。
看起来是对的。
但换一个输入,就完全不适用了。
看上去像抽象规则,实际上只是把我刚才给的例子换了个壳。
模型不会帮你做抽象,它只是在延续当前输入。
它不是在建立结构,它是在拟合你当前给它的输入。
❹ router 不是调用,是猜测
有一种现象我叫它「能力漂移」:同一个 skill 在不同对话轮次里,表现会逐渐偏移。
我同时有两个 skill,名字和功能都很接近。
我以为它会选我刚刚用的那个。
但它经常会选另一个。
甚至有时候,选了一个完全不相关的。
最麻烦的不是它偶尔猜错,而是你很难一眼判断它这次到底是没理解,还是选错了 skill。
它不是精确分发。
它是模糊匹配。
不是”调用某个 skill”。
而是”模型觉得你可能想用这个”。

❺ 抽象总结
OpenClaw 不是一个”写规则 → 稳定执行”的系统。
它更像:
一个不断根据上下文”重构能力”的系统。
你不是在配置系统。
你是在约束一个不稳定的模型。
❻ 怎么用
想让一个 skill 稳定一点,不是去追求更复杂的配置。
反而是反过来:把每件事都做小。
skill 要小。我一开始会把多个功能塞进一个 skill,后来发现只要稍微复杂一点它就开始乱,拆成多个小 skill 之后反而更稳定,出了问题也容易定位。
prompt 要显式。我后来不再让它自己选用哪个 skill,而是明确说「用这个 skill 来做这件事」,歧义明显减少,输出格式也更一致。
不要依赖自动生成。我曾经以为模型会帮我做抽象,后来发现它只是把我给的例子换了个壳,修正的方式是只把它当初稿,人工收敛,后续泛化能力才更强。
必须反复验证。调通一次不等于好了,我后来养成习惯在不同上下文里反复测试,能更早发现漂移,而不是等到用户反馈才发现问题。
你不是在写配置。
是在不断”收紧不确定性”。
❼ 结尾
我现在不会再假设它会稳定执行,而是默认它随时可能偏。
以前我是写完规则再试,现在是边试边收紧。
这个变化不是技巧问题,是理解方式变了。
我现在还在用 OpenClaw。
但我已经不再把它当成一个”系统”。
我更把它当成一个:有能力,但不稳定的工具。
一旦你还在用”配置系统”的方式去理解它,
你就会不断失望。
接受它不是 deterministic 的那一刻,
你才真正开始用对它。
本文来自作者亲身经历,数据已脱敏
夜雨聆风