dsh-turn-eta:在 DSH 對話頭部看本輪耗時、token 與費用預估

前言

在 DSH(DeepSeek Harness)裏跑長任務時,比較常見的困惑是兩類:一是這一輪到底跑了多久、燒了多少 token,界面上看不到;二是發出去之前,不知道這一輪大概會產出多少 token、折算多少錢、要等多久。前者是事後復盤缺數據,後者是發之前沒法做判斷。

dsh-turn-eta 針對這兩個點做了一件事:對話頭部實時顯示本輪耗時、token、速度與剩餘時間倒計時,輸入框上方在發送前給出產出 token、費用(≈¥)與預計耗時的預估。下面介紹這個插件的定位、安裝、配置和用法。

這是什麼

dsh-turn-eta 是一個 DeepSeek Harness 插件,目錄頁在 https://www.skillhub.cn/plugins/2370998716-jpg/dsh-turn-eta ,源碼在 https://github.com/2370998716-jpg/dsh-turn-eta ,維護者爲 2370998716-jpg,package.json 裏的 author 是 zuo,許可證爲 MIT。倉庫 version 是 1.1.3,分類屬於模型推理。

它解決的只是一件事:把每一輪的真實耗時和大致產出暴露到界面上,讓你在等結果的時候有數字可看,而不是乾等。

核心功能

插件把信息放在兩個位置,都是純文字,沒有進度條、沒有動效。

1、對話頭部:本輪已耗時、已產出 token、速度(tok/s)、是否正在跑工具,以及一個剩餘時間倒計時。倒計時只用一個規則:只減不增。

2、輸入框上方:發送前預估這一輪大概產出的 token 數、按單價折算的費用(默認 ≈¥)和預計耗時。

默認內置單價,所以機器上沒裝 cost-meter 插件也能顯示 ≈¥。裝了 cost-meter 時,插件會優先讀它的真實賬單單價(見下文「價格來源優先級」)。

裝完後,打開任意對話,頭部應出現類似:

⏱ 0:03 · 120 tok · 60 tok/s · 估約 1:37

輸入框上方應出現類似:

⚖ 預計 3.2k tok 產出 · 上下文 60k · ≈¥0.016 · ~0:22

注意:第一條消息發出去之後,單輪統計纔開始累計;歷史輪次越多,預估越準。

安裝與啓用

需要 Node.js ≥ 22.19(DSH 自帶,一般不用管)。三種方式選一種。

方式一,從倉庫直接裝,最穩。<profile> 換成你正在用的 profile,桌面版一般是 desktop,Web 版是 web:

dsh plugin --profile <profile> add git+https://github.com/2370998716-jpg/dsh-turn-eta.git

Windows 上如果 dsh 不在 PATH 裏,用完整路徑(把 <你> 換成當前用戶):

cmd /c ""C:\Users\<你>\AppData\Local\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add git+https://github.com/2370998716-jpg/dsh-turn-eta.git"

方式二,從本地文件夾裝。先把整個倉庫文件夾放到任意位置(路徑別帶奇怪的符號),然後在終端執行:

dsh plugin --profile <profile> add "<上面那個文件夾的絕對路徑>"

方式三,從自定義索引源裝,前提是你的 DSH 有「發現」頁。DSH 0.2.1 起,插件頁如果有「發現」標籤,可以在索引源裏添加:

https://raw.githubusercontent.com/2370998716-jpg/dsh-turn-eta/main/index.json

列表裏會出現「輪次耗時與費用預估」。沒有「發現」標籤的裝法直接用方式一。

裝完之後必須完全退出 DSH 再打開(不是刷新頁面)。宿主側代碼只在啓動時加載,不重啓看不到 ≈¥。

卸載命令:

dsh plugin --profile <profile> remove dsh-turn-eta

同樣需要重啓 DSH。

典型用法:改價格、換模型

默認按 DeepSeek 的 token 單價(美元/百萬 token),緩存未命中、緩存命中、輸出三檔。高峯時段(UTC 1–4 點、6–10 點,即北京 9–12、14–18 點,僅週一至週五且非節假日)價格翻倍。峯谷按 UTC 窗口判斷,周幾和節假日按北京時間算。

