# 写了5个Skill,agent一个都不用:OpenClaw + 国产模型的Skill调度踩坑实录

写了5个Skill,agent一个都不用:OpenClaw + 国产模型的Skill调度踩坑实录

上午发了架构篇,下午实测发现agent完全绕过了精心设计的5-agent协作流程,自己写脚本调API。本文记录问题现场、根因分析和解决思路。

背景

上午刚发了一篇《不会写prompt也能出大片》,讲了用OpenClaw搭5-Agent协作的ComfyUI出图系统。架构很漂亮------Prompt Agent理解需求、Workflow Agent选模型、Render Agent调API、Critic Agent评分、Memory Agent记忆偏好。

下午实测,打脸了。

翻车现场

在Tg给agent发了一条:"作图 昭和风格的东京街头少女 穿着性感衣服 80年代风格 动漫风格"

预期行为:agent读取prompt-agent的SKILL.md → 结构化拆解需求 → 匹配风格模板 → 生成带权重的英文prompt → 选Animagine XL → 调comfyui-client.py → 出图 → 评分

实际行为:

复制代码
需要安装requests模块。让我先安装它
让我检查可用的Python包管理器
让我使用系统包管理器安装requests
权限问题。让我回到使用现有的comfyui-client工具,但尝试不同的方法
让我创建一个直接调用ComfyUI API的Python脚本,确保控制输出质量

它自己写了一个Python脚本,从头开始调ComfyUI API。

5个Skill一个都没读。comfyui-client.py没调。prompt-templates.json没查。workflow模板没用。风格匹配没做。评分没跑。

出图倒是出了------但前3张是全黑的(5KB),第4张才正常(2MB)。因为它自己写的脚本没处理VAE精度问题,而我们在workflow模板里早就配好了fp16fix VAE。

这不是个例。我观察了一下午的agent行为,它几乎从不主动读SKILL.md

问题分析

1. Skill系统的运作原理

先搞清楚OpenClaw的Skill到底怎么工作的。它不是一个运行时插件,而是一份给AI的操作说明书。

流程是这样的:

启动时,OpenClaw扫描skills目录,把所有Skill的name和description注入到系统提示词里。当用户发消息时,AI看到可用Skill列表,判断是否有匹配的Skill。如果匹配了,AI读取对应的SKILL.md完整内容,按里面的步骤执行。

关键词:AI自己判断

这意味着Skill能不能被执行,完全取决于AI模型的能力------它得先"想到"去读Skill,然后"愿意"按Skill里的步骤走,而不是自己另起炉灶。

2. 国产模型的工具调用短板

我的agent跑的是DeepSeek,这是个性价比很高的模型,日常对话、写内容都不错。但在agent任务上有明显短板。

社区的共识是:Claude在工具调用可靠性上明显领先其他模型。DeepSeek在复杂的多步骤工具调用任务上稳定性和准确性明显较低,适合80-90%的简单日常任务,但复杂的需要切换到更强的模型。

而事实证明,我个人感觉,恰好是DeepSeek在日常工作与接地气方面太过于"聪明"了,他太想要帮助用户完成工作了,以至于发生"我以为我在帮你,其实我在帮倒忙"的有趣情况。

具体到我的场景:

DeepSeek收到"画一张昭和风少女"这个请求后,它的思维链是这样的:用户要画图 → 我知道ComfyUI的API → 我直接写个脚本调API就行了。

它不会去想:等等,我应该先看看有没有专门的Skill来处理这件事。

这是模型层面的"工具意识"问题。Claude Sonnet/Opus在这方面做了专门的训练------遇到任务先扫描可用工具,优先用工具而不是自己写代码。DeepSeek没有这个倾向。

3. SKILL.md的description不够精准

翻回去看我的Skill定义:

vbnet 复制代码
name: render-agent
description: "调用ComfyUI API执行图像生成任务"

这个description太模糊了。AI看到"调用ComfyUI API执行图像生成",心想:这不就是发个HTTP请求吗?我自己写也行。

对比社区里写得好的Skill:

vbnet 复制代码
name: trend-scout
description: >
  定期扫描V2EX、Hacker News、GitHub Trending,找出热门话题。
  Use when: 用户说"给我今天的热点""有什么值得写的话题"。
  NOT for: 详细新闻分析或完整文章撰写。

差距很明显。好的description要告诉AI三件事:什么时候用、怎么触发、什么时候不用。

4. 黑图问题:绕过Skill的直接后果

agent自己写脚本的后果是灾难性的。

我们的workflow模板(sdxl_basic.json)里配了独立的VAELoader节点,指向修复版的sdxl_vae_fp16fix.safetensors。这是SDXL在MPS/fp16环境下防止黑图的标准做法。

但agent自己写的脚本直接用checkpoint内置的VAE------这个VAE在fp16下有已知的黑图bug。

结果:前3张全黑(5KB),它自己折腾了10分钟才发现问题,又花了10分钟重写脚本。如果它直接用我们的Skill,从头到尾就不会有这个问题。

最终我们通过在ComfyUI启动参数里加--fp32-vae强制fp32精度才彻底解决。但这本来是不需要的------workflow模板里的VAELoader节点已经处理好了。

