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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye