dsh-plugin-context-trim:DeepSeek Harness 會話級上下文注入門控

前言

DeepSeek Harness (DSH) 生態遵循“一切皆插件”的理念。在開發或使用過程中,一個常見問題是:插件開發知識庫在純聊天場景下無意義,而生圖工具在代碼編寫場景下顯得多餘。所有插件默認向模型注入所有能力,導致上下文窗口被大量無關信息佔用。dsh-plugin-context-trim 插件旨在解決這一問題,它提供會話級的注入門控,允許用戶按會話裁剪注入模型的 skill、tool 以及系統提示詞段落。

核心功能

本插件通過“影子條目”機制實現會話級裁剪,不污染全局註冊表。主要功能包括:

  • 按會話裁剪 skill:對同名影子技能設置 modelInvocable:false,使模型在調用時無法看到該技能。
  • 按會話裁剪 tool / MCP 工具:通過 tools.restrict({ deny }) 隱藏特定工具,未知名工具自動跳過。
  • 按會話裁剪提示詞段落:創建同名空文本 section 或 context,渲染層自動丟棄,無法歸屬插件的段落默認鎖定。
  • 樹表彈窗:提供按插件聚合的視圖,支持組行批量設置、三態勾選,且可拖動/縮放。
  • 關鍵能力保護:文件讀寫、控制台、技能總閘等關鍵能力帶警告標識,取消需二次確認。
  • 會話鎖定與強制更改:會話一旦開始(落盤 ≥1 步)即鎖定,防止運行中修改;支持“強制更改”熱生效。
  • 新會話默認模板:支持將當前裁剪方案保存爲工作區默認模板,新會話自動套用。
  • 狀態點:通過顏色標識會話狀態(綠=全量、橙=有裁剪、灰鎖=已鎖定)。

安裝

安裝過程無需任何配置。使用官方提供的命令即可完成掛載:

dsh plugin --profile web add dsh-plugin-context-trim

安裝完成後,需重啓 dsh launcher 並刷新瀏覽器。插件會自動應用 cordis.patch.yml 掛載行,無需手動修改配置。

使用

啓用裁剪功能的操作步驟如下:

  1. 新建一個會話,點擊輸入欄左下角的漏斗按鈕(標記爲“注入”)。
  2. 彈出的樹表視圖列出了所有能影響模型上下文的插件。展開不想注入的插件組,點擊組行的勾選框進行批量取消。
  3. 底部會實時顯示已裁剪項數及預計減少的字符數。
  4. 點擊「應用」,本會話立即生效,模型上下文中不再出現被裁剪的內容。
  5. 點擊「存爲默認」,可將當前勾選狀態保存爲該工作區新會話的默認模板。

實現機制

插件在 agent 作用域層疊加同名“影子條目”來壓制全局原條目。註冊表裏的原條目保持不變,僅在當前 agent 的生命週期內生效。

  • Skill:註冊同名影子技能,設置 modelInvocable:false,使 <available_skills> 目錄消失,且按名加載該 skill 被拒絕。
  • Tool / MCP:調用 agent.ctx.tools.restrict({ deny:[name] }) 逐工具隱藏。
  • 提示詞段落:調用 agent.ctx.systemPrompt.section(同名, text:'') 創建空文本段落,渲染層會自動丟棄。

這種機制保證了零殘留、零跨會話影響。重複應用時,會先 dispose 上一代再重建,確保冪等性。

兼容性與限制

  • 目標版本:DeepSeek Harness 0.1.2-rc.1。
  • 運行環境:Node.js ≥ 18,純插件實現,不改核心包。
  • 數據存儲:零配置,數據自動持久化在 $DSH_HOME/dsh-plugin-context-trim。
  • 安全限制:HTTP 路由僅接受本機迴環來源(remoteAddress 爲空一律拒絕),校驗 Host 頭僅允許 127.0.0.1/localhost 且端口匹配,請求體上限 2MB。

注意事項

  • 歷史消息:會話中途裁剪後,歷史消息中的舊目錄內容仍會保留,模型以最新目錄爲準。
  • MCP 競態:MCP server 重連後新增的工具可能暫時不受門控,需手動處理。
  • 動態插件:動態 cordis 插件(cordis_run)的 scoped 工具不受 restrict 約束。

結語

dsh-plugin-context-trim 是 DeepSeek Harness 生態中第一個按會話裁剪上下文注入的插件。通過簡單的 UI 操作,開發者可以在不修改核心包的情況下,精確控制每個會話接收到的信息,有效優化上下文窗口利用率。

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

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

小夜