dsh-dingtalk-self:以本人釘釘身份代答私聊的 DSH 插件

前言

在 DeepSeek Harness(DSH)裏做智能體,常見做法是單獨開機器人賬號或自建應用:對方看到的是「數字員工」,問題往往還要先轉發給 agent。若你希望同事在釘釘私聊裏問的是「你本人」,而答覆又來自你綁定的 DSH 工作區(只讀查資料),就需要一條以個人 OAuth 身份讀私聊、再以本人賬號發回的鏈路。下面介紹社區插件 dsh-dingtalk-self(維護者 MinEagle,GitHub 倉庫 MinEagle/dsh-dingtalk-self),它在 SkillHub 目錄中歸類爲「工作流」。

這是什麼

dsh-dingtalk-self 是 DSH 插件「釘釘代答」:監聽你指定的釘釘私聊聯繫人,把新消息投遞到各自綁定的 DSH 工作區,由 agent 在工作區內查資料生成回覆,最後通過 dws CLI 以你本人身份發出(--ai-tag=false,可選末尾標識行)。不需要機器人賬號,也不把問題轉發給 agent 再人工粘貼。

與普通釘釘機器人 / 自建應用插件的對比如下(資料原文表格):

機器人 / 自建應用插件 本插件
發送身份 機器人 你本人
讀取範圍 機器人被拉進的羣 你的私聊
AI 角標 有 關閉
回覆內容來源 插件自帶 prompt 你綁定的 DSH 工作區
權限 插件的權限 工作區只讀(僅可查看)

數據流概覽:

對方私聊你
   ↓  dws chat message list --open-dingtalk-id   (以你身份讀)
過濾 / 去重 / 合併
   ↓  投遞到綁定的 DSH 工作區(僅可查看)
生成回覆
   ↓  出站護欄(禁代碼 / 禁路徑 / 禁內網地址)
dws chat message send --ai-tag=false --idempotency-key
   ↓
對方看到「你」發的普通消息

插件以當前 DSH 進程權限運行;安裝前請自行查看倉庫源碼與 MIT 許可證(package.json 中 license: MIT)。README 寫明需 macOS,並完成 dws auth login;package.json 聲明 DSH 兼容 >=0.2.1-rc.1 <0.3.0-0,Node ^22.19.0 || >=24.0.0。

核心功能

工作區綁定與聯繫人分組

設置頁「監聽分組」支持一個工作區掛多位聯繫人:每組一張卡,含工作區下拉與從釘釘通訊錄搜索選中的成員(姓名 / openDingTalkId 只讀)。每位聯繫人獨立會話,上下文不串。生成時默認 agent.readOnly: true,子進程注入 DSH_PERMISSION_MODE=read-only,只在工作區查資料、不改文件。

三檔運行模式與護欄

  • mode:draft 只出草稿;confirm 待人工確認;auto 允許真實發送(還需聯繫人級 autoReply 與總開關 enabled)。
  • 輪詢間隔、每小時回覆上限、兩條最小間隔、回覆字數上限、靜默時段等可在設置頁配置。
  • 出站護欄(guard.*)可禁代碼、路徑、內網地址等;默認回覆格式爲 Markdown,釘釘客戶端渲染加粗、列表、小標題。
  • 可選 replyMarker(默認「(本條由助手代答)」)附在每條發出消息末尾;留空則不加。

模擬回答與待確認隊列

「模擬回答」粘貼對方可能發來的消息,走真實生成通道但不發送,便於預覽 1–3 分鐘量級的查資料型回答。「待確認草稿」可逐條發送或丟棄;「最近草稿 / 最近審計」用於回看爲何回覆或未回覆。

配圖與附件(可選)

模型可輸出結構化 [[render:table|...]] / bar / flow / steps 塊,由宿主側 Python + Pillow 渲染爲 PNG 再發(需 render.enabled)。附件通過 [[attach:相對路徑]] 引用工作區內允許類型的文件(默認關閉)。表格與代碼圍欄在釘釘 Markdown 中渲染不佳,提示詞側已約束模型避免輸出。

安裝與啓用

前置條件

  1. 已安裝 dws(dws --version 有輸出)。
  2. 在本機終端完成個人 OAuth(勿在 Agent 沙箱執行,否則會因無法寫 ~/.dws 而 EPERM):
