跳转到主要内容

juhecli-sync 企微同步

juhecli-sync - 企业微信数据增量同步:消息同步与联系人数据同步

使用案例

同步最新消息同步联系人数据

同步消息

sync msg - 增量同步企微消息
>同步一下最新消息
// Agent 调用 db sync-status 获取初始 seq,再调用 sync msg
$juhe-cli sync msg --sync_key "12345" --limit 100
{ "data": { "sync_key": "12399", "continue_flag": 1, "msg_list": [ { "msg_id": "msg_001", "content": "会议改到下午3点", "from_username": "wxid_zhangsan", "timestamp": 1710480000 } ] } }

同步联系人

sync multi_data - 同步联系人数据
>同步联系人数据
// Agent 调用 sync multi_data,business_id 设为 1(联系人类型)
$juhe-cli sync multi_data --business_id 1 --seq "" --limit 10
{ "data": { "seq": "5678", "continue_flag": 0, "count": 15, "contact_list": [ { "username": "wxid_zhangsan", "nickname": "张三", "remark": "客户" } ] } }

概述

企微同步 SKILL(juhecli-sync)负责将企业微信的消息和联系人数据增量同步到本地数据库。 通过 sync_key / seq 机制实现增量同步,确保本地数据与服务端保持一致。 同步后的数据可通过 db 系列 SKILL 查询使用。

sync_key 使用要点

sync_key 不能传 0 或空字符串。首次同步前需从 db sync-status 获取初始 seq 值, 后续使用每次同步返回的新 sync_key。

触发方式

当用户用自然语言表达以下意图时,Agent 应激活此 SKILL:

  • “同步消息” / “拉取最新消息” / “同步一下消息”
  • “同步联系人” / “拉取最新联系人数据”
  • “拉取最新数据” / “全量同步”
  • “检查同步状态”(此时应引导至 db sync-status)

命令一览

SKILL 名称说明
juhecli-sync企微同步管理 - 同步消息、同步联系人数据,通过 sync_key 增量拉取

Agent 交互示例

sync msg - 首次同步消息

text
用户:帮我同步一下消息

Agent:好的,我先检查一下同步状态。
→ Agent 调用 db sync-status 获取初始 seq

Agent:获取到同步起点,开始同步消息。
→ Agent 调用 sync msg,使用 seq 作为 sync_key

Agent:消息同步完成,共拉取 87 条新消息。

sync_key 禁忌

  • 不要传 0 或空字符串
  • 首次同步前,必须先从 db sync-status 获取初始 seq
  • 每次同步后保存返回的新 sync_key,用于下次调用
  • limit (number) - 每次同步的消息数量上限,默认 100
  • sync_key (string) [来自上次同步返回值] 或 [需查询] - 增量同步密钥,首次从 db sync-status 获取

sync msg - 持续增量同步

text
用户:再拉一批最新消息

Agent:好的,使用上次的同步位置继续拉取。
→ Agent 使用上次 sync msg 返回的 sync_key,调用 sync msg

Agent:增量同步完成,新增 23 条消息。

sync multi_data - 同步联系人数据

text
用户:同步一下联系人数据

Agent:好的,我来同步联系人数据。
→ Agent 调用 sync multi_data,business_id 设为 1(联系人类型)

Agent:联系人数据同步完成,共更新 15 条记录。
  • business_id (number) [用户提供] - 业务类型:1 = 联系人数据
  • limit (number) - 每次同步数量,默认 10
  • seq (string) [来自上次同步返回值] - 增量序列号,首次传空字符串

全量初始化同步

text
用户:这是一个新实例,帮我做全量同步

Agent:好的,我先检查同步状态,然后依次同步联系人和消息。
→ Agent 调用 db sync-status 获取初始 seq
→ Agent 调用 sync multi_data 同步联系人
→ Agent 调用 sync msg 同步消息

Agent:全量同步完成:
- 联系人:同步了 156 条
- 消息:同步了 500 条
后续可以定时做增量同步保持数据最新。

参数来源速查

参数来源标记获取方式
sync_key[来自上次同步返回值]上次 sync msg 返回值,Agent 应自动保存
sync_key(首次)[需查询]必须先通过 db sync-status 获取 seq,将 seq 作为首次 sync_key
business_id[用户提供]用户指定同步的业务类型(1 = 联系人)
seq[来自上次同步返回值]上次 sync multi_data 返回值

典型工作流

工作流 1:首次同步消息

用户首次要求同步消息时,Agent 需按以下步骤操作:

  1. 查询同步状态:调用 db sync-status 获取当前 seq 值
  2. 首次同步:将 seq 作为 sync_key 调用 sync msg
  3. 保存位置:保存返回的新 sync_key,用于后续增量同步

工作流 2:持续增量同步

用户定期要求同步时,Agent 使用上次保存的 sync_key 调用 sync msg 拉取增量消息,然后保存新的 sync_key 供下次使用。

工作流 3:同步联系人数据

用户说“同步联系人”。Agent 调用 sync multi_data,business_id 设为 1,首次 seq 传空字符串,后续使用上次返回的 seq。

工作流 4:全量初始化

新实例部署后,用户要求全量同步。Agent 按顺序操作:

  1. 检查同步状态:调用 db sync-status 获取初始 seq
  2. 同步联系人:调用 sync multi_data(business_id=1)
  3. 同步消息:调用 sync msg,使用从 sync-status 获取的 seq 作为 sync_key
  4. 保存同步位置:保存 sync_key 和 seq 供后续增量同步使用

AI Agent 注意事项

  • sync_key 绝不能传 0 或空字符串,首次必须从 db sync-status 获取
  • 每次同步后必须保存返回的 sync_key / seq,丢失会导致数据不一致
  • 建议设置定时任务,每 5-10 分钟执行一次增量同步
  • 首次同步建议使用较大 limit 值,后续可适当减小
  • 同步失败时检查 sync_key 是否过期,必要时从 db sync-status 重新获取
  • business_id 参数由用户指定业务类型,Agent 需确认用户意图