首页 教程 分类 Skills下载 关于
ZH EN JA KO
技能插件

OpenClaw频道专属工具开发

· 7 分钟

概述

OpenClaw 的七阶段工具流水线中,第四阶段"频道专属工具"是一个独特的设计。不同的通信平台提供了截然不同的交互能力——Discord 有丰富的嵌入消息和反应系统,Telegram 有内联键盘和机器人 API,Slack 有 Block Kit 和工作流,WhatsApp 有模板消息和交互列表。频道专属工具让 AI 代理能够充分利用每个平台的原生特性。

频道工具架构

频道专属工具在工具流水线的第四阶段被注入。系统根据当前会话的 channelType 属性,从已注册的频道工具集中选择匹配的工具加入工具列表。

channelTools:
  discord:
    - discord_embed
    - discord_reaction
    - discord_thread
    - discord_voice
  telegram:
    - telegram_keyboard
    - telegram_sticker
    - telegram_poll
  slack:
    - slack_blocks
    - slack_workflow
    - slack_modal
  whatsapp:
    - whatsapp_template
    - whatsapp_list
    - whatsapp_location

Discord 专属工具

discord_embed — 嵌入消息工具

Discord 的嵌入消息(Embed)支持丰富的格式化内容,包括标题、描述、字段、图片、缩略图和页脚。此工具让 AI 代理能够创建美观的结构化消息。

工具参数包括:title、description、color、fields(数组)、thumbnail、image、footer、timestamp。AI 代理会根据内容类型自动选择合适的排版方式。

discord_reaction — 反应管理工具

管理消息上的表情反应。AI 代理可以添加反应作为交互按钮的替代方案,也可以读取用户的反应来收集反馈。支持 Unicode 表情和服务器自定义表情。

discord_thread — 线程工具

在 Discord 频道中创建和管理线程。当对话涉及特定话题时,AI 代理可以自动创建线程以保持主频道的整洁。线程工具还支持归档和锁定操作。

discord_voice — 语音频道工具

提供语音频道的基本交互能力,如加入语音频道、播放音频、获取语音频道成员列表等。

Telegram 专属工具

telegram_keyboard — 内联键盘工具

Telegram 最具特色的交互方式是内联键盘。此工具允许 AI 代理在消息下方附加按钮网格,用户点击按钮后触发相应操作。

支持两种键盘类型:

  • 内联键盘:附在消息下方,按钮点击触发回调
  • 回复键盘:替换用户的软键盘,提供快速回复选项

telegram_sticker — 贴纸工具

发送和管理贴纸。AI 代理可以根据对话情绪选择合适的贴纸回复,增加互动的趣味性。

telegram_poll — 投票工具

创建投票消息,支持单选和多选模式。适用于收集团队意见、做决策投票等场景。

Slack 专属工具

slack_blocks — Block Kit 工具

Slack 的 Block Kit 是一套强大的消息构建框架。此工具让 AI 代理能够创建包含文本、图片、按钮、选择器、日期选择器等组件的复杂交互式消息。

Block Kit 工具会自动验证消息结构,确保生成的 blocks 符合 Slack API 的规范。

slack_workflow — 工作流工具

与 Slack Workflow Builder 集成,AI 代理可以触发预定义的工作流或创建简单的自动化流程。

slack_modal — 模态框工具

在 Slack 中打开模态对话框,收集用户的结构化输入。模态框支持多个输入字段、验证规则和多步骤表单。

WhatsApp 专属工具

whatsapp_template — 模板消息工具

WhatsApp Business API 要求主动消息使用预审核的模板。此工具管理模板的选择和参数填充,确保消息符合 WhatsApp 的政策要求。

whatsapp_list — 列表消息工具

发送包含可选择列表项的交互式消息。适用于菜单展示、选项选择等场景。列表支持最多 10 个分组,每组最多 10 个选项。

whatsapp_location — 位置工具

发送和接收地理位置信息。AI 代理可以在地图上标记位置,或解析用户发送的位置数据。

开发自定义频道工具

工具注册

自定义频道工具通过编程方式注册到 OpenClaw 系统中:

openclaw.registerChannelTool({
  channel: 'discord',
  name: 'discord_custom_tool',
  description: '自定义 Discord 工具的描述',
  parameters: {
    type: 'object',
    properties: {
      param1: { type: 'string', description: '参数说明' }
    },
    required: ['param1']
  },
  execute: async (params, context) => {
    // 工具执行逻辑
    return { result: '操作完成' };
  }
});

Context 对象

频道工具的执行函数接收一个 context 对象,包含:

  • channel:频道实例,提供平台原生 API 访问
  • session:当前会话信息
  • user:当前用户信息
  • abortSignal:来自流水线第七阶段的中止信号

系统提示词适配

注册频道工具后,别忘了通过 buildAgentSystemPrompt() 的扩展提示词机制,为 AI 代理提供使用该工具的指导说明。否则代理可能不清楚何时以及如何调用新工具。

测试频道工具

OpenClaw 提供了频道模拟器,让你在开发阶段无需连接真实平台就能测试频道工具。模拟器会模拟各平台的 API 响应和交互行为。

最佳实践

  1. 尊重平台规范:每个平台都有自己的设计规范和限制,工具应当遵循这些规范
  2. 优雅降级:如果某个频道特性不可用,工具应当返回有意义的错误信息而不是崩溃
  3. 异步安全:频道 API 调用是异步的,确保正确处理并发和超时
  4. 用户隐私:频道工具可能访问用户的平台数据,务必遵循最小权限原则

总结

频道专属工具是 OpenClaw 多平台架构的重要组成部分。通过为每个通信平台提供定制化的工具,AI 代理能够在不同环境下都提供原生级的交互体验。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入