前言¶
在 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