DAG总览 / 组目录 / G06 客户端 UI 包

dsh-client-ui-chat · @deepseek-ai/dsh-client-ui-chat

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

插件信息

包名@deepseek-ai/dsh-client-ui-chat
分组G06 · 客户端 UI 包
拓扑层Layer 16(层次遍历:被依赖方先于依赖方)
源码路径packages/client/ui-chat
来源层L2 web-app bundle(base 之上装配)

① 实现逻辑

Chat 目标插件:apply 先 registerConversationNodes 注册约 14 个 ConversationNodeDefinition 与 process 分组 (src/client/conversation-nodes/register.ts:22-38),再由 registerChatNodeRenderers 把 'conversation.chat.node' 的 15 个 key(user/steering/context/turn-trigger/system-prompt/assistant-step/command/manual-compaction/compaction/model-retry/turn-error/turn-max-tokens/turn-process/turn-tail/unknown)注册为渲染器 (src/client/chat/register-node-renderers.ts:30-75)。apply 通过 ctx.uiSession.provide 暴露 chat hook 源 (src/client/apply.ts:111-114),以 order 0 注册 'conversation.view#chat'(携 chatStore 与 conversation.chat.node/turnTail/assistant-actions 子槽)(src/client/apply.ts:177-258),并在 shell.overlay 挂配额通知宿主、settings.general.item 挂 3 个偏好行、conversation.composer.dock 挂 StatsPills、conversation.approval.detail 挂 ApprovalCommand (src/client/apply.ts:263-286)。宿主半经 schemastery 暴露 transcriptView/performanceUsage/linkOpening 三个设置字段 (src/index.ts:18-39)。

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

② 注册/提供(provides)

③ 依赖(depends_on · 上游前驱)

dsh-agentE1
agent 相关类型
src/client/chat/ChatView.tsx:8 import @deepseek-ai/dsh-agent/types
dsh-api-remotesE1
引入 ctx.remote 与转发事件声明
src/client/apply.ts:4 import @deepseek-ai/dsh-api-remotes/client
dsh-api-session-controllerE1+E2
按会话解析 binding 与事件源
src/client/apply.ts:5 SessionBinding + src/client/apply.ts:190 ctx.sessions.binding(sessionId)
dsh-client-localeE1+E2
注册 chat 字典并绑定 t
src/client/apply.ts:16 merge + src/client/apply.ts:116 ctx.locale.register(NS)
dsh-client-ui-approvalE1
消费 conversation.approval.detail 槽的 owner 契约
src/client/chat/ApprovalCommand.tsx:3 import type @deepseek-ai/dsh-client-ui-approval/client
dsh-client-ui-conversationE1+E2
消耗 conversation 视图与节点注册表,注册 Chat 视图
src/client/apply.ts:6 ctx.uiConversation + src/client/apply.ts:177 ctx.slots.inject('conversation.view')
dsh-client-ui-input-triggerE1
技能引用经触发管线打开
src/client/apply.ts:11 merge + src/client/apply.ts:225 ctx.get('inputTriggers')
dsh-client-ui-layoutE1
Chat 面板布局约束
src/client/apply.ts:18 merge + src/client/contract/slots.ts:15
dsh-client-ui-primitivesE1
聊天行/卡片的基础组件
src/client/chat/AssistantMarkdown.tsx:4-5 + src/client/chat/ContextBody.tsx:8
dsh-client-ui-rendererE1
引入 slots 服务声明
src/client/apply.ts:19 merge
dsh-client-ui-sessionE1+E2
向会话 UI 提供 chat hooks 标准位
src/client/apply.ts:20 merge + src/client/apply.ts:111 ctx.uiSession.provide
dsh-client-ui-settingsE1+E2
注册 Chat 三项 General 设置行
src/client/apply.ts:21 merge + src/client/apply.ts:132 slots.inject('settings.general.item')
dsh-client-ui-sidebar-browserE1
浏览器 tab 类型声明
src/client/apply.ts:10 merge
dsh-client-ui-sidebar-documentpreviewE1+E2
文件行号导航参数类型
src/client/apply.ts:13 file 路由参数类型 + src/client/apply.ts:218 openResource
dsh-client-ui-sidebar-rightE2
文件与外链送入右侧栏
src/client/apply.ts:9 + src/client/apply.ts:218-229 ctx.sidebarRight.openResource/openTab
dsh-client-ui-workspaceE2
分叉后打开新会话
src/client/apply.ts:22 + src/client/apply.ts:249 ctx.uiWorkspace.openSession
dsh-commandsE1
命令节点数据
src/client/conversation-nodes/command.ts:7 import @deepseek-ai/dsh-commands/types
dsh-llmE1
assistant 消息/品牌类型
src/client/conversation-nodes/assistant.ts:6 + src/client/contract/slots.ts:2
dsh-llm-retryE1
模型重试节点与 turn 过程融合
src/client/conversation-nodes/assistant.ts:7 + retry.ts:5
dsh-sessionE1
会话事件与标识类型
src/client/apply.ts:8 SessionId + src/client/contract/slots.ts:3
dsh-session-statsE1
统计胶囊数据源
src/client/chat/StatsPills.tsx:13 import @deepseek-ai/dsh-session-stats/client
dsh-session-turn-outlineE1
轮次导航轨条目
src/client/chat/turn-rail-items.ts:9 import @deepseek-ai/dsh-session-turn-outline/client
dsh-settingsE1+E2
宿主侧投影 Chat 偏好为设置表单字段
src/index.ts:2 import @deepseek-ai/dsh-settings + src/index.ts:38 ctx.inject(['settings'])
dsh-token-meterE1
token 计量显示
src/client/chat/StatsPills.tsx:14 + src/client/conversation-nodes/turn-tail.ts:7
dsh-toolsE1
工具调用节点与调用树
src/client/conversation-nodes/tool.ts:7 + src/client/model/tool-call-tree.ts:2

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

dsh-client-ui-attachment
依赖 Chat 视图声明的 conversation.message.images 槽
src/client/MessageImages.tsx:1 import @deepseek-ai/dsh-client-ui-chat/client + src/client/index.ts:3 type merge
dsh-client-ui-deliverables
依赖 Chat 声明的 conversation.chat.turnTail 与 assistant-actions 槽
src/client/Deliverables.tsx:3 ChatFileMentions 类型 + src/client/index.ts:15 import ChatFileMentions
dsh-client-ui-goal
依赖 Chat 声明的 conversation.chat.node 槽
src/client/index.ts:19 merge + src/client/index.ts:71 slots.inject('conversation.chat.node')
dsh-client-ui-message-feedback
引入 ui-chat 的类型面(对话内容与标准来源)
src/client/index.ts:23 import type {}
dsh-client-ui-plan
Chat 节点类型与标准来源面
src/client/index.ts:14 import type {} + src/client/plan-definition.ts:3 import type { ChatNode }
dsh-client-ui-settings-account
复用 chat 的类型面并写 ui-chat 设置(transcriptView/performanceUsage)
src/client/AccountQuotaNotice.tsx:5 import + src/client/index.ts:2 import type { TranscriptViewMode }
dsh-client-ui-subagent
引入 ChatConversationViewNode 等聊天节点类型
src/client/index.ts:12 import type
dsh-client-ui-tool
复用 AssistantChatData/ToolResultNode 等工具视图数据契约
src/client/contract/slots.ts:9 import type
dsh-client-ui-workflow-run
引入 keyed Chat 节点渲染契约
src/client/index.ts:6 + src/client/workflow-definition.ts:4