☰
OpenClaw养成指南:用技能包和偏好设置让它越用越聪明
2026/10/17 2:52:50 网站建设 项目流程

1. 先想清楚一个问题:OpenClaw的“聪明”到底存在哪里

很多人第一次接触OpenClaw,会下意识把它当成一个“固定能力的工具”:装好、配好、跑起来,能干活就算完事。但实际用一段时间后你就会发现,同一份OpenClaw,在两个人手里完全是两种表现。有人用它做自动化任务行云流水,有人却觉得它“笨得可以”,同样一个需求,前一个人几句话就搞定,后一个人反复纠正它还是跑偏。

差别不在OpenClaw本身,而在“养”的方式。

这里的“养”,指的是你通过配置、偏好文件、技能包、规则沉淀,让OpenClaw逐步贴合你自己的工作习惯和技术栈。它不是一个可有可无的加分项,而是这类智能体项目真正发挥价值的核心路径。开箱即用的OpenClaw只相当于一个刚入职的实习生:基础素质不错,但不懂你的项目结构,不懂你的代码风格,也不知道你踩过哪些坑。你如果不教它,它就只能用通用方式干活,结果自然显得“不够聪明”。

1.1 开箱即用的能力,只是一副骨架

OpenClaw装上之后,默认能力大致包括:接收自然语言指令、调用工具、读写文件、执行命令、访问网络资源、在终端里完成一系列自动化操作。这些能力是它的骨架,能保证它“能跑”,但离“好用”还有很大距离。

举一个很常见的场景:你让它去改一个项目的构建配置,它可能会按照通用做法改写,却不知道你的项目里有一条隐含约定——某类模块不能走默认构建流程。这个信息在代码里没有明确注释,OpenClaw刚装好的时候不可能知道。它要么改错,要么问你一堆问题,体验非常啰嗦。而“养”过的OpenClaw,因为你在偏好和规则里写过这条约定,它第一次就不会踩这个坑。

骨架是通用的,但项目是具体的。OpenClaw越养越聪明的本质,就是不断把“具体项目里的具体知识”塞进它的记忆体系中,让它从通用工具变成你的专属工具。

1.2 记忆体系:会话记忆、偏好记忆、技能记忆

要理解“养”,先得理解OpenClaw的记忆分层。它不是把所有信息混在一起,而是分成若干层级,每一层的持久化程度不同、优先级不同。

  • 会话记忆:只在当前任务上下文中生效,任务结束或者会话窗口滚动之后就会被冲掉。适合临时交代的事情,比如“这次编译的时候不要跑测试”,你不想让它一直记住。
  • 偏好记忆:写入偏好文件或规则文件,全局或按工作区持久生效。适合长期有效的约定,比如“所有Python代码用black格式化”“禁止在提交里包含锁文件”“构建产物输出到dist目录”。
  • 技能记忆:以技能包形式存在的结构化知识。适合可复用的流程,比如“如何发布一个新版本”“如何跑通一套完整的部署流程”“如何按本项目规范生成模块代码”。

这三层加在一起,就是OpenClaw的记忆体系。所谓“越养越聪明”,其实就是这三层记忆不断被补充、纠偏、迭代的过程。你每纠正它一次,每给它补充一条规则,每沉淀一个技能包,它在下一次面对相似任务时,起点就比上一次更高。

1.3 “越养越聪明”的底层逻辑

从底层逻辑上看,OpenClaw的“聪明”程度取决于它做决策时能参考的信息密度。刚装好的OpenClaw做决策,靠的是模型自带的一般常识和少量系统提示;养过的OpenClaw做决策,靠的是模型常识加上你的项目规则、历史经验、技能包里的标准流程。信息密度不一样,决策质量自然不一样。

你可以把它理解成带新人:新人刚来的时候什么都要问,因为他不了解你们团队的潜规则;待了半年之后,他不仅知道明面上的流程,还知道谁负责什么、什么情况下该找谁、哪些环节容易出问题,这时候他就是熟手了。OpenClaw也是一样——所谓“养”,就是用规则、偏好、技能包、经验记录,把“团队潜规则”显性化,让OpenClaw少走弯路。

