OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  create-plugin:创建 OpenClaw 插件与扩展的 TypeScript 模块化工具

create-plugin:创建 OpenClaw 插件与扩展的 TypeScript 模块化工具

 
  env ·  2026-02-11 22:44:41 · 16 次点击  · 0 条评论  

名称: 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.jsonindex.ts,可选的 package.json)、实现命令/工具/服务,并记录如何启用和重启。

工作流程

1) 解析意图并确认范围

  • 确定插件 ID 和主要功能(自动回复命令、智能体工具、CLI 命令、频道、服务等)。
  • 如果请求不明确,请询问:
  • 期望的插件 ID/名称
  • 触发方式(斜杠命令?智能体工具?)
  • 期望的输出/副作用
  • 任何依赖项或外部二进制文件
  • 配置字段(API 密钥、标志、默认值)

2) 选择位置和 ID

选择插件根目录:
- 推荐(避免升级影响): ~/.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 个字符。

3) 创建必需文件

始终包含清单文件 (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"] }
}

4) 实现功能

始终为插件功能编写并运行测试。

自动回复命令(无需 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.allowagents.list[].tools.allow 启用可选工具。

5) 启用与重启

如果您有运行命令的权限,请询问用户是否可以运行以下命令,否则请将其作为操作说明提供。
- 启用:openclaw plugins enable <id>(或设置 plugins.entries.<id>.enabled = true
- 更改后重启网关。
- 检查错误:openclaw plugins doctor

输出预期

创建插件时,应生成:
- 插件文件树结构
- openclaw.plugin.jsonindex.ts 的确切文件内容
- 所需的任何配置片段(plugins.entries.<id>.config 或工具允许列表)
- 提醒和操作说明,包括如何启用插件、重启网关以及如何测试新功能

16 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 38 ms
Developed with Cursor