DAG总览 / 组目录 / G02 API 网关与控制器

dsh-api-terminal-controller · @deepseek-ai/dsh-api-terminal-controller

Layer 5G02L2 web-app
目录: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-api-terminal-controller
分组G02 · API 网关与控制器
拓扑层Layer 5(层次遍历:被依赖方先于依赖方)
源码路径packages/api/terminal-controller
来源层L2 web-app bundle(base 之上装配)

① 实现逻辑

TerminalController 继承 TypertRemoteService,以 namespace 'terminal' 注册并注入 subprocess/sandboxPolicy/typert,构造时登记进程清理 effect (src/index.ts:75-109)。它按 Session 身份维护 OwnedSession(terminals/pending/allocations),create 幂等地经 subprocess.spawnTerminal 分配用户 shell 并用 BrowserTerminal 包装 (src/index.ts:157-188, 339-375)。BrowserTerminal 用 headless xterm + SerializeAddon 维护有界屏幕,follow 先送 snapshot 再推有序 output/state,write/resize 由唯一 controller attachment 校验后串行执行 (src/terminal.ts:77-130, 167-180)。其余 @Remote 方法提供 environment/shells/list/retain/rename/close,并施加尺寸、输入字节、终端数量等配置上限 (src/index.ts:117-284)。

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

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-agentE1
Remote 方法以 Agent 作为 Session 所有者参数
src/index.ts:4 import type Agent
dsh-api-gatewayE1
客户端 Remote 载体
src/client/index.ts:5 import + src/client/model.ts:5 import
dsh-sandbox-policyE2
取工作目录与沙箱工作区根
src/index.ts:6 import type {} + src/index.ts:335 agent.ctx.get('sandboxPolicy')
dsh-sessionE1
会话身份类型
src/index.ts:5 import type SessionId + src/client/bindings.ts:2 import

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

dsh-api-remotes
装配 terminal 命名空间
src/client/index.ts:25 import remote
dsh-client-ui-sidebar-terminal
通过 ctx.webTerminals 服务管理 Web 终端视图、shell 启动与关闭
src/client/index.ts:7 import type + src/client/index.ts:34 ctx.webTerminals.retainTabs