前言¶
開發 DeepSeek Harness 插件時,排查會話事件、交付卡片、profile 配置的時間往往比寫插件本身還多。想快速演示一遍「任務被接受 → 軌跡展示 → 回合尾部出現交付物 → 產物被清理」的鏈路,又不想真的等模型跑完、不想真的寫文件,阿里斯托 Suki 的社區插件 dsh-not-token-killer 做的就是這件事。
下面介紹的是一個模擬執行 / 趣味演示插件,GitHub 倉庫與插件包名均爲 dsh-not-token-killer,由社區用戶 ArchettoSuki 維護,MIT 許可,在社區目錄中被歸入「工作流」分類,發佈在 https://www.skillhub.cn/plugins/ArchettoSuki/dsh-not-token-killer 。它不是官方插件,也不承諾任何真實產出:生成的是 SIMULATED 軌跡和 0 字節佔位文件,適合用來演示插件生命週期或爲截圖、錄屏構造場景,不適合需要真實結果的工作。倉庫首頁的 WARNING 已經寫明這一點。
是什麼樣的插件¶
插件顯示名稱 Token-Reducer?,顯示簡介是「通過不真實執行任務,直接生成完成文本及虛假文件以減少token消耗」,圖標爲 icon.jpg。它的作用是攔截 agent-loop 的 llm/stream,返回一段純文本合成流,同時生成若干條 thought / tool_call 展示記錄,在會話工作目錄創建一個 0 字節文件,並通過 Harness 原生的 deliverables/presented 事件把文件掛到回合尾部。文件內容不嵌入完成文本。
核心機制有三點,決定了它在都會話裏的實際表現:
- 不調用真實模型:攔截的是合成流,不向真實 provider 發起請求。
- 不調用真實工具:展示用的工具步驟是
plugin:dsh-not-token-killer/step日誌,不是tool/call,不進入ctx.tools,沒有真實 dispatch 路徑。 - 只創建空文件:使用
open(..., 'wx')原子創建,目標已存在時遞增名稱;輸出結束後約 2 秒刪除產物,刪除前重新校驗目錄、普通文件、0 字節與dev/ino/birthtimeMs,身份不一致就跳過。
實際驗收環境是 DeepSeek Harness 0.2.1-rc.2(@deepseek-ai/dsh-desktop-runtime,Node.js 24.21.0)。插件直接依賴插件 API 與事件名,這些接口不屬於穩定協議,其它版本未經驗證。插件版本 2.0.8,倉庫首個公開發布版本 0.1.0。
舊包名 dsh-token-killer 已棄用,升級時需要先移除舊 bundle。
安裝與啓用¶
前置條件:DeepSeek Harness 桌面版;一個具有 Full access 的 DSH 會話,因爲安裝 bundle 需要寫 profile 配置。
獲取代碼:
git clone https://github.com/ArchettoSuki/dsh-not-token-killer.git
也可以在倉庫頁面選 Code → Download ZIP 後解壓。倉庫沒有構建步驟,也不需要 npm install:它是本地 private 包,沒有 install script,沒有 npm 運行時依賴。
安裝到 DeepSeek Harness,在具有 Full access 的會話中執行:
plugin_manager install_bundle <倉庫目錄的絕對路徑>
Windows 示例:
plugin_manager install_bundle C:\path\to\dsh-not-token-killer
安裝後打開「設置 → 通用」,應能看到 Token-Reducer? 開關。驗證安裝的三步與使用示例一致:看到開關、發送一個任務後出現帶 SIMULATED 標記的軌跡和交付卡片、約 2 秒後產物被清理。
卸載:
plugin_manager remove_bundle dsh-not-token-killer
從舊包升級時:
plugin_manager remove_bundle dsh-token-killer
然後禁用再啓用一次插件,確保舊的 entry fiber 被釋放。
典型用法¶
在插件工作目錄中輸入類似下面的任務:
把上季度銷售數據整理成一份 Excel 報表
插件會判定爲任務,推斷格式 .xlsx、複雜度 medium;寫入若干條帶 SIMULATED 標記的 thought / tool_call 軌跡;創建 0 字節文件 季度復盤(大肥魚偷懶版).xlsx;通過 deliverables/presented 顯示交付卡片;約 2 秒後刪除文件並寫入 cleanup 記錄。
回合結束時的文本形如:
## ✅ 任務已完成:{任務標題}
{任務分析與可行做法的長段落}
——共進行了0次思考,調用工具0次,實際上也沒有完成任務(`・ω・´)
——輸出文件:`{絕對路徑}`(忘寫文件內容了(⁄ ⁄•⁄ω⁄• ⁄ ⁄))
——本輪對話新消耗:{tokens} token
幾個邊界行爲:
- 輸入「幫我寫一個函數」判定爲任務,推斷
.js,產物名形如…(大肥魚偷懶版).js。 - 輸入「你好」這類非任務輸入不觸發插件,走真實模型回覆,這是刻意的 fail-closed 設計。
- 關閉「設置 → 通用 → Token-Reducer?」後,Host 不再註冊任務鉤子,任務回到真實模型與真實工具。
配置要點¶
默認配置中,只有 enabled 有 UI 入口,其餘均爲行爲契約字段:
| 字段 | 默認值 | 說明 |
|---|---|---|
enabled |
true |
全局開關,唯一有 UI 入口的字段 |
max_thought_chars |
120 |
單條 thought 展示文本上限,取值 20–120 |
max_tool_args_chars |
80 |
模擬工具參數字符串上限,取值 20–80 |
simple_step_cap |
4 |
simple 任務步數上限 |
medium_step_cap |
6 |
medium 任務步數上限 |
complex_step_cap |
8 |
complex 任務步數上限 |
hard_step_cap |
10 |
全局硬上限,任何配置都不能超過 |
default_step_cap |
6 |
無法確定等級時的步數上限 |
步數預算只作爲上限,規劃器從 2 / 4 / 6 個有意義步驟開始,按等級截斷,不爲填滿預算製造無意義步驟;force_fill_to_budget: true 會被拒絕。把固定安全字段改成不支持的值時,Host 直接關閉插件行爲,而不是放寬契約。修改非 enabled 字段需要編輯 bundle 行配置並重載 profile。
適用場景與注意¶
適合的場景:驗證 Harness 的插件生命週期、會話事件、交付卡片渲染;爲截圖、錄屏構造一個「任務完成」的界面;瞭解 llm/stream 攔截、ignorable 日誌記錄這類接管方式。不適合需要真實產出的場合。
需要注意的幾點:
- 插件以當前 dsh 進程權限運行,安裝前應對源碼、
cordis.patch.yml與許可證做一次審查,確認權限需求與自身環境相符。 .docx/.xlsx/.pptx產物是空文件,不保證是合法或可打開的容器。- 所有模擬軌跡帶
SIMULATED徽標和simulated: true元數據,插件記錄爲ignorable的 log-only 事件,不進入模型上下文、Session.surface、deriveMessages()、compaction 或 provider 請求。 - 文件創建或交付失敗時,插件刪除已創建文件、不寫 delivery 事件並輸出降級說明,不聲稱完成。
- 該插件爲社區非官方插件,分類爲工作流,星標爲 0,變化的風險由使用者自己承擔。
小結¶
dsh-not-token-killer 的價值不在於減少 token,而在於把「模擬執行」這件事做得足夠可控:不觸真實模型、不觸工具、不覆蓋文件、不污染上下文,並留下可審計的記錄。它更像一個行爲邊界清楚的演示件,適合理解 Harness 插件機制時作爲觀察樣本。
目錄頁:https://www.skillhub.cn/plugins/ArchettoSuki/dsh-not-token-killer
倉庫:https://github.com/ArchettoSuki/dsh-not-token-killer