明白了这个底层逻辑,后面所有的配置和操作就都有方向了:不是为了让OpenClaw显得花哨,而是为了提升它的决策信息密度。

2. 想让OpenClaw记住你的习惯,先从这几个配置入口入手

“养”OpenClaw的第一步,不是急着写技能包,而是把基础记忆体系搭好。这些配置决定了OpenClaw在什么条件下记住什么、忘掉什么,做不好这一步,后面写再多技能包也容易被“冲掉”或者被忽略。

2.1 偏好设置是“长期记忆”的核心载体

OpenClaw的偏好设置,是我建议所有使用者第一个动手改的地方。这个文件控制的是全局行为,包括默认语言风格、工具使用偏好、命令执行的确认策略、上下文窗口的管理方式等等。

以我实际使用时的配置为例,偏好设置我习惯拆成几个区块:

preferences: language: zh-CN style: concise auto_confirm: false max_context_tokens: 20000 allow_web_search: true terms: - 构建产物统一放在 build/ 目录 - 所有提交信息使用 conventional commits 格式 - 测试命令默认执行单元测试,跳过集成测试

这个文件里最有价值的是terms这一项,它相当于是给OpenClaw立规矩。你每加一条,它就会在后续任务中持续遵守。我建议不要图省事只写几条,而是把你能想到的、反复出现在日常协作里的约定全部写进去。写得越具体,OpenClaw跑偏的概率越低。

这里有个容易忽略的点:偏好设置里的规则不是越多越好,而是越“不冲突”越好。如果两条规则在同一个场景下给出相反结论,OpenClaw可能会采取它认为优先级高的那条,也可能干脆停下来问你。所以写规则的时候,尽量保持正交,每条规则只针对一个明确场景。

2.2 全局配置与工作区配置的边界要分清

OpenClaw支持两种粒度的配置:全局配置作用于所有项目,工作区配置只作用于当前项目。很多人在“养”的过程中没分清这两者,把所有规则都堆在全局配置里,结果换一个项目时,OpenClaw把上一个项目的习惯带了进来,反而添乱。

我的做法是:

  • 全局配置只写“跨项目通用的习惯”。比如代码格式化风格、提交信息规范、对不同编程语言的基础偏好。这些习惯无论做哪个项目都用得上。
  • 工作区配置写“当前项目特有的约定”。比如某个服务只能通过某个内部脚本启动、某个目录不能动、某个依赖必须锁定版本。这些知识离开当前项目就没有意义。

用实际例子来说明。假设你同时在维护一个前端项目和一个数据处理项目,前端项目要求提交前必须跑一遍格式化,数据处理项目要求所有调度任务必须走统一的执行入口。这两条规则如果都写进全局配置,OpenClaw在做数据处理项目时也会想着格式化前端代码,逻辑就会混乱。正确的做法是把格式化规则留在全局,把调度入口规则写进数据处理项目的工作区配置里。

2.3 要不要给OpenClaw建一份“人设清单”

这是一个比较进阶的做法,但我个人觉得非常有用。所谓人设清单,就是一段放在偏好设置或者规则文件里的文本,描述OpenClaw在与你协作时应该保持的行为姿态。

比如你希望OpenClaw在执行任务前先列计划、做完后主动总结;希望它在遇到不确定的情况时先问而不是擅自决定;希望它对重要操作先备份再动手。这些事情看起来不算“知识”,但对使用体验的影响极大。

我实际维护的一份人设清单大致长这样:

你在与我协作时,请遵循以下原则: 1. 遇到可能影响文件内容或执行命令的操作,先展示将要执行的步骤,等我确认后再操作。 2. 任务完成后,用三句话以内说明做了什么、结果如何。 3. 如果你发现我的指令与偏好设置里的规则冲突,先指出冲突,而不是直接执行。 4. 对于重复性操作,主动检查是否已有现成技能包,不要每次都从头开始。