5. 记忆系统的连锁故障

这还不是全部。翻gateway日志发现另一个问题:

arduino 复制代码
memory-lancedb: recall failed: Error: Cannot find module '@lancedb/lancedb'

OpenClaw的记忆系统用的是LanceDB------一个基于Rust编译的向量数据库。问题是它的原生二进制文件跟ARM Docker容器不兼容。每次容器重建或镜像更新,之前装的模块就丢了。

这意味着Memory Agent永远无法工作。agent不记得你之前喜欢什么风格、什么参数效果好------每次都是从零开始。

解决思路

短期:让Skill更"霸道"

加强SKILL.md里的约束,让AI更难绕过。在render-agent的SKILL.md里加:

markdown 复制代码
## 强制规则

- 禁止自己写Python脚本调用ComfyUI API
- 必须使用 tools/comfyui-client.py
- 必须使用 workflows/ 目录下的模板
- 如果comfyui-client.py执行失败,报告错误,不要自己造轮子

同时改善description的触发精度:

bash 复制代码
description: >
  用户说"画""作图""生成图片"时使用。
  必须调用 tools/comfyui-client.py,禁止自己写脚本。
  NOT for: 文字创作、代码编写、数据分析。

中期:分层模型路由

日常聊天继续用DeepSeek(便宜),出图任务路由到Claude Sonnet(工具调用可靠)。

OpenClaw支持在配置里设置不同任务用不同模型。检测到"画""图""生成"这类关键词时自动切到Claude。DeepSeek每月 <math xmlns="http://www.w3.org/1998/Math/MathML"> 3 − 5 , C l a u d e 出图任务每月大概多花 3-5,Claude出图任务每月大概多花 </math>3−5,Claude出图任务每月大概多花15-30,但省下的是你盯着agent调试的时间。

长期:记忆系统替换

放弃LanceDB,切到文件记忆方案(MEMORY.md)。不依赖任何原生模块,不怕容器重建,不怕架构不兼容。虽然没有向量检索那么高级,但至少能用。

反思

这件事让我重新理解了一句话:Skill的质量上限取决于SKILL.md的写法,但Skill的执行下限取决于模型的工具调用能力。

OpenClaw的Skill系统设计得很优雅------声明式、热重载、渐进式加载。但它有一个根本假设:AI模型会优先选择使用已有的Skill,而不是自己另起炉灶。

这个假设在Claude上基本成立,在DeepSeek/Qwen上经常不成立。

社区里很多人用Claude跑agent觉得Skill系统很好用,然后推荐给用国产模型的人,结果对方发现agent根本不按Skill走。这不是Skill写得不好,也不是OpenClaw的bug------是模型能力的差距。

所以如果你也在用国产模型跑OpenClaw,遇到agent不按Skill执行的问题,先别急着改Skill,先考虑是不是模型的锅。当然Skill的description也要写好,但那是必要条件不是充分条件。

数据对比

最后放一下今天的实际数据:

指标 agent自己写脚本 用我们的workflow模板
黑图率 约75%(4张黑3张) 0%(修复后)
单张耗时 35-45秒(含折腾时间) 16-17秒
是否自动选checkpoint 否(永远SDXL Base) 是(根据风格切换)
是否有评分 是(5维度评分)
VAE精度处理 无(导致黑图) 有(fp16fix VAE)
负向prompt 无或随便写 模板库自动匹配

差距一目了然。

开源

以上所有代码、Skill、workflow模板、踩坑记录都在这里:

GitHub:github.com/baobaodawan...

ClawHub:clawhub install visual-muse(当前v1.2.1)

如果你也在折腾OpenClaw + ComfyUI,或者遇到了类似的Skill调度问题,欢迎交流。


这是Visual Muse系列的第二篇。第一篇讲架构搭建,这篇讲实战踩坑。下一篇计划写模型路由方案------怎么让DeepSeek和Claude各干各的活。

相关推荐
攒了一袋星辰2 小时前
SequenceGenerator高并发有序顺序号生成中间件 - 架构设计文档
java·后端·spring·中间件·架构·kafka·maven
weixin_449290012 小时前
智能盒子-Agent-Skill-执行逻辑架构
网络·架构
殷紫川2 小时前
吃透分库分表:分片策略、跨库事务与平滑扩容全解
mysql·架构
殷紫川2 小时前
MySQL高可用生产落地全解:主从同步、MGR集群、读写分离从原理到实战
mysql·架构
C澒3 小时前
微前端容器标准化 —— 公共能力篇:CDN 能力
前端·架构
带娃的IT创业者4 小时前
WeClaw 架构演进史:从 0 到 1 构建跨平台 AI 助手的完整历程
人工智能·python·websocket·架构·fastapi·架构设计·实时通信
im_AMBER5 小时前
高并发下的列表乱序与文档同步
前端·react.js·架构
only-qi5 小时前
空回滚、悬挂、幂等——TCC 分布式事务的三道暗礁
架构·分布式事务·空回滚、悬挂、幂等
无忧智库5 小时前
破局与重构:数字化转型深水区下“数智校园”的演进逻辑、架构范式与落地实战
重构·架构