最近我在折腾一个部署在 VPS 上、24/7 运行的 OpenClaw 助理系统。

起初目标其实很明确: 我想让它变得更像一个真正能工作的长期助手,而不是一个只会聊天、套话、或者机械执行的模型壳子。

我想要的效果是:

  • 普通任务用一个更稳、更省的模型先处理
  • 复杂任务再切到更强的执行模型
  • 风格上更务实、更严谨、更专业
  • 不要假大空,不要偷懒式思考,不要用”建议你先""可能需要进一步分析”来逃避判断
  • 最好还能逐步形成一套长期稳定的”工作人格”

听起来很合理,对吧?

但问题是: 合理的目标,不代表合理的落地方式。

这次折腾到后面,我明显感觉龙虾(OpenClaw 助理)开始”不对劲”了:

  • 回答变僵
  • 对简单问题也像在做系统自检
  • 会暴露内部工具调用痕迹
  • 有时候像在”背制度”
  • 普通聊天都能被它做成一场规则执行会议

说白了就是一句话:

我没有把它调聪明,反而把它调笨了。

这篇文章,就是对这次错误操作的完整复盘。


一、最开始的想法,其实没有错

我最初的设计思路并不离谱,甚至放在很多 AI Agent 项目里都算合理。

核心逻辑是:

  • 用一个相对稳、相对省的模型做前置理解和分流
  • 用一个更强的模型做复杂任务执行
  • 再加一个免费或廉价模型做保底兜底
  • 同时希望它具备更清晰的”人格”和”工作纪律”

于是我一步步做了这些事情:

  1. 设计模型岗位 比如 Clarifier、Executor、Emergency Fallback
  2. 设计运行规则 比如什么情况先澄清,什么情况直达执行,什么情况必须确认
  3. 设计风险边界 比如高风险动作怎么处理,可控风险和不可控风险怎么区分
  4. 设计人格文件 比如 SOUL.mdAGENTS.md
  5. 在 OpenClaw 里接入实际模型 比如默认主模型、fallback、Codex 备用、模型别名等

问题不在”方向”,而在”力度”。


二、真正的问题:我把”设计图”误当成了”运行配置”

这次最大的错误之一,是我没有在一开始就彻底分清楚两类东西:

1. 设计图

也就是各种 .md 文档:

  • OpenClaw_V1_POLICY.md
  • OpenClaw_V1_RUNTIME_POLICY.md
  • 长版规则说明
  • 模型岗位设计
  • 风险矩阵
  • 单模型模式
  • 路由逻辑说明

这些东西本质上是:

我脑子里的系统设计图。

它们的价值在于帮助我自己想清楚边界、分工和长期方向。

2. 真正会影响模型行为的运行上下文

比如:

  • SOUL.md
  • AGENTS.md
  • 当前会话上下文
  • OpenClaw 读取并注入的 bootstrap 文件
  • prompt 里的硬约束

这些东西本质上是:

每一轮都会真的塞进模型脑子里的内容。

问题来了。 我把很多原本应该停留在”设计图层”的内容,直接推进了”运行层”。

结果就是:

  • 规则太多
  • 说明太重
  • 结构太复杂
  • 每一轮都在提醒模型”你应该如何如何”
  • 最后模型开始更像”制度执行器”,而不是”会工作的助理”

三、第二个错误:我想让它”有纪律”,结果把它变成”客服”

我很明确不喜欢那种 AI 行为:

  • 模糊需求就机械追问
  • 什么都要我先说明白
  • 明明能推进却停在表面总结
  • 明明没做却装得像做了
  • 复杂问题靠空话糊过去

于是我开始设计一种前置层逻辑,希望它:

  • 先理解我
  • 先帮我把半成品想法整理清楚
  • 再决定要不要执行
  • 尽量少追问,少浪费时间

这部分方向本身是对的。

但我后面犯了一个典型错误:

我用太多”规则”去要求它怎么工作,而不是只定义它应该成为什么样的人。

结果就是,原本我想要一个”会思考的前置理解层”,最后却慢慢把它压成了:

  • 一个爱分类的东西
  • 一个爱解释规则的东西
  • 一个动不动就自检的东西
  • 一个不够自然的东西

它不是不会回答,而是回答得越来越不像”正常人类合伙人”,更像一个背过手册的流程机。


四、第三个错误:把 AGENTS.md 写成了管理条例

这是这次最明显的翻车点。

SOUL.mdAGENTS.md 原本应该承担不同功能:

SOUL.md

解决的是:

  • 你是什么样的人
  • 你的作风是什么
  • 你的价值观是什么
  • 你怎么表达

AGENTS.md

解决的是:

  • 这个项目里有哪些固定岗位
  • 大致怎么分工
  • 有哪些基本边界

但我后面把 AGENTS.md 写得越来越像一份制度文件:

  • 路由规则
  • 高风险分类
  • Controlled / Uncontrolled
  • Single-Model Mode
  • Direct Executor Override
  • 元问题处理纪律
  • 各种 if / then 说明