建这份清单的目的,是让OpenClaw在高频协作里保持稳定的行为风格。没有这份清单,它的行为会偏向模型默认风格,而模型默认风格往往偏“只管完成任务”,不太在意协作体验。加这份清单之后,OpenClaw更像一个懂规矩的协作者,而不是一个只会执行命令的脚本。

3. 技能包(Skills)才是“养”的核心资产

基础配置做完,OpenClaw已经能记住你的偏好和规则了,但它还缺乏“会做复杂流程”的能力。这就是技能包要解决的问题。

技能包可以理解成一组结构化的操作手册,OpenClaw在遇到匹配场景时,会主动参考技能包里的步骤和要点来执行任务。你积累的技能包越多、质量越高,OpenClaw能自主完成的复杂任务就越多。

3.1 技能包的结构与写法

一个标准的技能包,通常包含三部分:调用说明、执行步骤、注意事项。调用说明用来让OpenClaw判断“什么时候该用这个技能包”,执行步骤是具体的操作流程,注意事项则用来规避容易出错的地方。

我习惯用Markdown来写技能包,原因很简单:可读性好、OpenClaw解析起来也稳定。一个典型的技能包结构如下:

--- name: 项目发布流程 description: 当需要执行项目发布、生成发布版本、更新变更日志时使用 trigger: 用户提到“发布”“发版”“打版本” --- # 执行步骤 1. 检查当前分支是否为 main,如果不是,先切换并拉取最新代码。 2. 运行测试套件,确认全部通过。 3. 执行版本号更新脚本,按 semver 规则递增版本号。 4. 生成变更日志,按 conventional commits 汇总本次发布包含的改动。 5. 创建 git tag 并推送。 6. 触发远程构建任务,等待构建结果。 # 注意事项 - 如果测试失败,立即停止流程,不要强行发布。 - 变更日志只包含已合并到 main 的提交。 - 发布后需要检查 CI 是否通过,不通过时需要回滚。

写技能包的时候,最怕的是写成“泛泛而谈”。如果你写的是“运行测试、更新版本、推送代码”,那跟没写没什么区别。真正有用的技能包,步骤里应该包含具体命令、具体路径、具体判断条件,让OpenClaw按图索骥就能完成整个流程。

3.2 第一批该“喂”给OpenClaw的技能

刚开始养OpenClaw时,很多人不知道该先写哪些技能包。我的建议是:不要追求大而全,先从你日常重复度最高的三件事开始。

判断标准很简单:如果一件事你每周都要做一次以上,并且每次做的时候都需要翻文档或者回忆步骤,那就值得写成技能包。常见的候选包括:

  • 新环境初始化:从拉取代码到本地环境跑通的完整流程。
  • 依赖升级流程:升级某个核心依赖后需要做的检查和验证步骤。
  • 日志排查流程:面对一堆日志时,如何按错误码、时间线、模块分类去定位问题。
  • 代码评审辅助:拉取分支、对比差异、生成评审意见的固定套路。
  • 配置检查流程:部署前需要检查哪些配置项、每一项的合法值范围。

写第一批技能包的时候,不用在乎是否完美,先写出来、跑起来,后面再慢慢迭代。我自己的经验是,第一批技能包通常写得偏理想化,真正用的时候会发现问题,但没关系,发现问题正是迭代的开始。

3.3 技能包的迭代节奏:小步快跑

技能包不是一次性写好就完事的,它需要跟着你的工作方式一起迭代。一个技能包如果连续几次都没被用到,或者用的时候OpenClaw总出问题,说明它的调用说明或者步骤写得不够好。

我的迭代节奏是“用后即改”。每次OpenClaw通过一个技能包完成任务后,我会快速回顾一遍:

  • 任务执行是否符合预期?
  • 有没有哪个步骤表述模糊、导致OpenClaw理解偏差?
  • 有没有新的注意事项在这次任务里暴露出来?

