跳过主要内容
L

dsh-wecom-bot

lastorder/dsh-wecom-bot

企业微信机器人接入 DSH:分组绑定工作区、模型与预设,成员各有会话;未授权发送者获提示并进入插件页待授权列表。

安装

dsh plugin --profile web add github:lastorder/dsh-wecom-bot

README

DSH × 企业微信智能机器人

把 DeepSeek Harness 接到企业微信智能机器人(API 模式 · 长连接):在企微里给机器人发消息,就是在和 DSH 的会话对话;会话跑完、需要回答或需要审批时,机器人主动推回企微。基于 @wecom/aibot-node-sdk 的 WebSocket 长连接,不需要公网回调地址。

插件页面:连接、待授权、用户分组、管理员、高级设置

两种用法

遥控自己的 DSH把 DSH 环境分享给团队
谁在说话你自己(管理员)同事、群聊
会话任意会话,/sessions + /use 切换每人一个会话;一个群共享一个
关键配置管理员 + 通知范围用户分组(工作区 / 模型 / Agent 预设 / 工作区权限)+ 成员
  • 遥控自己的 DSH:把自己加为管理员,手机上就能查看、切换、推进任意会话,审批工具调用;引用一条通知即可继续那条会话。
  • 分享给团队:先在 DSH 里准备好工作区、MCP、skills 和 Agent 预设,再建一个指向它的分组,把同事或群聊加进去。不同团队用不同分组即可。

快速开始

  1. 安装:在 DSH「插件」里安装 dsh-wecom-bot@<版本号>。务必写精确版本——pnpm 11 默认只解析发布满 24 小时的版本,裸包名或 @latest 会静默装成旧版。本地开发时安装本仓库的绝对路径。
  2. 连接:打开插件页,在「连接」里填 Bot ID 和 Bot Secret(企业微信管理后台 → 智能机器人 → API 模式)。Secret 存进 DSH 凭据库(WECOM_BOT_SECRET),不写入配置、不回显。
  3. 授权:让对方先给机器人发一条消息(收到「用户未授权,请联系管理员」),他会出现在「待授权」里;选择分组并确认即可。要遥控自己的 DSH,就在「管理员」里添加自己——管理员无需加入分组。
  4. 试一句:私聊机器人(群里需 @ 它)发送 /help。

全新安装时的插件页

插件页面

页面在 DSH 的插件详情页里,按使用频率从上到下排列;除「连接」与「高级设置」需点保存外,其余改动点下即生效,且不会断开机器人连接。

  • 连接:在线状态、Bot ID / Secret、本次启动以来的收发统计;「编辑」展开表单。
  • 待授权:被拒绝的发信人及其最后一条消息(只在内存里,重启清空);「加入分组」即授权,可顺手填备注。
  • 用户分组:每个分组一张卡片,标题下列出它的工作区、模型、推理等级、Agent 预设、工作区权限;展开看成员表——会话状态、模型、推理等级、工作区权限、上下文占用。点成员名查看/修改备注、切换分组、移出分组;点会话状态查看会话详情(含会话的工作区权限,可直接修改),在那里「打开会话」或「归档会话」。「编辑」在卡片内修改分组,删除分组也在这里。
  • 管理员:添加/移除管理员,设置「通知范围」(默认全部工作区)。
  • 高级设置(默认折叠):私有化部署的 WebSocket 地址(保存会重连)与对话日志。

点会话状态,先看详情再决定打开或归档

规则

  • 授权 = 加入分组。不在任何分组的人只会收到一条「用户未授权」;删除分组会取消其成员的授权(不会把他们挪进默认分组)。
  • 工作区权限(与 DSH 会话里的权限选项一致:仅可查看 / 工作区内修改 / 完全权限)由分组决定,默认「仅可查看」——远程聊天不会不声不响地获得写权限。新建的会话先被设成分组的权限才会交给成员;改分组的权限会立即应用到组内已有的会话(包括单独改过权限的成员)。成员行或会话详情里改权限只影响该会话。选「完全权限」时会像 DSH 一样先出风险提示,勾选「我已了解风险」才能确认。权限写在 DSH 会话本身,页面读取的永远是会话当前的实际值。已有分组升级后显示为「仅可查看」,但它们已存在的会话保持原样,直到你在分组里保存一次权限。
  • 分组决定新会话的工作区、模型(含推理等级)和 Agent 预设;成员行里改模型只影响该成员当前会话。Agent 预设只在新建会话时生效;改分组的工作区会让成员在下一条消息时新建会话。切回原分组时会恢复之前的会话(仍可用的话)。
  • 会话:私聊一人一个、群聊整群共享一个;标题为 wecom-bot-<userid 或 chatid>。归档(页面或 /delete)后,下一条消息新建会话;DSH 没有删除会话的 API,记录仍在「已归档」里。
  • 管理员可以在单聊里切换会话、新建会话、审批工具调用,并接收通知范围内所有会话的通知。管理员命令在群聊里一律拒绝;工具审批只发给管理员。
  • 备注属于人,不随移出分组而丢失。

企业微信指令

指令作用谁可以用
/help、/whoami命令列表;自己的 userid、分组与身份所有人
/status当前会话:工作区、预设、模型、上下文、运行状态所有人
/cancel停止正在运行的回合所有人
/answer <验证码> <选项或文字>回答 DSH 的提问所有人
/compact、/delete(再 /delete confirm)压缩上下文;归档当前会话所有人(群聊需管理员)
/approve <验证码>、/deny <验证码>审批工具调用(与 DSH 页面同时可处理,先到先得)管理员,单聊
/sessions、/use <序号或 ID 前缀>、/reset列出、切换会话;回到自己的会话管理员,单聊
/workspaces [序号]、/new选择默认工作区;在其中新建会话管理员,单聊
引用一条通知之后的消息落到那条通知的会话管理员,单聊
直接发文字提交到当前会话所有人

通知、数据与日志

  • 一轮结束推给会话所属的聊天,以及通知范围内的管理员;只带最后一条助手文字,不外发推理、工具参数或附件。计划审阅和详细提问只能在 DSH 页面处理。
  • 持久化的一切都在 <DSH home>/wecom-bot/settings.json(version: "0.5",0600,原子写入)。版本不符或无法解析的文件会被改名放到旁边,插件从空状态开始。
  • 对话日志:<DSH home>/wecom-bot/logs/YYYY-MM-DD.jsonl,每条消息一行 round.complete 及明细行,敏感字段脱敏,默认保留 14 天,可在「高级设置」关闭。

已知限制

  • 群聊必须 @ 机器人,企业微信才会转发;消息开头的 @ 会被去掉。
  • 群聊「话题」里的消息目前收不到,机器人也无法发到话题里(SDK 未提供相关字段)。

开发

pnpm install
pnpm run verify    # 构建 + 类型检查 + 测试
pnpm run preview   # 重新生成 preview/*.png(需要 Google Chrome)

改了 Host 代码需重启 DSH(或禁用再启用插件);只改页面时刷新插件页即可。代码结构、约定与发布流程见 AGENTS.md。

相关插件