前言¶
在 DeepSeek Harness 中,一次 Prompt 調用可能通過子代理(Subagent)的遞歸調用,展開成一個龐大的會話樹。這種結構雖然能處理複雜任務,但也容易導致資金快速流失:單個會話可能在短時間內產生大量模型請求,或者樹結構的搜索和委託操作消耗大量 API 配額。
如果沒有針對會話樹的獨立控制,開發者很難在樹結構失控前及時止損。dsh-session-budget-guard 正是爲了解決這一問題而設計,它作爲“熔斷器”介入運行時,確保會話樹的總支出和支出速率在可控範圍內。
插件定位¶
- 名稱:dsh-session-budget-guard
- 定位:DeepSeek Harness 的會話樹級預算與支出速率熔斷器
- 維護者:erya2000
- 分類:admin-security
- 許可證:MIT
核心功能¶
該插件主要提供以下控制能力:
- 支出監控:監控整個會話樹(根節點 + 所有子代理)的累計支出和支出速率。
- 熔斷拒絕:當累計支出或支出速率超過預設限制時,拒絕執行下一次模型請求或委託操作。
- 結構限制:限制樹結構的深度、節點數量以及搜索次數,防止過度配額的委託或搜索。
- 管理手段:通過日誌記錄和通知機制進行管理。
- 自定義通知:支持通過 Shell 模板自定義通知命令。
安裝與配置¶
安裝¶
使用官方安裝命令將插件添加到指定 Profile:
dsh plugin --profile web add github:erya2000/dsh-session-budget-guard
或者,通過本地掛載方式使用(無需安裝步驟),在 cordis.patch.yml 中配置路徑:
# ~/.dsh/cordis.patch.yml
- insert:
- id: session-budget-guard
name: /absolute/path/to/dsh-session-budget-guard/lib/index.js
配置示例¶
配置項均爲可選,具體參數參考其源碼默認值。以下是一個啓用強制執行(enforce)模式的配置示例:
config:
mode: enforce
treeWarnCny: 5
treeStopCny: 10
maxDelegationDepth: 1
適用場景與注意¶
適用場景¶
適用於需要嚴格控制單次 Prompt 調用成本,或需要防止子代理無限遞歸展開的場景。
關鍵注意點¶
- 進程內運行:這是一個進程內的守衛插件。一旦 Harness 進程重啓,會計數據不會恢復,之前的預算記錄將丟失。
- 模式差異:默認模式爲
notify(僅記錄日誌和發送通知)。如果啓用enforce模式,插件會直接取消會話並拒絕請求,這可能會導致正在運行的任務中斷。建議先在notify模式下觀察日誌,調整閾值後再開啓enforce。 - 速率限制依賴:速率限制需要至少一箇舊樣本數據。因此,插件剛加載時的第一個時間窗口可能無法觸發速率限制,但累計支出和結構限制依然生效。
- 分支排除:普通分支(
origin=fork)被故意排除在樹結構統計之外,不計入預算限制。 - 環境要求:需要 Node.js 版本大於等於 20。
結語¶
dsh-session-budget-guard 爲 DeepSeek Harness 的多智能體協作提供了資金與結構的防線。通過設置累計支出和支出速率的雙重熔斷閾值,可以有效避免因樹結構失控導致的 API 消耗激增。更多細節與源碼可參考 SkillHub 插件目錄 或 GitHub 倉庫。