如果有问题,我立刻修改技能包内容。比如某次我发现OpenClaw在执行发布流程时,跳过了一个新增的检查步骤,问题就出在技能包里没有写清楚“这个检查步骤必须在构建之前执行”。我在技能包里补上前后顺序的说明,之后它就没再犯过同样的错。

这套“用后即改”的节奏,比定期集中整理要高效得多,因为刚执行完任务时,你对问题的记忆最清晰,改起来也最精准。

4. 实操记录:一个从“能用”到“好用”的养成实例

前面讲了很多方法和原则,这一节我用一个具体的养成过程来演示。这个例子是某开发者的日常工作流,我用它的真实演变过程来呈现“越养越聪明”是怎么发生的。

4.1 阶段一:基础盘点,识别重复劳动

某开发者的日常工作包含大量重复动作:处理用户反馈里的错误日志、定位问题、修复后写变更记录。他刚装OpenClaw的时候,只是把它当做一个能查能跑的终端助手,没做任何配置,直接用Chat风格对话。

第一周的感受是:OpenClaw能回答一些通用问题,比如解释某个命令行参数的含义、帮忙看一下报错信息,但遇到需要结合项目背景的活儿就不太灵光。比如它面对一份项目特定格式的日志时,不知道关键字段在哪里,分析出来的结论经常不痛不痒。

这时候他开始做基础盘点,把一周里他重复做过三遍以上的事情列成清单。这个清单不整理不知道,一整理吓一跳:光“根据反馈日志定位到具体代码位置”这一个动作,一周就重复了十几次。于是他决定,第一个技能包就从这件事开始。

4.2 阶段二:围绕重复劳动沉淀技能

他写了一个“日志定位”技能包,把项目日志的格式说明、关键错误码的对照关系、不同模块日志文件的位置、常见问题对应的代码路径全部写进去。然后再让OpenClaw处理反馈日志时,情况立刻不一样了。

下面是技能包的核心片段:

--- name: 日志定位排查 description: 当需要根据用户反馈的日志文件定位问题代码位置时使用 trigger: 日志、报错、反馈、排查 --- # 关键日志格式 - 每行日志格式:时间戳 [级别] 模块名 错误码 消息内容 - 错误码格式:MODULE_ERR_xxx,例如 AUTH_ERR_401 # 排查步骤 1. 先根据错误码前缀确定所属模块。 2. 打开该模块下 docs/errors.md,查找对应错误码的历史处理方法。 3. 按时间倒序浏览日志,找到同错误码最近一次出现的时间点。 4. 对比那个时间点前后的代码变更,定位可能引入问题的提交。

这个技能包的第一版其实很粗糙,只有大致的步骤描述。实际用下来,他发现问题集中在“错误码历史处理方法”这一条,因为docs里的错误码文档更新不及时,OpenClaw查不到的时候就会卡住。于是他又在技能包里加了一条“如果docs/errors.md没有对应错误码,则按错误码前缀去对应模块源码里搜索上下文”,这一条补完之后,排查成功率明显上升。

4.3 阶段三:用问题修复日志反向训练

技能包稳定运行一段时间后,他开始做第三阶段的事情:维护一份问题修复日志。每次OpenClaw排查出问题、他确认并修复之后,把这次问题的现象、根因、修复方式记成一条结构化记录。

这份日志本身不直接给OpenClaw读,而是每隔一段时间,他会根据日志里的共性内容,反向更新技能包和偏好设置。比如他发现:超过一半的日志排查问题最终都指向同一个模块的配置错误。于是他写了一个针对性的checklist技能包,让OpenClaw在处理该模块日志时,优先检查那几个配置项。

这个阶段是“养”的质变点:从让OpenClaw记住静态规则,进化为让OpenClaw理解问题模式。到这个阶段,同一个开发者遇到新的日志问题,OpenClaw给出的分析结论已经非常接近一个熟悉该模块的老手了。

