dsh-whatsapp:在 DSH 侧栏挂载 WhatsApp 多设备客户端

前言

在 DeepSeek Harness(DSH)里跑智能体或本地工具链时,聊天、通知和文件往往分散在手机和电脑之间。若要在同一套 Harness 界面里对照个人 WhatsApp 收发短信、同步会话并传文件,通常只能再开浏览器标签或独立桌面客户端,与侧栏里的其他能力割裂。

dsh-whatsapp 是 AJN-Tech 维护的 DSH 客户端类插件:在 DSH 左侧栏提供接近 WhatsApp Web 的「已关联设备」体验,通过扫码关联手机号,在电脑侧实时同步消息并支持媒体与文件,会话状态本地加密保存。下文按定位、能力、安装与首次关联、安全与限制说明可核对的事实与步骤。

这是什么

  • 名称:dsh-whatsapp(仓库 AJN-Tech/dsh-whatsapp)
  • 维护者:AJN-Tech
  • 分类:客户端(社区目录:SkillHub 插件页)
  • 当前资料版本:0.1.2(见 package.json)
  • 定位:非官方的 WhatsApp Web 风格关联设备插件;基于开源 Baileys 走 WhatsApp Web 多设备协议,不属于 WhatsApp / Meta 官方产品。

README 明确提示:个人账号没有公开 API,非官方客户端可能违反 WhatsApp 服务条款,关联号码存在被封禁(含永久封禁)风险;勿用无法承受损失的账号,勿用于批量或自动化群发。

环境与依赖

安装前需满足 README 所列条件:

项 要求
DSH 0.2.0 及以上(engines.dsh: ">=0.2.0";README 注明曾在 0.2.2-rc.1 上测试)
Node.js 22.5+(与 DSH 0.2.2 运行时要求一致)
手机 已安装 WhatsApp,电脑需能联网;首次关联需手机扫码一次

核心功能(以 README 功能表为准)

下面仅列出资料中标注为已实现或明确说明的行为。

关联与在线

  1. 手机 WhatsApp → 关联设备 扫 QR 码完成一次关联。
  2. 作为独立关联设备,拥有各自的端到端加密连接。
  3. 在 WhatsApp 多设备规则下,主手机关机或离线时仍可收发(关联设备约 14 天未使用会被 WhatsApp 解除关联,插件会提示重新扫码)。

消息与会话

  • 文本、回复、表情、@ 提及;聊天列表、搜索、未读数、历史同步、已读回执、输入状态与在线状态。
  • 群组:收发、参与者名称、群元数据。

媒体与文件

  • 收发照片、视频、音频、文档;支持下载媒体(媒体按需拉取,仅缓存在内存,不落盘明文)。

会话持久化

  • 启动之间安全保存关联会话:AES-256-GCM 静态加密。

明确未实现或仅占位

  • 语音 / 视频通话:未实现(可显示来电并 Reject;无法传输音视频;顶栏通话按钮禁用并附说明)。
  • 状态 / 动态、频道 / 简报、阅后即焚管理、支付等:未实现。

安装与启用

官方 README 提供三种路径;不要凭仓库名自行拼接 dsh plugin add github:owner/repo 作为唯一安装方式。

从本地打包的 tarball(推荐)

在已获取源码的目录中执行:

cd dsh-whatsapp
npm install
npm pack                       # 产生 dsh-whatsapp-0.1.2.tgz
dsh plugin add "$PWD/dsh-whatsapp-0.1.2.tgz"

若插件管理器提示需要重启,请重启 DSH。成功后左侧栏出现 WhatsApp 入口;若安装时 DSH 已在运行且未出现入口,重启一次进程(README 说明运行中主机可能缓存失败的模块导入)。

从 GitHub Release

从 latest release 下载 dsh-whatsapp-0.1.2.tgz,然后:

dsh plugin add /path/to/dsh-whatsapp-0.1.2.tgz

源码目录(开发)

