DAG总览 / 组目录 / G30 沙箱

dsh-sandbox-policy · @deepseek-ai/dsh-sandbox-policy

Layer 4G30
目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
依赖链 · 下游(依赖该插件的节点):
同一拓扑层(Layer 4,层次遍历层序):
↑ Layer 3(24 插件)Layer 4↓ Layer 5(55 插件)

插件信息

包名@deepseek-ai/dsh-sandbox-policy
分组G30 · 沙箱
拓扑层Layer 4(层次遍历:被依赖方先于依赖方)
源码路径packages/sandbox/sandbox-policy

① 实现逻辑

SandboxPolicyService(ctx.sandboxPolicy)是文件沙箱策略的单一归属:持有部署默认 mode 与 fallback workspaceRoot,并按 (显式 override > 会话最近 sandbox/mode 事件 > 部署默认) 结合 session.cwd 解析出每次调用的 SandboxExecutionPolicy(src/index.ts:110-181)。它把 sandboxMode 折叠注册为 session-projection 单元(src/index.ts:133-139),并在每次请求前经 systemPrompt.context 注入策略文本(src/index.ts:141-152)。session-mode.ts 定义 log-only 的 sandbox/mode 事件与其唯一写路径 setSandboxMode(src/session-mode.ts:33-54)。

内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件 上游依赖 下游依赖 外部 seam

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-agentE1
合并 agent 请求上下文事件类型以取到会话
src/index.ts:27 type import
dsh-invariantsE1+E2
注册本包事件字段的运行时不变式检查
src/invariant.ts:5 import + src/invariant.ts:13 inject + src/invariant.ts:43 ctx.invariants.register
dsh-sessionE1+E2
读取会话 cwd/日志并在事件上声明 sandbox/mode 事件类型
src/index.ts:29 import + src/session-mode.ts:21 import + src/invariant.ts:25 ctx.sessions
dsh-session-projectionE1+E2
把 sandboxMode 作为投影单元注册并读取会话模式覆盖
src/index.ts:30 type import + src/index.ts:119 static inject + src/index.ts:133 register
dsh-system-promptE2
向模型请求注入解析后的文件策略文本
src/index.ts:31 type import + src/index.ts:141-144 systemPrompt.context

④ 被依赖(dependents · 下游消费者)

dsh-api-terminal-controller
取工作目录与沙箱工作区根
src/index.ts:6 import type {} + src/index.ts:335 agent.ctx.get('sandboxPolicy')
dsh-api-workspace-files
会话无 cwd 时的工作区根回退
src/index.ts:27 import type {} + src/index.ts:188 static inject 'sandboxPolicy'
dsh-bash-sandbox
读取部署默认沙箱模式并解析每次调用的完整策略
src/index.ts:24 import type {}; src/index.ts:46 inject ['sandboxPolicy']; src/index.ts:72 ctx.sandboxPolicy.defaultMode
dsh-client-ui-deliverables
native open 前校验沙箱策略
src/present-open.ts:121 ctx.sandboxPolicy
dsh-fs-sandbox
解析每调用会话的沙箱模式与工作区根
src/index.ts:56 inject ['sandboxPolicy'] + src/index.ts:36 import
dsh-fs-ssh
读取默认沙箱模式并在写/编辑时解析策略
src/index.ts:7 (type import) + src/index.ts:21 (static inject ['ssh','sandboxPolicy']) + src/index.ts:23 (ctx.sandboxPolicy.defaultMode)
dsh-permission-presets
按预设写穿 sandbox/mode 规范 setter
package.json:60 peerDep + src/index.ts:25 import setSandboxMode/SANDBOX_MODES; src/index.ts:410 setSandboxMode
dsh-plugin-manager
解析会话沙箱模式,决定管理操作是否需要 danger-full-access 提权
src/tools.ts:5 + src/tools.ts:13 inject + src/tools.ts:38 ctx.sandboxPolicy.resolve
dsh-ptc-runtime-node
读取部署/会话沙箱策略作为执行的文件效应边界
src/index.ts:12 type import + src/index.ts:53 static inject + src/index.ts:97,110 ctx.sandboxPolicy
dsh-pwsh-sandbox
读取部署默认沙箱模式并解析每次调用的完整策略
src/index.ts:27 import type {}; src/index.ts:53 inject ['sandboxPolicy']; src/index.ts:79 ctx.sandboxPolicy.defaultMode
dsh-subagent
捕获父会话沙箱覆盖并播种给子代理
src/child-agent.ts:21 (type import) + src/child-agent.ts:253 (ctx.get('sandboxPolicy')?.overrideOf)
dsh-terminal-bash
解析当前会话的沙箱执行策略
package.json:33 peerDep + src/index.ts:14 type-only import + src/index.ts:27 inject ['sandboxPolicy']
dsh-tool-bash
解析调用会话的完整沙箱执行策略
src/index.ts:27 import type { SandboxPolicyService }; src/index.ts:215 ctx.get('sandboxPolicy'); src/index.ts:221 sandboxPolicy.resolve
dsh-tool-fs
解析每调用沙箱策略并映射拒绝错误
src/sandbox.ts:17 import
dsh-tool-pwsh
解析调用会话的完整沙箱执行策略
src/index.ts:36 import type { SandboxPolicyService }; src/index.ts:219 ctx.get('sandboxPolicy'); src/index.ts:226 sandboxPolicy.resolve
dsh-tool-str-replace-editor
解析每调用沙箱策略并映射拒绝错误
src/index.ts:71 ctx.get('sandboxPolicy') + src/index.ts:14 import
dsh-tools
引入沙箱策略服务的上下文类型合并
src/index.ts:18 import type {} (声明合并)
dsh-workflow-ptc
按调用方 Session 解析文件/沙箱策略并施加于运行
package.json:39 peerDep + src/index.ts:12 import type {} from dsh-sandbox-policy + src/index.ts:103 inject 'sandboxPolicy' + src/index.ts:166 ctx.sandboxPolicy.resolve