dsh-dingtalk-channel:钉钉 IM 机器人 channel

前言

DeepSeek Harness (DSH) 采用插件化架构,旨在通过插件扩展功能。dsh-dingtalk-channel 是一个插件,它将钉钉 IM 机器人 channel 接入 DSH。该插件通过钉钉官方的 Stream 模式(WebSocket 长连接)建立连接,不需要公网回调地址或服务器配置 webhook。每条单聊或群聊消息都可以作为入口驱动一个完整的 agent,回复内容也会流式返回到对话中。

核心功能

下面介绍该插件的主要能力。

一会话一 agent

插件为每个会话创建一个独立的 agent。会话 ID 通过会话键确定性派生(格式为 ding-<chatId>),保证跨重启的稳定性。通过配置 sessionScope: chat-sender,可以在共享群里让每个成员拥有独立的 agent。

即时反馈与静默过程

钉钉原生不支持打字指示或思考过程卡片。插件通过先发送“🤔 已收到”的回执来提供即时反馈。在 agent 调用 bash、read 等工具的过程中,中间步骤不会发送聊天消息,只发送最终的 markdown 格式答案,思考过程仅在回执或思考表情中暗示。

访问策略与权限

插件提供细粒度的访问控制。

  • 单聊/群聊限制:通过 senderAllowlist 限制单聊发送者,通过 groupAllowlist 限制群会话。
  • 群聊 mention:通过 requireMention 配置,仅在群消息被 @ 时响应。
  • 审批机制:支持审批流程,agent 需要批准时会在对话中发送审批消息,回复“允许一次”或“拒绝”进行结算。
  • 权限范围:chat agent 拥有与宿主进程相同的权限,可以执行 bash、读写文件、git、网络操作及使用 skills。

长连接与命令

  • 长连接自愈:SDK 内置自动重连机制,断线后自动尝试恢复。
  • 命令支持:支持 /ping、/help、/status、/stop、/new 等命令。
  • 可观测性:拒绝、失败或断线等事件会通过 stderr 输出通知。

安装与启用

钉钉侧准备

  1. 登录 钉钉开发者后台。
  2. 创建一个企业内部应用,记下 ClientID 与 ClientSecret。
  3. 在应用能力中添加机器人,完善信息,将消息接收模式设置为 Stream 模式,然后发布应用。
  4. 将机器人拉入目标群或让成员私聊它。

安装插件

在终端执行以下命令安装插件:

dsh plugin --profile web add github:ttmouse/dsh-dingtalk-channel

配置凭证

在 ~/.dsh/profiles/web/cordis.patch.yml 中添加配置。如果需要走环境变量,可以使用 !!js process.env.… 语法。

- id: dingtalk-channel
  name: 'dsh-dingtalk-channel'
  config:
    clientId: 'ding...'
    clientSecret: '...'
    botName: '我的助手'
    requireMention: true
    # sessionScope: chat-sender
    # preset: standard
    # cwd: /path/to/workspace

启动 DSH:

dsh web

启动日志中若显示凭证校验通过,说明连接成功。在钉钉中私聊机器人发送 /ping,应收到 pong。

典型用法

基础对话

配置好 clientId、clientSecret 和 botName 后,通过聊天即可与 agent 交互。工具可以通过 preset 挂载到会话 agent 上。

共享群多用户

在共享群中,若想让每个人拥有独立的 agent,需在配置中设置 sessionScope: chat-sender。这样插件会根据发送者生成独立的会话键,实现一人一号。

审批操作

当 agent 需要执行敏感操作(如审批)时,它会在聊天中发起审批请求。你可以直接回复“允许一次”或“拒绝”来控制流程。

注意事项

  • 权限风险:chat agent 拥有与宿主进程同等的权限,包括执行 bash 命令、读写文件等。请仅在可信的环境或群组中使用。
  • 功能限制:钉钉原生不支持思考过程可视化,工具调用过程不会直接显示在聊天中;目前暂不支持图片和文件的转发;不支持扫码注册,需在后台手动创建应用。
  • 工作区切换:目前不支持 /cd、/model use、/ws 等工作区切换与模型热切换功能。
  • 默认配置:默认禁用了 ask_user_question 和 exit_plan_mode 工具,审批改为对话内回复结算。

许可证

该插件遵循 MIT 许可证。

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

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

小夜