dws auth login          # 掃碼授權
dws auth status         # 應返回 "authenticated": true
  1. 有一個可綁定的 DSH 工作區(側欄中的工作區,例如 my-workspace)。

安裝插件

官方 README 示例爲將本地克隆或下載的插件目錄加入 profile(路徑按你的實際目錄修改;日常桌面版 profile 名爲 desktop):

dsh plugin --profile desktop add ~/projects/dsh-dingtalk-self

然後重啓 DSH App 並刷新頁面,打開 設置 → 釘釘代答(側欄 order=45)。

裝好後建議檢查(README 原文):

python3 -c "import json;d=json.load(open('$HOME/.dsh/profiles/desktop/package.json'));print('deps:', 'dsh-dingtalk-self' in d['dependencies'], 'bundles:', 'dsh-dingtalk-self' in d['dsh']['profile']['bundles'])"
cat ~/.dsh/data/dsh-dingtalk-self/boot.log   # 應有一行 version=0.2.0 ... schema=yes

若 dsh 不在 PATH,可使用 macOS 應用內全路徑:/Applications/DeepSeek\ Harness.app/Contents/Resources/runtime/cli/bin/dsh。

卸載示例:

dsh plugin --profile web remove dsh-dingtalk-self

配置當前多落在 ~/.dsh/data/dsh-dingtalk-self/config.json(設置頁「配置來源」會標明);宿主若提供可寫 settings.update,插件會優先走 DSH 原生 settings。

典型用法

最小啓用步驟

README 建議順序:

  1. enabled=true(總開關,默認關)。
  2. 在「監聽分組」增加聯繫人並選擇綁定的 workspaceId。
  3. mode=draft,先只看草稿,確認內容與口吻後再改爲 confirm 或 auto,並按需打開聯繫人級「允許真實發送」。

設置頁 HTTP 契約

客戶端通過插件註冊的同源端點與宿主通信(節選):

GET  /dsh-dingtalk-self/api/state
POST /dsh-dingtalk-self/api/config     { patch }
POST /dsh-dingtalk-self/api/cycle              {}   // 立即檢查一次
POST /dsh-dingtalk-self/api/test-reply         { message }   // 模擬回答,不發送
POST /dsh-dingtalk-self/api/contacts/search   { query }

「運行狀態」區提供 dws 登錄態、急停、立即檢查一次、上次檢查結果與一鍵自檢(Node、狀態目錄、dws、個人身份登錄、工作區、聯繫人綁定六項)。

回覆格式示例

Markdown 模式下,agent 輸出經 lib/core/format.js 歸一化後由釘釘渲染。README 中同一接口問題的示例結構爲:先一句結論,再用 ### 小標題與 - 列表分塊(正文不含表格與代碼圍欄,以免釘釘渲染異常)。

適用場景與注意

適合:你已用 DSH 維護項目/知識工作區,同事常釘釘私聊問技術或流程問題,希望代答內容來自工作區只讀檢索,且對外顯示爲你本人消息而非機器人。

務必注意:

  • 插件依賴 dws 個人身份讀私聊、發消息;權限邊界是你賬號能看到的私聊與 CLI 能力,不是企業管理員代管的機器人 scope。
  • 默認 enabled=false、mode=draft;生產環境建議先草稿 / 確認,並設置 limits.maxRepliesPerHour、quietHours 與出站護欄。
  • agent.timeoutSeconds 默認 240 秒;查資料型回答 README 說明通常需 1–2 分鐘,不宜調過小。
  • 重裝或改插件代碼後需重啓 DSH App 纔會重新裝配客戶端半邊(Host 側改代碼不會熱重載)。
  • DeepSeek Harness 生態理念是「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-dingtalk-self 把「釘釘私聊 → DSH 工作區只讀 agent → 本人賬號回覆」收成一條可配置的 DSH 工作流插件:分組綁定聯繫人、草稿/確認/自動三檔、模擬回答與審計,並可選 Markdown 排版與宿主側表格/流程圖渲染。進一步瞭解與 issue 請見 GitHub 倉庫 與 SkillHub 插件頁。

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

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

小夜