dsh-isolation-pod
隔离舱:在 DSH 主会话之外运行受沙箱约束的隔离任务;主会话默认完全无感,结果返回与文件导出都要手动确认。 适合需要在独立子会话中运行受沙箱约束的任务,并手动确认结果返回与文件导出的用户。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full README ↗使用
入口
侧边栏「新会话」下方的一行:盾牌图标 + 「隔离舱」。侧边栏收起成窄栏时只显示图标。 点击后中栏切换为隔离舱全宽面板,页签为 任务 / 新建 / 配置 / 导出记录。
侧边栏底部(设置旁)刻意不放入口:那一行与内置的 Cordis Plugin 按钮共用, 放带文字或固定宽度的按钮会被挤没。
首次使用:指定沙箱根目录
到「配置」页填入绝对路径(例如 E:\pod-work)。未配置时隔离舱会拒绝执行任何任务,
并且不会自动退回使用工作区或项目目录。
同页的 Agent preset(可用时是下拉框)决定隔离 Agent 能看到的工具: 白名单只是上限,不会被 preset 求交清空;preset 没提供的工具,调用时由 guard 打回并提示 「未被授权」。任务详情因此并排列出「可用工具」(白名单上限)与「隔离环境实有」 (该 pod 真实可见的工具面)以便对账。
任务
新建(填描述,可选沙箱子目录)→ 启动 → 在详情页看对话与生成文件 → 继续对话 / 返回主会话 / 导出到工作区 → 清理。主会话在此期间不会收到任何自动消息。
任务详情页从上到下依次是:状态与沙箱自检信息、对话、生成文件、返回主会话、导出到工作区、清理。
(任务处于 运行中 时,「导出到工作区」卡片不显示——先等它跑完或点「停止」。)
多轮对话
详情页底部是输入框:回车发送,Shift+回车换行,运行中可「停止」。
- 续聊走
followUp,往同一个子会话再发一条用户消息;沙箱模式、审批策略、工具 guard、系统提示段 都挂在常驻子 Agent 上原样复用。不存在「续聊时隔离失效」的路径。 - 转写按角色渲染:
我/隔离舱气泡、▶ ◀工具行、轮次分隔线;助手条目可展开思考过程, 首轮那条机器指令折叠为「本轮发给隔离舱的指令」。 - 连续性仅在进程内有效:宿主重启后
canFollowUp变为 false,输入框注明「该会话已随进程结束」, 历史仍可查看与导出。(明确不做重启后重挂。)
返回主会话
「返回主会话」区块:可附带一个文件路径,点「生成预览」得到一段文本,该文本可以自由编辑, 点「确认返回主会话」后才以一条用户消息注入主会话。默认不返回任何内容。
导出到工作区
选择生成文件 → 指定沙箱之外的绝对目标目录 → 选择方式(复制 / 移动)与冲突策略(覆盖 / 跳过 /
重命名)→ 点「导出到工作区」→ 在确认块里再次确认。每次导出都要重新确认,不存在自动延续的授权;
allowRememberChoice 打开后也仅预填路径。复制模式下可「撤销此次导出」。
清理
- 删除任务文件:删除该任务的任务目录(拒绝删除沙箱根目录本身)。
- 清理任务记录与文件:同时移除记录并释放该子会话的常驻 Agent。
- 两者都不触碰主会话,也不触碰沙箱之外的任何文件;子会话自身的历史日志由 DSH 管理,不在清理范围内。
首次使用:指定沙箱根目录
到「配置」页填入绝对路径(例如 E:\pod-work)。未配置时隔离舱会拒绝执行任何任务,
并且不会自动退回使用工作区或项目目录。
同页的 Agent preset(可用时是下拉框)决定隔离 Agent 能看到的工具: 白名单只是上限,不会被 preset 求交清空;preset 没提供的工具,调用时由 guard 打回并提示 「未被授权」。任务详情因此并排列出「可用工具」(白名单上限)与「隔离环境实有」 (该 pod 真实可见的工具面)以便对账。
配置项
在「配置」页修改,落到 \isolation-pod.json。
| 键 | 默认值 | 说明 |
|---|---|---|
sandboxRoot | '' | 沙箱根目录(绝对路径)。为空时拒绝执行任务;读回时会归一化(去尾部反斜杠) |
allowWrites | true | 关闭后子会话以 read-only 模式运行 |
allowedTools | pwsh, read, write, edit, glob, grep | 工具白名单,作为上限由 guard 强制执行 |
timeoutMs | 600000 | 每轮对话的超时(毫秒),取值夹在 30 000–7 200 000;超时取消该轮并标记 timeout |
readContext | true | 是否把主会话最近若干条消息作为只读背景注入任务提示 |
maxConcurrent | 3 | 同时运行的任务数上限(1–8) |
enableExport | true | 关闭后 exportEntries 直接拒绝 |
allowRememberChoice | false | 是否允许导出时勾选「记住本次选择」(仅预填路径) |
presetId | 'standard' | 在子会话里挂载的 Agent preset;空串表示不挂载 |