360 Secure SkillHub
360 安全技能中心

dingtalk-gui-message

在 macOS 上以 GUI 自动化方式操作钉钉桌面客户端:截图后用 Swift Vision OCR 定位联系人,用 cliclick 点击并粘贴文本发送消息;可检测未登录状态并输出登录二维码截图路径。依赖 peekaboo、cliclick、swift、screencapture、osascript 及屏幕录制与辅助功能授权,并使用视觉模型做截图语义确认。未包含非 macOS 实现。

jacky-wzj
jacky-wzj
热度 48.05
最近更新 2026-05-18 11:48:48
分类:协作依赖:代码执行 / 读写文件 / 第三方 API / 内部调用大模型应用场景:自动化脚本 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add dingtalk-gui-message
Metadata
name
dingtalk-gui-message
description
通过 macOS GUI 自动化给钉钉联系人发消息。使用 peekaboo + screencapture + Swift Vision OCR + cliclick 实现全流程自动化。触发词:钉钉发消息、给XX发消息、钉钉GUI、dingtalk message。

钉钉 GUI 自动化发消息

通过 macOS 桌面 GUI 自动化,搜索钉钉联系人并发送消息。

前置条件

  • macOS(arm64, Retina)
  • 已安装钉钉桌面客户端(com.alibaba.DingTalkMac)
  • 已安装工具:peekaboo, cliclick, swift
  • 已授权:Screen Recording + Accessibility

用法

python3 scripts/send_message.py "联系人名" "消息内容"

登录处理

脚本自动检测钉钉是否需要登录:

  • 已登录 → 直接执行
  • 未登录 → 截取二维码,输出 {"needs_login": true, "qr_code": "路径"}
  • exit code: 0=成功, 1=失败, 2=需要登录

技术方案(4/13 + 4/23 验证通过)

截图策略(关键!)

场景 工具 理由
登录检测 peekaboo image --app 只截钉钉窗口,避免误识别其他窗口文字
OCR 导航 screencapture -x 全屏 Retina,能捕获 WebView 内容
二维码截图 screencapture -x 确保二维码可见

坐标换算(4/23 修正)

Retina 截图: 3024×1964 像素
逻辑分辨率: 1512×982
换算: 逻辑坐标 = 像素坐标 ÷ 2

双引擎 OCR

引擎 用途
Swift Vision OCR 文字精确坐标 → cliclick
qwen3.6-plus vision 语义理解,确认操作结果

核心原则(踩坑总结)

  1. bundleId: 始终用 com.alibaba.DingTalkMac
  2. 中文输入: 只用 peekaboo paste --text --app bundleId
  3. WebView 点击: 用 cliclick,不用 peekaboo click
  4. 搜索词: 用名字前两个字,不用全名
  5. 窗口激活: osascript activate + peekaboo focus 双重保障

工具链

工具 用途
peekaboo paste 中文、hotkey、press、窗口截图
screencapture 全屏 Retina 截图(捕获 WebView)
Swift Vision OCR + 像素坐标
cliclick 逻辑坐标点击
qwen-vl-max 截图语义分析