sweet560/dsh-plugin-wechat-session ↗★ 1

dsh-plugin-wechat-session

微信会话互通聚合包:装这一个包就同时带上「桌面弹窗 / 系统通知 + 提示音」与 @xmanrui/dsh-im 微信机器人。多条会话并行时逐条监督,需要手动选择 / 需要确认权限 / 任务跑完都会弹一张带具体内容、点击可跳到对应会话的系统通知并响提示音;两类事件各有独立超时(需选择 / 确认默认 60 秒、任务跑完默认 30 秒),超时没切过去看 / 没把待办处理掉,就由微信机器人把带问题原文与编号选项的清单提醒发到你指定的那一个微信对话,可直接在微信里回复选择。

包名
dsh-plugin-wechat-session
兼容性
待验证
Harness 依赖范围
>=0.2.0-rc.1 <0.3.0-0
版本
1.6.0
许可证
MIT
最近更新
2026年11月12日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:sweet560/dsh-plugin-wechat-session

3. 安装与配置

安装(已装过可跳过)

命令行(桌面版 profile 一般是 desktop):

dsh plugin --profile desktop add "file:F:/DeepSeek Harness workspace/default-workspace/dsh-plugin-wechat-session"

或用桌面应用内的「插件管理」填本地目录路径。装完必须重开 DSH / 刷新页面——浏览器半边是在页面加载时注入的。

v1.2.0 起这个包是聚合包,装它会自动带上 dsh-im,不必再单独 add @xmanrui/dsh-im。本机已通过 plugin_manager 装好并写入 profiles/desktop/package.json。切换后的 profile 结构见第 8 节。

配置

重开 DSH 后,打开 设置 → 微信会话互通:

字段说明
启用本插件总开关。关掉后不弹通知、不响提示音、不发微信
微信机器人 Bot ID第 2 步复制的 Bot ID(纯 ID,如 wx_xxx);也可把整段「复制调用参数」粘到这里
微信目标 ID第 2 步复制的 targetId(纯 ID,如 tgt_xxx);整段 JSON 粘进来会自动拆成两个 ID
任务跑完类超时(秒)默认 30,可填 5–3600;「任务跑完」这类事件超过这个秒数没切过去看就发微信
需选择 / 确认类超时(秒)默认 60,可填 5–3600;「需要手动选择 / 确认权限 / 指导进入下一步」这类待拍板事件单独一个超时,超时把问题原文 + 编号选项列成一张清单发微信,让你直接在微信里回复选择(见第 3.1 节)
提示音 / 音量三类事件都播放一段合成提示音,并各自弹一张带具体内容的系统通知
超时发微信关掉后只做桌面提醒,不补发微信

两个 ID 都留空时,只弹桌面通知,不发微信;也可以把它们写进 cordis.patch.yml 的 config.botId / config.targetId 作为服务端兜底(注意该文件随 profile 落盘、对本机用户可读)。

设置页有两个按钮:测试桌面通知(弹一张「会话名 · 对话完成」的卡,点它可跳到对应会话)、测试微信推送,用来确认权限与投递链路。

浏览器控制台里还有调试 API:

window.__dshPluginWechatSession.config       // 当前配置
window.__dshPluginWechatSession.testDesktop() // 手动弹一次「会话名 · 对话完成」桌面提醒(可点它跳会话)
window.__dshPluginWechatSession.testWechat()  // 手动发一条测试微信
window.__dshPluginWechatSession.debug()       // { bound, source, away, currentSid, sessionsBound, batch }

debug().currentSid 是插件推导出的「当前正看着哪条会话」,sessionsBound 表示 sessions.list 是否已订阅——排查多会话提醒时用得上;notifyPermission / audioState 用来排查「为什么没弹窗 / 没响」(v1.6.0)。

3.1 在微信里直接选择 / 批准(借 dsh-im 双向同步回填)

