前言¶
跑長回合的 Agent 開發者大概都遇到過這樣的情況:模型在一個回合裏反覆調用工具不肯收手,或者一次響應消耗的 token 遠超預期,等察覺時配額已經燒掉一大截。DSH(DeepSeek Harness)的理念是一切皆插件,這類資源上限問題同樣可以不改框架代碼、交給插件解決。下面介紹的 dsh-turn-budget 做的就是這件事。
這是什麼¶
dsh-turn-budget 是 DeepSeek Harness 的一個 fail-closed 資源治理器,由 Nunchakus888 維護。它按每個 Agent 回合獨立設置三類上限:模型步驟數、根/嵌套工具執行次數,以及 provider 上報的精確 token 用量。一旦額度用盡,後續請求會在執行前被拒絕。
當前版本 0.1.0,MIT 許可證,Node 引擎要求 >=22.19.0 <23 || >=24.0.0。實現上只使用 DSH 的公共擴展點:package.json 中 dsh.bundle.patch 指向 cordis.patch.yml。
攔截語義¶
插件通過 DSH 的鉤子完成攔截,三項上限的行爲各不相同:
| 上限 | 攔截時機 | 計入的工作 | 超限結果 |
|---|---|---|---|
maxStepsPerTurn |
下一次模型請求前 | 當前回合已進入的請求 | 拒絕該步驟,回合以 blocked 關閉 |
maxToolCallsPerTurn |
每個工具體執行前 | 根調用,加上攜帶 Agent 的 Code Mode/嵌套派發 | 返回指明超出哪項預算的策略錯誤,模型仍有一次不借助工具完成的機會 |
maxProviderTokensPerTurn |
下一次模型請求前 | 每步最新的 provider 用量,含緩存讀/寫分桶 | 上報總量達到上限後拒絕該步驟 |
對應的鉤子分工如下:
1、agent/pre-step:拒絕將超出步驟或 provider-token 上限的模型請求。
2、tools/pre-execute:在派發前拒絕已耗盡工具調用額度的工具請求。
3、tool/result 與 turn/end:藉助現有記錄,把策略結果保留在標準 Session 日誌中,不另起日誌通道。
關於 token 上限有兩點需要明確:它只在 provider 上報用量時才精確,缺失的用量不做估算;provider 也可能在當前響應內超出上限,插件只能阻止後續請求,因爲公共生命週期沒有提供可搶佔的 token 流預算。
安裝與啓用¶
從 checkout 安裝:
git clone https://github.com/Nunchakus888/dsh-turn-budget.git
dsh plugin --profile web add ./dsh-turn-budget
接着先查看生效配置,再運行:
dsh --profile web --dump-config
dsh --profile web
內置的 profile 層默認提供一組保守基線:每回合 24 個模型步驟、40 次工具執行。
覆蓋上限¶
經過上面的步驟,插件已經按默認基線工作。如果部署需要不同的上限,在 profile 的 cordis.patch.yml 中覆蓋完整配置行:
- update:
id: turn-budget
config:
maxStepsPerTurn: 16
maxToolCallsPerTurn: 32
maxProviderTokensPerTurn: 250000
三項均可配置,但每項必須是正的安全整數,且至少需要配置一項。
邊界與注意事項¶
- 定位是熔斷器(circuit breaker),不是計費系統:不估算貨幣成本、不改寫工具參數、不替代沙箱或審批,也不能在步驟中途終止不配合的模型或工具操作。
- 工具賬本是進程內(process-local)的,以活躍 Agent 身份爲鍵;冷恢復會在被中斷的回合繼續之前將其關閉,也就是說進程重啓後無法恢復舊的進行中賬本。
- 集成測試使用已發佈的 Harness testkit 啓動真實 Agent Loop,覆蓋步驟拒絕、派發前工具拒絕、回合重置、最終響應放行、provider-token 記賬和重複用量替換。參與開發時,先執行
pnpm install,再執行pnpm run check。 - 插件以當前 dsh 進程的權限運行。安裝任何第三方插件前,建議先閱讀其源碼並確認許可證;本項目的許可證爲 MIT,可直接查看倉庫確認。
結尾¶
dsh-turn-budget 解決的是一個具體問題:讓失控的回合在越過上限時儘早停下來,而不是事後人工排查。它把步驟、工具、token 三類額度收斂到每回合獨立的三項配置裏,行爲可在 Session 日誌中追溯。適合給自己的 DSH 部署加一道資源底線的運維和開發者。
- 社區目錄頁:https://www.skillhub.cn/plugins/Nunchakus888/dsh-turn-budget (獨立站點,與 DeepSeek 或幻方無官方從屬關係)
- GitHub 倉庫:https://github.com/Nunchakus888/dsh-turn-budget