最近我在折腾一个部署在 VPS 上、24/7 运行的 OpenClaw 助理系统。
起初目标其实很明确: 我想让它变得更像一个真正能工作的长期助手,而不是一个只会聊天、套话、或者机械执行的模型壳子。
我想要的效果是:
- 普通任务用一个更稳、更省的模型先处理
- 复杂任务再切到更强的执行模型
- 风格上更务实、更严谨、更专业
- 不要假大空,不要偷懒式思考,不要用”建议你先""可能需要进一步分析”来逃避判断
- 最好还能逐步形成一套长期稳定的”工作人格”
听起来很合理,对吧?
但问题是: 合理的目标,不代表合理的落地方式。
这次折腾到后面,我明显感觉龙虾(OpenClaw 助理)开始”不对劲”了:
- 回答变僵
- 对简单问题也像在做系统自检
- 会暴露内部工具调用痕迹
- 有时候像在”背制度”
- 普通聊天都能被它做成一场规则执行会议
说白了就是一句话:
我没有把它调聪明,反而把它调笨了。
这篇文章,就是对这次错误操作的完整复盘。
一、最开始的想法,其实没有错
我最初的设计思路并不离谱,甚至放在很多 AI Agent 项目里都算合理。
核心逻辑是:
- 用一个相对稳、相对省的模型做前置理解和分流
- 用一个更强的模型做复杂任务执行
- 再加一个免费或廉价模型做保底兜底
- 同时希望它具备更清晰的”人格”和”工作纪律”
于是我一步步做了这些事情:
- 设计模型岗位 比如 Clarifier、Executor、Emergency Fallback
- 设计运行规则 比如什么情况先澄清,什么情况直达执行,什么情况必须确认
- 设计风险边界 比如高风险动作怎么处理,可控风险和不可控风险怎么区分
- 设计人格文件
比如
SOUL.md、AGENTS.md - 在 OpenClaw 里接入实际模型 比如默认主模型、fallback、Codex 备用、模型别名等
问题不在”方向”,而在”力度”。
二、真正的问题:我把”设计图”误当成了”运行配置”
这次最大的错误之一,是我没有在一开始就彻底分清楚两类东西:
1. 设计图
也就是各种 .md 文档:
OpenClaw_V1_POLICY.mdOpenClaw_V1_RUNTIME_POLICY.md- 长版规则说明
- 模型岗位设计
- 风险矩阵
- 单模型模式
- 路由逻辑说明
这些东西本质上是:
我脑子里的系统设计图。
它们的价值在于帮助我自己想清楚边界、分工和长期方向。
2. 真正会影响模型行为的运行上下文
比如:
SOUL.mdAGENTS.md- 当前会话上下文
- OpenClaw 读取并注入的 bootstrap 文件
- prompt 里的硬约束
这些东西本质上是:
每一轮都会真的塞进模型脑子里的内容。
问题来了。 我把很多原本应该停留在”设计图层”的内容,直接推进了”运行层”。
结果就是:
- 规则太多
- 说明太重
- 结构太复杂
- 每一轮都在提醒模型”你应该如何如何”
- 最后模型开始更像”制度执行器”,而不是”会工作的助理”
三、第二个错误:我想让它”有纪律”,结果把它变成”客服”
我很明确不喜欢那种 AI 行为:
- 模糊需求就机械追问
- 什么都要我先说明白
- 明明能推进却停在表面总结
- 明明没做却装得像做了
- 复杂问题靠空话糊过去
于是我开始设计一种前置层逻辑,希望它:
- 先理解我
- 先帮我把半成品想法整理清楚
- 再决定要不要执行
- 尽量少追问,少浪费时间
这部分方向本身是对的。
但我后面犯了一个典型错误:
我用太多”规则”去要求它怎么工作,而不是只定义它应该成为什么样的人。
结果就是,原本我想要一个”会思考的前置理解层”,最后却慢慢把它压成了:
- 一个爱分类的东西
- 一个爱解释规则的东西
- 一个动不动就自检的东西
- 一个不够自然的东西
它不是不会回答,而是回答得越来越不像”正常人类合伙人”,更像一个背过手册的流程机。
四、第三个错误:把 AGENTS.md 写成了管理条例
这是这次最明显的翻车点。
SOUL.md 和 AGENTS.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,什么不该写》
因为这次最大的经验之一,就是:
不是所有正确的话,都应该长期放进模型脑子里。