首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >“龙虾”跨端打工记:让 WorkBuddy 联动企微与 CloudBase,一句话完成任务的自动分发

“龙虾”跨端打工记:让 WorkBuddy 联动企微与 CloudBase,一句话完成任务的自动分发

原创
作者头像
用户12428818
发布2026-05-05 23:49:18
发布2026-05-05 23:49:18
3601
举报

一、项目背景

作为一个同时兼顾运营和开发的“全栈打杂人”,我每天都要在企业微信群里回复各种用户反馈、手动记录需求、然后切到项目管理工具里派发任务。有时候同事在群里@我十几次,光是把这些零散信息整理成待办事项,就要花掉将近一个小时。

于是我开始琢磨:能不能“养一只虾”,让它替我完成一些机械工作呢?恰好看到腾讯云 OpenClaw 玩虾大赛的征稿,我决定把 WorkBuddy 和 CloudBase 联动起来,打造一个自动化的任务分发系统。

核心思路很简单:我在企微群里发一句自然语言指令,WorkBuddy 接收后调用 CloudBase 云函数,自动解析任务内容和负责人,写入数据库,再通过企微机器人回执通知相关人员。

最终效果是:原本需要手动操作的“接收→解析→记录→分发”四步,压缩成了一句话。

二、设计思路

整个工作流的串联逻辑如下:

工作流逻辑
工作流逻辑

这套架构的巧妙之处在于:WorkBuddy 是“大脑”,CloudBase 是“双手”,企业微信是“嘴巴和耳朵”。三者通过 API 串联,形成一个完整的自动化闭环。

三、实践过程

Step 1:创建 CloudBase 数据库集合

在 CloudBase 控制台创建环境 lobster-ops 后,进入「数据库」→「集合管理」,新建两个文档型集合:

  • task_board:存储待办任务,权限模板选择「读取全部数据,修改本人数据」
  • team_members:存储团队成员信息,权限模板选择「仅创建者及管理员可读写」

创建完成后,两个集合并排出现在列表里。

task_board 和 team_members 两个集合创建成功
task_board 和 team_members 两个集合创建成功

Step 2:让 WorkBuddy 生成云函数代码

我给 WorkBuddy 下了一条 Prompt:

我的 CloudBase 环境 ID 是 lobster-ops-d5gm47l217e50bea8。已经手动创建好了 task_board 和 team_members 两个数据库集合。请帮我创建一个名为 taskDispatcher 的云函数,接收 messageText 参数,分析提取任务和负责人(找不到则为“待认领”),写入 task_board 集合……

WorkBuddy 很快返回了完整的 index.js 代码和部署说明。这就是“对话式开发”的魅力——不需要从零手写,只需用自然语言描述需求,AI 就能生成可执行的代码。

workbuddy任务指令
workbuddy任务指令
代码语言:txt
复制
// taskDispatcher/index.js
// 依赖:@cloudbase/node-sdk(CloudBase 云函数运行环境内置,无需额外安装)

const app = require('@cloudbase/node-sdk').init({
  // 不传 env,使用当前函数所在环境(即 lobster-ops-d5gm47l217e50bea8)
});

/**
 * 从文本中解析"任务内容"和"负责人"
 * 规则:
 *   1. 支持"@xxx 负责..."、"由 xxx 负责..."、"交给 xxx"、"xxx 来做"等口语表达
 *   2. 未匹配到负责人时,owner 默认为 "待认领"
 */
function parseMessage(text) {
  let owner = '待认领';
  let task = text.trim();

  // 匹配模式:@某人、由某人负责、交给某人、某人来做/处理、负责人:某人
  const ownerPatterns = [
    /负责人[::]\s*(.+?)(?:[,,。\s]|$)/,      // 负责人:张三
    /由\s*(.+?)\s*负责/,                        // 由张三负责
    /交给\s*(.+?)(?:[,,。\s去来]|$)/,          // 交给张三
    /@([^\s,,。、]+)/,                          // @张三
    /(.+?)\s*来[做处理跟进]/,                   // 张三来处理
  ];

  for (const pattern of ownerPatterns) {
    const match = text.match(pattern);
    if (match && match[1]) {
      owner = match[1].trim();
      break;
    }
  }

  // 从 task 文本中剔除负责人相关片段,保留核心任务描述
  if (owner !== '待认领') {
    task = text
      .replace(/负责人[::]\s*.+?(?=[,,。\s]|$)/, '')
      .replace(/由\s*.+?\s*负责/, '')
      .replace(/交给\s*.+?(?=[,,。\s去来]|$)/, '')
      .replace(/@[^\s,,。、]+/, '')
      .replace(/.+?\s*来[做处理跟进]/, '')
      .trim()
      .replace(/^[,,。、\s]+|[,,。、\s]+$/g, ''); // 清理首尾标点
  }

  // 如果清理后 task 为空,则回退到原始文本
  if (!task) {
    task = text.trim();
  }

  return { task, owner };
}

