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 許可證。

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

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

小夜