DAG总览 / 组目录 / G36 Shell 执行

dsh-tool-bash · @deepseek-ai/dsh-tool-bash

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

插件信息

包名@deepseek-ai/dsh-tool-bash
分组G36 · Shell 执行
拓扑层Layer 5(层次遍历:被依赖方先于依赖方)
源码路径packages/shell/tool-bash

① 实现逻辑

向模型注册 bash 工具作为 ctx.shell 的消费者:前台调用等待作业完成,有 ctx.jobs 时把进程注册为 job(run_in_background 立即返回 jobId,超时可按配置提升为后台)(src/index.ts:263-532)。execute 解析 per-call sandbox policy 与 workdir,经 ctx.shellEnv.collect 注入 DSH_* 环境,处理 sandbox_permissions/justification 的升级审批,再把 ShellRunResult 规范化渲染 (src/index.ts:478-528, src/render.ts:28-120)。background.ts 把 ShellProcess 适配为通用 job 的输出源与终态 (src/background.ts:44-129)。

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

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-agentE1
读取调用者 Agent 会话以解析 workdir 与作业归属
src/index.ts:21 import type { Agent }; package.json:30 peerDep
dsh-llmE1
用 HarnessError/TOOL_ABORTED 表达工具中止
src/index.ts:20 import HarnessError; package.json:33 peerDep
dsh-sandbox-policyE2
解析调用会话的完整沙箱执行策略
src/index.ts:27 import type { SandboxPolicyService }; src/index.ts:215 ctx.get('sandboxPolicy'); src/index.ts:221 sandboxPolicy.resolve
dsh-shell-envE1+E2
为每次执行收集受信任 DSH_* 环境变量
src/index.ts:24 import type {}; src/index.ts:34 inject ['shellEnv']; src/index.ts:489 ctx.shellEnv.collect(exec)
dsh-system-promptE2
注入 bash 交叉调用指引段落
src/index.ts:34 inject ['systemPrompt']; src/index.ts:257 ctx.systemPrompt.section
dsh-toolsE1+E2
注册 bash 工具定义并消费工具运行上下文
src/index.ts:18-19 import defineTool/TOOL_ABORTED; src/index.ts:34 inject ['tools']; src/index.ts:540 ctx.tools.register
dsh-user-approvalE2
把沙箱升级请求路由到用户审批通道
src/index.ts:23 import type {}; src/index.ts:247 ctx.get('approval')

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

无下游(叶子/被消费端)