想改價格或換模型,新建配置文件(Windows 對應 C:\Users\<你>\.dsh\storages\dsh-turn-eta\config.json):

{
  "model": "deepseek-flash",
  "currency": "CNY",
  "symbol": "¥",
  "exchangeRate": 7.2,
  "peakEnabled": true,
  "peakWindows": [{ "start": 1, "end": 4 }, { "start": 6, "end": 10 }],
  "prices": { "cacheMiss": 0.15, "cacheHit": 0.003, "output": 0.6 }
}

配置規則:

1、prices 可以直接寫上面這種扁平單價,也可以寫完整結構 { "models": { "deepseek-flash": { "cacheMiss": …, "cacheHit": …, "output": …, "peak": { … } } } }。
2、只寫想改的字段就行,沒寫的自動落回默認值。
3、改完不用重啓,最多等 60 秒(價格有 1 分鐘緩存)。

價格來源的優先級是:config.json 覆蓋 → ~/.dsh/storages/cost-meter/ledger.json(裝了 cost-meter 時會讀它的真實賬單單價)→ 內置默認。所以裝了 cost-meter 的機器會自動用真實單價,沒裝的機器用內置單價。

環境變量 DSH_TURN_ETA_MODEL 可以臨時指定用哪個模型的單價表,不必改配置文件。

數字是怎麼算的

這部分決定你能不能放心用這些數字。

  • 倒計時:用「這一輪大概產出多少 token」的歷史中位數,再按當前速度折算。同一輪內目標值會鎖死,所以數字只會往下走,工具跑久了也不會往回跳。
  • 改口機制:跑超預估時分三段。中位數以內顯示「估約」;跑過中位數但仍在歷史 p75 以內,改成「最多約」——這是上界而不是新的中位數,每輪只改口一次;真越過 p75 才顯示「超預估」,這時數字直接消失,不再編新數。README 說明裏那句「寧可先說最多約」就是這個意思。
  • 掛機不算數:某一輪牆鍾時間遠大於真實幹活時間(模型 + 工具,超過 2 倍且多 20 秒)時,按真實幹活時間記樣本,避免一次掛機把之後所有預估拉長。單個離羣樣本會被壓回中位數的 8 倍以內。
  • 歷史區間:鼠標懸停頭部可以看到 p25–p75 的歷史區間,頭部本身只顯示一個乾淨的數。
  • 歷史存儲:存在 ~/.dsh/storages/dsh-turn-eta/history.json,刪掉就重新開始學習。

適用場景與注意

適合兩類人:一是經常跑長任務、需要事後復盤單輪 token 與耗時的智能體開發者;二是想在發消息前判斷這一輪大概花多少錢、等多久的人。

需要注意幾點:

1、插件以當前 DSH 進程的權限運行。安裝前應當先檢查源碼與許可證(MIT),尤其是從本地文件夾或第三方索引源裝入時。
2、插件用歷史中位數做預估,冷啓動時只有第一條消息之後纔有樣本,早期數字參考意義有限。
3、倒計時只在同一個 turn 內鎖死目標值,不預測工具本身還要跑多久,工具卡住時它不會變。
4、配置文件路徑是 ~/.dsh/storages/dsh-turn-eta/config.json,改錯字段會落到默認值,不會報錯。

結尾

dsh-turn-eta 的價值在於把單輪的耗時、token 和費用從「不清楚」變成「看得見、估得出」:頭部看實時進度,輸入框上方看發送前的預估,歷史區間可以懸停查看。默認單價內置,不依賴額外插件。

  • 目錄頁:https://www.skillhub.cn/plugins/2370998716-jpg/dsh-turn-eta
  • GitHub:https://github.com/2370998716-jpg/dsh-turn-eta
  • Issue:https://github.com/2370998716-jpg/dsh-turn-eta/issues

反饋可以直接發郵件給 2370998716@qq.com,寫清「DSH 版本 + 你在哪個界面看到的什麼數字不對」即可。

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

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

小夜