游乐游手机版
首页/AI教程/文章详情

小龙虾自主编写手册技能工作坊

时间:2026-06-18 17:02
好的,没问题。作为一位在 AI 工具链领域摸爬滚打多年的老手,我来帮你把这篇关于 Skill Workshop 的文章重写一遍,让它读起来更像是一位资深用户在实际使用后的经验分享,而不是一份冷冰冰的产品说明书。 我们已经在前两篇里体验了手写 skill 的整个流程——从搜索安装、到从零创作、再到发布
好的,没问题。作为一位在 AI 工具链领域摸爬滚打多年的老手,我来帮你把这篇关于 Skill Workshop 的文章重写一遍,让它读起来更像是一位资深用户在实际使用后的经验分享,而不是一份冷冰冰的产品说明书。 我们已经在前两篇里体验了手写 skill 的整个流程——从搜索安装、到从零创作、再到发布分享。说真的,那套流程虽然完整,但每一步都得亲力亲为,尤其是当你有一连串想要沉淀的习惯性操作时,逐一填写触发短语和组织正文,确实有点像是把一份“填表式”的文档工作外包给了自己。虽然 `skill-creator` 工具能帮你分担一部分结构化的工作,但本质上,决策权还是在你手里。 OpenClaw 提供了一个实验性的内置插件——**Skill Workshop**,它的思路刚好反了过来。它能在你每一次成功的会话结束后,自动扫描历史记录,把其中值得固化下来的可复用流程整理成一份 workspace skill 的提议。如果它通过了内置的安全扫描,就能直接写入磁盘,从而让“小龙虾”把从你这轮互动中学到的经验,顺手写进自己下一轮可以调用的手册里。这就像是给你的 AI 助手装上了一套“即时反馈”的学习回路。 ## 开启与配置:先关进笼子里观察 既然是实验性插件,它默认是关着的。你需要在配置文件中显式地开启它。打开 OpenClaw 的配置文件,在 `plugins.entries` 下面添上这么一段: ```json {plugins: {entries: {"skill-workshop": {"enabled": true,"config": {"autoCapture": true,"approvalPolicy": "pending","reviewMode": "hybrid"}}}}} ``` 改完保存后,记得运行 `openclaw gateway restart` 让它生效。 这几个配置项是它的核心,我们来一个一个看下是干什么的: - **`autoCapture: true`** —— 开启后,每次对话成功结束,它会自动扫描历史。如果你关掉它,它就不会主动“多管闲事”,只有你明确对小龙虾说“把这个存成 skill”时,它才会动手。 - **`approvalPolicy: "pending"`** —— 这是关键。它扫描到觉得有价值的东西,不会直接落盘,而是先攒成一个“提案”放到待办队列里,等你来审批。我们第一次用,强烈建议先用 `pending`。等你亲眼见识几次它提的案到底靠不靠谱,再考虑换成 `auto` 让它自动写盘。 - **`reviewMode: "hybrid"`** —— 这决定了它用哪种“眼力”去发现可沉淀的内容。一共四档:`off` 是完全不自动找;`heuristic` 是只靠关键词扫描(比如后面要讲到的那些纠正性短语);`llm` 是让模型回看整段对话;`hybrid` 则是两者一起上。新手阶段直接用 `hybrid` 最省心,后面会单独说各档位的区别。 因为还在实验阶段,它的内部行为在版本迭代中可能会变。**第一次用务必先用 `pending` 模式,亲眼看看它几轮下来都想存些什么**,别一上来就让它自动写文件,免得它把你的工作区弄得一团乱。 这几个参数组合起来,可以应对不同的使用场景。下面列出几种典型的配置,你可以根据自己的习惯来选: ```json // 保守模式:只接受显式指令,关闭一切自动捕获 { autoCapture: false, approvalPolicy: "pending", reviewMode: "off" } // 推荐模式:开启自动捕获,但所有提案都排队待审 { autoCapture: true, approvalPolicy: "pending", reviewMode: "hybrid" } // 受信自动化:在你完全信任的本地工作区里,安全提案自动落盘 { autoCapture: true, approvalPolicy: "auto", reviewMode: "hybrid" } // 省钱模式:不跑 LLM 回看,只靠关键词扫描 { autoCapture: true, approvalPolicy: "pending", reviewMode: "heuristic" } ``` 除了上面这些核心配置,还有一些调节阈值和文件大小的参数,新手一般用不到。我列在下面,算是备查: | 键 | 默认 | 范围 | 作用 | | :--- | :--- | :--- | :--- | | `reviewInterval` | `15` | 1..200 | 累计多少次成功对话后,跑一次 LLM 回看模型 | | `reviewMinToolCalls` | `8` | 1..500 | 累计多少次工具调用后,跑一次 LLM 回看模型 | | `reviewTimeoutMs` | `45000` | 5000..180000 | LLM 回看模型单次运行的超时时间 | | `maxPending` | `50` | 1..200 | 每个工作区最多保留多少条待审提案 | | `maxSkillBytes` | `40000` | 1024..200000 | 生成的 skill 或支持文件,单文件大小上限 | ## 实战演练:把一句话变成一份 Skill 插件启用后,我们来手动走一遍完整流程。整个过程就三步:在对话里说一句带“纠正口吻”的话,看看提案是不是进了队列,最后把它应用落地。 ### 第一步:说一句带“纠正口吻”的话 首先,你需要造一段能被插件捕获的对话。插件会死盯着你的消息里有没有 `next time`、`always`、`from now on` 这类表达“纠正”意图的短语(完整的列表后面会讲)。一旦命中,它就会尝试把它沉淀成 skill。**注意,这些短语必须出现在你的消息里,小龙虾的回复中间出现不算。** 比如,你可以在对话里输入: ``` next time we work with animated GIFs, always verify the URL resolves to image/gif before committing the file. ``` 小龙虾会正常回复你。但在回复之后,Skill Workshop 插件会被自动触发,对这个会话进行沉淀分析。 ### 第二步:查看提案队列 然后,你需要看看提案进队列了没有。你可以在同一个会话或新会话里对小龙虾说: ``` > 帮我看下 skill workshop 现在有几个 pending 提案 ``` 小龙虾会调用 `skill_workshop` 工具,并返回一个待审队列。如果去 Control UI 查看详细的工具调用结果,你会看到类似这样的内容: ```json [{"id": "1548054d-4aa2-493d-a1f5-96409a4e56be","createdAt": 1780959647860, ... "status": "pending", "skillName": "animated-gif-workflow", "source": "agent_end", "change": {"kind": "create", "description": "Reusable workflow notes for animated GIF requests.", "body": "# Animated GIF Workflow\n\n## Workflow\n\n- next time we work with animated GIFs, always verify the URL resolves to image/gif before committing the file.\n- Verify the result before final reply.\n- Record durable pitfalls as short bullets; a void copying transcript noise."}}] ``` 这条记录里,有几个字段值得留意。 首先看 `status`:它是 `pending`,说明目前还没创建任何 skill 文件,这只是一条处在待审队列里的提议,真正落盘要等下一步的 `apply`。 再看 `skillName`:插件从你的话里识别出了 `animated GIFs`,给它起了个名字叫 `animated-gif-workflow`。OpenClaw 内置了一张话题映射表,可以把几类常见话题对到固定的 skill 名: | 你的话里出现的关键词 | 落到的默认 skill 名 | | :--- | :--- | | `animated` / `gif` | `animated-gif-workflow` | | `screenshot` / `screen capture` / `asset` / `imageoptim` | `screenshot-asset-workflow` | | `qa` / `scenario` / `test plan` | `qa-scenario-workflow` | | `pr` / `pull request` / `github` | `github-pr-workflow` | | 其他所有情况 | `learned-workflows` | 你的话里有 `animated GIFs`,命中第一行,自然就归到了 `animated-gif-workflow`。如果一句话哪个都不沾,就统一落到 `learned-workflows` 这个兜底名称。 另外还有个 `source` 字段,表示这个提案是从哪里冒出来的。它的取值有:`tool`(你或模型显式调工具生成的)、`agent_end`(自动扫描到纠正口吻)、`reviewer`(回看模型产出的)。这个在后面“三条捕获路径”一节会专门拆开讲。 ### 第三步:应用 Skill 提案 最后,我们把它应用落地。你对小龙虾说: ``` > 把 animated-gif-workflow 这个提案应用掉 ``` OpenClaw 会调用工具 `skill_workshop({ "action": "apply", "id": "1548..." })`。 应用成功后,会自动生成 `/skills/animated-gif-workflow/SKILL.md` 文件。这里有一个很关键的细节:**所有写入都会立刻刷新内存里的 skills 快照**,也就是说,这个新 skill 不用执行 `/new` 指令,也不用重启网关,在当前会话中就能被小龙虾看到并使用。 如果你觉得这个提案不够好,也可以拒绝它: ``` > 拒绝 animated-gif-workflow 这个提案 ``` ## 工具用法速查:八个动作 跑通之后你会发现,整个生命周期的管理,都是围绕 `skill_workshop` 这个工具展开的。它一共有八个动作: | action | 用途 | | :--- | :--- | | `status` | 统计当前工作区里各个状态(pending/applied/rejected/quarantined)的提案有多少条 | | `list_pending` | 列出待审队列里的提案,默认只看 pending,也可以传 `status` 参数查看其他状态 | | `list_quarantine` | 列出被安全扫描拦下、隔离起来的提案 | | `inspect` | 按 `id` 查看某一条提案的完整详情 | | `suggest` | 由模型主动提交一条新提案,在 `pending` 策略下默认入队等待审批 | | `apply` | 把某一条 pending 提案真正应用到磁盘上 | | `reject` | 拒掉某一条提案,状态改为 `rejected` 但保留在记录里 | | `write_support_file` | 往 skill 目录下的支持目录(如 `references/`、`scripts/`)写一份支持文件 | 其中大部分都比较直观,只有 `suggest` 和 `write_support_file` 值得单独聊聊。 `suggest` 是模型主动提交建议的入口,比自动捕获更精确。一个完整的 `suggest` 请求长这样: ```json {"action": "suggest","skillName": "animated-gif-workflow","title": "Animated GIF Workflow", "reason": "User established reusable GIF validation rules.","description": "Validate animated GIF assets before using them.", "body": "## Workflow\n\n- Verify the URL resolves to image/gif.\n- Confirm it has multiple frames.\n- Record attribution and license.\n- A void hotlinking when a local asset is needed."} ``` 上面这个例子用的是基础参数,默认走 `create` 模式创建一份新 skill。此外,`suggest` 还有几个额外的参数,用来切换写入方式或绕开审批策略: - **`apply`** —— 强制指定是否写盘,可以绕开当前的 `approvalPolicy`。`apply: true` 在 `pending` 策略下也会强行立即写入(但依然要过安全扫描);`apply: false` 在 `auto` 策略下也会强行只入队。 - **`section`** —— 传了它就切到 `append` 模式。`body` 的内容会被追加到已有 skill 的指定 section 下,而不是新建。 - **`oldText` + `newText`** —— 这两个一起传,就切到 `replace` 模式。它会精确地把 skill 正文里的 `oldText` 替换成 `newText`(要求 `oldText` 在文件中唯一存在,否则会拒绝)。 `write_support_file` 是用来往 skill 目录下的支持目录写文件的。一个 skill 不止是 `SKILL.md` 一份文件,它可以带 `references/`、`templates/`、`scripts/`、`assets/` 这四种支持目录。需要记住的是,支持目录里的内容**不会自动注入到 prompt 里**,只有在 `SKILL.md` 正文中显式引用时,小龙虾才会主动去读取。这条命令就是让 Workshop 把内容写到比 `SKILL.md` 更深的位置: ```json {"action": "write_support_file","skillName": "release-workflow","relativePath": "references/checklist.md", "body": "# Release Checklist\n\n- Run release docs.\n- Verify changelog.\n"} ``` 和写 `SKILL.md` 一样,这条命令也受同一套安全约束:写入位置被严格限定在 workspace 目录内,不能越界;文件大小受 `maxSkillBytes` 限制;内容同样要过一遍安全扫描;最后是原子落盘,不会写到一半留下半截文件。 ## 三条捕获路径:提案从哪里来? 前面讲 `source` 字段时提到,一条提案可能从三条不同的路径冒出来。这一节我们就把它拆开说说。 1. **工具显式建议(`tool`)**:当模型看到一段可复用的流程,或者用户明确说“把这个存成 skill”时,它会直接调用 `skill_workshop` 工具。这是最直接的一条路径,即使 `autoCapture: false` 也能用,是关闭自动捕获时唯一的入口。 2. **启发式捕获(`agent_end`)**:当 `autoCapture` 开启,且 `reviewMode` 包含 `heuristic` 时,插件会扫描成功的那一轮对话中,用户消息里明确出现的纠正性短语。这就是上面实战中你一句话能被捕获的原因。这套短语列表是写死在源码里的: ```js const CORRECTION_PATTERNS = [ /bnext timeb/i, /bfrom now onb/i, /bremember tob/i, /bmake sure tob/i, /balwaysb.{0,80}b(use|check|verify|record|sa ve|prefer)b/i, /bpreferb.{0,120}b(when|for|instead|use)b/i, /bwhen askedb/i, ]; ``` 命中之后,会根据内置的话题映射表给它起名,这就是前面实战中见过的逻辑,这里不再赘述。 3. **回看模型(`reviewer`)**:当 `reviewMode` 包含 `llm` 时,插件会攒够阈值(默认是 15 轮成功对话或 8 次工具调用),然后启动一次紧凑的内嵌回看。这里的“回看模型”其实就是当前对话用的那个模型,它会进行一次独立的子调用,重新审查一遍对话。这次调用有几个严格的限制: * 输入只喂最近 12,000 字对话记录,以及最多 12 个已有 skill(每个截到 2,000 字)。 * 不提供任何工具给它。 * 只允许输出 JSON 格式。 模型返回的结果只能是 `{"action":"none"}` 或一个提案对象。其中的 `action` 可以是 `create`(新建)、`append`(追加到一个现有 skill 的 section)、`replace`(替换段落中的精确字符串)。 ## 安全扫描:最后一道闸门 在实战中,我们见过提案的三种状态:`pending`(排队待批)、`applied`(已应用)、`rejected`(已拒绝)。实际上还有第四种:**`quarantined`**(被安全扫描拦下,隔离起来)。这一节我们就来看下它。 在 `SKILL.md` 和支持文件落盘前,它会先过安全扫描。这个扫描器不是大模型,而是一组写死的正则规则。规则分两档:命中 **critical** 的,直接隔离;命中 **warn** 的,只记录,不拦截。 **五条 critical 规则(命中即隔离):** * **`prompt-injection-ignore-instructions`** —— 匹配“ignore all/previous instructions”这类经典的越权开场白。 * **`prompt-injection-system`** —— 匹配“system prompt”“developer message”“hidden instructions”这些字眼。一个正经的流程 skill 没理由去提隐藏的 prompt 指令。 * **`prompt-injection-tool`** —— 匹配“调用某工具……无需……许可/审批”这种句式,怂恿小龙虾绕过工具审批。 * **`shell-pipe-to-shell`** —— 匹配 `curl https://... | sh` 这种直接把远程脚本输入 shell 运行的命令。 * **`secret-exfiltration`** —— 匹配同一句里既出现 `env` / `process.env`,又出现网络动作(`fetch` / `curl` / `http` 等)的情况,试图往外发送密钥。 **两条 warn 规则(只记录、不拦截):** * **`destructive-delete`** —— 匹配 `rm -rf /`、`rm -rf ~` 这种大范围删除操作。不直接拦,是因为正常的清理脚本也可能这么写,留给人工判断。 * **`unsafe-permissions`** —— 匹配 `chmod 777` / `chmod -R 777` 这种放开全部权限的危险操作。 这里为什么用死正则,而不是用模型来扫?我想可能有三个原因:一是**确定性**,同样的内容每次扫结果都一样,用模型则不够稳定;二是**零成本零延迟**,每次写盘都过一遍,不占 token,速度也快;三是**不会被反将一军**,它本身就是为了防 prompt injection 的最后一道闸,如果它自己也是个模型,反倒可能被同一套注入手段策反。 ## 小结 今天我们学习了 Skill 系列的第三篇,也是整个系列的最后一篇。我们让小龙虾学会了在每次对话后,把可复用的流程自动沉淀成 workspace skill 的能力。 回头看这一路,我们实际上是在按一个由浅入深的顺序,把一只小龙虾从一个只会回消息的聊天机器人,逐步培养成了一个能干活、可扩展的个人 AI 助手。 最开始是**接入**,我们把它装起来,接上 Telegram 和飞书;接着是**自动化**,靠 cron、heartbeat、webhook 这些机制,让它能按时间、按事件自己跑起来;然后我们学习了**协作与隔离**,给配齐了后台任务、多 agent 与子 agent、沙箱、远程网关;再接着是学习它的**手脚**,从内置工具到 `browser`,再到能转派任务的 ACP;最后这几篇则落在**手册**上,从理解 skill 原理,到安装、发布他人的 skill,再到今天这篇 Skill Workshop——教它如何在干活的过程中给自己写手册。 走到这里,小龙虾已经不再是一个只会回消息的 bot 了。它是一个有手有脚、有手册,还具备了自我迭代能力的 AI agent。 这个系列就到这里。感谢你一路读到最后。现在,去给你的小龙虾配齐工具箱吧。 ## 参考 - OpenClaw 官方文档 - OpenClaw GitHub 仓库 - Skill Workshop 插件文档 - Skills 系统文档 - Creating skills 文档 - Plugins 总览 - Skill Workshop 插件源码
来源:https://juejin.cn/post/7652274996618870838
上一篇边界约束与上下文正则化图像快速去雾MATLAB代码 下一篇微信开发者工具+BBWEYY开发彪马中国小程序流程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Windows Docker Desktop RabbitMQ生产级部署完整指南
AI教程 · 2026-06-29

