dsh-isolation-pod:在主会话之外跑沙箱隔离任务

前言

在 DSH 里让智能体改代码、跑命令时,常见做法是直接在主会话里开沙箱或靠提示词约束。主会话的消息流、模型上下文会一路带上任务过程;若要把结果写回主会话,往往也是自动注入。对需要「主会话保持干净、结果与文件出口都由人点头」的场景,这类默认行为不够稳。

下面介绍社区插件 dsh-isolation-pod(维护者 Teow9,分类 admin-security):在 DSH 主会话之外启动受沙箱约束的隔离任务,主会话默认完全无感;结果返回与文件导出均需手动确认。

这是什么

隔离舱(Isolation Pod) 是 DeepSeek Harness(DSH)的 Cordis 插件,当前版本 v0.2.0(MIT 许可)。形态为 Rust 侧车 isolation-pod-core + JS Host 薄壳 + 官方会话界面 Client;任务在独立普通根会话中执行,不向主会话写消息、不进入主会话模型上下文。

插件归属与源码:GitHub - Teow9/dsh-isolation-pod;社区目录页:skillhub.cn/plugins/Teow9/dsh-isolation-pod。目录站为社区生态索引,与 DeepSeek / 幻方无官方从属关系。

核心功能

主会话零自动痕迹

任务会话与主会话分离。唯一能把内容带回主会话的路径,是用户在任务操作条里手动确认的「返回主会话」;确认后只注入一条用户消息(有字数上限)。导出与返回互不触发。

官方会话界面,不自绘转写

打开任务时通过 uiWorkspace.openSession 进入 DSH 官方会话面板,消息流、工具卡片、思考过程与输入框均由官方 UI 渲染;隔离舱只保存状态摘要、审计与导出记录。

沙箱由 DSH 强制

任务会话的工作目录为沙箱根目录,sandbox/mode=workspace-write;沙箱外写入由 DSH 文件沙箱硬拒绝。首轮模型轮次前还有一次越界写探针。工具白名单由 tools.guard 强制,preset 缺失不会清空白名单。

Rust 侧车承担持久化与安全细节

配置、任务状态机、FIFO 队列、每轮超时、租约、文件清单与预览、导出/撤销、审计与诊断等在侧车中完成;Host 负责 DSH 集成。导出支持复制/移动、冲突策略、BLAKE3 哈希、覆盖前备份;每次导出单独确认。跨平台文件与导出逻辑不依赖 PowerShell。

队列、恢复与诊断

超过并发上限可排队;宿主重启后可将中断任务标记为 interrupted,支持重新打开/恢复任务会话。提供 /status、诊断页、核心重启、stderr 环形日志等可观测能力。

环境要求

  • DSH 0.2.1+(桌面版或 dsh web;README 记载桌面版 0.2.1-rc.2 验证;0.1.7 不支持,v0.1.3 为 0.1.x 末版)。
  • 带 Web UI 的 profile(无 webServer 的 CLI/TUI profile 不会激活插件)。
  • Rust 侧车:Windows x64 仓库内已带二进制;Linux x64 / macOS 可从 Release 获取或源码构建(Rust stable ≥ 1.85)。可选环境变量 ISOLATION_POD_CORE_BIN 指向自定义侧车路径。

安装与启用

推荐通过 DSH 侧边栏 bundle 安装,命令形态以 README 为准(勿凭插件名拼接 dsh plugin add github:...)。

  1. 打开 DSH 侧边栏 →「插件」;
  2. 「添加插件」→「安装第三方插件」(支持 npm 包、Git 仓库、本地目录);
  3. 选择本仓库或 Release 解压目录的绝对路径,安装;
  4. 确认 dsh-isolation-pod bundle 已选中且插件行启用;
  5. 若提示「请重启 DSH 使更改生效」,重启一次(Host 半更新后 Node 会缓存旧模块,必须重启)。

安装后可用 HTTP 检查状态(将 <port> 换为当前 Web 端口):

curl.exe -s http://127.0.0.1:<port>/isolation-pod/status

应看到 pluginVersion: "0.2.0"、coreStatus: "ready" 等字段,侧边栏出现「隔离舱」入口。

开发或回退也可在 profile 的 cordis.patch.yml 末尾追加 patch 行指向 lib/index.js;不要与 bundle 同时启用,以免重复 Client 入口与配置混淆。

安全提示:插件以当前 DSH 进程权限运行;安装前请阅读源码与 MIT 许可证,自行评估是否适合你的环境。

典型用法

先做配置,再建任务,最后在官方会话里观察与收尾。

  1. 配置沙箱根目录:面板「配置」→ 填写工作区之外的绝对路径(例如 E:\pod-work)或「选择目录」→ 保存。
  2. 新建任务:「新建」→ 任务描述(可选沙箱子目录)→ 选择主会话 →「启动隔离任务」。
  3. 查看执行:自动打开官方会话;也可在任务列表点「打开会话」。
  4. 继续对话:在官方输入框发送;沙箱、approval、guard 与系统提示段保持不变。
  5. 停止:任务操作条或官方输入框停止;状态变为「已取消」。
  6. 返回主会话(可选):任务操作条「返回」→ 编辑预览 →「确认返回主会话」;主会话须为 live,否则返回 MAIN_SESSION_NOT_LIVE。
  7. 导出(可选):「导出」→ 勾选文件、指定沙箱外目标目录、选择复制/移动与冲突策略 → 二次确认。
  8. 清理:可仅删沙箱文件,或清理记录与文件;沙箱根目录本身受保护。

更完整的分步走查见仓库内 使用教程.md。

适用场景与注意

适合:希望在主会话外跑高风险或冗长任务、又不想主会话消息流被自动污染;需要导出到沙箱外目录且每次出口都人工确认;需要队列、超时按轮计费、重启后恢复任务会话的运维型用法。

注意:

  • 任务会话是普通根会话,可能出现在 DSH 会话搜索/历史中,但不会出现在 workspace 侧边栏列表。
  • timeoutMs 是每轮超时(默认 10 分钟),不是整任务时长。
  • 导出上限:5000 文件 / 2 GiB 总量 / 单文件 1 GiB;撤销仅对复制模式且在哈希校验场景下更安全,旧版无哈希记录时撤销行为更激进,README 要求先备份。
  • 平台:Windows x64 已本机验证;Linux / macOS 由 CI 构建,README 注明未做本机面板验收。

结尾

dsh-isolation-pod 把「隔离执行」和「主会话无感」拆清楚:沙箱与工具 guard 交给 DSH,状态与导出交给 Rust 侧车,交互落在官方会话 UI。若你在 DSH 生态里做 admin-security 类能力扩展,可从目录页或 GitHub 获取 v0.2.0 与配套文档(架构、协议、迁移说明在 docs/ 下)。

  • 目录页:https://www.skillhub.cn/plugins/Teow9/dsh-isolation-pod
  • 源码:https://github.com/Teow9/dsh-isolation-pod
羽毛球分组比赛记分
小程序二维码

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

小夜