dsh-quarantine:在 DSH 裏單獨開一塊隔離工作區

前言

在 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。

典型用法

  1. 點側邊欄底部的「隔離區」圖標,或打開 設置 → 隔離區;
  2. 在面板裏點「新建對話」,第一次會自動創建隔離區目錄和工作區;
  3. 隔離區裏的對話,在會話「…」菜單和行尾懸停按鈕裏只有「徹底刪除」;
  4. 「清空全部」會逐個刪除;正在運行的會話會被跳過並報告。

刪除運行中的會話會被拒絕,需先停止會話。若刪除當前正打開的會話,側邊欄可能暫留一行,需刷新頁面或重啓 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
羽毛球分组比赛记分
小程序二维码

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

小夜