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