DAG总览 / 组目录 / G33 会话核心

dsh-session-projection · @deepseek-ai/dsh-session-projection

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

插件信息

包名@deepseek-ai/dsh-session-projection
分组G33 · 会话核心
拓扑层Layer 3(层次遍历:被依赖方先于依赖方)
源码路径packages/session/session-projection

① 实现逻辑

SessionProjectionRegistry(ctx.sessionProjections)是会话投影能力 seam 的 Service Definition 与其驱动:唯一订阅 session/created 与 session/event,把每个提交事件驱动过所有注册单元的纯同步 apply,并按 Object.is 判断状态/视图引用是否变化以触发 change feed(src/index.ts:199-223,656-704)。register() 是 effect,末位注册者退出即移除 key,并读面提供 stateOf/snapshot/cachedSnapshot/checkpoint/restoreFloor/viewCheckpoint/restore/hydrate(src/index.ts:233-595)。类型出口 types.ts 定义可合并的投影状态表与客户端视图表(src/types.ts:11-24)。

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

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-sessionE1+E2
以会话日志为唯一输入驱动投影并读取 seq/header 元数据
src/index.ts:22 import + src/index.ts:209,220 ctx.on session/created/session/event

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

dsh-agent
向会话投影表声明 turnBoundary/inbox 投影条目
src/projection.ts:2 + src/types.ts:58 声明合并
dsh-agent-instructions
依赖 turnBoundary 投影判断当前步是否开放,决定指令刷新是立即排队还是延迟到步结束
src/index.ts:17 type-only import + src/index.ts:34 inject ['sessionProjections'] + src/index.ts:287 ctx.sessionProjections.stateOf(session, 'turnBoundary')
dsh-agent-loop
注册 turnBoundary 与 inbox 投影定义
src/index.ts:30-31 import + src/index.ts:364-365 ctx.sessionProjections.register + src/index.ts:331 inject(['sessionProjections'])
dsh-agent-preset-registry
注册 agentPreset 投影并读取 turnBoundary 判定空会话
src/index.ts:66 ctx.sessionProjections.register + src/session.ts:17 type ProjectionDefinition + src/index.ts:321 stateOf
dsh-api-session-controller
会话投影状态与增量
src/agent.ts:286 ctx.sessionProjections.stateOf + src/control.ts:22 onChanged
dsh-goal
注册并读取 'goal' 会话投影以派生当前目标
src/index.ts:17-18 import (ProjectionDefinition) + src/index.ts:258 ctx.sessionProjections.register(goalProjectionDefinition) + src/index.ts:477 ctx.sessionProjections.stateOf(session,'goal')
dsh-hooks-claude-code
读取 turnBoundary 投影获取 open turn 号以记录 hook 事件
src/index.ts:15 import type {} + src/index.ts:318 ctx.sessionProjections.stateOf(agent.session,'turnBoundary')
dsh-hooks-codex
读取 turnBoundary 投影获取 turn_id 以记录 hook 事件
src/index.ts:18 import type {} + src/index.ts:288 ctx.sessionProjections.stateOf(agent.session,'turnBoundary')
dsh-llm-retry
注册 llmRetry projection 以在重试间保持每 provider/策略的尝试计数
src/index.ts:14 import type {} + src/index.ts:125 ctx.sessionProjections.register
dsh-permission-presets
注册 permissions 会话投影
package.json:62 peerDep + src/index.ts:32 type import; src/index.ts:237 ctx.sessionProjections.register
dsh-plan-mode
注册 plan 投影并读取 plan/turnBoundary 状态
src/index.ts:36-37 type import ProjectionDefinition + src/index.ts:227 ctx.sessionProjections.register + src/index.ts:374 stateOf
dsh-sandbox-policy
把 sandboxMode 作为投影单元注册并读取会话模式覆盖
src/index.ts:30 type import + src/index.ts:119 static inject + src/index.ts:133 register
dsh-session-projection-cache
对注册单元做 checkpoint/restore/hydrate 并查看缓存行
src/index.ts:33 type import + src/index.ts:105 static inject + src/index.ts:204 ctx.sessionProjections.viewCheckpoint
dsh-session-reference
从 title/subagent 投影快照派生候选的提及标签与显示标题,避免折叠整个日志
src/index.ts:17 import type ProjectionSnapshot + src/index.ts:248 this.ctx.get('sessionProjections') + src/index.ts:250 projections.snapshot(attached, ['title','subagent'])
dsh-session-stats
把 sessionStats 单元注册到投影注册表并交付客户端视图
src/projection.ts:28 import + src/index.ts:20 static inject + src/index.ts:28 ctx.sessionProjections.register
dsh-session-title
注册 title/titleInput 单元并读取 titleInput 与 turnBoundary 状态
src/index.ts:19-20 import + src/index.ts:296 static inject + src/index.ts:338,545 ctx.sessionProjections
dsh-session-turn-outline
把 turnOutline 单元注册到投影注册表并交付客户端视图
src/projection.ts:25 import + src/index.ts:20 static inject + src/index.ts:28 ctx.sessionProjections.register
dsh-subagent
注册父目录、身份与时长投影
src/catalog.ts:17 (import type ProjectionDefinition) + src/index.ts:228 (ctx.inject(['sessionProjections'])) + src/index.ts:230 (projections.register)
dsh-terminal-bash
读取 sandboxMode 投影以校验模式切换
package.json:37 peerDep + src/index.ts:15 type-only import + src/index.ts:27 inject ['sessionProjections']
dsh-time-context
注册并读取 timeContext 投影以驱动注入节流,且向 SessionProjectionStateMap 做类型合并
src/index.ts:22 type-only import + src/index.ts:53 inject ['agents','sessionProjections'] + src/index.ts:157 ctx.sessionProjections.register + src/index.ts:192 ctx.sessionProjections.stateOf
dsh-tmux-context
注册并读取 tmuxContext 投影以判断位置是否变化、是否超过刷新间隔
src/index.ts:25 type-only import + src/index.ts:44 inject ['agents','sessionProjections'] + src/index.ts:230 ctx.sessionProjections.register + src/index.ts:254 ctx.sessionProjections.stateOf
dsh-token-meter
注册三个投影单元并读取其在会话上的状态
src/index.ts:27 import type {} + src/index.ts:106 static inject sessionProjections + src/index.ts:114 ctx.sessionProjections.register
dsh-tool-goal
读取 turnBoundary 投影确定开放轮的起始序列号
src/authority.ts:9 import type {} + src/authority.ts:35 ctx.sessionProjections.stateOf(agent.session,'turnBoundary')
dsh-tool-present
读取当前 open turn 与 turn 号
src/index.ts:7 import type {} from '@deepseek-ai/dsh-session-projection' + src/index.ts:26 inject + src/index.ts:78 stateOf(..., 'turnBoundary')
dsh-tool-session-query
读取调用者会话的 turnBoundary 投影以裁剪本会话检索范围
src/workspace-access.ts:20 import type {}; src/workspace-access.ts:67 ctx.sessionProjections.stateOf(agent.session, 'turnBoundary')
dsh-tool-subagent
注册逐会话模型选择策略投影
src/model-selection-state.ts:5-6 (import ProjectionDefinition, SessionProjectionRegistry) + src/index.ts:45 (inject ['sessionProjections']) + src/index.ts:326 (ctx.sessionProjections.register)
dsh-tool-todo
注册 todos 投影单元
package.json:47 peerDep + src/index.ts:15 type-only import + src/index.ts:23 inject ['sessionProjections']