目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
dsh-agentdsh-agent-preset-registrydsh-api-account-controllerdsh-api-gatewaydsh-api-job-controllerdsh-api-session-controllerdsh-api-settings-controllerdsh-api-terminal-controllerdsh-api-workspace-controllerdsh-api-workspace-filesdsh-client-connectiondsh-client-file-uploaddsh-client-ui-plugin-managerdsh-command-feedbackdsh-commandsdsh-cordis-host-runnerdsh-goaldsh-host-plugin-inventorydsh-llmdsh-message-feedbackdsh-office-to-pdfdsh-permission-presetsdsh-plugin-managerdsh-scheduledsh-scopedsh-session-referencedsh-settingsdsh-subagentdsh-user-approvaldsh-user-questions
依赖链 · 下游(依赖该插件的节点):
dsh-client-ui-agent-presetdsh-client-ui-approvaldsh-client-ui-chatdsh-client-ui-commandsdsh-client-ui-cordisdsh-client-ui-deliverablesdsh-client-ui-directory-picker-browsedsh-client-ui-goaldsh-client-ui-message-feedbackdsh-client-ui-model-selectiondsh-client-ui-open-in-appdsh-client-ui-permission-presetsdsh-client-ui-plandsh-client-ui-plugin-managerdsh-client-ui-referencedsh-client-ui-scheduledsh-client-ui-sessiondsh-client-ui-settingsdsh-client-ui-settings-accountdsh-client-ui-settings-generaldsh-client-ui-settings-modelsdsh-client-ui-settings-plugin-inventorydsh-client-ui-settings-subagentdsh-client-ui-settings-web-searchdsh-client-ui-sidebar-documentpreviewdsh-client-ui-sidebar-filesdsh-client-ui-skilldsh-client-ui-tooldsh-client-ui-user-questionsdsh-client-ui-workspacedsh-cordis-client-runnerdsh-experimental-client-ui-voice-input
同一拓扑层(Layer 9,层次遍历层序):
插件信息
| 包名 | @deepseek-ai/dsh-api-remotes |
|---|---|
| 分组 | G02 · API 网关与控制器 |
| 拓扑层 | Layer 9(层次遍历:被依赖方先于依赖方) |
| 源码路径 | packages/api/remotes |
| 来源层 | L2 web-app bundle(base 之上装配) |
① 实现逻辑
Host 侧 apply() 把 remoteEventSource(ctx) 注册进 ctx.typertGateway.registerRemoteEvents,并用 ctx.effect 绑定其生命周期 (src/index.ts:40-45)。remoteEventSource 按 API_REMOTE_FORWARDED_EVENTS 白名单逐条挂 Cordis 监听:emit 型把参数经 assertJsonArgs 校验后入队,waterfall 型先校验请求携带的 Agent 与 carrierKeyOf(this) 一致,再经 forwardWaterfall 把 settle 交给 Gateway 关联 (src/index.ts:48-81, 134-158)。该白名单是唯一真相源,被 Host 转发循环与消费端 ctx.remote.$on 键面共同读取 (src/remote-events.ts:20-48)。client/index.ts 作为平台无关装配点,导入全部 Remote 命名空间并导出其类型面 (src/client/index.ts:3-100)。
内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件
上游依赖
下游依赖
外部 seam
② 注册/提供(provides)
- ctx.remote 的命名空间装配(应用级远程 BFF 入口)
- API_REMOTE_FORWARDED_EVENTS 转发事件白名单(emit/waterfall 模式)与对应的 Host 事件源
③ 依赖(depends_on · 上游前驱)
dsh-agent-preset-registryE1
装配 agent preset registry 命名空间
src/client/index.ts:4 import remote + src/client/index.ts:75 import types
dsh-api-gatewayE1+E2
注册转发事件源并使用客户端 Remote 载体
src/index.ts:6 import type + src/index.ts:42 ctx.typertGateway.registerRemoteEvents
dsh-api-session-controllerE1
装配 session 命名空间与事件类型声明
src/client/index.ts:22 import remote + src/remote-events.ts:9 import remote-events
dsh-client-file-uploadE1
装配文件上传命名空间
src/client/index.ts:19 import remote + src/client/index.ts:51 import remote
dsh-client-ui-plugin-managerE1
装配插件管理 UI 探针命名空间
src/client/index.ts:14 import remote + src/client/index.ts:37 import remote
dsh-command-feedbackE1
装配命令反馈命名空间
src/client/index.ts:18 import remote + src/client/index.ts:50 import remote
dsh-commandsE1
装配 commands 命名空间与事件签名
src/client/index.ts:5 import remote + src/client/index.ts:71 import types
dsh-cordis-host-runnerE1
装配动态包运行器命名空间
src/client/index.ts:12 import remote + src/client/index.ts:94 import remote
dsh-host-plugin-inventoryE1
装配插件清单命名空间
src/client/index.ts:15 import remote + src/client/index.ts:38 import types
dsh-message-feedbackE1
装配消息反馈命名空间
src/client/index.ts:16 import remote + src/client/index.ts:48 import remote
dsh-office-to-pdfE1
装配 office-to-pdf 命名空间
src/client/index.ts:8 import remote + src/client/index.ts:45 import remote
dsh-permission-presetsE1
装配权限预设命名空间与事件
src/client/index.ts:17 import remote + src/remote-events.ts:11 import types
dsh-plugin-managerE1
装配插件管理命名空间与事件
src/client/index.ts:13 import remote + src/remote-events.ts:12 import types
dsh-scheduleE1
装配 schedule 命名空间
src/client/index.ts:10 import remote + src/client/index.ts:44 import remote
dsh-scopeE1+E2
从 waterfall 的 this 提取 carrier Agent 作用域
src/index.ts:13 import carrierKeyOf + package.json peerDependencies dsh-scope
dsh-session-referenceE1
装配会话引用命名空间
src/client/index.ts:20 import remote + src/client/index.ts:52 import remote
dsh-subagentE1
装配 subagent 命名空间与客户端类型
src/client/index.ts:21 import remote + src/client/index.ts:53 import remote
④ 被依赖(dependents · 下游消费者)
dsh-client-ui-agent-preset
读取 preset 名册并订阅设置文档变更
src/client/index.ts:26-28 ctx.remote merge + src/client/index.ts:136 ctx.remote.$on('settings/document-updated')
dsh-client-ui-approval
订阅审批请求瀑布
src/client/index.ts:3 ctx.remote merge + src/client/index.ts:104 ctx.remote.$on('approval/request')
dsh-client-ui-chat
引入 ctx.remote 与转发事件声明
src/client/apply.ts:4 import @deepseek-ai/dsh-api-remotes/client
dsh-client-ui-commands
拉取 Host 命令目录并订阅变更
src/client/service.ts:19 + src/client/service.ts:108 ctx.remote.commands.list + src/client/service.ts:129 connection/reset
dsh-client-ui-cordis
经 Remote 命名空间同步宿主侧 cordis 事件与库存
src/client/index.ts:75-80 ctx.remote.$on + src/client/CordisPanel.tsx:13 import
dsh-client-ui-deliverables
引入 ctx.remote 与事件声明
src/client/index.ts:13 import @deepseek-ai/dsh-api-remotes/client
dsh-client-ui-directory-picker-browse
目录列举结果类型
src/client/DirectoryBrowser.tsx:43 import DirectoryListing from @deepseek-ai/dsh-api-remotes/client + src/client/flow.ts:8
dsh-client-ui-goal
目标 Remote 读取与 CAS 改动
src/client/index.ts:15 ctx.remote merge + src/client/index.ts:112-140 ctx.remote.goals.get/edit/pause/resume/clear
dsh-client-ui-message-feedback
调用 messageFeedback/sessionFeedback Remote 记录反馈
src/client/controller.ts:11 import + src/client/surface.ts:27 ctx.remote.messageFeedback
dsh-client-ui-model-selection
读模型目录 Remote 与转发事件
src/client/catalog.ts:4 import + src/client/service.ts:53 ctx.remote.$on
dsh-client-ui-open-in-app
ctx.remote 与 Remote 结果类型
src/client/index.ts:15 import type + src/client/open-path.ts:6 import
dsh-client-ui-permission-presets
写 defaultPreset 与读 Session 投影
src/client/index.ts:20 import + src/client/settings-store.ts:124 ctx.remote.settings
dsh-client-ui-plan
ctx.remote 与 Remote 转发事件面
src/client/index.ts:2 import + src/client/index.ts:64 ctx.remote.session
dsh-client-ui-plugin-manager
调用 pluginManager 等 Remote 并订阅 Host 事件
src/client/index.ts:19 import + src/client/manager-store.ts:607 ctx.remote
dsh-client-ui-reference
文件与会话候选的 Remote 查询
src/client/index.ts:17 import type + src/client/index.ts:71 ctx.remote.fileReferences.list
dsh-client-ui-schedule
ctx.remote 与 Remote 事件面
src/client/index.ts:41 import + src/client/index.ts:93 ctx.remote
dsh-client-ui-settings
读配置 describe 与写 settings 命名空间
src/client/index.ts:5 import + src/client/index.ts:43 ctx.remote.$on('settings/document-updated')
dsh-client-ui-settings-account
调用 account/session Remote 与订阅转发事件
src/client/index.ts:10 import + src/client/index.ts:107 ctx.remote.account.getProfile
dsh-client-ui-settings-general
判断 loopback 以决定是否注册本地设置文档动作
src/client/index.ts:12 type-only import + src/client/index.ts:102 ctx.remote.$host.isLoopback
dsh-client-ui-settings-models
订阅 Host 推送的设置/凭据/适配器失效事件
src/client/index.ts:17 type-only import + src/client/index.ts:124-127 ctx.remote.$on(...)
dsh-client-ui-settings-plugin-inventory
获取 Host 插件清单快照
src/client/PluginInventorySettingsTab.tsx:4 import type PluginInventorySnapshot + src/client/index.ts:38 ctx.remote.pluginInventory.list()
dsh-client-ui-settings-subagent
订阅 Host 推送的适配器/设置失效事件
src/client/index.ts:18 type-only import + src/client/index.ts:73 ctx.remote.$on('llm/adapters-updated')
dsh-client-ui-settings-web-search
订阅 Host 推送的凭据失效事件以刷新密钥态
src/client/index.ts:18 type-only import + src/client/index.ts:54 ctx.remote.$on('credentials/reference-updated')
dsh-client-ui-sidebar-documentpreview
经 remote 面读取工作区文件字节与分页文本
src/client/failure-line.ts:8 import (client) + src/client/index.ts:98 ctx.remote
dsh-client-ui-sidebar-files
经 remote 面列目录/订阅文件变更
src/client/FilesBody.tsx:14 import (client) + src/client/index.ts:71 ctx.remote
dsh-client-ui-skill
调用 skills/list 与订阅 agent-preset/selected
src/client/index.ts:37 import + src/client/index.ts:86 ctx.remote.skills
dsh-client-ui-tool
提供 Host home 事实用于 POSIX ~ 显示
src/client/apply.ts:3 import + src/client/apply.ts:31 ctx.remote.$host
dsh-client-ui-user-questions
订阅 Host 的 user-questions/request waterfall
src/client/index.ts:16 import + src/client/index.ts:105 ctx.remote.$on
dsh-client-ui-workspace
Host 目录选择器与 $host 事实
src/client/index.ts:19 import + src/client/index.ts:118 ctx.remote.directoryPicker
dsh-cordis-client-runner
跨平面调用宿主半运行、获取客户端代码与上报失败
src/client/index.ts:211-277 ctx.remote.* 调用 + src/client/index.ts:17 import
dsh-experimental-client-ui-voice-input
在 Client 注册实验 Remote 贡献
src/client/mount.ts:3 import '@deepseek-ai/dsh-api-remotes/client' + src/client/mount.ts:17 inject 'remote' + src/client/mount.ts:61 remote.$mount