v1.6.0 起,「需要手动选择 / 确认权限 / 指导进入下一步」这类待拍板事件有独立超时(默认 60 秒,见配置表)。超时前没切进会话处理,微信里收到的不再只是「任务跑完了·xxx」一行,而是像一张清单的一条消息:

  • 【等你拍板】段:逐条列出「会话「XXX」 · 需要手动选择」、问题原文、1) 2) 3) 编号选项(含描述)、多选提示(用逗号分隔编号),以及「微信回『编号 / 选项文字 / 批准 / 拒绝』即可」的回复格式;
  • 【已完成】段:逐条写「会话「XXX」已完成(时间)」,一眼看出是哪个会话跑完了;
  • 末尾附 dsh-im 双向同步配置指引。

「在微信里直接选完自动回填 DSH」由 dsh-im 完成,不是本插件自己解析微信回复。 dsh-im 自带「交互式提问」(回复选项序号 / 选项文字 / 自定义文字,多选逗号分隔)与「远程审批」(批准 / 拒绝 / 同意 / 不同意 / yes / no),并且支持微信。要让这条链路真正生效,需要满足:

  1. 该会话在 dsh-im 里绑定一个已开启「双向同步」的微信私聊——同步提问 / 审批只在私聊里提出,Web 或其他 Host 任务发起时要求「该会话恰好绑定一个这样的私聊」;
  2. 本插件设置页填的 Bot ID / 目标 ID 必须指向同一个微信对话(否则清单发到 A、dsh-im 的回填在 B,对不上);
  3. dsh-im 是一出现待办就即时推到那个私聊,本插件这条清单是超时留底(60 秒没处理才发)。两者互补:即时那条能直接在微信里回编号 / 批准并回填;超时清单让你离开后仍能看清所有待拍板点、照着编号回。

说明:本插件通过 ctx.dshIm.send() 发出的微信,dsh-im 不会替它解析回复(其入站订阅 consumeInbound 目前只对明确选择外部消费模式的飞书 / Lark 账号开放,微信不在其中)。所以「真回填」特指 dsh-im 自带的同步提问 / 审批这条链路;本插件负责把问题与选项写清楚,并提示你把它配到同一个私聊。不想配双向同步时,清单里的编号与「批准 / 拒绝」措辞仍可作为「回 DSH 里点哪一项」的备忘。


配置

重开 DSH 后,打开 设置 → 微信会话互通:

字段说明
启用本插件总开关。关掉后不弹通知、不响提示音、不发微信
微信机器人 Bot ID第 2 步复制的 Bot ID(纯 ID,如 wx_xxx);也可把整段「复制调用参数」粘到这里
微信目标 ID第 2 步复制的 targetId(纯 ID,如 tgt_xxx);整段 JSON 粘进来会自动拆成两个 ID
任务跑完类超时(秒)默认 30,可填 5–3600;「任务跑完」这类事件超过这个秒数没切过去看就发微信
需选择 / 确认类超时(秒)默认 60,可填 5–3600;「需要手动选择 / 确认权限 / 指导进入下一步」这类待拍板事件单独一个超时,超时把问题原文 + 编号选项列成一张清单发微信,让你直接在微信里回复选择(见第 3.1 节)
提示音 / 音量三类事件都播放一段合成提示音,并各自弹一张带具体内容的系统通知
超时发微信关掉后只做桌面提醒,不补发微信

两个 ID 都留空时,只弹桌面通知,不发微信;也可以把它们写进 cordis.patch.yml 的 config.botId / config.targetId 作为服务端兜底(注意该文件随 profile 落盘、对本机用户可读)。

设置页有两个按钮:测试桌面通知(弹一张「会话名 · 对话完成」的卡,点它可跳到对应会话)、测试微信推送,用来确认权限与投递链路。

浏览器控制台里还有调试 API:

window.__dshPluginWechatSession.config       // 当前配置
window.__dshPluginWechatSession.testDesktop() // 手动弹一次「会话名 · 对话完成」桌面提醒(可点它跳会话)
window.__dshPluginWechatSession.testWechat()  // 手动发一条测试微信
window.__dshPluginWechatSession.debug()       // { bound, source, away, currentSid, sessionsBound, batch }

debug().currentSid 是插件推导出的「当前正看着哪条会话」,sessionsBound 表示 sessions.list 是否已订阅——排查多会话提醒时用得上;notifyPermission / audioState 用来排查「为什么没弹窗 / 没响」(v1.6.0)。