exports.main = async (event) => {
  const { messageText } = event;

  // 参数校验
  if (!messageText || typeof messageText !== 'string' || !messageText.trim()) {
    return {
      success: false,
      message: '参数 messageText 不能为空',
    };
  }

  // 解析任务内容和负责人
  const { task, owner } = parseMessage(messageText);

  // 获取数据库引用(通过 app.database(),不使用 init 方法)
  const db = app.database();

  try {
    // 写入 task_board 集合
    await db.collection('task_board').add({
      task: task,
      owner: owner,
      deadline: null,
      status: '待处理',
      source: '企微机器人',
      createdAt: new Date().toISOString(),
    });

    return {
      success: true,
      message: '任务创建成功',
      task: task,
    };
  } catch (err) {
    console.error('[taskDispatcher] 写入数据库失败:', err);
    return {
      success: false,
      message: '写入数据库失败:' + (err.message || String(err)),
    };
  }
};

Step 3:部署云函数

在 CloudBase 控制台选择「云函数」→「新建云函数」,选择 Nodejs 空白模板

  • 函数名称:taskDispatcher
  • 运行环境:Nodejs 18.15
  • 函数类型:事件函数

将 WorkBuddy 生成的代码粘贴进在线编辑器,同时修改 package.json,添加 @cloudbase/node-sdk 依赖。点击「保存并安装依赖」,等待部署完成。

taskDispatcher 云函数状态为“正常”,部署成功
taskDispatcher 云函数状态为“正常”,部署成功

Step 4:测试云函数

进入云函数的「测试」页面,输入测试参数:

代码语言:txt
复制
{
  "messageText": "请小李在周五前完成用户反馈分析报告"
}

点击执行测试,返回结果:

代码语言:txt
复制
{"success":true,"message":"任务创建成功","task":"请小李在周五前完成用户反馈分析报告"}
云函数测试成功返回,任务已被正确解析
云函数测试成功返回,任务已被正确解析

四、踩过的几个坑,复盘一下

坑1:数据库权限别乱选

第一次建集合的时候没注意权限,默认选了个很严的模板,结果云函数死活写不进去。查了半天日志才发现是权限被拒了。后来改成“读取全部数据,修改本人数据”就通了,这个小细节折腾了我好一阵。

坑2:package.json缺依赖

模板自带的package.json里没有@cloudbase/node-sdk这行,部署成功了但一跑就报找不到模块。补上依赖重新部署才行。如果你跟着做,记得确认一下依赖声明。

坑3:负责人提取没那么聪明

测试的时候消息里写了“小李”,但进数据库一看,owner那栏写的是“待认领”。原因是team_members集合是空的,代码找不到匹配项就填了默认值。

这也是后面可以优化的地方——要么先把成员信息录进去,要么让代码更智能一点做模糊匹配。

五、感受

这次从头搭完这套小东西,最大的感受是:人和AI的配合确实能省很多事

以前从下需求到写完一个能跑的云函数,怎么也要二十分钟。这次代码让WorkBuddy出,我只负责配置和调试,整个后端部分几分钟就搞定了。省下来的时间可以多想想业务逻辑和扩展玩法。

当然目前只是个Demo,后续想把企微机器人的Webhook真接进去,再加个任务状态变更的通知,让它变成一个能追全流程的小工具。模式其实挺通用的,改成客户反馈入库、日报生成之类的场景应该也一样能跑。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、项目背景
  • 二、设计思路
  • 三、实践过程
    • Step 1:创建 CloudBase 数据库集合
    • Step 2:让 WorkBuddy 生成云函数代码
    • Step 3:部署云函数
    • Step 4:测试云函数
  • 四、踩过的几个坑,复盘一下
    • 坑1:数据库权限别乱选
    • 坑2:package.json缺依赖
    • 坑3:负责人提取没那么聪明
  • 五、感受
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档