dsh-pocket-console:人不在工位時,把審批和提問送到飛書

前言

用 DeepSeek Harness(DSH)跑長任務時,Agent 常會停在需要人拍板的地方:工具調用要審批、ask_user_question 要回答。人離開電腦,會話就卡在那裏,回來才發現進度沒動。

整機遠程 GUI、聊天裏驅動整臺 Agent、或只做無法回覆的通知,都能部分緩解,但要麼要把工作區與會話搬出去,要麼只能「知道有動靜」卻不能當場做決定。下面介紹 dsh-pocket-console:電腦留在原處,只把擋路的決定和對話的下一步,通過飛書卡片發到手機。

這是什麼

dsh-pocket-console 由維護者 picsky 發佈,在 DSH 社區目錄中歸類爲工作流插件。定位是 IM 控制台裏偏「口袋決策」的一類:不把整臺機器交出去,只送出審批、提問、結果回覆,以及開下一段任務所需的那幾步;桌面優先,默認只出站一條 WebSocket,不依賴公網 IP、域名或隧道。

核心功能

經過上面的定位,插件在 README 中寫明的可覈實能力如下。

送到手機的內容

  1. 工具調用審批:桌面在設定時限內未響應時,飛書收到審批卡;批准僅對該次調用生效(allowed-once),結算後請求 id 失效。
  2. ask_user_question 提問:同樣在手機側以卡片形式送達,可按鈕或文字回覆。
  3. 一輪結束後的結果:會話停下來後,把本輪結果發到手機,並附帶可直接回復的輸入框;行爲受「結果通知」配置控制。
  4. 執行過程可見:任務在跑時,手機上一張卡片原地更新,便於查看進度。
  5. 下一段任務:結果卡上可帶在同一工作區開新會話的表單;在結果卡上回一句,該卡會變爲下一輪的「執行中」卡片。

桌面優先與回覆方式

默認有「桌面專享時間」(默認 120 秒):桌面在這段時間內若已應答,則不會發到手機;設爲 0 表示即時發送。插件不會自動批准,沉默不作數。

在飛書中的操作方式(來自 README):

  • 點卡片按鈕,Agent 立刻繼續;手機上的回覆會作爲你自己的消息進入會話。
  • 引用結果卡回話:視爲本會話的下一步。
  • 引用審批卡回「允許」或「拒絕」。
  • 引用提問卡:直接寫答案。

它不搬什麼

不能在手機上翻會話歷史、改設置或換工作區;工位、會話、設置和憑據都留在原 DSH 實例。從手機開新任務會在當前會話的工作區裏起一輪,仍受 Agent 自身審批規則約束。

安裝與啓用

發佈的 tarball 已內置飛書通道,安裝不會解析需構建許可的依賴,也不執行安裝期腳本。官方安裝命令爲:

dsh plugin --profile web add dsh-pocket-console

安裝後重啓 dsh web,在 設置 → 插件 → 插件配置 →「口袋控制台」 完成綁定(DSH 0.1.7 起,同一張配置卡片也在側邊欄插件頁的官方分組下;較舊版本在設置頁的插件列表中操作):

  1. 點「掃碼創建應用」;若已有飛書應用,點「使用已有的應用」,填寫 App ID 與 App Secret。
  2. 用飛書掃碼(鏈接 10 分鐘內有效、僅可使用一次)。
  3. 卡片顯示「已綁定」,並列出應用、接收人與長連接狀態。

憑據與接收人寫入憑據庫,之後每次啓動 dsh 會自動重連長連接。換應用點「使用其他應用」;停止手機側點「解除綁定」。

卸載:

dsh plugin --profile web remove dsh-pocket-console

注意:從 github: 直接安裝不帶內置通道 bundle,需在 profile 中補通道;詳見倉庫內 故障排查。本文安裝命令以 npm 發佈包爲準。

典型用法與配置

插件默認開箱即用。設置卡片中常見項(與 README 表格一致):

設置 默認 含義
桌面專享時間(秒) 120 桌面超時未響應則發到手機;0 爲即時
標題前綴 DSH 手機消息標題前綴
結果通知 空閒時通知 會話停下後髮結果;延遲複用桌面專享時間

部署層配置(不進設置卡片)可在 $DSH_HOME/profiles/web/cordis.patch.yml 中覆蓋;patch 會整體替換該行的 config,需寫全要保留的鍵。出廠示例:

- id: pocket-console
  config:
    channel: dsh-pocket-console/providers/feishu.js
    channelConfig: {}
    delaySeconds: 120
    titlePrefix: DSH
    resultNotify: idle
    resultNotifyCooldownSeconds: 0
    mirrorTtlSeconds: 60
    locale: zh
    debug: off

典型工作流:在桌面給 DSH 丟任務 → 離開工位 → 審批或提問超時後手機收卡 → 點選或引用回覆 → Agent 繼續;若桌面瀏覽器仍開着,答完後頁面會像本地點擊一樣結算(鏡像約 60 秒內有效,見 mirrorTtlSeconds)。

適用場景與注意

適合:必須離開工位,但希望 Agent 在審批、提問、結果確認處不要長時間空轉;接受飛書作爲出站通道、且願意做一次應用綁定。

與同類方案的差別(README 對比表):整機 GUI 鏡像適合「電腦跟手走」;純通知插件只能知曉動靜;本插件服務「電腦在原地,決定出門」。

運行與信任:插件以當前 dsh 進程權限運行,審批卡本質是遠程代碼執行授權通道。安裝前應閱讀源碼、MIT 許可證 與 SECURITY.md。密鑰存放在 $DSH_HOME/.credentials.yaml,不放進 Agent 命令的環境變量。

已知限制(README「會怎麼壞」):

  • 一個飛書應用只應對一個 DSH 實例;多實例共用一個 bot 時審批可能隨機落到某一側。
  • 進程重啓後,內存中的審批/提問待決表清空;重啓期間按舊審批卡無效,結果卡可走持久存儲仍可用。
  • 卡片文本受飛書請求體字節限制,插件按約 32 KB 請求體截斷並提示。
  • 無入站監聽:不能做到「任意網絡都能連上」那種入站訪問。

環境:package.json 要求 Node ^22.19.0 || >=24.0.0。插件針對 DSH 0.1.6-alpha.1 與 0.1.7-rc.2 做全流程驗證;其他版本也許可用,維護者未在文檔中承諾。

DSH 生態理念是「一切皆插件」;社區目錄站點與 DeepSeek / 幻方無官方從屬關係,本文介紹的是社區插件,非官方應用商店條目。

結尾

dsh-pocket-console 把 DSH 裏卡住人的那幾步——審批、提問、可回覆的結果與下一段任務——經飛書送到手機,桌面優先、只出站,適合「人走開、任務不能停」的工作流。

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

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

小夜