dsh-approval-inbox:把阻塞式審批改成後臺排隊

前言

在 DeepSeek Harness(DSH)裏跑 Agent,常見兩種時間浪費:一是工具調用需要人點頭時,整條會話停在當前 step,你不在屏幕前,後面不需要授權的活也幹不了;二是 DeepSeek 按峯谷價計費,峯時盲目「全停」會把不佔 token 的本地構建、測試也一起閒置。原生彈窗式審批解決的是「當場決定」,但沒有把「等你」和「Agent 繼續幹別的」拆開。

下面介紹社區插件 dsh-approval-inbox(維護者 Aily-DSH,分類 admin-security,MIT 許可證)。它用規則把該攔的調用攔下入隊、拒絕當前 step,讓模型在同一回合繼續別的任務;你在「決策收件箱」裏批量或逐條批准,批准後經一次性憑據放行重試,並可配合峯谷策略把喫算力的調用壓到谷時。

這是什麼

dsh-approval-inbox 是 DSH 的審批收件箱插件:命中規則的待授權調用不再以阻塞式 ask 卡住 Agent,而是 defer 入隊並立刻結束當前 step;左側常駐「決策收件箱」按項目、會話分區展示隊列,會話行帶待批數量角標;規則集可 JSON 導出導入;可選與 dsh-peak-guard 或內置日曆聯動,峯時批准可排到谷時邊界,並對 task、web_search 等工具族自動壓後。

環境要求(來自倉庫說明):DSH >= 0.2.1-rc.2,Node.js ^22.19.0 || >=24.0.0,宿主進程需保持運行;可選 dsh-peak-guard >= 0.3.2。

核心功能

不阻塞 Agent

插件在 tools/pre-execute 階段處理調用。規則動作爲 defer 時,請求寫入隊列並返回 deny,當前 step 立即結束,不產生等待中的 Promise;模型收到「已排隊、繼續別的」後可繼續其他 step。你點批准後,經 schedule.create 投遞重試消息,併發放一次性憑據,重試同一調用時放行一次;再次執行仍會重新排隊(出廠規則只攔不可逆或離開本機的操作,只讀與本地構建默認放行)。

收件箱 UI

  • 左側導航行 決策收件箱:常駐、不可關閉(sidebar.panellist 席位)。
  • 全局面板:項目 → 會話兩級分區;支持批准、拒絕、總是允許、批量批准與批註;頂部顯示當前峯/谷與下次切換時間。
  • 右側欄 待批閱 標籤:僅當前會話,可從側欄引導頁重新打開。
  • 會話行角標:轉圈時仍顯示黃色數字(1–99,超過爲 99+),表示該會話待批數量。
  • 界面中英雙語,跟隨 DSH 語言設置。

規則引擎

規則是有序列表,先匹配先生效。每條規則一個動作:

動作 含義
allow 直接放行
defer 入隊,拒絕當前 step,要求模型繼續別的
deny 直接拒絕並告知模型勿重試

條件字段包括:tool、kind、scope、project、session、contains、notContains、regex、notRegex、path、minRisk(0–3)。出廠 7 條規則覆蓋工作區內讀寫、本地構建放行,以及強推、破壞性刪除、寫系統路徑、發佈、向人提問等 defer 場景。面板內可導出下載、粘貼導入(merge 按 id 覆蓋 / replace 整體替換),並對假想調用試跑匹配結果。

峯谷聯動

讀取 dsh-peak-guard 階段快照;未安裝時使用內置日曆(chinese-days + 官方峯時窗口)。配置項 peak.hold 爲 true 時,峯時批准會把投遞排到谷時邊界;peak.deferTools 默認包含 task、subagent、web_search、image_gen、video_gen,峯時自動壓後、谷時自動批准投遞。

外部接入

宿主在迴環地址提供 HTTP API(需與 GUI 相同的 token),例如 POST /api/dsh-approval-inbox/raise 登記待決項。也可向文件投遞箱寫入 JSON:

~/.dsh/dsh-approval-inbox/inbox/*.json

約 30 秒 tick 消費後刪除。與 dsh-superagent 聯動時,工單進入 blocked 或向人提問的事件可自動進收件箱。

安裝與啓用

從 GitHub 安裝(README 推薦命令):

dsh plugin --profile <profile> add "git+https://github.com/Aily-DSH/dsh-approval-inbox.git"

若 dsh 不在 PATH,可使用客戶端自帶 CLI(示例路徑以 Windows 爲例,按本機調整):

cd "/d/Program Files/DeepSeek Harness/resources/runtime/cli/bin"
./dsh.cmd plugin --profile desktop add "git+https://github.com/Aily-DSH/dsh-approval-inbox.git"

desktop profile 由 Electron 獨佔管理時,CLI 可能拒絕寫入。可行方式:客戶端內 設置 → 插件 → 從 Git 地址安裝;或按 README「手動裝」修改 ~/.dsh/profiles/desktop/package.json 後 npx --yes pnpm@11 install(開發場景已文檔化)。

本地開發可指向目錄:

dsh plugin --profile <profile> add "file:D:/path/to/dsh-approval-inbox"

裝完後必須重啓 DSH:宿主半隻在啓動時掛載,客戶端注入清單也只在啓動時計算,不重啓不會生效。

主配置文件(首次啓動自動生成):

~/.dsh/dsh-approval-inbox/config.json

常用字段:enabled(總開關)、nativeApproval(rule / allow / defer)、grantTtlMinutes(默認 30)、grantScope(exact / tool)、maxQueue、expireHours、peak.hold、peak.deferTools、rules。面板內可改大部分項。

典型用法

  1. 重啓後確認左側出現 決策收件箱,打開面板查看峯/谷狀態。
  2. 發送會命中出廠「刪除類」規則的請求,例如:
   請執行 rm -rf ./dsh-selftest-tmp,然後告訴我結果。
  1. 期望:無阻塞彈窗;面板出現 bash 待批項;會話未卡住,模型在拒絕說明後繼續回覆。
  2. 點擊 批准:模型收到可重試消息,同一調用重試時憑據放行一次;再執行會重新入隊。
  3. 對某類操作選 總是允許:會提升爲 allow 規則,可在規則區查看或刪除。

適用場景與注意

適合:長時間 unattended 跑 Agent、多項目多會話並行、需要可審計的批准記錄與可導入規則集、希望在峯時仍做本地構建但把喫算力調用壓到谷時的團隊或個人。

注意:

  • 插件在當前 DSH 宿主進程權限下攔截與投遞;安裝前請閱讀源碼與 MIT 許可證,確認規則與出廠默認符合你的安全策略。
  • 關閉 DSH 後無人攔截、無人投遞隊列。
  • enabled 爲 false 時 UI 仍在,但不攔任何調用。
  • 社區目錄 SkillHub 插件頁 與 GitHub 倉庫 爲獨立生態信息源,與 DeepSeek / 幻方無官方從屬關係;以倉庫 README 與 docs/RULES.md 爲準。

結尾

dsh-approval-inbox 把「等你點頭」改成「排隊等你點頭」:Agent 遇授權步驟先入隊、繼續別的活;你在收件箱裏按項目與會話集中決策,規則可導出複用,峯時可與算力定價策略聯動。需要細節時查閱倉庫 README、配置說明與 HTTP API 表。

  • 目錄頁:https://www.skillhub.cn/plugins/Aily-DSH/dsh-approval-inbox
  • GitHub:https://github.com/Aily-DSH/dsh-approval-inbox
羽毛球分组比赛记分
小程序二维码

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

小夜