前言¶
在 DeepSeek Harness(DSH)裏跑長會話時,每一輪請求往往都會重發系統提示、工具定義、技能與 MCP 說明,再加上其他插件注入的運行時上下文;會話歷史也會持續擠佔上下文窗口。只看 DSH 自帶的窗口占用,很難判斷「慢」和「滿」究竟是歷史消息堆積,還是每輪固定開銷過大。
已有插件例如 dsh-context 更側重跨會話查看上下文構成與演變;dsh-context-control 把方向落在「先看清 token 花在哪,再決定這一輪發什麼」——在不動日誌、不改插件源碼的前提下,只改下一次請求的裝配結果。
這是什麼¶
dsh-context-control 是 creatjy 維護的 DSH 工作流類插件:看清 token 構成,按會話懶加載技能 / MCP / 插件,並在需要時壓縮會話。它不改動 DSH 日誌,也不改其他插件源碼;開關與文本改寫都只作用於下一次請求的裝配,可隨時還原。
- 目錄頁:https://www.skillhub.cn/plugins/creatjy/dsh-context-control
- 源碼:https://github.com/creatjy/dsh-context-control
- 許可證:MIT(README 與 package.json 一致)
- 當前 package 版本:0.6.8
兩個入口分別解決什麼問題¶
插件在 Web GUI 提供兩處入口,對應「全局請求構成」與「當前會話」兩類問題。
| 入口 | 回答的問題 | 能做什麼 |
|---|---|---|
| 左側「上下文管控」配置臺 | 整個請求由什麼組成? | 按系統提示 / 運行時注入 / 工具定義拆 token;逐段開關、編輯、還原;配置項目與全局規則。 |
| 輸入框左側的「上下文」膠囊 | 這條會話佔多少?下一輪還會發什麼? | 看當前窗口、每次重發、下一輪預計;按會話切換技能 / MCP / 插件檔位;開關提示段與工具;立即壓縮或設置自動壓縮。 |
配置臺頂部有三段比例尺(系統內容 / 運行時注入 / 工具定義),下面按「構成 / 項目 / 全局」組織:構成展示當前項目實際會發出的全部內容;項目定義工作區規則並可被子項目繼承;全局爲所有項目共享的默認值。
膠囊與 DSH 上下文統計同口徑,展開後可見三層數字:當前窗口(會話已佔用)、每次重發 ≈(下一輪還會再發的系統提示與工具定義,已扣本會話隱藏項)、下一輪預計 ≈(兩者相加的粗估)。
核心能力¶
請求側與會話側分開覈算¶
DSH 的上下文佔用由兩部分組成:
- 請求側(每輪重發):系統提示段、運行時注入、技能說明、工具定義。
- 會話側(窗口內累積):用戶消息、助手消息、工具調用與結果。
插件分列展示;請求側按來源分組並帶 ≈token、預覽與開關;會話側讀取 DSH 的 tokenMeter,「會話已累積」與膠囊、DSH 當前窗口一致。
逐段編輯系統提示與運行時注入¶
與「只看統計」的工具相比,本插件可以改這一輪實際發送的內容。
在配置臺「構成」中:
- 系統提示段(sections):段名、來源、預覽、≈token;可開關、編輯文本、還原;作用域爲全局 / 項目 / 本會話。
- 運行時注入(contexts):其他插件或宿主在請求前塞進上下文的內容;可單獨關閉或改寫後再發;作用域爲全局 / 項目。
- 工具定義(tools):僅支持開關,不能改 schema 文本;作用域爲全局 / 項目 / 本會話。
- 技能 / MCP / 插件:支持加載 / 簡介 / 隱藏三檔;作用域爲全局 / 項目 / 本會話。
編輯保存後只寫入本地規則,下一次裝配時用你的文本替換對應段;點「還原」可回到宿主或插件生成的原文。將某能力設爲「隱藏」會連帶去掉其工具定義與相關提示段。
工具開關通過 agent.ctx.tools.restrict({ deny }) 等機制限制;全關工具後模型確實無工具可用,界面會提示但不會強制攔截。
技能 / MCP / 插件:三檔懶加載(本會話)¶
| 檔位 | 這一輪發什麼 | 模型調用時 |
|---|---|---|
| 加載 | 正文與工具定義均在 | 正常調用 |
| 簡介 | 只留一行說明,正文與工具不發 | 自動恢復完整內容 |
| 隱藏 | 連簡介也不發 | 先彈審批;拒絕則調用失敗 |
三檔默認作用於本會話;行內標「本會話」,回退可重新點選檔位。同一能力在多個頁面出現時,關聯的說明段與工具會同步;優先級從低到高爲:全局 → 項目繼承鏈 → 項目覆蓋 → 本會話覆蓋。
系統提示段與系統工具無「簡介」檔,僅有加載 / 不加載。
會話內壓縮¶
- 立即壓縮:宿主暴露壓縮服務時,由 DSH 選擇可壓縮區間並摺疊歷史;本輪仍在運行時會排隊。
- 自動壓縮:窗口占用達到設定比例(5%–95%)後,在空閒時執行。
- 無壓縮服務時:按鈕變爲「發送壓縮指令」,以 steer 方式讓模型就地摺疊,不硬改會話日誌,可回滾。
AI 建議(0.6.0 起,默認關閉)¶
在配置臺或膠囊中手動觸發後,纔將當前作用域的條目元數據交給當前會話模型,生成帶 reason / confidence / risk / 預計少發 的建議;需先預覽、勾選再「應用選中」,可撤銷。首次啓用會說明隱私範圍:發送條目名稱、類型、token 數,不發送會話正文。基礎能力(文件讀寫、shell、壓縮、上下文管控自身等)受保護,只允許保留或簡介。
數據存放與邊界¶
規則寫在本地 <DSH_PROFILE_DIR>/dsh-context-control/modes.json,純 JSON,可手改;刪除該文件即恢復默認。帶 ≈ 的數爲估算,真實會話側以計量器爲準。壓縮是否可用取決於當前 DSH profile 是否暴露壓縮服務。README 註明驗證環境爲 macOS,其他系統可能存在差異。
安裝與啓用¶
從 GitHub 直裝(README 原文):
dsh plugin add github:creatjy/dsh-context-control
或下載 Release 中的 tarball,例如 0.6.8:
dsh plugin add ./dsh-context-control-0.6.8.tgz
也可通過 GitHub Packages(npm 包名 @creatjy/dsh-context-control),需先對 https://npm.pkg.github.com 完成 npm 認證後再執行:
npm login --scope=@creatjy --auth-type=legacy --registry=https://npm.pkg.github.com
npm config set @creatjy:registry https://npm.pkg.github.com
dsh plugin add @creatjy/dsh-context-control
安裝後重啓 DSH,並刷新 Web GUI。左欄應出現「上下文管控」,輸入框左側出現類似 上下文 12.7k ▾ 的膠囊。
插件以當前 dsh 進程權限運行,安裝前請自行查閱源碼與 MIT 許可證,確認是否符合你的環境與安全要求。
典型用法¶
README 中給出的可復現場景如下:
- 長會話越跑越慢:打開膠囊,將暫不需要的 MCP / 插件設爲「簡介」或「隱藏」,再點「立即壓縮」。
- 某個插件注入過多:配置臺 →「構成」→「運行時注入」,找到來源後關閉;若要保留結構,可「編輯」壓成一句話。
- 系統提示過長:在「系統提示」裏按段查看
≈token,改寫爲本項目需要的規則,或關閉不用的工具說明段。 - 減少重複手工調整:在項目層設一套默認規則,會話內只覆蓋當前需要的幾項。
適用場景與注意¶
適合經常在 DSH 中開長會話、裝多個技能 / MCP / 插件,且希望區分「每輪固定開銷」與「歷史佔用」的開發者。若需要跨會話深挖上下文演變,可配合 dsh-context 使用。
「隱藏」能力依賴審批;若全局關閉審批,隱藏項調用會直接失敗。插件不額外上傳會話內容,token 統計在本地完成。DSH 生態以「一切皆插件」爲理念;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-context-control 把請求裝配與會話佔用拆開呈現,並在配置臺與會話膠囊裏完成開關、編輯、懶加載與壓縮,目標是讓你在發下一輪之前就能看清 token 構成並做裁剪。
- 社區目錄:https://www.skillhub.cn/plugins/creatjy/dsh-context-control
- GitHub:https://github.com/creatjy/dsh-context-control