Back to blog
    openclawfine-tuningcustom-skillssecurity

    用微调模型为 OpenClaw 打造自己的自定义技能

    ClawHub 供应链攻击污染了 800 多个技能。更稳妥的做法是自己动手,用微调模型作为支撑:更安全、更准确,也更贴合你自己的领域。

    Edward Xi Yang

    OpenClaw 的技能系统是它最强大的特性之一,眼下也是它最危险的负担。

    ClawHub 市场的设计初衷是让社区共享可复用的能力:一个技能管日历,另一个处理发票,再一个监控服务器健康状况。而在现实中,ClawHavoc 行动发现了 341 个投放 Atomic macOS Stealer 的恶意技能,后续扫描又识别出 800 多个被污染的条目,约占整个注册表的 20%。

    供应链已经被下了毒。但用领域专属能力扩展 OpenClaw 这个思路本身是成立的。解法是自己动手去建,用在你自己领域数据上微调过的模型来支撑,而不是绕开技能系统,也不是继续依赖通用的 API 调用。

    自建技能为什么胜过社区技能

    1. 没有供应链风险

    技能是你自己写的,每一行代码、每一次模型调用都在你掌控之中。不依赖第三方作者,不担心恶意更新,也不必在别人每次发新版本时都去审一遍代码。

    2. 效果更好

    社区技能是为通用场景写的,靠宽泛的系统提示词去应付任何用户的数据。而由微调模型支撑的自定义技能,是针对你的具体任务、你的数据格式和你的输出要求专门打造的。

    3. 数据留在本地

    如果自定义技能搭配的是本地微调模型,那么技能处理的数据从不离开你的基础设施。社区技能通常走 OpenClaw 配置的那个云 API,也就是说即便技能本身无害,你的数据仍然流经了第三方服务器。

    一个 OpenClaw 自定义技能由什么组成

    一个 OpenClaw 技能是一项自包含的能力,有定义好的输入、一个处理函数和结构化的输出。其核心是一段提示词模板,用来指示底层模型如何处理某一类特定任务。

    关键组成部分:

    • 触发条件:技能如何被调用(关键词、模式匹配或自动识别)
    • 上下文采集:技能在调用模型之前收集哪些数据
    • 模型交互:提示词模板与期望的输出格式
    • 执行动作:技能拿到模型响应后做什么

    当底层模型针对该任务做过微调,提示词模板就可以更简单(需要交代的指令更少),输出也更稳定(格式偏离更少),准确度还会提升,因为领域知识存在权重里,而不是硬塞进系统提示词。

    五个值得自建的技能

    1. 工单分拣技能

    它做什么:监控进来的支持渠道,按类别和优先级给工单分类,路由到对应团队,并起草初步回复。

    为什么微调有用:你的工单分类体系是独有的。「账单问题」和「订阅管理」之间的界线取决于你产品的具体结构。一个在 500 条以上已分类工单上训练过的微调模型能精确学到这些区别,而通用模型只能靠一段描述去猜。

    训练数据:导出过去 6 个月的工单,连同它们的类别、优先级和初步回复,整理成指令/回复配对。

    预期提升:分类准确度通常从 70% 到 75%(通用模型加系统提示词)提升到 90% 到 95%(微调模型)。

    2. 合同审阅技能

    它做什么:处理上传的合同,标出不利条款,抽取关键条目(日期、金额、义务),并生成带风险评估的摘要。

    为什么微调有用:「不利」是主观的,也是领域相关的。SaaS 供应商协议里算风险的条款,和建筑分包合同里算风险的条款并不相同。在你所在组织的合同审阅历史上微调,等于把你们自己的风险判定标准教给模型。

    训练数据:200 到 500 份已审阅合同,标注好条款(是否标记为风险)以及摘要输出。

    预期提升:条款标记准确度在微调后可达 90%,而靠提示词工程的通用模型是 65% 到 75%。

    3. 每日报告生成技能

    它做什么:从配置好的数据源(仪表盘、数据库、API)拉取数据,按你的模板格式生成叙述性报告,再通过合适的渠道分发给相关方。

    为什么微调有用:报告格式的一致性。微调模型见过你几百份报告,每次都能复现完全相同的结构、语气和分析风格。通用模型的输出格式则会不可预测地漂移。

    训练数据:100 到 300 份过往报告,以及生成这些报告所用的数据输入。

    预期提升:模板遵循度从 80% 到 85% 提升到 97% 以上。

    4. 邮件起草技能

    它做什么:分析进来的邮件,判断需要哪一类回复,起草语气和详略程度都合适的回信,并在发送前排入人工审阅队列。

    为什么微调有用:每个人、每个组织都有独特的邮件声音。在你已发送的邮件上微调,能捕捉到你的沟通风格:正式程度、称呼习惯、落款偏好,以及你如何区别对待不同的关系(客户、同事、供应商)。

    训练数据:500 到 1,000 封你发出的邮件,以及触发它们的来信。

    预期提升:草稿采纳率(未经修改直接发出)通常从 30% 到 40% 翻倍到 60% 到 75%。

    5. 数据抽取与归一化技能

    它做什么:处理进来的文档(发票、采购订单、登记表),把结构化数据抽取成统一 schema,供下游系统使用。

    为什么微调有用:schema 合规性。当 OpenClaw 把抽取出的数据送进数据库、API 或表格时,任何偏离预期 schema 的地方都会报错。微调模型能达到 99% 以上的 schema 合规率,因为它在训练中见过这个输出格式几百次。

    训练数据:200 到 500 份文档,以及各自对应的结构化数据输出。

    预期提升:schema 合规率从 79% 提升到 99%。

    构建流程

    每个自定义技能都走这几步:

    1. 收集训练数据

    从现有工作流里导出该任务的样本,格式如下:

    {
      "instruction": "Classify this support ticket and draft a response",
      "input": "[ticket content]",
      "output": "Category: Billing\nPriority: Medium\nResponse: [draft response]"
    }

    目标是 500 条以上。数据越多通常效果越好,不过哪怕只有 200 条高质量样本,相比通用模型也已经有实打实的提升。

    2. 微调模型

    把数据集上传到 Ertas Studio,选一个基础模型,Qwen 2.5 7B 或 Llama 3.1 8B 对多数技能任务都很合适。跑一次 LoRA 微调任务(rank 16、3 个 epoch 是可靠的起点)。

    用留出的测试集评估,准确度不达标就继续迭代。

    导出为 GGUF。

    3. 本地部署

    通过 Ollama 部署 GGUF 模型,并把 OpenClaw 配置为在该技能上使用你的本地模型。

    4. 编写技能

    写出技能定义:触发条件、上下文采集逻辑、提示词模板和输出动作。因为模型已经针对该任务微调过,提示词模板可以写得很简短。你不需要用几段系统提示词去描述输出格式或领域规则,模型已经知道了。

    5. 测试与迭代

    用真实数据跑一遍技能,收集模型表现不佳的案例,把它们作为下一轮微调的训练样本。

    一个模型还是多个模型?

    对多数团队来说,只要任务处在同一个领域,用单个微调模型承担多种技能就够了。一家服务商为某个客户管理沟通事务时,完全可以用一个模型同时覆盖邮件起草、工单分拣和报告生成。

    当任务差异很大时,比如合同审阅、代码生成和病历摘要,按技能类型分开训练各自的模型效果更好。Ollama 支持加载多个模型,OpenClaw 也可以把不同技能路由到不同的模型端点。

    LoRA 适配器方案在这里格外高效:共享一个基础模型,按技能加载各自的适配器。存储开销很小(每个适配器 50 到 200MB),切换也很快。

    安全上的收益

    用本地微调模型支撑自建技能,等于同时消除了两条攻击路径:

    1. 供应链风险:不再依赖可能夹带恶意代码的社区技能
    2. 数据外泄风险:技能执行过程中不向云 API 传输任何数据

    你的技能完全跑在自己的基础设施上,用自己的模型处理自己的数据。唯一的外部依赖,是你当初下载过一次的基础模型权重。

    在 OpenClaw 技能注册表有 20% 被攻陷的当下,自己动手已经是一项安全要求,而不只是性能上的优化。

    就本文向 AI 提问

    Ship AI that runs on your users' devices.

    Free plan with 30 credits/mo, no card required. Paid plans from $10/mo USD.

    Keep reading