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),各層相互獨立,便於測試與維護。

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

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

小夜