@workclaw/openclaw-workclaw
v1.0.341
Published
智小途企业通讯平台 OpenClaw 渠道插件
Maintainers
Readme
openclaw-workclaw
OpenClaw WorkClaw 通道插件,用于集成智小途企业通讯平台。
📖 项目概述
openclaw-workclaw 是一个基于 OpenClaw 插件架构的通道插件,用于与智小途企业通讯平台进行深度集成,实现消息收发、定时任务管理等功能。
📁 项目结构
openclaw-workclaw/
├── src/
│ ├── index.ts # 插件入口
│ ├── channel.ts # 通道定义
│ ├── runtime.ts # 运行时状态管理
│ ├── accounts.ts # 账号管理
│ ├── types.ts # 类型定义
│ ├── config-schema.ts # 配置 Schema
│ ├── send.ts # 消息发送导出
│ │
│ ├── api/ # HTTP API 接口
│ │ ├── accounts-api.ts # 账号管理 API
│ │ ├── prompts-api.ts # 提示词管理 API
│ │ ├── session-api.ts # 会话管理 API
│ │ ├── skills-api.ts # 技能列表 API
│ │ └── workspace.ts # 工作区路径解析
│ │
│ ├── connection/ # 连接管理
│ │ └── workclaw-client.ts # WorkClaw API 客户端
│ │
│ ├── gateway/ # 网关处理
│ │ ├── workclaw-gateway.ts # WebSocket 网关
│ │ ├── message-dispatcher.ts # 消息分发器
│ │ ├── message-context.ts # 消息上下文解析
│ │ ├── agent-handlers.ts # 智能体事件处理
│ │ ├── skills-handler.ts # 技能事件处理
│ │ ├── skills-list-handler.ts # 技能列表处理
│ │ ├── tools-list-handler.ts # 工具列表处理
│ │ ├── config-writer.ts # 配置写入
│ │ └── reconnect.ts # 重连机制
│ │
│ ├── outbound/ # 出站消息
│ │ ├── index.ts # 出站消息导出
│ │ └── workclaw-sender.ts # WorkClaw 消息发送
│ │
│ ├── tools/ # 内置工具
│ │ └── openclaw-workclaw-cron/
│ │ ├── index.ts # 工具注册入口
│ │ ├── api/ # 工具 API
│ │ ├── src/
│ │ │ ├── add/ # 创建定时任务
│ │ │ ├── update/ # 修改定时任务
│ │ │ ├── remove/ # 删除定时任务
│ │ │ ├── enable/ # 启用定时任务
│ │ │ ├── disable/ # 禁用定时任务
│ │ │ └── notify/ # 定时触发通知
│ │ ├── types/ # 类型定义
│ │ └── utils/ # 工具函数
│ │
│ ├── media/ # 媒体处理
│ │ └── upload.ts # 媒体上传
│ │
│ └── utils/ # 工具函数
│ └── content.ts # 内容处理
│
├── skills/ # 技能定义
│ └── openclaw-workclaw-cron/
│ └── SKILL.md # 定时任务技能说明
│
├── templates/ # 模板文件
│ ├── IDENTITY.md # 智能体身份定义
│ └── SOUL.md # 智能体灵魂配置
│
├── openclaw.plugin.json # 插件元数据
├── package.json # 包配置
└── tsconfig.json # TypeScript 配置✨ 功能特性
- WebSocket 实时通信:支持通过 WebSocket 与智小途平台保持长连接
- 多账号支持:多个账号共享一个 WebSocket 连接
- 消息收发:支持文本消息、图片消息、语音消息的发送与接收
- 定时任务:内置定时任务管理工具,支持创建、修改、删除、启用/禁用定时任务
- 流式响应:支持流式消息输出
- 心跳保活:支持配置心跳检测机制
- 自动重连:连接断开后自动重连
- 会话管理:支持会话重置和会话信息查询
- 技能管理:支持动态加载和管理 AI 技能
📝 配置项说明
基础配置
| 配置项 | 类型 | 必填 | 说明 | |--------|------|------|------| | enabled | boolean | 否 | 是否启用通道,默认 true | | baseUrl | string | 是 | API 基础地址 | | websocketUrl | string | 否 | WebSocket 地址,默认根据 baseUrl 自动生成 | | appKey | string | 是 | 应用 Key | | appSecret | string | 是 | 应用密钥 | | agentId | string/number | 是 | 智能体 ID |
安全策略配置
| 配置项 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| dmPolicy | string | 否 | 私信策略,默认 open |
| allowFrom | array | 否 | 允许发送消息的用户 ID 列表 |
| requireMention | boolean | 否 | 是否需要 @ 机器人 |
消息配置
| 配置项 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| historyLimit | number | 否 | 历史消息条数限制,默认 0 |
| dmHistoryLimit | number | 否 | 私信历史消息条数限制,默认 0 |
| textChunkLimit | number | 否 | 文本分片大小限制 |
| chunkMode | string | 否 | 分片模式:length 或 newline |
| mediaMaxMb | number | 否 | 媒体文件大小限制(MB) |
| heartbeat | object | 否 | 心跳配置 |
| renderMode | string | 否 | 渲染模式:auto、raw、card |
网络配置
| 配置项 | 类型 | 必填 | 说明 | |--------|------|------|------| | localIp | string | 否 | 本地 IP 地址 | | allowInsecureTls | boolean | 否 | 允许不安全的 TLS 连接 | | requestTimeout | number | 否 | 请求超时时间(毫秒) | | uploadUrl | string | 否 | 媒体上传地址 | | replyEndpoint | string | 否 | 回复消息端点 | | pushEndpoint | string | 否 | 推送消息端点 |
dmPolicy 选项说明
| 值 | 说明 |
|----|------|
| open | 开放策略,允许所有用户发送消息 |
| pairing | 配对策略,需要用户先配对才能发送消息 |
| allowlist | 白名单策略,只允许 allowFrom 列表中的用户发送消息 |
当前安装向导会直接写入
dmPolicy: "open"和allowFrom: ["*"],不会再让用户在向导中选择策略。
👥 多账号配置
{
"channels": {
"openclaw-workclaw": {
"baseUrl": "https://workbrain.cn/backend-api",
"appKey": "your-app-key",
"appSecret": "your-app-secret",
"dmPolicy": "open",
"allowFrom": ["*"],
"accounts": {
"default": {
"agentId": "agent-001",
"userId": "user-001"
},
"agent-002": {
"agentId": "agent-002",
"userId": "user-002"
}
}
}
}
}安装向导
当前安装向导的输入项只有:
App KeyApp Secret手机号
向导会自动完成:
- 获取
accessToken - 通过手机号查询
agentId - 通过手机号查询
userId - 写入
dmPolicy: "open" - 写入
allowFrom: ["*"]
安装向导支持通过以下方式覆盖接口地址:
channels.openclaw-workclaw.baseUrlWORKCLAW_BASE_URLWORKCLAW_AUTH_BASE_URLWORKCLAW_OPEN_API_BASE_URL
⏰ 定时任务
插件内置定时任务管理工具,支持以下操作:
工具列表
| 工具 | 说明 | 用途 |
|------|------|------|
| openclaw-workclaw-cron-add-params | 生成创建提醒参数 | 获取创建定时任务的 CLI 参数 |
| openclaw-workclaw-cron-add-sync | 同步创建提醒到后端 | 将创建结果同步到智小途后端 |
| openclaw-workclaw-cron-update-params | 生成修改提醒参数 | 获取修改定时任务的 CLI 参数 |
| openclaw-workclaw-cron-update-sync | 同步修改提醒到后端 | 将修改结果同步到智小途后端 |
| openclaw-workclaw-cron-remove-params | 生成删除提醒参数 | 获取删除定时任务的 CLI 参数 |
| openclaw-workclaw-cron-remove-sync | 同步删除提醒到后端 | 将删除结果同步到智小途后端 |
| openclaw-workclaw-cron-enable-params | 生成启用提醒参数 | 获取启用定时任务的 CLI 参数 |
| openclaw-workclaw-cron-enable-sync | 同步启用提醒到后端 | 将启用结果同步到智小途后端 |
| openclaw-workclaw-cron-disable-params | 生成禁用提醒参数 | 获取禁用定时任务的 CLI 参数 |
| openclaw-workclaw-cron-disable-sync | 同步禁用提醒到后端 | 将禁用结果同步到智小途后端 |
| openclaw-workclaw-cron-notify-sync | 定时触发通知后端 | 定时任务触发时通知后端 |
时间格式
相对时间:
| 格式 | 说明 | 示例 |
|------|------|------|
| 5m | 5 分钟后 | "5m" |
| 1h | 1 小时后 | "1h" |
| 1h30m | 1.5 小时后 | "1h30m" |
| 2d | 2 天后 | "2d" |
注意:提醒时间不能少于 30 秒
Cron 表达式:
| 表达式 | 说明 | 示例 |
|--------|------|------|
| 0 8 * * * | 每天早上 8 点 | "0 8 * * *" |
| 0 22 * * * | 每天晚上 10 点 | "0 22 * * *" |
| 0 9 * * 1-5 | 工作日早上 9 点 | "0 9 * * 1-5" |
使用流程
用户:"5分钟后提醒我喝水"
步骤1:调用 add-params 生成参数
调用:openclaw-workclaw-cron-add-params({ time: "5m", name: "喝水提醒", message: "该喝水了", taskId: "12918841455332741" })
步骤2:必须使用返回的 cronParams 调用 OpenClaw cron 工具,不能手写 CLI 参数
步骤3:从 cron 工具返回值中提取 jobId(如 "7382945612345")
步骤4:调用后端同步
调用:openclaw-workclaw-cron-add-sync({ jobId: "7382945612345", taskId: "12918841455332741", name: "喝水提醒", kind: "cron", message: "该喝水了" })
回复:"⏰ 好的,5分钟后提醒你喝水~"add-params 参数说明
| 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | time | string | 是 | 时间描述,支持相对时间(5m、1h)和 cron 表达式 | | name | string | 是 | 任务名称 | | message | string | 是 | 提醒内容 |
注意:
account参数不需要传入,会自动从ctx.agentAccountId获取
update-params 参数说明
| 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | jobId | string | 是 | OpenClaw 任务 ID | | time | string | 是 | 时间描述,支持相对时间(5m、1h)和 cron 表达式 | | name | string | 是 | 任务名称 | | message | string | 是 | 提醒内容 |
注意:
account参数不需要传入,会自动从ctx.agentAccountId获取
🌐 HTTP API
插件提供以下 HTTP API 接口:
账号管理 API
GET /openclaw-workclaw/accounts # 获取所有账号列表
GET /openclaw-workclaw/accounts?id=xxx # 获取指定账号信息
POST /openclaw-workclaw/accounts # 创建新账号
PUT /openclaw-workclaw/accounts # 更新账号
DELETE /openclaw-workclaw/accounts?id=xxx # 删除账号提示词管理 API
GET /openclaw-workclaw/workspace/prompts # 获取所有提示词
GET /openclaw-workclaw/workspace/prompts?name=xxx # 获取指定提示词
PUT /openclaw-workclaw/workspace/prompts # 创建/更新提示词
POST /openclaw-workclaw/workspace/prompts # 创建/更新提示词
DELETE /openclaw-workclaw/workspace/prompts?name=xxx # 删除提示词会话管理 API
GET /openclaw-workclaw/sessions # 获取 API 信息
GET /openclaw-workclaw/sessions?sessionKey=xxx # 获取指定会话信息
POST /openclaw-workclaw/sessions/reset # 重置会话
GET /openclaw-workclaw/sessions/store-path # 获取会话存储路径技能列表 API
GET /openclaw-workclaw/skills # 获取所有已注册的技能📄 模板文件
插件会自动释放以下模板文件到工作区:
| 文件 | 说明 |
|------|------|
| IDENTITY.md | 智能体身份定义,包含核心定位、身份铁则等 |
| SOUL.md | 智能体灵魂配置,包含系统提示词等 |
🔧 开发指南
代码规范
- 所有代码使用 TypeScript
- 使用 Zod 进行配置验证
- 使用 ESLint 进行代码检查
- 函数注释使用 JSDoc 规范
模块说明
| 模块 | 说明 |
|------|------|
| src/gateway/ | WebSocket 连接和消息处理 |
| src/connection/ | API 客户端和认证 |
| src/outbound/ | 出站消息发送 |
| src/tools/ | 内置定时任务工具 |
| src/api/ | HTTP API 处理器 |
调试
插件内置详细的日志输出,可通过 api.logger 查看:
api.logger.info('信息日志')
api.logger.warn('警告日志')
api.logger.error('错误日志')📦 依赖
| 依赖 | 版本 | 说明 | |------|------|------| | openclaw | ^2026.3.13 | OpenClaw 核心框架 | | undici | ^7.16.0 | HTTP 客户端和 WebSocket | | ws | ^8.19.0 | WebSocket 支持 | | zod | ^4.3.6 | 配置验证 | | typescript | ^5.6.3 | TypeScript 编译器 |
📄 许可证
MIT
