dsh-session-budget:爲 DSH 會話補上 token、費用與時長的硬上限

前言

DeepSeek Harness(DSH)在 goal 模式下,round 驅動會持續開新輪次直到目標完成。官方文檔也寫明:round 上限「不是資源預算」——token、金額、耗時和供應商配額仍是各自獨立的策略。長時間跑任務時,模型可能在不知不覺中把一輪會話的用量推高,既沒有預警,goal 模式也會繼續自動續跑。

dsh-session-budget(維護者 laiyouxing,GitHub:laiyouxing/dsh-session-budget)就是爲 DSH 補這一層:按會話設置 token、費用和牆鍾時間三類預算,任一觸頂即停止本輪模型會話;並可選用 DeepSeek 公佈的峯谷時段,在峯值窗口內暫停任務、谷段自動恢復。下面介紹它的定位、能力與用法。

這是什麼

這是一款面向 DeepSeek Harness 的插件,分類上可歸爲模型推理相關的用量與成本控制。狀態落在本機 ~/.dsh 下的 JSON,無額外聯網遙測。

核心功能

三類獨立預算

每個會話可任意組合配置:

維度 計入內容 說明
tokens 每條 assistant/message 的 uncachedInput + cacheRead + cacheWrite + output 同一步重試會覆蓋採樣,不重複計數
money 上述四桶用量 × 設置頁中的四個「每百萬」單價 四個單價須全部配置,否則金額不累計;有錢上限但單價全爲 0 時會提示
time 自設定預算起的牆鍾分鐘數 與 token 無關,由插件定時器檢查

字段留 0 表示該維度不限制。

觸頂行爲:硬停止,而非提示

觸達任一上限時,插件會:

  1. 在 agent/pre-step 返回 { kind: 'reject' },模型調用不會發生,回合以 blocked 結束。
  2. 阻塞或暫停會話的 goal(budget-exhausted 或 onExceed: pause),goal 模式無法自動續跑。
  3. 對進行中的回合調用 agent.cancel({ kind: 'hook', reason }),界面顯示爲已中止。
  4. 在提高上限、reset、或谷段開始後,由本插件造成的停止可被清除並恢復 goal;因 round-limit、用戶編輯等原因被阻塞的 goal 不會由此插件恢復。

會話中途改預算

在會話中途設置預算時,會從該會話已有日誌回填已記錄的用量,上限針對整段會話而非僅設置之後。

DeepSeek 峯谷時段

默認對齊 DeepSeek 定價文檔 中的峯值定義:UTC 週一至週五 01:00–04:00、06:00–10:00(中國公休日除外);對應 Asia/Shanghai 爲工作日 09:00–12:00、14:00–18:00。默認窗口可通過 peakWindows、peakTimezone、peakWeekdays、peakSkipDates 等調整;設置頁可同步官方價表與節假日日曆(holiday-cn 等)。

峯值窗口內會話暫停並取消當前回合;谷段開始時在滿足條件時自動恢復 goal。會話級可用 /budget peak on|off|auto 覆蓋插件默認。

三個入口

  • 輸入框上方一行摘要條(用量、峯值暫停提示、「設置上限」)。
  • 聊天命令 /budget。
  • 設置側欄「會話用量預算」(插件包頁、patch 行配置亦可進入同一設置頁)。

環境與依賴

  • 帶 Web UI 的 DSH(dsh web 或 DSH Desktop)。
  • Node.js 22+(倉庫測試在純 Node 上運行,無構建步驟、無額外依賴安裝)。
  • @deepseek-ai/schemastery 由宿主以 peer 方式提供。

許可證:MIT(package.json 當前版本 1.6.0)。

安裝與啓用

在應用內插件管理器中添加下列 spec(須使用 profile;勿與 Desktop 混用終端 profile):

dsh plugin --profile <profile> add github:laiyouxing/dsh-session-budget
  • DSH Desktop: 在應用內 Settings → Plugins 粘貼 github:laiyouxing/dsh-session-budget,不要用針對 web profile 的終端命令。
  • 純 dsh web: 執行上述命令後重啓 dsh web。
  • 本地目錄: dsh plugin --profile <profile> add /absolute/path/to/dsh-session-budget。

安裝後刷新頁面;輸入框上方應出現摘要條,設置中出現「會話用量預算」。

典型用法

摘要條

一行示例(README 中的示意):

[dot] 預算 3.2M / 50M · ¥1.40 / ¥5 · 42m / 3h   [峯值暫停 · 12 分鐘後恢復]   [設置上限]

已配置維度顯示 已用 / 上限;觸頂或峯值暫停會有對應標籤;「設置上限」可內聯編輯三項並 reset、clear。

/budget 命令

命令 作用
/budget 或 /budget status 查看上限、用量、剩餘與峯谷安排
/budget set tokens=500k money=5 time=120 設置子集;token 支持 200k、1.5m 後綴,money 爲金額,time 爲分鐘
/budget peak on / off / auto 本會話峯谷策略
/budget reset 保留上限,用量從零重計
/budget off 移除本會話預算並恢復因本插件停止的 goal

設置頁

可編輯插件默認值:各類上限、單價與貨幣、觸頂動作、峯谷窗口與時區、工作日與節假日跳過、tick 間隔、數據文件等;保存寫入插件自有存儲,不重啓宿主。可按 CNY/USD 從官方價表同步四個「每百萬」單價。

適用場景與注意

適合在 DSH goal 模式或長會話裏需要明確「最多花多少 token、多少錢、多少時間」的場景,以及希望在 DeepSeek 峯值單價時段自動暫停、谷段續跑的場景。

安裝前建議自行查看倉庫源碼與 MIT 許可證。插件與當前 dsh 進程同權限運行,能讀寫 ~/.dsh 下狀態;設置頁同步價表與節假日時會發起網絡請求,日常計賬與攔截邏輯仍在本地完成。

結尾

dsh-session-budget 把 DSH 文檔裏仍獨立的「資源策略」落成可操作的會話級上限與峯谷暫停,觸頂即停 goal、拒掉後續 pre-step,避免靜默燒穿一輪任務。目錄與源碼:

  • 社區目錄:https://www.skillhub.cn/plugins/laiyouxing/dsh-session-budget
  • GitHub:https://github.com/laiyouxing/dsh-session-budget

DSH 生態以「一切皆插件」爲方向;SkillHub 等目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。按需選用即可。

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

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

小夜