前言¶
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.1qrcode ^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-promptsoulrules
這三個是靜態文件。長期記憶由 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 未確認目標模型組合,本輪會停止,不會沿用會話中的舊模型。