跳转到主要内容

juhecli-workflows 工作流编排

juhecli-workflows - 意图路由与多步操作编排中枢,将自然语言需求转换为精确的操作序列

使用案例

账号 Hanson 给所有客户发节日祝福新客户自动打标签并发送欢迎消息

给张三发消息hello

多步工作流:搜索联系人 → 发送消息
>给张三发消息hello
// Agent 调用 db contact search 查询张三的 username
$juhe-cli db contact search --keyword "张三"
{ "data": { "list": [ { "username": "wxid_zhangsan", "nickname": "张三", "remark": "客户" } ] } }
// Agent 使用返回的 username 调用 wx msg send_text 发送消息
$juhe-cli wx msg send_text --to_username "wxid_zhangsan" --content "hello"
{ "error_code": 0, "err_msg": "", "data": { "msg_id": "msg_002" } }

搜索包含合同的消息

db msg search - 按关键词搜索历史消息
>搜索包含合同的消息
// Agent 调用 db msg search 搜索历史消息
$juhe-cli db msg search --keyword "合同"
{ "data": { "list": [ { "msg_id": "msg_101", "content": "合同已经发你邮箱了", "from_username": "wxid_zhangsan", "timestamp": 1710480000 }, { "msg_id": "msg_102", "content": "合同条款确认一下", "from_username": "wxid_lisi", "timestamp": 1710393600 } ] } }

概述

工作流编排 SKILL(juhecli-workflows)是意图路由与多步操作的编排中枢。 当用户用自然语言描述操作意图时,通过此 SKILL 确定协议类型(企微/个微)、 路由到正确的操作序列、协调多个 SKILL 按顺序执行。 涵盖发送消息、创建群聊、好友管理、消息搜索转发等常见多步操作。

核心价值

将自然语言意图转换为精确的多步操作序列,自动协调 db、msg、room、contact 等 SKILL 协同工作。

触发方式

当用户的请求涉及多个步骤或需要跨 SKILL 协调时,Agent 应参考此编排 SKILL:

  • “给张三发消息” / “给李四发图片”
  • “创建一个群把张三李四拉进来”
  • “搜索包含合同的消息转发给张三”
  • “看看我和张三的聊天记录”
  • “加某某为好友” / “修改备注” / “删除好友”
  • “邀请张三进群” / “把李四踢出群” / “修改群名”

SKILL 包

SKILL 名称说明
juhecli-workflows跨命令工作流编排 - 意图路由表和常见多步操作的工作流指南

协议判断规则

执行任何操作前,必须先确定使用企微还是个微命令:

用户表述协议类型说明
用户明确说“个微/微信/个人微信”个微协议使用 wx 前缀命令,参数名为 to_username(wxid 格式)
用户明确说“企微/企业微信”企微协议使用无前缀命令,参数名为 conversation_id(user_id 格式)
无法判断需询问主动询问用户“是个人微信还是企业微信?”

协议混淆是最大错误源

  • 个微命令使用 wx 前缀,参数名是 to_username(wxid 格式)
  • 企微命令无前缀,参数名是 conversation_id(user_id 格式)
  • 混淆使用会导致命令执行失败

意图路由表

根据用户意图快速定位操作步骤和涉及的 SKILL:

用户意图操作步骤涉及 SKILL
给某人发文本消息查联系人 → 发消息juhecli-db + juhecli-msg 或 juhecli-wx-msg
给某人发图片查联系人 → 上传图片 → 发图片juhecli-db + juhecli-wx-cloud + juhecli-wx-msg
查看某人聊天记录查联系人 → 查消息列表juhecli-db
搜索历史消息按关键词搜索消息juhecli-db
创建群并邀请人查所有成员 → 创建群juhecli-db + juhecli-wx-room
邀请人进群查群 → 查人 → 邀请juhecli-db + juhecli-wx-room
加某人为好友搜索联系人 → 添加好友juhecli-wx-contact
修改好友备注查联系人 → 改备注juhecli-db + juhecli-wx-contact
搜索消息并转发搜索消息 → 查目标人 → 转发juhecli-db + juhecli-wx-msg

详细工作流

工作流 1:发送文本消息

text
用户:给张三发消息,说“会议改到下午3点”

Agent:好的,我先查找张三的信息。
→ Agent 调用 db contact search,keyword 为“张三”
→ 返回: username: "wxid_zhangsan"(个微)/ user_id: "zhangsan"(企微)

Agent:找到了张三(备注:客户-张三)。确认发给他吗?
用户:确认

→ Agent 判断协议:
  如果是个微 → 调用 wx msg send_text,to_username 为 wxid_zhangsan
  如果是企微 → 调用 msg send_text,conversation_id 为 zhangsan

Agent:消息已发送给张三。

参数名区分

  • 个微接收人参数:to_username,值为 wxid 格式
  • 企微接收人参数:conversation_id,值为 user_id 格式
  • 搜索结果有多人时需让用户确认

工作流 2:发送图片

text
用户:给张三发一张图片

Agent:好的,我先找到张三。
→ Agent 调用 db contact search,获取张三的 username

Agent:请提供要发送的图片链接。
用户:https://example.com/photo.jpg

