前言¶
在 DeepSeek Harness(DSH)裏裝插件,生效範圍是進程級:進 profile 之後,每個會話都會共享同一套已裝插件和它註冊的工具、UI 與後臺行爲。做實驗、試陌生插件或跑高風險命令時,如果直接在主工作區開對話,工具和記憶相關能力往往會一併可用,會話也會走正常的歸檔流程。
下面介紹社區插件 dsh-quarantine(維護者 Thanjinx,分類 admin-security)。它在同一 DSH 進程內另開一個工作區目錄當「隔離區」:對話默認只見白名單工具,不進歸檔,只能從磁盤徹底刪除。需要與主環境完全隔離時,仍應另起獨立 DSH_HOME 實例;本插件走的是同進程、按工作區路徑區分的路線。
這是什麼¶
dsh-quarantine 是給 DSH 用的隔離區工作區插件。裝上後,側邊欄底部會出現「隔離區」入口,設置裏會出現「隔離區」配置頁。
核心目標可以概括爲三點:
- 隔離區會話裏,除放行名單外,已裝插件在全局註冊的工具對模型不可見,執行層另有 guard 兜底;
- 隔離區對話不進入歸檔,會話菜單裏的「歸檔」被替換爲「徹底刪除」;
- 刪除會摘掉登記、移除
sessions/下對應目錄,並清理投影緩存,而不是進歸檔列表。
核心功能與邊界¶
已做到的能力¶
| 需求 | 手段(摘自插件說明) |
|---|---|
| 獨立工作區 | 按會話 cwd 是否位於隔離區目錄下判定 |
| 不用已裝插件的工具 | tools.restrict({ deny }) 遮蔽全局工具 + tools.guard 執行層兜底 |
| 插件不自動寫記憶(模型側) | mnemon_* 等工具既不可見也調不動 |
| 不進歸檔 | 覆蓋會話「…」菜單與行尾按鈕的 archive |
| 直接刪除對話 | 摘登記 → 刪會話目錄 → 清投影緩存 |
默認放行的基礎能力包括官方基礎工具,以及 dsh-ops 的 ops_*;具體名單以設置頁與 lib/settings.js 爲準。可通過配置剔除提示段落(默認剔除名稱包含 mnemon、persona 的段落)。
明確做不到的事¶
同進程前提下,插件無法按會話隱藏其它已裝插件的面板圖標、皮膚、寵物等全局 UI,也攔不住不經過工具的後臺寫盤(例如成本賬本、定時任務)。若將來有工具註冊在 agent preset 作用域裏,restrict 遮不住其可見性,但隔離區 agent 執行時仍會被 guard 拒絕。
安裝與啓用¶
插件提供兩種安裝方式,均需使用本倉庫的絕對路徑(不要用憑名稱拼出來的 github:owner/repo 命令代替文檔原文)。
# 方式一:在 DSH 裏讓 agent 調 plugin_manager
# action: install_bundle
# target: <本倉庫的絕對路徑>
# 方式二:CLI
dsh plugin --profile desktop add <本倉庫的絕對路徑>
裝完無需重啓:側邊欄底部會出現「隔離區」入口,設置裏會出現「隔離區」頁。安裝前請自行閱讀倉庫源碼與許可證(MIT);插件以當前 DSH 進程權限運行。
環境要求:package.json 標明 Node >=22.13.0。
典型用法¶
- 點側邊欄底部的「隔離區」圖標,或打開 設置 → 隔離區;
- 在面板裏點「新建對話」,第一次會自動創建隔離區目錄和工作區;
- 隔離區裏的對話,在會話「…」菜單和行尾懸停按鈕裏只有「徹底刪除」;
- 「清空全部」會逐個刪除;正在運行的會話會被跳過並報告。
刪除運行中的會話會被拒絕,需先停止會話。若刪除當前正打開的會話,側邊欄可能暫留一行,需刷新頁面或重啓 DSH 後消失;先切換到其它會話再刪可避免。
配置¶
設置頁會把配置寫入 <DSH_HOME>/dsh-quarantine.json(Windows 默認 C:\Users\<你>\.dsh\dsh-quarantine.json)。
| 字段 | 默認值 | 說明 |
|---|---|---|
root |
D:\dshworking\quarantine |
隔離區目錄,必須是絕對路徑 |
title |
隔離區 |
工作區顯示名 |
allowedTools |
見 lib/settings.js |
放行名單;名單外的全局工具一律禁止 |
stripPluginContext |
true |
是否剔除提示段落 |
stripNames |
["mnemon", "persona"] |
按段落名「包含」匹配剔除 |
設置頁的「插件工具」列表展示的是已裝插件在全局註冊的工具,默認全部不勾選;勾選即放行。
排查問題可查看 <DSH_HOME>/dsh-quarantine.log;設置頁通過 /dsh-quarantine 的 status 也可看到近期 agent 的 policy 診斷信息。
適用場景與注意¶
適合:在同一臺機器、同一 DSH 桌面 profile 下做插件試用、腳本探測、需要「能刪乾淨、不進歸檔」的臨時對話,又不想爲每次實驗單獨起一套 DSH。
注意:
- 這是同進程隔離,不是虛擬機或獨立 DSH 實例;對 UI 與後臺寫盤的限制見上文邊界表。
- 社區目錄 SkillHub 插件頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方從屬關係。
- 修改宿主代碼後需重新激活 bundle(關掉再打開或重啓 DSH);改客戶端 bundle 後需 DSH 重新掃描並刷新頁面。開發時可用
node --check檢查各 JS 文件語法。
結尾¶
dsh-quarantine 用獨立工作區路徑 + 工具白名單 + 刪除與歸檔策略覆蓋,把「實驗對話」從主環境裏拆出來,同時保留在熟悉的一套 DSH 裏操作。
- 目錄頁:https://www.skillhub.cn/plugins/Thanjinx/dsh-quarantine
- 源碼與完整說明:https://github.com/Thanjinx/dsh-quarantine