名称: create-plugin
描述: 根据自然语言请求创建 OpenClaw 插件/扩展(TypeScript 模块)。当用户要求创建插件/扩展、添加新的斜杠命令、添加插件工具,或提及“创建一个能做……的插件”或“创建一个名为 NAME 的 OpenClaw 插件……”时使用。适用于 /create-plugin NAME WHAT-IT-DOES、/create-plugin GENERAL-PROMPT、“创建一个能做 ACTION 的扩展”或类似指令。
用户须知: 根据其权限,OpenClaw 本身已能创建自己的插件。此技能旨在简化该流程。插件可以改变 OpenClaw 的工作方式。它们与网关在同一进程中运行,因此请将其视为可信代码。
请参考以下任一来源,它们可能比此技能文档更新:
- OpenClaw 插件文档
- OpenClaw 插件 > 智能体工具
- 仓库文档:插件
- 仓库文档:智能体工具
- 如果存在本地仓库:<openclaw-repo>/docs/plugin.md 和 <openclaw-repo>/docs/plugins/agent-tools.md
如果您能访问这些链接,它们可能比此技能文档更新。如有差异,请以它们为准。否则,此技能展示了截至 2026 年 2 月创建 OpenClaw 插件的方法。
将用户请求转化为一个可运行的 OpenClaw 插件:选择插件 ID、搭建文件结构(openclaw.plugin.json、index.ts,可选的 package.json)、实现命令/工具/服务,并记录如何启用和重启。
选择插件根目录:
- 推荐(避免升级影响): ~/.openclaw/extensions/<id>
- 本地开发(工作区范围):<workspace>/.openclaw/extensions/<id>
- 自定义路径:添加到 plugins.load.paths
本地开发安装选项:
- 复制安装:openclaw plugins install /path/to/plugin
- 符号链接安装:openclaw plugins install -l /path/to/plugin
将 ID 规范化为小写、连字符分隔,不超过 64 个字符。
始终包含清单文件 (openclaw.plugin.json):
{
"id": "my-plugin",
"name": "My Plugin",
"description": "...",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
}
}
注意:
- configSchema 即使为空也必须存在。
插件入口点 (index.ts):
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
export default function register(api: OpenClawPluginApi) {
// registerCommand / registerTool / registerCli / registerService / 等
}
可选的 package.json (当需要打包或 npm 元数据时):
{
"name": "@openclaw/my-plugin",
"version": "0.1.0",
"type": "module",
"openclaw": { "extensions": ["./index.ts"] }
}
始终为插件功能编写并运行测试。
自动回复命令(无需 LLM 运行):
api.registerCommand({
name: "mycmd",
description: "...",
acceptsArgs: true,
requireAuth: true,
handler: async (ctx) => ({ text: "OK" }),
});
规则:
- 命令是全局的、不区分大小写,且不得覆盖保留名称。
- acceptsArgs: false 意味着 /cmd args 将不匹配。
智能体工具(可由 LLM 调用):
import { Type } from "@sinclair/typebox";
api.registerTool({
name: "my_tool",
description: "执行某项操作",
parameters: Type.Object({ input: Type.String() }),
async execute(_id, params) {
return { content: [{ type: "text", text: params.input }] };
},
});
可选工具(需手动启用):
api.registerTool({ ... }, { optional: true });
可通过 tools.allow 或 agents.list[].tools.allow 启用可选工具。
如果您有运行命令的权限,请询问用户是否可以运行以下命令,否则请将其作为操作说明提供。
- 启用:openclaw plugins enable <id>(或设置 plugins.entries.<id>.enabled = true)
- 更改后重启网关。
- 检查错误:openclaw plugins doctor
创建插件时,应生成:
- 插件文件树结构
- openclaw.plugin.json 和 index.ts 的确切文件内容
- 所需的任何配置片段(plugins.entries.<id>.config 或工具允许列表)
- 提醒和操作说明,包括如何启用插件、重启网关以及如何测试新功能