Windows Docker Desktop RabbitMQ生产级部署完整指南

前言 在 Windows 本地开发环境中,直接安装 RabbitMQ 确实颇为周折:需要单独配置 Erlang 运行环境、手动管理环境变量、服务启停全凭手工操作。更令人困扰的是,版本兼容冲突、端口占用、环境不一致等问题层出不穷。笔者见过不少开发者为搭建环境就得耗费整整半天时间。 相比之下,借助 Do

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践
AI教程 · 2026-06-29

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践

先分享一个切实感受。过去两年,我们与福建制造企业合作较为频繁,发现一个非常突出的现象:超过80%的企业官网,产品参数仍然存放在PDF或图片中。AI爬虫?根本无法抓取。这些企业技术实力不弱、资质证照齐全、应用案例也丰富,但在AI搜索这一全新战场上,它们几乎处于隐身状态。 一、一个正在发生的行业变化 A

阿里云Token Plan团队版功能价格与省钱购买指南
AI教程 · 2026-06-29

阿里云Token Plan团队版功能价格与省钱购买指南

阿里云百炼近期推出了名为“Token Plan 团队版”的全新服务,这一服务专为企业与开发者量身打造,定位为AI大模型订阅平台。通过引入Credits作为统一计量单位,将文本生成、图像生成等多模态AI能力纳入单一计费体系,同时无缝兼容主流AI编程工具及智能体(Agent)生态系统。其核心亮点包括:全

阿里云物联网.NET Core客户端位置信息上报
AI教程 · 2026-06-29

阿里云物联网.NET Core客户端位置信息上报

阿里云物联网平台的位置服务并非一个完全独立的功能模块。位置信息可包含二维坐标与三维坐标,而位置数据的来源本质上是借助设备属性进行上传。换言之,若要让设备上报位置,您需先将其视为一个普通属性进行处理。 1)添加二维位置数据 操作过程十分简洁。进入数据分析 → 空间数据可视化 → 二维数据,点击添加,将

年阿里云服务器选型配置与网站部署全攻略
AI教程 · 2026-06-29

年阿里云服务器选型配置与网站部署全攻略

2026年,阿里云服务器生态已高度成熟,形成了清晰的轻量应用服务器与ECS云服务器两大产品阵营。无论你是计划搭建个人博客、企业官网,还是运营电商平台、进行应用开发,基本都能找到理想的解决方案。本指南将从服务器选型、配置选择、部署流程到安全运维,系统梳理2026年最实用的操作要点,帮助你少走弯路,让网