dsh-runtime-tuning:用真實會話數據調優 DSH 運行時

前言

DeepSeek Harness(DSH)在系統提示裏已經寫了不要輪詢、不要長時間阻塞等待,後臺任務結束也會通知模型。實際長會話裏,模型仍可能用 job_output wait: true 佔住整輪對話,或在沙箱裏用 ps 誤判後臺任務已退出。憑據一旦被問進對話,會反覆出現在命令和上下文裏。這些問題多半不是缺機制,而是缺在運行時側的一致約束與補救。

下面介紹維護者 herenfor 發佈的 dsh-runtime-tuning:一組裝在 DSH 主程序內部的調優插件,覆蓋工具執行、文件工具、沙箱與憑據保護、聊天界面修復;每項改動都對照導出的真實會話統計驗證。任務提醒、托盤啓動和崩潰防護在 sibling 項目 dsh-sentinel。插件在 SkillHub 目錄分類爲「工作流」,倉庫 herenfor/dsh-runtime-tuning 當前版本 0.2.5,MIT 許可證,Node.js ^22.19.0 || >=24.0.0,聲明支持 DSH >=0.2.1-rc.4 <0.3.0-0。

這是什麼

dsh-runtime-tuning 不是單一功能點,而是一個插件包:通過 cordis.patch.yml 一次性註冊多個子插件(wait-guard、secret-guard、session-tmp 等)和可選的調優預設 tuned。作者從一份 9.7 小時、119 輪、2347 次工具調用的日常發行會話出發,按事件統計時間去向,再對照 DSH 源碼逐項落地攔截、兜底喚醒和界面修補。文檔裏也記錄了仍依賴 DSH 核心、插件做不到的行爲(例如審批佔滿整個 step、插話無法打斷正在運行的工具)。

核心功能

子插件按職責劃分,安裝後默認一併啓用(可在 profile 的 cordis.patch.yml 裏按 id 覆蓋配置或 disabled: true 關閉單項)。

wait-guard:不佔住對話

攔截前臺過長 sleep 和頂層 agent 的長時間阻塞式 job_output;對超長前臺 timeoutMs 可在 tools/execute 階段靜默封頂(默認 30 秒)後轉入後臺。一輪結束時若仍有本次請求啓動的後臺任務,runtime 按事實判斷「在等」,不依賴模型是否調用 task_status:未聲明 waiting 時啓用硬保底(默認 30 分鐘)喚醒;收尾清點會在 1 秒後列出未認領任務,要求模型選擇在等、標爲服務或 job_kill。在命令結果後附加任務表事實(沙箱內 ps 看不到的後臺任務等)。可選工具 task_status 用於長任務或標記 services。

作者在同一發行流程上的對比(README 表格):裝插件後「對話被佔住」約從 19–22 分鐘降到 4.6 分鐘,阻塞等待約從 13–15 分鐘降到 0.2 分鐘;收益主要是編譯期間用戶仍可插話,而不是任務本身更快結束。

ask-nonblocking:提問不阻塞整輪

在每個頂層 agent 創建時註冊 DSH 官方的 timed 版 ask_user_question,遮蔽 preset 內默認阻塞版;默認約 1 秒後返回 pending,用戶遲到的回答作爲插話進入。依賴 DSH 內部接口,失效時寫日誌並退回阻塞版。

secret-guard 與 secret-files:憑據不進上下文、沙箱讀不到文件

secret-guard 拒絕向用戶索要令牌/密碼/API key 的提問(引導用已登錄的 gh 等),拒絕參數中含完整令牌的工具調用及 gh auth token,並在工具結果交給模型前將識別出的 GitHub 令牌、sk- 開頭 key 等替換爲 [REDACTED:…]。用戶直接在聊天框粘貼的內容不在工具結果路徑上,管不到。

secret-files 在 Linux bwrap / macOS Seatbelt 層把憑據路徑掛載成說明文件或空目錄,文件工具的 read/write/edit/grep 對相應路徑拒絕;默認開啓 dsh、cloud、registry 組,git 組默認關閉以免沙箱內 git push/gh 失敗。

session-tmp 與 fs-view:沙箱與文件工具行爲

session-tmp(僅 Linux):同一對話(含子代理)共用會話級 /tmp,避免 DSH 每條命令 --tmpfs /tmp 導致上一條寫入下一條丟失;可選把文件工具參數中的 /tmp 映射到同一會話目錄。

