dsh-weixin:微信 iLink/ClawBot 私聊接入 DSH agent

前言

DSH 的理念是把能力做成插件。社區目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,不能當作官方應用商店理解。

對智能體開發者來說,一個具體需求是:讓本地 DSH agent 接到微信私聊裏,接收用戶消息,輸出按微信氣泡切分的回覆,並處理多用戶會話、長期記憶、定時提示、登錄續簽和異常重連。下面介紹 dsh-weixin 插件。它把微信 iLink/ClawBot 私聊接入 DSH agent,支持插件模式與獨立模式。

這是什麼

dsh-weixin 是 DSH 的微信通道插件。倉庫地址爲 Stu-KatoMegumi/dsh-weixin,README 中註明開發人員爲 STU-XIE;package.json 的 name 爲 @deepseek-ai/dsh-weixin。

它要求 node >=22,並聲明依賴:

  • @deepseek-ai/schemastery ^3.18.1
  • qrcode ^1.5.4

資料列出 LICENSE 文件,但未明確許可證類型。

核心定位是:讓微信私聊消息進入 DSH agent,並把模型回覆、長期記憶、定時任務、白名單、文件收發和登錄續簽管理回微信會話中。

核心功能

兩種連接方式

  • 插件模式直接使用 DSH apiProxy。
  • 獨立模式通過 DSH Web HTTP RPC + WebSocket 事件流連接。

兩種模式都面向微信 iLink/ClawBot 私聊場景,區別主要在運行方式和日誌排查方式。

消息與回覆

  • 用戶每條新消息可打斷上一輪仍在生成的回覆,最新輸入優先處理。
  • 支持微信“正在輸入”狀態,任務結束自動關閉。
  • 用戶到 DSH 會話映射、按會話分隔的對話歷史、錯誤日誌和單實例鎖持久化。

流式氣泡

微信回覆按模型分段:

  • 單獨一行的 --- 作爲新氣泡。
  • 一輪最多 10 條。
  • 當前氣泡累計超過 streamFlushChars(默認 800 字符)時強制切分。
  • 空閒超過 streamFlushMs(默認 30000 毫秒)時強制發出。
  • WX_BOT_SEND_INTERVAL_MS 默認 200 毫秒,用於控制兩次微信消息發送的最小間隔;設置 0 可關閉節流。

Prompt 與長期記憶

支持 Prompt 定製:

  • system-prompt
  • soul
  • rules

這三個是靜態文件。長期記憶由 LLM 自動維護,並可通過網頁編輯。

長期記憶的限制如下:

  • 單輪最多處理 5 個操作
  • 單條記憶最多 500 字符
  • 文件上限 60 KiB
  • 最多 200 條自動記憶

媒體與訪問控制

支持:

  • 圖片、語音、視頻、文件接收
  • 文件發送
  • 私聊訪問策略
  • 白名單
  • 發送目錄邊界
  • 50 MB 媒體上限

接收圖片、語音、視頻、文件時使用 AES-128-ECB 解密。

連接與續簽

具備:

  • 長輪詢看門狗
  • 指數退避重連
  • 連接狀態記錄

登錄約 24 小時到期前,插件會在本地生成續簽二維碼圖片,並提醒全部已知用戶;舊 token 在掃碼前繼續工作。

DSH 設置頁支持:

  • 狀態
  • 掃碼
  • 權限
  • 流式參數
  • 定時任務熱更新

同時支持五段 cron 定時提示任務。

安裝與啓用

先安裝插件模式。進入 dsh-weixin 項目目錄後執行:

npm install
npm run install:dsh

如果希望指定 DSH 根目錄或 profile,可以先設置可選環境變量:

$env:DSH_ROOT = 'D:\Program Files\dsh'
$env:DSH_PROFILE = 'web'
npm install
npm run install:dsh

安裝腳本會調用 DSH 官方 plugin add 邏輯。這裏不建議手動拼接 dsh plugin add github:owner/repo 命令,直接使用項目提供的安裝腳本。

經過上面的步驟後,啓動 DSH:

pnpm dsh --profile web --dump-config
pnpm dsh --profile web

登錄憑據、會話映射和設置默認持久保存在:

$DSH_HOME/channels/dsh-weixin

更新或卸載插件不會刪除該目錄。

卸載插件:

npm run uninstall:dsh

卸載會從指定 DSH profile 移除 bundle,並清理安裝腳本創建的穩定緩存;不刪除會話數據。

典型用法

微信命令

在微信私聊中可使用這些命令:

  • /help、/?:查看命令
  • /new:創建並切換到新 DSH 會話
  • /stop:取消當前任務
  • /status:查看連接和會話狀態
  • /renew:立即獲取續簽二維碼圖片
  • /send <相對路徑>:發送 outboxDir 內的文件
  • /users:查看用戶
  • /allow add|remove <ID>:管理白名單
  • /cron:查看定時任務

流式輸出

模型回覆按氣泡契約切分:

  • 單獨一行的 --- 作爲新氣泡。
  • 一輪最多 10 條。
  • 當前氣泡累計超過 streamFlushChars(默認 800 字符)時強制切分。
  • 模型空閒超過 streamFlushMs(默認 30000 毫秒)時強制發出當前氣泡。

WX_BOT_SEND_INTERVAL_MS 默認 200 毫秒,用於降低連續發送頻率;設置爲 0 可關閉節流。

微信續簽

收到續簽二維碼後,按下面步驟操作:

1、在電腦或另一臺設備上展示二維碼圖片。

2、打開手機微信,進入“掃一掃”。

3、用攝像頭掃描該圖片,並完成授權。

注意:微信聊天內長按識別不能完成該續簽流程。

定時任務

在 DSH 設置頁填寫 JSON 數組。示例:

[
  {
    "id": "morning-summary",
    "cron": "0 9 * * 1-5",
    "userId": "微信用戶ID",
    "prompt": "總結今天的待辦事項",
    "enabled": true
  }
]

cron 按運行 DSH 的本地時區解析,五個字段依次是:

分 時 日 月 星期

示例 0 9 * * 1-5 表示週一至週五 09:00 觸發。

獨立模式

如果需要在 DSH 外部單獨運行微信連接,可使用獨立模式:

npm start

獨立模式默認連接:

http://127.0.0.1:3080

獨立模式啓動微信連接前會調用只讀 DSH API 檢查服務。如果 DSH 未啓動、地址錯誤或端口上不是 DSH,程序會提示先運行:

pnpm dsh web

並以退出碼 1 結束,不會啓動掃碼和微信輪詢。檢測超時默認 3000 毫秒,可用 DSH_STARTUP_CHECK_TIMEOUT_MS 調整。

獨立模式下,模型策略固定爲:

deepseek-official/deepseek-v4-flash

策略如下:

  • 普通消息使用 off
  • 複雜消息使用 max
  • 複雜消息爲消息長度超過 40 個字符,或包含操作類關鍵詞

舊的持久化模型設置會在運行時歸一化。若 DSH 未確認目標模型組合,本輪會停止,不會沿用會話中的舊模型。

適用場景與注意

適合以下場景:

  • 把 DSH agent 接到微信私聊中使用
  • 需要微信消息的流式氣泡輸出
  • 需要多用戶會話、白名單和訪問策略
  • 需要圖片、語音、視頻、文件接收與文件發送
  • 需要長期記憶、定時提示和登錄續簽
  • 需要排查完整日誌時改用獨立模式

注意事項:

  • 插件模式不輸出日誌;需要完整日誌排查時請改用獨立模式 npm start。
  • 插件模式以當前 dsh 進程權限運行,會訪問本機 DSH 配置、頻道數據與微信通道數據;安裝前應檢查源碼、依賴與許可證。
  • 資料列出 LICENSE 文件,但未明確許可證類型。
  • 私聊訪問策略、白名單、發送目錄邊界和 50 MB 媒體上限會限制收發行爲。
  • 登錄憑據、會話映射和設置默認持久保存在 $DSH_HOME/channels/dsh-weixin,更新或卸載插件不會刪除它。
  • 模型策略固定爲 deepseek-official/deepseek-v4-flash;若 DSH 未確認目標模型組合,本輪會停止,不會沿用會話中的舊模型。

參考

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

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

小夜