三个月后,这个开发者再打开OpenClaw时,和刚装好的状态完全是两个东西:它能根据反馈日志快速定位模块,能按项目规范生成变更记录,能在发布前主动检查关键配置,还能在他忘记常规步骤时提醒他。这些能力都不是开箱自带的,全是“养”出来的。

5. 常见问题与排查技巧:养成路上容易踩的坑

“养”OpenClaw的过程不会一帆风顺,我在实际使用中踩过不少坑,也总结了一些排查经验。下面这些问题是出现频率最高的,统一整理成一张速查表,方便你对照处理。

现象可能原因处理方式
OpenClaw没有遵守偏好设置里的规则规则与技能包内容冲突,技能包优先级更高检查技能包步骤,调整冲突的表述
它忘了上次任务里约定的事情约定写在会话记忆里,没有持久化把约定写入偏好设置或技能包
技能包被触发但执行得不对技能包的调用说明太宽泛,匹配了错误场景细化description和trigger,增加场景限制
两个技能包同时匹配某个任务技能包描述边界重叠梳理技能包边界,把重叠部分合并或拆分
OpenClaw执行任务过于谨慎、反复确认偏好设置的确认策略太严格调整auto_confirm相关配置,或细化确认范围
同一个问题它这次解了下次又不会问题修复经验没有沉淀维护修复日志,定期更新技能包和规则

5.1 为什么OpenClaw“忘了”之前说的约定

这是最多人遇到的情况。你在对话里随口说了一句“以后这个目录别动”,OpenClaw当时说“好的”,但下次任务它还是动了。

原因很简单:对话里的临时约定只存在于会话记忆,会话结束或被冲掉后就没了。要让OpenClaw长期遵守,你必须把它写成持久化的规则,要么加到偏好设置的terms里,要么写进工作区配置,要么写进技能包的注意事项。

正确做法是,当你发现自己说“以后都这样”的时候,立刻把这句话变成一条正式的规则,不要只在对话里说。这个习惯一旦养成,OpenClaw的记忆质量会有质的提升。

5.2 技能包打架怎么办

技能包写得多了之后,难免会遇到功能重叠的问题。比如说你写了一个“日志排查”技能包,又写了一个“支付模块专项排查”技能包,两个都包含“看日志找问题”的步骤,当用户提到支付报错时,OpenClaw可能不知道该用哪个。

我的处理方式是:给专项技能包增加更明确的限制条件。比如在支付模块专项排查的description里写明“仅当错误信息包含支付相关关键字时使用,其他情况使用通用日志排查”,并把触发条件写得具体一些。同时检查通用技能包的描述里是否写了“适用于所有日志排查”,如果有,就加一句“除非有更具体的专项技能包可以匹配”。

本质上,技能包之间要形成层次结构:通用技能包兜底,专项技能包负责精确场景。梳理好这个层次,技能包再多也不会乱。

5.3 养成到什么程度算“毕业”

这个问题没有标准答案,但我可以给你一个参考。我自己判断OpenClaw“养得够不够好”有三个标志:

第一,日常重复超过三次的任务,它已经能独立完成,不需要你在旁边一步一步引导。第二,它犯过的错基本不再犯,同类问题不会第二次踩同一个坑。第三,你给它一个模糊的指令,它能结合你的偏好和技能包,给你一个比你预期还完整的执行方案。

达到这三个标志之后,你可以说OpenClaw已经从“能跑”变成“好用”了。但这不意味着养成结束,因为你的工作方式会变,项目会变,新的知识会持续产生。养OpenClaw不是一个有终点的工程,而是一个持续演进的过程。

我个人在实际操作中最深的体会是:养成OpenClaw的收益是复利式的。前期你花很多时间写规则、建技能包,感觉进展缓慢;但只要持续积累,后面每一次协作的顺畅度提升都是前期的积累在兑现。这个阶段,最值得投入的不是让它跑得更快,而是让它越来越懂你。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询