fs-view:在 edit 前將期望文件版本同步爲當前版本,減少「未 read 過」或 shell 改過後必須先讀再 edit 的多餘一步;read_image 可按文件頭識別 PNG/JPEG 等,擴展名不對時臨時副本讀取。

chat-answer-fix、stream-stall、net-log 與其餘

chat-answer-fix 替換 profile 中的 ui-chat 行爲:帶工具調用結束的一輪,最後一步仍顯示爲回答(配合 wait-guard 的 concludeTurn: 'auto')。

stream-stall 在模型開始輸出後若僅心跳、無新內容連續達到 stallSeconds(默認 180),斷開 POST …/messages 的 SSE 請求,讓 DSH 按傳輸失敗自動重試。

net-log 記錄連不上模型服務時 undici 側的主機、路徑、階段與錯誤碼(默認關注 deepseek.com)。

調優預設 tuned 在界面與 standard 並列可選:去掉部分日常編碼用不到的工具,增加並行調用、合併只讀檢查等 tool-use-prompt,思考強度與驗證不減。

安裝與啓用

聲明支持 DSH 0.2.x(>=0.2.1-rc.4 <0.3.0-0);作者實測環境爲 DSH 0.2.1-rc.4 的 web profile,Windows 11 + WSL2,Node.js 22.23.4。headless、sdk 等 profile 文檔標明暫不支持(wait-guard 依賴「結束一輪等通知」的交互場景)。

在 WSL 終端執行官方安裝命令:

dsh plugin --profile web add github:herenfor/dsh-runtime-tuning

也可用本地路徑鏈接安裝(作者本機常用 link: 方式):

dsh plugin --profile web add link:/path/to/dsh-runtime-tuning

安裝後等當前任務結束,重啓 DSH 並刷新瀏覽器。卸載:

dsh plugin --profile web remove dsh-runtime-tuning

卸載後重啓;若在 cordis.patch.yml 裏寫過子插件 config 覆蓋,需一併刪除。

典型用法

1、安裝並重啓後,子插件默認生效;診斷日誌在 $DSH_HOME/logs/dsh-runtime-tuning/(默認 ~/.dsh/logs/dsh-runtime-tuning/),各子插件一個 JSON lines 文件,不記錄命令全文或對話內容。

2、按需改 profile 的 cordis.patch.yml,按插件 id 整塊替換 config。例如調整 wait-guard 兜底倍數、或非阻塞提問超時:

- id: runtime-tuning-wait-guard
  config:
    backstopFactor: 3
- id: runtime-tuning-ask-nonblocking
  config:
    timeout: 30

用下面命令覈對合併後的配置:

dsh --profile web --dump-config

3、若希望減少工具數量並統一工具使用提示,在 DSH 界面選擇預設 調優(tuned) 而非 standard;不需要時在補丁里禁用 - id: runtime-tuning-preset-tuned。

4、與 dsh-sentinel 配合時,兩者獨立安裝即可:sentinel 按後臺任務與 task_status 的 waiting/services 控制「本輪完成」類通知時機;runtime-tuning 負責不佔對話、憑據與沙箱側行爲。

5、不需要聊天界面替換時,可在補丁中恢復官方 ui-chat 並禁用 runtime-tuning-ui-chat(見 docs/configuration.md 示例)。

適用場景與注意

適合長期在 web profile 下用 DSH 做編碼、發行、多輪工具調用,且關心對話是否被阻塞等待佔住、後臺任務是否在沙箱裏被誤判、憑據是否進入模型上下文的開發者。

安裝前建議閱讀倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,secret-files 等會改變沙箱內可見文件範圍,開啓 git 組等選項前需理解對 gh/推送的影響。DSH 升到 0.3 前需等插件更新 engines 聲明;ask-nonblocking 等對內部 API 的依賴可能在 DSH 小版本升級後失效(文檔說明會退回阻塞提問,不阻斷任務)。

社區目錄頁 skillhub.cn/plugins/herenfor/dsh-runtime-tuning 與 GitHub 無 DeepSeek / 幻方官方從屬關係,屬 DSH「一切皆插件」生態中的第三方條目。

結尾

dsh-runtime-tuning 把長會話裏測到的時間浪費和機制缺口,落成一組可安裝的 runtime 插件:強制非阻塞等待策略、憑據與沙箱隔離、會話級 /tmp 與文件 edit 便利、流卡住與網絡失敗可觀測,並用真實數據說明「不佔住對話」與「更快完成」的區別。完整配置項、日誌字段與 chat-answer-fix 衝突說明見倉庫 docs/configuration.md。

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

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

小夜