dsh-openilink-channel:通过 OpeniLink Hub 让 DSH Agent 收发微信

前言

DeepSeek Harness(DSH)把 Agent 会话、工具与模型路由收进同一套 Cordis 插件体系。若要把对话接到微信,常见做法是自建网关或对接各家 IM SDK,运维和协议都要单独维护。OpeniLink Hub 已经提供微信 Bot 与 Hub Bot API;本插件把 Hub 的 WebSocket 事件与 DSH 会话对齐,让 Agent 在微信里收消息、回消息,而不必在 DSH 里再实现一套微信协议栈。

下面介绍插件 dsh-openilink-channel(仓库 gitMFQ/dsh-oih)的定位、能力与安装配置方式。事实以仓库 README 与 package.json 为准;社区目录页见 SkillHub。

这是什么

dsh-openilink-channel 是 DSH 的客户端类通道插件,维护者为 gitMFQ。它把 OpeniLink Hub 的微信 Bot 接入 DeepSeek Harness,协议参考 openclaw-channel-openilink(OpenClaw 同款通道,宿主 SDK 不同)。

数据路径可以概括为:

微信用户 ⇄ OpeniLink Hub ⇄ [dsh-openilink-channel] ⇄ dsh Agent 会话

插件在 DSH 进程内运行,权限与当前 Harness 进程一致;安装前建议阅读源码与 MIT 许可证,确认 Hub 凭据与 Agent 能力是否符合你的环境。

核心功能

消息收发与会话

  • 收消息:Hub 经 WebSocket 推送 message.* 事件,插件把正文(含媒体元信息)交给对应 peer 的 Agent 会话。
  • 发消息:Agent 的 assistant/message 由插件调用 Hub Bot API 发回微信。
  • 图片:带 app token 从 Hub 媒体代理下载原图,作为图片附件交给视觉模型;失败时退回文本链接。
  • 群聊:正文前带 [昵称 (id)] 发送者标签,回复发回群 id。
  • 会话:按 bot + 私聊/群 + peer 确定性派生会话 id,重启后自动 resume。

与 IM Connect 的频道约定

会话 id 采用 @michengai/dsh-im-connect 的频道约定,形如:

im:weixin_openilink_<bot 摘要>:<dm|group>[:<13 位时间戳>]:<peer>

若已安装 IM Connect,OpeniLink 会话会出现在侧栏 「频道 → 微信」 分组,而不是混在「任务」里。投递仍只走本插件;IM Connect 没有 weixin_openilink_* 渠道适配器,不会重复发消息。新建会话需重载 IM Connect 插件或重启 DSH 后才会出现在频道列表(IM Connect 仅在启动时重建频道索引)。未安装 IM Connect 时,这些 id 只是普通会话 id,不影响收发。

注意:会话进入 IM Connect 频道索引后,其 bindingForSession 会命中这些会话。对 approval/request 会返回 rejected;对 user-questions/request 会抛「当前聊天已断开,无法在原聊天提问」。若需要 ask_user 或逐步审批,可改用独立页签方案,或在 IM Connect 侧将会话置为 detached(会同时移出频道列表)。使用 danger-full-access 且 approval: never 时,审批相关影响可忽略。

Agent 工具与微信内命令

插件向 Agent 注册:

工具 作用
openilink_send_text 主动向指定微信用户/群发文本
openilink_send_media 按 URL 发图片/文件/视频(Hub 自行下载)
openilink_status 查看连接状态、活跃会话、最近错误

微信侧可用 /new、/reset 开新会话;/model 查看或切换模型;群聊里 @Bot 或按 Hub 应用配置触发,命令识别会自动剥掉群聊前的发送者标签。

回复可按配置分段推送:思考过程、工具调用与结果、正文(详见 README 中 showReasoning / showTools)。

安装与启用

推荐从 GitHub 安装(Web profile):

dsh plugin --profile web add dsh-openilink-channel@github:gitMFQ/dsh-oih

或在 Harness Web GUI 的「设置 → 插件」里安装,包名填 dsh-openilink-channel@github:gitMFQ/dsh-oih。

指定版本或提交:

dsh plugin --profile web add dsh-openilink-channel@github:gitMFQ/dsh-oih#v0.1.0
dsh plugin --profile web add dsh-openilink-channel@github:gitMFQ/dsh-oih#<commit>

本地开发可在克隆仓库后于仓库根目录执行 dsh plugin --profile web add .(package.json 在根目录)。安装后插件即激活,配置行 id 为 im-openilink。

配置

取得凭据

  1. 登录 OpeniLink Hub。
  2. 进入 Bot 详情页 → 应用市场 → 安装 OpenClaw(或任意声明了 message:read + message:write 的应用)。
  3. 在安装详情页复制 Hub URL 与 App Token。

填写凭据

方式 A(推荐):Web GUI → 设置 → OpeniLink 微信,填写 Hub 地址与 App Token 后保存。保存前会先探测 /bot/v1/info,成功后写入 profile 的 cordis.patch.yml 并热重载插件。

方式 B:环境变量

export OPENILINK_HUB_URL="https://hub.openilink.com"
export OPENILINK_APP_TOKEN="app_你的token"

方式 C:编辑 profile 的 cordis.patch.yml:

- id: im-openilink
  config:
    hubUrl: https://hub.openilink.com
    appToken: app_你的token

常用配置项包括 hubUrl、appToken、agentPreset、provider / model、textChunkLimit(默认 4000)、sessionIdleMinutes(默认 30)、access.mode / access.allow、media.enabled / media.maxMB、showReasoning、showTools 等;完整表格见仓库 README。

典型用法

配置完成后,在微信里直接给 Bot 发消息即可。设置页「OpeniLink 微信」可查看连接状态、Bot 名称、活跃会话与最近错误,并调整模型与「发送思考过程」「发送工具使用」开关。

实现上插件经 /bot/v1/ws?token=... 连接 Hub,30s ping 心跳,断线指数退避重连;同一 peer 串行处理消息;闲置会话按 sessionIdleMinutes 回收。

适用场景与注意

适合已在 OpeniLink Hub 上配置微信 Bot、希望用 DSH Agent(工具、模型路由、Cordis 生态)承接微信对话的场景。你需要自行维护 Hub 与 App Token,并理解 IM Connect 与审批、ask_user 的交互限制。

DSH 社区插件目录在 SkillHub 等独立站点维护,与 DeepSeek / 幻方无官方从属关系;安装第三方插件前请核对源码与许可证。当前包版本为 0.1.0(见 package.json),许可证 MIT。

结尾

dsh-openilink-channel 把 OpeniLink Hub 微信通道接到 DSH Agent 会话,覆盖私聊与群聊、媒体与模型切换,并可与 IM Connect 的微信频道分组对齐。目录页:https://www.skillhub.cn/plugins/gitMFQ/dsh-oih;源码与文档:https://github.com/gitMFQ/dsh-oih。

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

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

小夜