它在”设计层”是合理的。 但放进运行上下文里,就开始有副作用了。

因为模型每一轮都在看到这些东西。

结果就是:

  • 普通对话也容易被它当成”规则触发器”
  • 简单元问题也容易引发它去做文件自检
  • 回答风格越来越制度化
  • 越来越不像一个自然工作的助理

说白了:

我不是在给它人格,我是在给它上规章制度培训。


五、第四个错误:我误以为”开新对话”就等于上下文重置

这次还有一个很隐蔽、但很真实的问题:

我以为只要在聊天里说一句”开启新对话”,系统就会像普通聊天工具那样自动重置状态。

但在 OpenClaw 这种 Agent 体系里,事情没那么简单。

如果你还在同一个 session / thread 里:

  • 历史上下文还在
  • bootstrap 文件还在
  • 当前工作区上下文还在
  • 上一轮的行为残留也还在

所以你以为自己在”重新开始”,其实模型看到的还是一整串历史行为和上下文背景。

于是你会误判:

  • “它怎么变傻了?”
  • “它怎么还在按旧逻辑回答?”
  • “怎么明明我说开新对话了,它还是那个状态?”

实际上,它没有傻。 只是你并没有真的把它放进一个干净的新环境里。


六、第五个错误:我拿保底模型去测”人格和作风”

我还做过一个典型误判:

openrouter/free 这种保底模型去测试它是不是”更像我想要的那种助手”。

这本身就不合理。

因为保底模型的职责应该是:

  • 不断线
  • 先接住请求
  • 做基础理解
  • 做简单分析

而不是:

  • 承担复杂执行
  • 测试高级人格一致性
  • 检验精细作风
  • 输出稳定、高级、长期一致的行为风格

你让兜底模型去承担主力人格测试,本身就是让它干错了活。


七、最核心的教训:不是所有”合理规则”都应该写进运行层

这次最大的收获,不是某一个配置项怎么写, 而是我终于彻底分清了一件事:

设计合理,不等于适合每轮注入。

换句话说:

  • 有些东西适合放在”长版母文档”里
  • 有些东西适合放在 SOUL.md
  • 有些东西只适合在当次任务里临时说明
  • 有些东西根本不适合长期写进运行上下文

应该长期放在 SOUL.md

  • 作风
  • 价值观
  • 输出风格
  • 严禁行为

可以简短放在 AGENTS.md

  • 项目背景
  • 基本岗位
  • 一两条最小运行规则

不应该塞进每轮上下文的

  • 大量制度说明
  • 风险树
  • 长路由逻辑
  • 复杂 override 规则
  • 详细降级模式说明
  • 大量 if / then 逻辑

这些内容留在设计文档里没问题, 但一旦每轮都塞给模型,它就会开始像一个”制度执行器”,而不是一个”可靠助理”。


八、我最后是怎么修正的

最后我没有继续往上叠规则,而是反过来做了两件事:

1. 回档

先回到一个没被过度调教的可用状态。

2. 改思路

不再追求”给它塞满规则”,而是追求:

  • 用更短的 SOUL.md 去调作风
  • 用更轻的 AGENTS.md 去说明项目环境
  • 把复杂规则留在母文档里,不每轮注入
  • 真的需要边界时,再在当次任务里说

这个思路更像:

让它成为一个严谨、务实、会推进的助理 而不是 让它成为一个背规则的流程机器人


九、如果你也在调 OpenClaw 或类似 AI 助理,我的建议是

1. 先分清”设计文档”和”运行上下文”

不要把长版设计图直接塞进运行层。

2. SOUL.md 管人格,AGENTS.md 管环境

不要反过来,也不要让二者都写成规章制度。

3. 不要用保底模型测试精细作风

保底模型只负责不断线,不负责承担人格一致性。

4. 不要拿”元问题”测试人格

像”你叫什么""你是不是变傻了""你用了什么技能”这种问题,很容易把模型拉进自检模式,不能代表它在真实任务里的表现。

5. 真正的测试,永远是”真实任务”

不要测它会不会解释自己, 而要测它会不会:

  • 听懂你的半成品表达
  • 帮你重构意图
  • 少废话
  • 能推进
  • 不装懂
  • 有边界感

十、最后一句总结

这次我最大的错误,不是配置错了某个参数, 而是:

我把”想清楚系统应该怎么运作”和”让模型每轮都记住这些规则”混为一谈。

结果就是,原本想调出一个更成熟的助理, 最后却差点把它调成了一个只会背制度的笨助理。

这次复盘让我更确定了一件事:

AI 助理真正需要的,不是越来越多的规则,而是更准确的作风、更清楚的边界,以及更少但更有效的长期上下文。

如果你也在做类似的 Agent 项目,希望这篇踩坑记录能帮你少走点弯路。


如果你愿意,我后面还会继续写一篇续集:

《OpenClaw 里什么该写进 SOUL.md,什么不该写》

因为这次最大的经验之一,就是:

不是所有正确的话,都应该长期放进模型脑子里。