前言¶
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 未确认目标模型组合,本轮会停止,不会沿用会话中的旧模型。