前言¶
DeepSeek Harness(DSH)把很多能力放到插件里,但一个常见的断点仍然在会话通道上:Web 里可以用 Agent,WeCom AI Bot 里收到的文本、图片、文件如何进入同一个 Harness 会话,如何继续处理审批、文件和访问策略,仍然需要单独接一层。
sliverp/DeepSeek-harness-wecom 做的是这个通道桥接:它使用官方 @wecom/aibot-node-sdk 长连接,把 WeCom AI Bot 的文本、图片、文件消息接入 DeepSeek Harness,并保留持久会话、审批、文件路径限制和访问控制。下面按安装、配置、使用和注意事项展开。
这是什么¶
这是一个独立的 DSH channel plugin,用于把 WeCom AI Bot 作为 DeepSeek Harness 的文本、图片、文件通道。仓库路径是 sliverp/DeepSeek-harness-wecom,许可证为 MIT,package.json 中报告的版本为 0.1.5。
它主要解决三类问题:
- 让 WeCom 单聊、群聊中的文本消息进入 Harness 会话。
- 让图片和文件能被 Harness Agent 的工具体系使用,而不是只停留在聊天消息里。
- 保持与 Web 会话相近的工具、提示词和 skills 组合,并支持审批、会话轮换和访问策略。
它不是 DeepSeek Harness 的官方应用商店应用,而是社区目录中的独立插件。目录页和仓库地址见文末。
核心功能¶
会话与消息¶
- 使用官方
@wecom/aibot-node-sdk长连接。 - 支持 Bot ID + Secret 认证、心跳和重连处理。
- 支持 WeCom 单聊和群聊文本消息。
- 每个单聊或群聊对应一个持久 Harness 会话。
- 支持 Harness agent-preset 组合,使工具和 skills 与 Web 会话保持一致。
- 如果 Web 已经打开了同一个活跃会话,WeCom 侧可以复用该会话,不会开启第二个 session writer。
图片与文件¶
- 支持文本和图片混合输入。
- 支持官方加密的图片、文件、视频下载,并做 AES 解密。
- 支持 Durable Harness image attachments。
- 解密后的入站文件保存在 workspace 外,并以绝对路径暴露给 Agent 工具。
- 当所选模型不能接受图片时,自动退化为仅文本处理。
- 支持文本、inline image 回复,也支持其他图片格式的上传后主动发送。
- 提供当前 WeCom 回合内可用的
wecom_send_file工具,带 workspace 边界和文件大小检查。
命令与审批¶
- 支持 WeCom Markdown 回复,走官方 stream response fields。
- 支持同一会话内的
/approve <code>和/reject <code>一次性工具审批。 - 支持
/new和/reset,切换到新的持久会话,同时保留旧历史。 - 支持转发当前 agent preset 注册的 Harness 命令;
/compact、/goal、/plan默认启用。 - 提供
/bot-ping、/bot-image-test、/bot-file-test、/bot-help、/bot-status、/bot-cancel等通道命令。 - 支持 WeCom
enter_chat事件下的可选欢迎语。
访问与稳定性¶
- 对单聊和群聊流量提供 open、allowlist 或 disabled 访问策略。
- 支持按会话顺序处理、去重、重试和有限超时。
- Secret 通过 Harness credential service 解析,而不是只放在插件配置里。
- 如果 Bot ID 或 Secret 未配置,通道保持 dormant,DSH 本身仍能完成启动。
安装与启用¶
先确认运行环境¶
插件要求:
Node.js 22.19或更高版本。pnpm 10.33.4。DeepSeek Harness 0.1.0-rc.7或更高版本。- 一个已启用长连接的 WeCom AI Bot,并具备 Bot ID 和 Secret。
安装插件¶
从 GitHub 安装:
pnpm dsh plugin --profile web add github:sliverp/DeepSeek-harness-wecom
如果使用本地 checkout:
pnpm dsh plugin --profile web add /absolute/path/to/DeepSeek-harness-wecom
安装本身不要求立即配置凭证。如果 Bot ID 为空,或引用到的 Secret 不存在、为空,通道会保持 inactive,DSH 仍会完成启动。之后配置好凭证并重新加载或重启 DSH,再接入 WeCom。
配置凭证¶
开发环境可以先用环境变量启动:
export WECOM_BOT_ID='your-bot-id'
export WECOM_BOT_SECRET='your-bot-secret'
pnpm dsh --profile web
如果要做持久化配置,把 WECOM_BOT_ID 放到 ~/.dsh/.env,并通过 Harness credential settings surface 保存 WECOM_BOT_SECRET。不要把 WECOM_BOT_ID 或 WECOM_BOT_SECRET 提交到仓库。
如果凭证非空但无效,通常只是该通道离线,不会让整个 DSH 启动失败。
典型用法¶
在 WeCom 会话中处理工具审批¶
当 Harness 需要工具审批时,插件会把审批请求发到原始会话中。你可以在同一个 WeCom 会话中回复:
/approve <code>
或拒绝:
/reject <code>
这类 code 用于一次性工具审批,并且绑定原始会话。
切换持久会话¶
需要换上下文时,使用:
/new
或:
/reset
这两个命令会让插件请求取消当前生成,并切换到新的持久会话。旧会话历史仍会保留。
控制图片输入¶
插件支持通过 imageInputMode 控制图片处理方式,可选值为:
autoalwaysnever
auto 适合大多数情况:图片能力可用的模型接收图片附件,不能接收图片的模型退化为文本信息。always 只适合确定路由接受图片的场景,never 则强制走文本 fallback。
查看通道命令¶
在 WeCom 中发送:
/help
或:
/bot-help
可以列出当前可用的通道命令。
调整策略与连接行为¶
插件行可以放在:
~/.dsh/profiles/web/cordis.patch.yml
中覆盖,用于调整策略或连接行为。下面这些配置项会经常涉及:
singleAllowFrom
groupAllowFrom
imageInputMode
inboundFileDirectory
maxInboundFileBytes
maxOutboundFileBytes
approvalTimeoutMs
responseTimeoutMs
maxReplyBytes
几个需要特别注意的约束:
- 如果 workspace 中包含非公开数据,应使用 allowlist 策略。
/permission只在严格的singleAllowFrom和groupAllowFrom策略下启用。/export依赖 Web 下载侧能力,在 WeCom 通道中不可用。approvalTimeoutMs必须小于responseTimeoutMs。maxInboundFileBytes和maxOutboundFileBytes默认都是20971520字节,即 20 MiB。maxReplyBytes默认是20000字节。
入站文件会保存在 inboundFileDirectory 下,并带 owner-only 权限。默认目录可能位于操作系统临时目录下;如果文件需要保留,不要依赖临时目录的默认位置。
适用场景与注意¶
这个插件适合在以下场景使用:
- 你已经有 DeepSeek Harness 会话,希望在 WeCom AI Bot 中继续使用。
- 你需要在单聊或群聊中处理文本、图片、文件。
- 你需要把 Harness 的工具审批接入聊天会话。
- 你需要对 WeCom 流量做访问控制、会话轮换和文件大小限制。
使用前注意:
- 插件会随当前
dsh进程权限运行,安装前应检查源码和许可证。 wecom_send_file只在当前 WeCom 回合内激活,并且路径要落在cwd内部。- WeCom 消息进入后,模型、工具和文件访问仍然受当前 Harness 配置约束。
- 社区目录页不是 DeepSeek Harness 的官方应用商店,安装时仍应按普通第三方插件对待。
参考¶
- 目录页:
https://www.skillhub.cn/plugins/sliverp/DeepSeek-harness-wecom - GitHub 仓库:
https://github.com/sliverp/DeepSeek-harness-wecom