Agent:好的,我来上传图片并发送。
→ Agent 调用 wx cloud upload 上传图片,获取 file_id、aes_key、file_size、file_md5
→ Agent 调用 wx msg send_image,传入图片信息和张三的 username

Agent:图片已发送给张三。

关键步骤:发图片必须先通过 wx cloud upload 上传到 CDN,获取返回的文件信息后才能发送。上传返回的 file_id、aes_key、file_size、file_md5 都要传给发送命令。


工作流 3:创建群并邀请成员

text
用户:创建一个项目群,把张三和李四拉进来

Agent:好的,我先查找张三和李四的信息。
→ Agent 调用 db contact search 查询张三,获取 wxid_zhangsan
→ Agent 调用 db contact search 查询李四,获取 wxid_lisi

Agent:已找到张三和李四,现在创建群。
→ Agent 调用 wx room create,传入两人的 username_list

Agent:项目群已创建成功!需要修改群名吗?
用户:改成“Q2项目组”

→ Agent 调用 wx room modify_name 修改群名

Agent:群名已修改为“Q2项目组”。

关键步骤:建群前需要逐个查询每个成员的 username,全部获取后再统一传入创建命令。


工作流 4:搜索并转发消息

text
用户:搜索包含“合同”的消息,转发给张三

Agent:好的,我先搜索消息。
→ Agent 调用 db msg search,keyword 为“合同”
→ 返回消息列表(包含 msg_id、content、msg_type 等)

Agent:找到以下消息:
1. [03-15] 李四:合同已经发你邮箱了
2. [03-14] 王五:合同条款确认一下
请确认要转发哪条?
用户:第一条

Agent:好的,我来查找张三并转发。
→ Agent 调用 db contact search 查询张三,获取 username
→ Agent 调用 wx msg send_refer,引用原文转发给张三

Agent:消息已转发给张三。

工作流 5:查看聊天记录

text
用户:看看我和张三的聊天记录

Agent:好的,我先查找张三。
→ Agent 调用 db contact search,获取张三的 username
→ Agent 调用 db msg list,传入 username,获取最近 20 条消息

Agent:您和张三最近的聊天记录:
[10:30] 张三:合同已经发你邮箱了
[10:32] 你:好的,我看看
[10:45] 张三:有问题随时联系
需要查看更多或搜索特定内容吗?

工作流 6:好友管理

text
用户:加手机号 138xxxx 为好友

Agent:好的,我来发送好友申请。
→ Agent 调用 wx contact add,keyword 为手机号,附带验证消息

Agent:好友申请已发送,等待对方通过。
text
用户:把张三的备注改成“客户-张三”

Agent:好的,我先查找张三。
→ Agent 调用 db contact search,获取张三的 username
→ Agent 调用 wx contact remark,修改备注

Agent:备注已修改为“客户-张三”。

好友管理操作:添加好友(wx contact add)、搜索好友(db contact search)、修改备注(wx contact remark)、删除好友(wx contact delete)。修改和删除操作需先通过 db contact search 获取 username。


工作流 7:群组操作

text
用户:把张三邀请到项目群里

Agent:好的,我先查找张三和项目群的信息。
→ Agent 调用 db contact search 查询张三,获取 username
→ Agent 调用 db room list 或 room list 查找项目群,获取 room_username
→ Agent 调用 wx room invite 邀请张三

Agent:张三已邀请到项目群。
text
用户:把李四踢出销售组

Agent:我先确认一下李四的信息。
→ Agent 调用 db contact search 查询李四
→ Agent 查找销售组的 room_username
→ Agent 调用 wx room kick 移除李四

Agent:李四已从销售组移除。

群组操作:邀请入群(wx room invite)、踢出群(wx room kick)、修改群名(wx room modify_name)。所有操作都需先获取目标人的 username 和群的 room_username。

关键字段映射速查

db contact search 返回值 → 各命令输入

返回字段用途
username个微所有命令的 to_username / username / room_username 参数
user_id企微命令的 conversation_id 参数
nickname显示名称,用于向用户确认是否为目标联系人
remark备注名,可用于搜索匹配和确认

wx cloud upload 返回值 → 发送命令输入

返回字段用途
file_idsend_image / send_file 的 file_id 参数
aes_keysend_image / send_file 的 aes_key 参数
file_sizesend_image / send_file 的 size 参数
file_md5send_image / send_file 的 md5 参数

AI Agent 注意事项

  • 执行任何操作前先确认协议(企微/个微),不确定时主动询问用户
  • db contact search 是最核心的前置操作,几乎所有工作流的第一步都是它
  • 搜索结果有多人时列出供用户确认,不要自行假设
  • 发图片必须先 wx cloud upload 上传,再使用返回值发消息
  • 建群需要逐个查询每个成员的 username,再统一传入 create 命令
  • 保存每步返回的关键字段(username、file_id、room_username 等),供后续步骤使用
  • 遇到错误及时向用户反馈并请求指导,不要跳过步骤继续执行

常见陷阱

  • 混淆企微和个微的参数格式(to_username vs conversation_id)
  • 直接使用姓名作为参数,而非查询获得的 ID
  • 忘记先上传文件就尝试发送图片/文件消息
  • 建群时只查了部分成员的 ID 就发起创建
  • 转发消息时缺少 refer_msg 的完整结构