Repository navigation
Releases: SteelUnion/dsh-wechat-queue
Release list
v0.2.1 - 只补仓库元数据,插件行为没变
插件行为与 v0.2.0 完全一致。
SECURITY.md:漏洞上报渠道、支持哪些版本.github/dependabot.yml:npm 依赖周检package-lock.json:可复现安装
开源清单在收录前会扫这几个文件,这次补上是为了过收录检查。代码没动。
安装方式不变。
v0.2.0 — 暴露 wechatQueue 服务
v0.2.0
新功能:对外暴露会话归属服务
ctx.provide('wechatQueue', { owns(sessionId) { … } })宿主侧的守卫(如 dsh-confirm-gate)据此判断「这个会话是不是微信通道的」,
从而在微信会话里拦掉中途弹出的交互选项 —— 回合制通道承载不了半路弹卡,会让整轮挂住。
为什么必须用 ctx.provide:
| 写法 | 结果 |
|---|---|
| ctx.set('wechatQueue', …) | ❌ 只能改已声明的属性,直接抛 without provide,整个 �pply() 失败,插件不启动 |
| �xport const provide = [...] | ❌ cordis 不读 ESM 导出,声明零效果 |
| ctx.provide(...) | ✅ 自行声明属性,注册在当前 fiber,卸载自动注销 |
其它
- NOTES.md 移出发布包(维护者笔记,对外读者看 README)
- 测试不再写死用户名,改由 homedir() 现算
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:SteelUnion/dsh-wechat-queue
v0.1.0 首个可用版本
dsh-wechat-queue v0.1.0
把微信接入 DeepSeek Harness —— 带一个落盘的串行消息队列。
用微信和你的 DSH agent 对话:发文字、发图、发文件、发视频,它在微信里回你。
一条回完才处理下一条,进程死了重启接着干。
English
A WeChat (iLink) channel plugin for DeepSeek Harness. Messages are persisted to disk
and processed strictly one at a time. The agent replies once per turn (at turn/end),
shows a native "typing" indicator, and can receive images, files and videos.
Built to replace dsh-channel-wechat, which had three structural problems:
missed messages, mid-turn replies, and deadlocks.
它解决什么
| 问题 | 老插件 | 本插件 |
|---|---|---|
| 收不到 | listAccounts()[0] 取最旧的僵尸账号 |
登录时清空旧记录,永远只有一个 |
| 中途发 | 每个 assistant/message 都发一段 |
攒到 turn/end,一次发完 |
| 卡死 | runExclusive 无超时 + catch {} 静默 |
三层超时,任何终态都推进队列 |
功能
- 严格串行 — 一条回完才取下一条
- 落盘队列 — JSONL 存盘,进程死了重启接着处理
- 对方正在输入 — 轮次开始上报,结束收掉;坏了不影响主流程
- DSH 原生命令转发 —
/compact、/goal等进队列执行,与普通消息同序 - 接收图片 / 文件 / 视频 — 失败不丢文字
- 发送文件 — 回复里提到
deliverables/下的文件就会发过去 - 附件声明 — 告诉 agent 附件的名字、大小、uid,它不用翻目录猜
- 扫码登录面板 — 单账号
安装
dsh plugin --profile desktop add <解压后的目录>装完完全退出 DSH 再启动。
配置要点
- id: wechat-queue
config:
enabled: true
cwd: 'C:\path\to\your\workspace'
permission: 'danger-full-access' # 管「能不能碰文件」
agentPreset: 'cordis' # 管「有没有工具可用」⚠️ permission 和 agentPreset 是两件事
只给 permission 不给 agentPreset,结果是权限全开、工具一个没有。
agent 会说「我没有工具,请你手动跑这条命令」—— 它说的是实话。
发文件给微信
把文件放进 <cwd>/deliverables/,然后在回复里提到它。
只有这个目录下的文件才会被自动发送 —— 否则模型说「我读了 SOUL.md」就会把人格文件发出去。
列举路径不等于要发文件。
测试
548 项,18 个套件,0 失败。覆盖串行与超时、状态机、JSONL 存储、
四种媒体、文件发送与上传、预设挂载契约、事件竞态、扫码登录。
零运行时依赖
peerDependencies 只声明 @deepseek-ai/cordis,DSH 本体版本要求写在 engines.dsh。
来源
协议层搬自 dsh-channel-wechat v0.2.5(MIT)。
lib/protocol/qrcode.js 是 vendored 的 qrcode-generator 2.0.4(MIT)。
详见 THIRD_PARTY_NOTICES.md。
许可
MIT。