dsh-wechat-send:让 DSH Agent 向微信会话发送原生表情包

前言

在 DSH 里跑微信相关 agent 时,常见做法是接 WeChatAgent 桥接做收发。若只希望 agent 在群聊或私聊里发「微信原生表情」、而不是外链图或纯文字,还要让表情随会话自动沉淀、多会话共用,就需要在桥接之上再挂一层:候选池、打标、发送工具与安全边界。下面介绍社区插件 dsh-wechat-send(维护者 mikunkol-hub),它面向上述场景,把收集、标签、共享池与受控发送串成一条链路。

这是什么

dsh-wechat-send 是 DeepSeek Harness 的客户端类插件(当前 package 版本 0.2.0,许可证 MIT)。一句话定位:让 DSH agent 向微信会话(群/私聊)发送原生表情包,并自动收集、学习、共享表情。

与「只转发桥接能力」不同,本插件提供两个模型工具(wechat_sticker_pool、wechat_send_sticker),由插件驱动收集(绕过 WeChatAgent 的自动收集):桥接只通知新表情,本插件拉图、复用标签、导入共享池;账号级共享表情池上限 50 张,满池由 DS 看图评选保留;关键配置内置安全基线,被改会自动纠正。

目录页:https://www.skillhub.cn/plugins/mikunkol-hub/dsh-wechat-send
源码:https://github.com/mikunkol-hub/dsh-wechat-send

核心功能

两个模型工具

工具 说明
wechat_sticker_pool 列出某会话可发送的共享池表情候选(id + 描述 + 标签,最多 20 张)
wechat_send_sticker 发送一张原生表情(dry=true 只预演;缺省真发,走桥接持久队列与送达确认)

收集与学习

  • 插件驱动收集:微信收到表情后,WeChatAgent 桥接在白名单校验后只向 127.0.0.1:11232/collect 发通知(不处理字节);本插件通过 reader 拉图,查已有标签或调用 GLM-4V-Flash 主动打标(描述 + 情绪/用途标签),再导入共享池。
  • 标签双通道:插件收集时的 GLM 打标,与会话里顺带学习的标签,复用同一标签库。
  • 满池评选:池上限 50 张;满池时由 DS 看图评选保留(预览拼图 + 标签 + 使用次数)。池存储默认在 WeChatAgent 侧(README 示例路径 E:\Deep Seek\表情池,可通过 poolDir 配置)。

发送链路

agent 先用 wechat_sticker_pool 看候选,再用 wechat_send_sticker 选定 id;请求经桥接 127.0.0.1:11231/send-sticker,经白名单、发送开关、限额与 MediaOutbox 持久队列后送达微信会话。发送 id 必须来自 wechat_sticker_pool;文档约定先 dry 预演再真发。

配置防篡改

cordis.patch.yml 中关键项带内置基线:被修改会自动备份恢复;白名单 allowedKeys 只可增不可删,运行时兜底。

安装与启用

官方 README 未提供 dsh plugin add github:... 一类命令,安装方式为 link 进 profile:

  1. 在 profile 的 node_modules 建立 junction,并在 package.json 的 dependencies 增加:
"dsh-wechat-send": "link:<本目录绝对路径>"
  1. 在 dsh.profile.bundles 中加入 "dsh-wechat-send"。
  2. 重启 DSH,使 bundle 组装生效。

插件以当前 DSH 进程权限运行;安装前应自行阅读仓库源码与 MIT 许可证,确认 token、白名单与发送行为符合你的环境。

配置要点(cordis.patch.yml)

键 缺省 说明
bridgeUrl http://127.0.0.1:11231 桥接受控发送端点
tokenFile D:/WeChatAgent/data/workspace/state/social-dsh-token.txt 桥接鉴权 token(与 DSH 侧插件共用)
timeoutMs 15000 单次 HTTP 超时
readerUrl http://127.0.0.1:5031 WeChatAgent reader 服务(拉图 / 导入共享池)
readerTokenFile D:/WeChatAgent/data/workspace/state/wechat-io-config.json reader 鉴权(读其中的 reader_token)
collectPort 11232 本插件收集通知监听端口(仅回环)
allowedKeys 好友与群白名单 允许发送与收集的会话(基线条目不可被移除)

缺省路径带 Windows 盘符,Linux 部署时需按本机 WeChatAgent 实际路径改写。

典型用法(agent 侧)

  1. 对目标会话调用 wechat_sticker_pool,拿到 id、描述与标签(最多 20 条候选)。
  2. 选定一张后调用 wechat_send_sticker,建议先设 dry=true 预演,确认无误后再真发。
  3. 日常在微信白名单会话里收发的原生表情,会经 collect 通知进入共享池;无标签时由 GLM-4V-Flash 补标,满 50 张时触发 DS 评选。

整体数据流可参考 README 中的链路说明:收表情 → collect 通知 → 拉图打标入池;agent 发图 → 池候选 → send-sticker → 桥接队列 → 微信。

适用场景与注意

适合:已在用 WeChatAgent + DSH,希望 agent 用「共享表情池」回复群/私聊,并愿意维护白名单、桥接 token 与 reader 服务。

注意:

  • 收集端点只监听回环地址,只收白名单会话,串行处理并去重;发送是真实对外动作,务必遵守 dry 再发的约定。
  • 依赖 @deepseek-ai/dsh-tools(peerDependencies),以及 GLM-4V-Flash 打标、满池 DS 评选等模型能力,需保证 DSH 侧模型与密钥配置可用。
  • SkillHub 目录为社区索引,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库与目录页为准。

结尾

dsh-wechat-send 把微信原生表情的收集、GLM/会话双通道标签、50 张共享池与 DS 满池评选,封装成 agent 可直接调用的两个工具,并在配置与白名单上做了防篡改基线。若你要在 DSH 里做「会发表情、池子越用越贴会话」的微信 agent,可从目录页与 GitHub README 对照安装与 cordis.patch.yml 逐项落地。

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

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

小夜