在 DeepSeek Harness (dsh) 的使用過程中,經常需要在執行主任務時穿插一個“側邊問題”(例如:“剛纔那個函數名是什麼來着?”)。如果在主對話中直接提問,模型會處理這條消息,消耗 token,並污染上下文窗口。
dsh-btw 插件提供了一個 /btw 命令,用於在不干擾主對話的情況下,詢問具備上下文感知能力的問題,答案直接渲染在 UI 中,且不消耗主會話的 token 和前綴緩存。
核心功能¶
- /btw 側邊命令:提供
/btw斜槓命令,專用於非核心對話的提問。 - 隔離執行:提問和回答不會成爲主會話中的模型消息,主會話的日誌僅記錄
command/run和command/done對,token 使用量爲 0。 - 上下文感知:默認使用
fork提供者作爲一次性子代理,繼承主會話已完成輪次的上下文。 - UI 直接渲染:子代理的可見文本塊直接返回並顯示在用戶界面。
- 資源保護:主會話的前綴緩存保持 untouched 狀態。
安裝與啓用¶
安裝前需確保已安裝 DeepSeek Harness (npx @deepseek-ai/dsh),並運行環境滿足 Node.js >= 20。
通過 NPM 安裝(推薦)¶
NPM 提供預構建版本,無需構建權限即可安裝:
dsh plugin --profile web add dsh-btw
通過 GitHub 安裝¶
從 GitHub 安裝需要運行包的 prepare 構建腳本。對於 pnpm >= 10,需要在配置文件中允許構建:
- 在
pnpm-workspace.yaml中添加:
allowBuilds:
dsh-btw: true
- 重新運行安裝命令:
dsh plugin --profile web add github:<your-github-name>/dsh-btw
配置要求¶
安裝後,cordis.patch.yml 文件中必須包含該插件的配置塊,否則插件加載會因未知鍵而中止。
典型用法¶
在主對話中輸入 /btw,後接問題:
/btw what's the difference between Drop and DropImpl again?
插件會啓動一個一次性子代理來回答該問題,結果直接顯示在界面上,主對話流保持原狀。
配置項¶
在 cordis.patch.yml 的插件行中添加 config 塊:
- insert:
- id: btw
name: dsh-btw
config:
provider: fork # fork (默認) | spawn
persona: terse # 可選的子代理人設
| 配置項 | 默認值 | 說明 |
|---|---|---|
provider |
fork |
fork 會將主會話已完成輪次的 prefix 注入子代理,實現上下文感知回答;spawn 啓動完全隔離的子代理。 |
persona |
— | 應用於子代理的可選人設(需由 fork/spawn 提供者支持)。 |
注意事項¶
- 運行權限:插件以當前 dsh 進程權限運行。從 GitHub 安裝前,請檢查源碼與許可證。
- Node 版本:必須使用 Node.js >= 20。
- 預構建依賴:通過 NPM 安裝預構建版本不需要構建權限。
總結¶
dsh-btw 解決了開發者在 DSH 中處理側邊查詢時的上下文污染和 token 浪費問題。它通過一次性子代理機制,確保主會話的純淨與高效。
- 插件目錄: https://www.skillhub.cn/plugins/136155330/dsh-btw
- 源碼地址: https://github.com/136155330/dsh-btw