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

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

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

插件信息

包名@deepseek-ai/dsh-api-session-controller
分组G02 · API 网关与控制器
拓扑层Layer 7(层次遍历:被依赖方先于依赖方)
源码路径packages/api/session-controller
来源层L2 web-app bundle(base 之上装配)

① 实现逻辑

SessionController 继承 TypertRemoteService 并以 namespace 'session' 注册,构造时装配 Agent 控制器、命令、控制态、历史与列表子模块,安装 modelSelection 投影,并挂载 SessionFileReferences/SessionMediaReferences/SessionSkillCatalog/ArchivedSessionGate 子插件 (src/index.ts:135-166)。Agent 的创建/续跑统一收敛到 ApiSessionAgentController(并发 resume 去重、子代理所有权、cwd/preset 冲突判定)(src/agent.ts:170-276, 444-495)。Remote 方法覆盖冷读(list/search/inspect/page/attachment/projections)、显式写(create/selectModel/rename/fork/prompt/updateQueue/cancel)与桌面打开(openWorkspacePath/workspacePathApplications/modelCatalog)(src/index.ts:251-522)。follow/control 两个 stream 分别提供会话日志快照+增量与 Host 级投影基线+替换帧 (src/history.ts:120+, src/control.ts:42-79)。同时监听 session/created|disposed、agent/created|disposed|status|error、session/event,对外发出 api-session/* 事件 (src/index.ts:167-198)。

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

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-agentE1+E2
Agent 创建/续跑与模型选择安装
src/agent.ts:5 import + src/agent.ts:437 ctx.agents.resume
dsh-agent-default-modelE2
读取/保存部署默认模型
src/agent.ts:9 import type {} + src/index.ts:302 ctx.agentDefaultModel.saveSelection
dsh-agent-preset-registryE2
解析并挂载 Agent 预设
src/agent.ts:10 import + src/agent.ts:385 ctx.get('agentPresets')
dsh-api-gatewayE1+E2
客户端 Remote 载体与失败类型
src/client/scope.ts:4 import + src/client/sessions/manager.ts:15 import
dsh-client-connectionE1
媒体引用与客户端连接
src/media-references.ts:10 import + src/client/index.ts:5 import
dsh-client-file-uploadE1+E2
上传收据解析与 Agent 解析登记
src/index.ts:10 import + src/index.ts:140 ctx.fileUploads.registerAgentResolver
dsh-commandsE1+E2
命令注册表会话侧表面
src/commands.ts + src/client/sessions/remotes.ts:9 import types
dsh-llmE1+E2
消息构造、assistant 流与模型目录
src/commands.ts:17 import + src/catalog.ts:24 ctx.llm.listProviders
dsh-scopeE1
作用域工具
src/skill-catalog.ts:7 import
dsh-sessionE1+E2
会话身份、事件与 fork 种子
src/agent.ts:12 import + src/agent.ts:189 ctx.sessions.get
dsh-session-projectionE1+E2
会话投影状态与增量
src/agent.ts:286 ctx.sessionProjections.stateOf + src/control.ts:22 onChanged
dsh-session-projection-cacheE1
投影缓存类型面
src/list.ts:8 import type {}
dsh-session-titleE1+E2
会话标题命令与客户端投影
src/commands.ts:22 import + src/client/sessions/manager.ts:23
dsh-settingsE2
设置域参与模型/凭证表面
src/catalog.ts:5 import type {} + package.json peerDependencies dsh-settings(optional)
dsh-skillE1
会话技能目录
src/skill-catalog.ts:6 import
dsh-subagentE1+E2
子代理所有权与客户端地址类型
src/history.ts:19 import + src/client/sessions/manager.ts:3 import
dsh-typert-registryE1
Typert 注册表类型
src/agent.ts:16 import type {}
dsh-workspaceE1+E2
工作区注册表与归档会话门控
src/archived-session-gate.ts:13 import + src/index.ts:111 inject 'workspaceRegistry'

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

dsh-api-remotes
装配 session 命名空间与事件类型声明
src/client/index.ts:22 import remote + src/remote-events.ts:9 import remote-events
dsh-client-ui-agent-preset
按会话解析 binding 与保留态以决定 seat 归属
src/client/index.ts:20-21 SessionBinding 类型 + src/client/index.ts:83-86 ctx.sessions.binding/retainInfo
dsh-client-ui-approval
把 Remote 监听者 owner 解析成会话 id
src/client/index.ts:4 + src/client/index.ts:43 ctx.sessions.scopeOf(owner)
dsh-client-ui-chat
按会话解析 binding 与事件源
src/client/apply.ts:5 SessionBinding + src/client/apply.ts:190 ctx.sessions.binding(sessionId)
dsh-client-ui-commands
按会话解析 scope 与 using
src/client/index.ts:9 ISessions + src/client/service.ts:98 this.sessions()
dsh-client-ui-conversation
按会话解析 scope 与 conversation 服务
src/client/apply.ts:4 + src/client/apply.ts:130-137 scopedConversation(sessions, id)
dsh-client-ui-deliverables
解析会话与其工作目录以做原生打开
src/present-open.ts:23 ctx.sessionController
dsh-client-ui-goal
保留会话并在初始历史打开后访问 Host
src/client/index.ts:17 merge + src/client/index.ts:98-107 sessions.binding/using
dsh-client-ui-input-trigger
把槽 frame 的 sessionId 解析成会话作用域
src/client/index.ts:10 merge + src/client/index.ts:73 sessions.scope(sessionId)
dsh-client-ui-model-selection
Session 绑定/投影与 session Remote 控制器面
src/client/index.ts:14-15 import + src/client/service.ts:17-18 import
dsh-client-ui-open-in-app
调用 session Remote 打开工作区路径/查询关联应用
src/client/index.ts:16 import remote + src/client/open-path.ts:7 import types
dsh-client-ui-permission-presets
Session 外观与命令执行类型
src/client/index.ts:19 import type { SessionFace }
dsh-client-ui-plan
Session 地址与投影类型
src/client/index.ts:13 import remote + src/client/plan-resource.ts:3 import types
dsh-client-ui-reference
retain 会话并用 using() 挂参考候选数据源
src/client/index.ts:11 import type { ISessions } + src/client/index.ts:53 ctx.get('sessions')
dsh-client-ui-schedule
会话定位与打开状态判定
src/client/session-link.ts:2 import + src/client/index.ts:136 ctx.sessions
dsh-client-ui-session
消费 Session Controller 的列表/绑定/快照与投影接口
src/client/index.ts:12 import { ISessions, ... } + src/client/index.ts:2-11 import
dsh-client-ui-sidebar-right
会话视图类型(SidebarSessionViews 消费 SessionManager)
src/client/session-view.ts:2 import (client)
dsh-client-ui-skill
按 session 保留引用,等待初始历史就绪后取目录
src/client/index.ts:38 import + src/client/index.ts:115 sessions.using
dsh-client-ui-trajectory
读取会话 binding 与分页 loadOlder
src/client/index.ts:7 import + src/client/index.ts:89 ctx.sessions.binding
dsh-client-ui-user-questions
把请求归属到具体会话作用域
src/client/index.ts:17 import + src/client/index.ts:61 sessions.scopeOf
dsh-client-ui-workflow-run
读取会话列表状态与导航目标类型
src/client/WorkflowRunPanel.tsx:10 SessionListState/SessionTarget
dsh-client-ui-workspace
会话列表、rename、search 与引用保留
src/client/index.ts:20 import + src/client/index.ts:106 ctx.get('sessions')
dsh-experimental-client-ui-agent-team
读取会话绑定与保留信息定位 Lead/子会话
src/client/TeamAction.tsx:8 import '@deepseek-ai/dsh-api-session-controller/client' + src/client/mount.ts:4 import + src/client/mount.ts:21 inject 'sessions'
dsh-schedule
在到期投递时恢复/激活目标会话
src/index.ts:7 type import + src/runtime.ts:10 import + src/runtime.ts:101 ctx.sessionController.resolveAgent