git clone https://github.com/AJN-Tech/dsh-whatsapp.git
cd dsh-whatsapp
npm install
dsh plugin add "$PWD"
dsh plugin dev "$PWD" --host http://127.0.0.1:46739   # 推送 client.js,无需重启

pnpm 与依赖构建脚本

@whiskeysockets/baileys 与 protobufjs 带有 install 脚本;新版 pnpm 可能拦截,可在 DSH 插件管理 Web UI 中批准并重试,或使用 approved-builds 选项。手动 npm install 时,README 称对这两个包使用 npm install --ignore-scripts 即可。

安装完成后重启 DSH(按提示),打开侧栏 WhatsApp 即可进入关联流程。

首次关联(典型用法)

  1. 在 DSH 左侧栏打开 WhatsApp。
  2. 手机上:WhatsApp → 设置 → 关联设备 → 关联设备。
  3. 扫描 DSH 中显示的 QR 码,在手机上确认新设备。
  4. 界面切换到聊天列表并开始同步历史。

该设备会出现在手机的关联设备列表中,形态类似浏览器 / 桌面客户端;同一账号最多可关联 四台设备,本插件占其一。

日常使用即在 DSH 全页客户端中收发消息、回复、传文件,与手机端保持实时同步;需要解除关联时可在插件 Settings → Log out(或 Re-link)。

本地数据、加密与卸载

状态目录默认为 ${DSH_HOME:-~/.dsh}/whatsapp/:

creds.enc   封存的设备凭证
keys.enc    封存的 Signal 会话 / 预密钥等状态
store.enc   封存的本地聊天与消息缓存
device.json 关联元数据(重连非必需)
key.bin     主密钥(口令模式下不存在)
salt.bin    scrypt 盐(仅口令模式)
  • 默认用 key.bin(目录 0700、文件 0600)保护上述封存文件。
  • 启动 DSH 前设置环境变量 DSH_WHATSAPP_PASSPHRASE 时,用 scrypt 从口令派生密钥,不写入 key.bin;更改或丢失口令需重新关联。
  • 插件不记录消息正文、凭证、密钥、QR、Cookie 或媒体字节;除 WhatsApp 服务器外无遥测外连。本地 API 挂在 DSH 已认证的 Web 服务下,路由与 DSH 一方路由同样的连接 / 属主校验。

卸载插件不会自动删除数据目录:

dsh plugin remove dsh-whatsapp
rm -rf "${DSH_HOME:-$HOME/.dsh}/whatsapp"

更完整威胁模型见仓库 docs/SECURITY.md。

适用场景与注意事项

较适合

  • 已在用 DSH 0.2.0+,希望把个人 WhatsApp 收进 Harness 侧栏,减少在浏览器 / 独立客户端间切换。
  • 接受「关联设备」能力边界:要强依赖语音视频通话、动态、频道等,仍需使用手机或官方 WhatsApp Web / Desktop。

务必注意

  1. 非官方客户端:自行承担封号与服务条款风险;README 建议阅读 docs/FEASIBILITY.md。
  2. 插件以当前 DSH 进程权限运行:安装前应阅读源码与 MIT 许可证(package.json),确认依赖与行为可接受。
  3. 通话:来电可拒绝,不能在本插件内接通音视频。
  4. 长期不用:约 14 天未使用关联设备会被 WhatsApp .unlink,需重新扫码。

DSH 生态强调「一切皆插件」;SkillHub 等为社区目录站点,与 DeepSeek / 幻方无官方从属关系,本文所述安装与能力均以仓库 README 与 package.json 为准。

结尾

dsh-whatsapp 把 WhatsApp 多设备关联设备嵌进 DSH 左侧栏:扫码一次、实时同步、文件与媒体、本地 AES-256-GCM 会话封存,并如实标明通话与部分 WhatsApp 功能未实现。若你正在搭建 Harness 工作区并需要把常用 IM 收拢进同一界面,可按上文 tarball 或 Release 路径安装,并在接受非官方风险的前提下完成首次 QR 关联。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