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)。
dsh-agentE1+E2Agent 创建/续跑与模型选择安装
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-api-gatewayE1+E2客户端 Remote 载体与失败类型
src/client/scope.ts:4 import + src/client/sessions/manager.ts:15 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-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-workspaceE1+E2工作区注册表与归档会话门控
src/archived-session-gate.ts:13 import + src/index.ts:111 inject 'workspaceRegistry'
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-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-open-in-app调用 session Remote 打开工作区路径/查询关联应用
src/client/index.ts:16 import remote + src/client/open-path.ts:7 import types
dsh-client-ui-planSession 地址与投影类型
src/client/index.ts:13 import remote + src/client/plan-resource.ts:3 import types
dsh-client-ui-referenceretain 会话并用 using() 挂参考候选数据源
src/client/index.ts:11 import type { ISessions } + src/client/index.ts:53 ctx.get('sessions')
dsh-client-ui-session消费 Session Controller 的列表/绑定/快照与投影接口
src/client/index.ts:12 import { ISessions, ... } + src/client/index.ts:2-11 import
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-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