DeepSeek-harness-wecom:给 DeepSeek Harness 接入 WeCom AI Bot 文本、图片与文件通道

前言

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_IDWECOM_BOT_SECRET 提交到仓库。

如果凭证非空但无效,通常只是该通道离线,不会让整个 DSH 启动失败。

典型用法

在 WeCom 会话中处理工具审批

当 Harness 需要工具审批时,插件会把审批请求发到原始会话中。你可以在同一个 WeCom 会话中回复:

/approve <code>

或拒绝:

/reject <code>

这类 code 用于一次性工具审批,并且绑定原始会话。

切换持久会话

需要换上下文时,使用:

/new

或:

/reset

这两个命令会让插件请求取消当前生成,并切换到新的持久会话。旧会话历史仍会保留。

控制图片输入

插件支持通过 imageInputMode 控制图片处理方式,可选值为:

  • auto
  • always
  • never

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 只在严格的 singleAllowFromgroupAllowFrom 策略下启用。
  • /export 依赖 Web 下载侧能力,在 WeCom 通道中不可用。
  • approvalTimeoutMs 必须小于 responseTimeoutMs
  • maxInboundFileBytesmaxOutboundFileBytes 默认都是 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
羽毛球分组比赛记分
小程序二维码

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

小夜