dsh-wechat-channel:微信公众号通道插件

DeepSeek Harness 的核心设计是插件化,但插件本身通常运行在本地或特定网络环境。当需要在移动端或远离电脑的环境下操作 Harness 时,直接交互变得困难。dsh-wechat-channel 解决了这个问题,它允许通过微信公众号发送指令操控 Harness,并将执行结果通过客服消息接口推回微信。

核心功能

该插件主要提供以下能力:

  • 微信指令控制:在微信内发送消息即可控制 Harness。
  • 结果推送:执行结果经客服消息接口推回微信。
  • 安全校验:包含回调签名校验以及 openid 白名单机制。
  • 零运行时依赖:不依赖额外的运行环境。
  • 独立路由:使用独立前缀 /wechat-mp,避免与同名第三方插件冲突。

安装与启用

推荐从 npm 安装。安装完成后需要重启 dsh web 进程才能加载新插件。

从 npm 安装(推荐)

dsh plugin --profile web add dsh-wechat-channel

从本地目录安装(开发用)

dsh plugin --profile web add link:<本目录绝对路径>

安装后,DSH Desktop 会自动将插件注册到 dsh.profile.bundles 中。

配置

在 profile 的用户补丁层 <DSH_HOME>/profiles/web/cordis.patch.yml 中添加配置。以下是标准配置示例:

- id: wechat
  config:
    # Token 是你自己编的,不是微信给你的。需与公众号后台「服务器配置」一致
    token: 你的自定义Token
    # 测试号页面的 appID / appsecret(异步回复必需)
    appId: wx********
    appSecret: ********
    # 回调路径,默认 /wechat-mp。此路径需与公网 URL 后缀一致
    path: /wechat-mp
    # 允许下指令的 openid 白名单(首次使用需留空获取 openid 后填写)
    allowFrom: []
    # 是否开启白名单验证
    requireWhitelist: true
    # Agent 预设配置
    agentPreset: standard
    # 会话超时时间
    turnTimeoutMs: 600000
    # 开启诊断日志
    diagnostics: true

注意:本插件命名 dsh-wechat-channel 是为了避免与 npm 上另一个同名插件 dsh-wechat(走 iLink 协议)冲突。该同名插件注册了 /wechat/status 路由,与 DSH 的 webserver 路由冲突会导致本插件静默失败。因此本插件使用 /wechat-mp 前缀。

网络与公网要求

微信的消息回调是腾讯服务器主动发起的,因此必须满足以下条件:

  • 回调地址必须公网可达。
  • 必须是 HTTPS 协议且拥有有效证书。
  • 局域网内手机和电脑处于同一 WiFi 无法满足要求,腾讯服务器无法访问内网地址。

局域网替代方案:如果需要在局域网内使用手机操作 DSH,请使用 @linxin666/dsh-remote-web-ui 插件(手机浏览器扫码配对方案),本插件不覆盖该场景。

隧道配置

为了实现公网访问,通常需要使用隧道工具。本项目自带 cloudflared 二进制。

国内网络注意事项:国内网络下 QUIC (UDP) 协议常被阻断,会导致隧道注册成功但立刻返回 502/530 错误。建议使用 http2 协议:

bin/cloudflared.exe tunnel --url http://127.0.0.1:<dsh web 端口> --no-autoupdate --protocol http2

公众号后台配置:
1. 将获取到的临时地址(如 https://xxxx.trycloudflare.com)作为 URL。
2. 路径后缀必须加上插件的 path 配置,即 /wechat-mp。
3. 填入与配置文件中 token 一致的值。

注意:trycloudflare.com 地址是临时的,重启会变化。正式环境请使用固定域名。

首次使用与白名单

1. 配置白名单:
allowFrom 默认为空,此时所有人都会被拒绝。首次使用时:

  • 在公众号后台提交服务器配置(URL 和 Token),确保显示「配置成功」。
  • 关注测试号,发送任意消息。
  • 插件会通过客服消息返回你的 openid。
  • 将返回的 openid 填入配置文件的 allowFrom 列表中。

2. 重启服务:
修改配置后,必须重启 dsh web 进程。

安全模型

  • 配对即控制:一旦 openid 加入白名单,该设备即拥有完全控制 Harness 的凭据(可执行命令、读写文件)。
  • 签名校验:回调入口包含 SHA1 签名校验,错误签名直接 403。
  • 状态端点:GET <path>/status?key=<token> 可用于排查,但绝不回显 token。

源码与目录

该插件采用分层结构设计(lib/protocol.js, lib/server.js, lib/wechat-api.js, lib/bridge.js, lib/index.js),各层相互独立,便于测试与维护。

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

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

小夜