ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OpenClaw 越养越聪明:从 Skill 到记忆的智能体养成实践

OpenClaw 越养越聪明:从 Skill 到记忆的智能体养成实践 先聊个实在的。我是从 OpenClaw 还很粗糙的版本开始折腾的当时它就是个能接大模型、能跑几个 skill 的玩具壳子。但几个月用下来我发现一个很反直觉的现象同一套模型、同一个 API KeyOpenClaw 的回答质量肉眼可见地在变好。不是模型变聪明了而是这个智能体本身被养出来了。它记得我吐槽过什么、修正过什么知道哪些工具该在什么场景下调用甚至能在我写完一行半的命令后猜到我要干嘛。所以这篇文章想好好拆一拆OpenClaw 的越养越聪明到底靠的是什么机制你自己部署时该怎么给它投喂以及从安卓手机到 Windows 桌面、再到 ROS2 机器人仿真这套玩法里哪些配置才是真正影响智力的关键。适合两类人看——一是刚听说 OpenClaw、想知道它跟那种聊天即用的 AI 到底差在哪的新手二是已经装上了但感觉它也就那样、不知道怎么把它养熟的老玩家。1. 先搞清楚 OpenClaw 到底是什么1.1 不是装完就能用的玩具 AI很多人第一次接触 OpenClaw是从开源智能体这四个字入手的。但如果你把它当成一个 ChatGPT 的本地平替来装大概率会觉得就这。OpenClaw 不是一个开箱即用的聊天窗口它的定位更像是给你一个可以长期陪跑的个人智能体运行时。什么意思呢就是它本身不产生智力智力来自你给它接的模型和工具但它负责把模型、工具、记忆、技能组织成一个能持续工作的系统。你可以这样理解模型是大脑皮层负责当下的思考OpenClaw 是前额叶负责规划、调用工具、记住上下文、把任务拆解成步骤然后把每次交互的经验沉淀下来。一般的聊天 AI 是用完就走的对话一关什么都忘光了。OpenClaw 不一样它有一个持久化层——对话记录、技能执行结果、用户偏好、修正意见这些东西会被存下来下次再用时它会主动翻出来参考。这才是越养越聪明的真正底层逻辑。从技术架构上看OpenClaw 的核心是三个模块的协作模型接入层可以接在线 API也可以接本地 Ollama 这类推理引擎、技能执行层Skill 系统决定它能干什么、记忆存储层决定它记得什么。三者不是割裂的而是通过一个事件循环串联起来。用户提出请求后它会先检索记忆再匹配技能最后把任务交给模型做推理决策。这套架构决定了你对它做的每一次调教都会沉淀在记忆层里变成它后续决策的依据。1.2 为什么说它越养越聪明我从表现层说说养出来的变化。刚装好 OpenClaw 的第一周我用它帮我管理一个 Python 项目。它每次都要问一遍你想用哪个包管理工具测试框架用 pytest 吗烦得不行。后来我在配置里加了习惯设定并且每次它问重复问题时我都给一次负反馈同时在 skill 里写死了项目默认值。两周之后它已经不再问了而是直接按我常用的方式干活还会主动提醒我上次测试覆盖率下降了 3 个百分点。这种变化不是模型参数变了而是两个机制在起作用第一是短时上下文 → 长时记忆的迁移。OpenClaw 每个会话结束时会把关键信息抽取出来写入向量记忆库。下次你提起同一个项目它检索到相关记忆等于带着前情提要来干活。说白了这是把对话历史转化成了可检索的项目档案。第二是技能使用的强化。OpenClaw 的 Skill 系统不是冷冰冰的函数注册表每调用一次技能它会把触发条件、输入参数、结果反馈记录下来。如果你对结果点了赞、或者手动修正了输出下次遇到类似场景它会优先选择那条被验证过的路径。我在实操中测试过同一个技能连续正确使用 5 次之后OpenClaw 会在面对多个可执行方案时直接跳过询问默认选那个成功率最高的技能并且附上一句根据之前经验我直接用了 XX 方式。所以越养越聪明背后的真相是它把使用经验本身变成了系统的输入。你用得越多、反馈越具体它的行为模型就越贴合你的习惯。这不叫智能进化而叫系统性适配——但用起来的感觉确实就是越用越顺。2. 想让它聪明部署这关必须自己扛2.1 三种主流落地方案怎么选OpenClaw 的部署并不复杂但选错方案会直接影响它聪明的程度。我实测下来主流路径有三条分别适合不同的使用场景。第一条是纯接入云 API 的方案。你在配置文件里填 OpenAI 或兼容的 API 地址OpenClaw 直接远程调用。这套方案的好处是脑子模型够强回答质量上限高坏处是每次调用都烧钱而且如果你改代码改到一半发现它在思考时网络超时体验会非常割裂。另外只接 API 的话OpenClaw 的记忆和技能本身仍然跑在本地所以养还是能养只是养出来的大脑不在你手里。第二条是Ollama 本地部署方案。这也是目前社区里最热的玩法。你在本机装 Ollama拉一个量化过得去的模型比如 7B 到 14B 的看显卡说话然后在 OpenClaw 的模型配置里把 provider 指向 localhost。它的优势是免费、离线、响应稳定劣势是模型能力天花板明显比大型在线模型低。但如果你养的是干活助手而不是百科问答机本地小模型配合 OpenClaw 的技能系统效果出乎意料地能打——因为它靠的是流程和工具而不是模型的常识储备。第三条是混合方案也是我个人最推荐的方式日常简单任务走 Ollama 本地小模型做分流复杂推理任务走云端 API。OpenClaw 的模型路由配置支持按任务类型切换 provider你可以写一条规则把文件操作、命令执行这类确定性任务交给本地模型把代码审查、长文总结这类高难度任务甩给云端大模型。这样既省钱又不牺牲智商还能让记忆沉淀的过程保持连贯。很多人卡在最开始的模型怎么配这一步。其实 OpenClaw 对接 Ollama 只改一个配置文件指定 base_url 为http://localhost:11434加上模型名称就行。有一点要注意本地模型的名字必须和 Ollama 里ollama list显示的名字完全一致大小写都不能差。我踩过这个坑填错一个字母OpenClaw 会把构建好的提示词直接发给不存在的模型然后报一个让人摸不着头脑的错误。2.2 本地推理与云 API 的算力迷思热词里有个问题问得很典型OpenClaw 只能用接入 API 的方式使用算力吗答案显然是否定的。上面说了Ollama 就是本地算力方案。但这里得把算力和聪明的关系掰扯清楚——很多人以为模型越大越智能OpenClaw 就越聪明这是个误区。OpenClaw 的智力增长来源于记忆 技能 反馈这三者的权重在我看来甚至高于模型本身。你用一个 70B 的云模型但记忆是空的它每次对话都是全新的表现绝对不如一个用着本地 7B 模型但已经积累了一周项目上下文的 OpenClaw。我做过一个对照实验同样的一个数据处理任务A 环境用云端大模型 空记忆B 环境用本地 7B 模型 已经跑过三次的 skill 记录。结果是 B 的最终产出更符合我的习惯因为它知道我要的字段命名风格、知道我要跳过头部的几个无效行而这些偏好是大模型再聪明也猜不到的。所以如果你有条件本地部署一个中等规模的模型7B/8B 量化版足够日常用再把 OpenClaw 的技能和记忆养起来综合体验会非常舒服。算力焦虑真没必要OpenClaw 的价值放大器是它自己的机制而不是底座模型的大小。3. 技能Skill才是养聪明的核心3.1 一个 Skill 的本质其实是经验胶囊OpenClaw 的 Skill 系统是我见过这类开源智能体项目里设计得最贴近实操的。每个 Skill 本质上是一个带有描述、参数、执行函数和数据校验规则的经验胶囊。你不要把它想成什么高深的东西——它就是把你日常反复做的操作封装成 OpenClaw 可以自动执行的单元。比如我写了一个repo_cleanup的 Skill功能是扫描指定仓库下的临时文件、缓存目录、未跟踪文件然后按规则清理。这个 Skill 的逻辑很简单但价值在于我把什么时候该清理、哪些目录绝对不碰、清理前要不要自动备份这些经验都固化进去了。第一次可能是我手动敲命令第二次是我把命令整理进 Skill第三次之后 OpenClaw 会在检测到目录体积异常时主动问我检测到 repo 缓存膨胀要不要执行清理它学的不是命令本身——命令是我写的——它学的是触发时机和决策偏好。这才是技能系统的魅力。写 Skill 不需要多强的编程底子OpenClaw 支持用比较友好的方式定义参数和描述内部逻辑则允许你插任意脚本。我建议新手从每天重复三次以上的操作开始封装。你不需要追求炫技一个能帮你清缓存、归档日志、整理下载文件夹的 Skill用起来的感觉远比一个花里胡哨但没用过的技能库舒服。3.2 写好一个 Skill 的五个步骤以我自己写的一个技能为例完整流程是这样的第一步定义触发描述。描述写得好不好直接决定 OpenClaw 能否在正确的时候想起来用它。不要写清理仓库这种模糊表述要写当检测到当前项目目录下存在超过 500MB 的临时文件、或者存在超过 30 天未修改的缓存目录时执行此技能。描述写得越具体模型在判断调用时就越容易命中。第二步声明参数。每个 Skill 都要声明输入参数和默认值OpenClaw 会把从对话里抽取到的参数填进来。这里有个细节参数命名要跟自然语言描述对齐。比如你有一个target_dir参数描述里就要反复出现目标路径哪个目录这些词否则模型抽取参数时容易抽错。我自己吃过亏写过一只参数叫basedir结果 OpenClaw 在识别时把用户说的那个文件夹抽到了模糊值里执行时就崩了。改成target_directory并明确描述之后命中率大幅提升。第三步写执行逻辑。这里可以调用任意能力从 shell 命令到 Python 脚本都行。注意要处理异常返回信息一定要结构化让 OpenClaw 能从输出中判断成功还是失败。最好用 JSON 输出包含 status 和 message 字段这比纯文本输出更利于模型理解。第四步设定使用条件和限制。在 Skill 的约束区明确什么时候不能用。比如我的 repo_cleanup 技能里就写了一条如果当前分支有未提交的改动或者处于 rebase 中间状态跳过执行并给出警告。这个步骤很关键它防止了 OpenClaw 在错误时机使用错误技能——这种判断边界恰恰是它显得聪明的地方。第五步留一个出口。每个 Skill 结束后提供一段可以考虑的后续操作。比如清理完仓库后提醒用户跑一遍测试或者打开一个 summary 文档供确认。这个设计让技能不是孤立的动作而是整个工作流里的一环。OpenClaw 会顺着这个出口继续推进用户会感觉它特别主动。3.3 当技能延伸到 ROS2 和 Gazebo 仿真热词里出现了rosclaw和ros2 humble gazebo这个方向应该是不少搞机器人的朋友关心的。我在 ROS2 环境里也玩过 OpenClaw先说结论OpenClaw 本身不是一个机器人操作系统它是智能体层——你可以让它调度 ROS2 节点、处理 Gazebo 仿真里的任务决策。大概的玩法是这样的你在 OpenClaw 里注册一组与 ROS2 交互的 Skill每个 Skill 封装一组具体的 ROS2 命令。比如控制机器人移动Skill 内部做的事情是发布 cmd_vel 话题消息检查机器人状态Skill 做的事是读取 /odom 话题的数据并格式化输出。OpenClaw 负责的事情是理解自然语言指令、拆解任务、按顺序调用这些 Skill并在中间加入条件判断。我搭过一套 Gazebo 环境下的巡逻演示用户说去走廊尽头看看有没有障碍物OpenClaw 会把指令拆成移动→检测→返回报告三步分别调用导航 skill 和传感器分析 skill。如果检测到障碍物它会停下来问我是绕行还是停止任务。这里的重点是Skill 把机器人底层通信的复杂度包住了OpenClaw 面对的只是一个函数接口。这个搭配里最容易翻车的点是时序同步。ROS2 的话题通信是异步的一个 Skill 发出移动指令后立刻读传感器大概率读到的是旧数据。我的建议是在每个 Skill 里都加状态确认逻辑比如等待 condition variable 或者轮询主题直到某个标志位翻转再返回动作完成的结果。否则 OpenClaw 会以为机器人已经到指定位置了实际上 Gazebo 里的车刚起步。4. 养成系实操如何正确投喂OpenClaw4.1 记忆系统怎么管理才不会养歪聊完了技能再来说养这个动作里最核心的部分——记忆。OpenClaw 默认会把对话内容存进向量库做 embedding 之后方便后续检索。但它不像人一样能自动分辨这个信息重要、那个信息无关所以你得帮它划重点。一个实用的做法是显式标注长期记忆。在对话里当你说出某个偏好、某个项目背景、某条规则时加上一句记住这个或者以后都按这个来。OpenClaw 对这类强调性的语句会有更高的权重会把它们升级为长期记忆而非普通聊天记录。比如我跟它说记住发布版本号永远用 YYYY.MM.DD 格式之后所有版本输出它就再也没搞错过。没有这句标记的信息可能沉淀在向量库里也可能被后续对话冲淡召回率不稳定。另一个要养成的好习惯是定期做记忆瘦身。记忆库不是越大越好塞满了一堆过时信息之后召回时反而会形成干扰。我大约每两周清理一次翻一遍记忆库里的内容把那些已经过时的方案、已废弃的配置知识、试验性质的临时决定删掉或者用更新后的知识覆盖掉旧版本。留着旧记忆比没有记忆更可怕因为 OpenClaw 会把它当成有效背景信息来用。最后如果发现 OpenClaw 开始犯糊涂比如明明已经讲过不要用某个库它还是用不要急着乱调 prompt先检查记忆库。大概率是有条旧记忆覆盖了你新输入的偏好。我试过几次删除冲突的旧记忆之后问题立刻消失。这说明它的记忆力是真的你喂什么它就长什么所以更得注意喂进去的东西够不够干净。4.2 反馈机制让正确行为长出来OpenClaw 有一个对输出进行反馈的机制支持点赞、点踩、标记修正。很多人忽略了这个功能但我必须说这是越养越聪明里面最直接的杠杆。你每次给一个输出正反馈它不只是记下用户满意这么简单而是会把产生这个输出的完整路径当时上下文、选中的 skill、模型回复一起标记为优选路径。下次遇到相似任务检索器会优先把这条路径作为参考样本。负反馈同理它会记录下用户不满意这种结果在后续生成时避开同类表达方式或工具体系。这个机制让我想到了训练小狗——做得对立刻奖励做错了马上纠正反馈得快成长的速度就快。反馈越即时、越具体效果越好。不要只点个踩就完事我建议在修改意见里把问题写清楚你刚才用的是 requests 的同步方式这个项目里应该用 httpx.AsyncClient因为异步性能差很多。这种带原因说明的反馈OpenClaw 会把它提炼成一条可复用的修正规则而不仅仅是用户不喜欢这个答案。4.3 习惯和偏好怎么沉淀成规则OpenClaw 的设计里有一个很妙的地方它会把反复出现的反馈转化成规则。比如你三次纠正它公众号推送时间应该放在晚上八点它可能不会立刻主动改但当积累到一定量级它会生成一条内部规则之后所有相关文案的生成都会直接按这个时间设定走。我在配置文件里发现过它自动生成的习惯规则文件里面真的写着用户偏好所有时间格式用北京时间 24 小时制用户偏好回复代码时先给结论再给解释。这些不是我自己写的是它从我的反馈里归纳出来的。那一刻我才真正理解了越养越聪明的含义——它不是在模仿我给的例子而是在总结我行为的规律。所以平时跟 OpenClaw 交流时我强烈建议把偏好说完整。不要说我不喜欢这个报告要说我不喜欢这份报告的第三部分数据维度太少对比维度应该加上上周的同期数据。后者既给了负反馈又给了改进方向两样叠起来它就是真的养到位了。5. 周边环境也很重要手机端与 Windows 伴侣5.1 Termux 里跑 OpenClaw 手机版先泼一盆冷水手机端跑 OpenClaw别指望它能干重活但把它当成随身记忆终端和远程指令入口体验相当好。社区里目前最常见的方案是在 Termux 环境里装不用 root也不用虚拟机。具体步骤我走通了一次大概是这样第一步装好 Termux 后先换源、更新基础包然后安装 Python 和 git。Termux 的包管理器是 pkg命令是pkg install python git装之前建议先把pkg update跑一遍避免依赖冲突。第二步克隆 OpenClaw 仓库到本地。注意目录不要用特殊字符否则部分插件加载会失败。第三步安装依赖。OpenClaw 会在装依赖时自动检查 Python 环境如果报错说缺某些头文件一般是没装 clang 和 python-devTermux 里补装一下就能过。第四步配置模型地址。手机端我建议指向局域网里的 Ollama 服务器而不是用手机本地跑模型——手机那点算力跑 7B 模型体验很差发热掉电还明显。在 OpenClaw 配置里把 Ollama 的 base_url 改成你局域网电脑的 IP手机和电脑在同一个 WiFi 下就能连上。第五步启动轻量模式。OpenClaw 在检测到 Termux 环境时会自动降低一些后台开销比如关闭不必要的 Web UI、减少日志刷屏。这时候你就可以在手机里直接输入自然语言指令让它调用电脑端工具或者在手机端快速记一条待办事项并同步到记忆库。移动端的最大价值其实是随手投喂。等地铁的时候想到一个项目偏好掏出手机直接跟 OpenClaw 说记住以后周报里别再把测试相关的内容放在最前面耗时数据放前面这条记录就直接进入记忆库了回到电脑上再用时它已经知道了。这就是碎片时间也能养智能体的绝佳方式。5.2 Windows Companion 是拿来做什么的热词里还有一个很常被问到的openclaw windows companion 怎么配置。Windows Companion 是 OpenClaw 在 Windows 系统上提供的一个守护进程它的主要职责是维护系统级的能力接口比如读取剪贴板、操作文件、发送系统通知、访问浏览器。配置的入口在 OpenClaw 的配置文件里有一个companion的段落里面可以指定监听端口、允许的权限范围、是否开机自启动。配置起来不复杂但有两件事一定要做第一是限制权限范围。默认配置给的是全量权限也就是 OpenClaw 可以读剪贴板、写文件、执行命令。这在本地单人用没问题但如果你通过局域网让手机连到了这台机器等于把一套控制能力暴露出去了。强烈建议在 companion 配置里把权限收缩到你实际用到的范围比如只允许读剪贴板和写特定临时目录。第二是打开认证开关。Companion 默认监听在localhost但有部分版本会因为配置不当暴露到0.0.0.0。手机上连电脑配置时使用带 token 的认证方式别裸奔。这个 token 不需要记但要注意别用默认值。我在 Windows 上用 OpenClaw 最大的感受是Companion 让记忆和动作之间无缝衔接了。比如它记住我下载的安装包放到 D:\Downloads_new 并按日期建子文件夹那么下次我用它执行任何相关下载操作时它就直接走这条路径完全不用我再手动找文件。这就是把习惯沉淀成稳定的系统化行为。5.3 配合 Ollama 的本地模型加载策略如果你走的是本地部署路线Ollama 的模型加载策略直接影响 OpenClaw 的响应速度。默认情况下 Ollama 会常驻加载一个模型显存不够时就会在做推理之前先换模型这个换模型的时间动辄十几秒OpenClaw 的表现会特别呆。我的做法是给 OpenClaw 配两个模型一个小的3B~4B 量化做快速路由和简单判断一个大的14B~32B 量化做复杂推理。小模型常驻显存大模型按需加载。日常场景里OpenClaw 先用小模型做意图识别和技能匹配只有需要生成复杂内容时才切大模型这样既保住了质量又避免了频繁换模型。如果你显存足够大那就一个模型就够不用折腾。但我相信多数人手里的卡没那么宽裕所以这个小模型优先的策略很值得试。注意一点模型切换时的上下文连续性有可能会断裂所以 OpenClaw 配置里有个context_handoff选项建议打开它会把当前对话的关键摘要传递给新模型避免大模型失忆。6. 常见问题与排查技巧实录6.1 高频问题速查表我在社区里翻了不少反馈结合自己的实操整理了一份出现频率很高的问题清单。碰到问题的朋友可以先对着这份表看看。现象可能原因解决建议部署成功但 OpenClaw 不回话模型地址配置错误或未启动检查 Ollama 服务状态确认 base_url 和模型名完全一致技能从不被自动调用描述写得太泛或参数声明不全重写描述用具体的触发条件替换抽象动词记忆混乱、答非所问旧记忆与新增偏好冲突清理记忆库中过期条目手机连不上电脑端 OpenClaw端口未监听或 token 错误检查监听地址必须为局域网 IP不能用 localhost请求响应特别慢大模型频繁换入换出按 5.3 的方案配置小模型常驻调用 ROS2 skill 后机器人状态异常时序不同步Skill 返回前必须等待状态确认不得即时返回修改配置后不生效配置缓存未刷新重启 OpenClaw 进程部分版本需要删除缓存目录6.2 排查思路先看记忆再看技能最后怀疑模型我踩过很多次类似的坑总结出一条非常实用的排查路径按这个顺序检查基本不会漏。第一步查记忆层。如果 OpenClaw 的行为异常诡异——它没按你最近的要求调整或者频繁访问旧方案——大概率是记忆库里存在冲突或过时信息。打开记忆管理界面直接搜关键词看到过时的直接清理。这个步骤解决了我至少一半的问题。第二步查技能层。如果记忆没问题但技能没有被正确调用那就是技能注册和描述层面的问题。确认技能文件被正确加载可以在调试模式里看它每次调用前的技能匹配分数。匹配分数低的就回去改描述和参数名。第三步才轮到怀疑模型。模型出问题的概率其实不高但如果前两层都查过没问题就要检查是不是模型本身温度参数太高导致输出发散、或者模型量化级别太低导致逻辑混乱。把温度调低 0.2~0.3 再试很多时候问题就没了。6.3 几个真正称得上独家的避坑技巧最后分享几个别人写的教程里很少提到但我实测非常管用的小技巧。第一个动手改配置前先备份记忆目录。OpenClaw 的记忆是纯本地文件备份就是把目录打个包。这个习惯救过我一次有一次我手滑清除了一个关键项目的长期记忆整个智能体对这个项目的上下文全断恢复备份后秒回。第二个善用技能测试模式。OpenClaw 提供一个 dry-run 模式可以在不真正执行动作的情况下把 Skill 将要执行的内容、参数、预期影响全部打印出来。我每次新写一版 Skill 都会先跑一遍 dry-run能发现一大堆参数抽取错误和边界条件漏洞。第三个偶尔故意喂它一条错误信息看它怎么处理。这个听起来有点调皮但很有用。OpenClaw 如果完全无条件地接受你塞给它的任何事实并不是好事说明它的判断层太弱。健康的智能体应该会对明显矛盾的信息提出质疑。如果不能质疑那就需要给它配上更多约束或者升级模型的推理能力。根据我实际喂了几个月的经验OpenClaw 真正让人上瘾的点在于每一次纠正、每一条偏好记录、每一个被反复调用的技能都在让这套系统离懂你更近一步。它不是靠模型一次性碾压所有问题的天才 AI而是靠日积月累的适配变成一个越用越顺手的老伙计。你付出一份耐心它回报一份默契——我觉得这种养成的路径才是个人智能体该有的样子。如果你还在因为它初始版看起来不太聪明而犹豫不妨先装上按这篇文章里说的把基础配置和技能搭起来再给它两周时间到时候你对越养越聪明这句话的理解会比看任何教程都深刻。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进