DSH API Remotes
by DeepSeek
为本应用选定的 Host Remote 能力提供双侧 BFF。Host 入口负责 Agent/Session 身份策略;Client 入口以运行时值形式导入生成的 /remote 产物,通过 ctx.remote.$mount() 挂载每项贡献,并重新导出对应的声明合并。Client 业务包依赖该外观,而不依赖 Gateway 实现或单独的 Remote 运行时入口。
标签合集
标记为 #browser 的已发布插件。
by DeepSeek
为本应用选定的 Host Remote 能力提供双侧 BFF。Host 入口负责 Agent/Session 身份策略;Client 入口以运行时值形式导入生成的 /remote 产物,通过 ctx.remote.$mount() 挂载每项贡献,并重新导出对应的声明合并。Client 业务包依赖该外观,而不依赖 Gateway 实现或单独的 Remote 运行时入口。
by DeepSeek
协议消费层:客户端插件的 apply 会挂载 ctx.connection(共享 API 客户端 + 当前页面的 loopback 状态 + 可观察且按 generation 生效的 hostDescription + 单消费方流循环启动器);导出表层携带协议约定类型、AbstractApiClient 抽象,以及循环的 sink/配置类型。每次就绪握手成功后,都会在 onConnected 之前发布完整的 host.describe 值;generation 失效或显式 stop 会清空它,因此原生能力消费者不会…
by DeepSeek
为通过脚本加载的客户端插件提供热重载。web 组合包无条件挂载该行;没有重建 watcher(pnpm run dev:web)改写客户端 bundle 时,轮询观察不到变化,链路保持空闲。
by DeepSeek
locale 插件:LocaleRuntime——zh/en 偏好以 locale.preference 存储在 $DSH_HOME/settings.yaml 中;若没有显式 Host 值,全新浏览器会暂时使用 navigator 请求的语言(按主子标签匹配;若其请求的语言本应用都不提供,则使用 zh)。Host 读取在插件激活后执行,因此 settings 服务不可用不会阻塞页面;读取结果会实时替换浏览器暂定值。settings API 仅限回环请求,因此远程浏览器的选择仅保留在进程内。locale/chang…
by DeepSeek
客户端模块系统:Node 内部 ESM loader 的浏览器端对等实现,以惰性 CJS 表实现。web 外壳挂载 vendored cordis Loader 来治理配置项(fiber 生命周期、inject 等待、update/refresh),并通过其 internal 约定注入该包的 ClientModuleLoader;vendored 一侧唯一的消费点是 EntryTree.import,因此替换 internal 恰好只会替换「插件代码如何到达」,不会改变其他内容。
by DeepSeek
客户端 cordis 启动与不依赖 React 的对象服务:SlotRegistry 包装 SlotCore 并提供 renderer 数据源;SessionRuntime 拥有 Session 对象、列表与 scope 状态,以及供已注册 conversation view target 共用的事件窗口与历史分页。WorkspaceRuntime 依赖 SessionRuntime,拥有 Workspace 对象、列表/操作、默认目标派生,以及 New Session 空会话复用入口(connectWorkspa…
by DeepSeek
agent preset 的各个表层:General 设置中的一行,用于选择新建会话据以组装的 preset;新建会话界面上的一枚 chip,用于选择下一个会话的 preset;会话标题旁的一个只读标签;以及一个设置页分区,用于管理名单——复制、删除、默认值,以及通往 preset 自身文件的入口。
by DeepSeek
客户端命令 API(ctx.commandUi):以会话为 key 的命令目录缓存、带 matchSpace/matchEnter 决策钩子的 / 命令 source、三类派发(execute/popupSelect/leadingInput),以及面向业务包的 popupSelect 注册。Web 命令 Agent Note 记录了这项决策。
by DeepSeek
会话领域:骨架(标题栏/标签页/编辑器/空状态)、聊天视图(分组步骤摘要流、流式尾部隔离与轮次状态)、编辑器 dock(与输入区一同 sticky 的会话统计行)、输入区 dock(队列行加 todo 计划条)、详情壳层,以及按 scope 寻址的 ConversationController。工具展示属于 ui-tool。
by DeepSeek
Cordis 动态插件的浏览器半:一个覆盖整个框架的面板,操作 host 持有的全部定义;以及一张只读的 cordis_define 卡片,记录某个会话定义了什么。
by DeepSeek
产出文件与可点击文件引用功能的属主。Node 侧向系统提示词 registry 注册最终回复指引;浏览器侧把已完成轮次末尾的产出文件行注册到 chat 视图的 conversation.chat.turnTail slot,并将收尾正文中匹配的行内代码引用转换为链接。正式提供的组合中只有 Web patch 加载本包;从 cordis.yml 中删去这一项会同时移除提示词、文件行与正文链接。
by DeepSeek
Goal 界面插件(浏览器端部分):GoalBar 条带是 conversation.input.dock composer 上下文堆栈中的第二张独立卡片(order 10,位于 Todo 之后、Queue 之前)。活值经 useProjection('goal') 到达——host 计算的全量值由历史尾页播种、由 session/projection 帧更新——因此本插件不持有领域 store、不设刷新链、不挂事件监听。slot 注入面只携带四个变更动词(edit / pause / resume / clear…
by DeepSeek
输入触发流水线插件:光标处的 / 与 @ 检测(词边界 + guard tier 规则)、分组候选菜单,以及把 pick 路由到已注册 source。ctx.inputTriggers 拥有 source roster,并按会话 scope(sessionOf)各解析一个 InputTriggerController;对话接线层在 controller 上驱动 track/arbitrate/onSpace/adjudicate。同一个 controller 还暴露 toggleSource,供 chrome la…
by DeepSeek
Web 后台任务特性的归属方:向 conversation.session.header.actions 贡献一个条目,列出当前会话可见的 ctx.jobs 记录。数据完全来自 dsh-client-runtime 从 session/jobs 帧折叠出的 jobsBySession 列表镜像,因此本包不发任何 RPC,除弹层开合外不持有任何状态。
by DeepSeek
外壳插件:三栏 AppFrame(拖动手柄与让步链)加 ctx.layout 面板几何服务;它注册到运行时拥有的 root slot,并声明 sidebar、conversation、details 和 conversation.empty。侧边栏的缩放边界是不可见命中条带,详情栏边界则保留其浮动胶囊;让步期间只有详情栏会收缩并随后自动关闭。关闭的侧边栏仍保留 56px 控制栏,详情栏则关闭到零宽度。该包还提供主题呈现器:它消费解析后的 ctx.theme 快照,并将其投影到 document(用 html { c…
by DeepSeek
单条消息反馈插件的浏览器侧:一对 Like/Dislike 按钮加一个可选备注,作为 conversation.chat.assistant-actions 条带的 feedback 条目(order 10)贡献。该条带由 ui-conversation 声明,渲染在已定稿助手消息的 IconActions 行内、复制与分支之间,因此控件沿用该行的样式与 hover 行为。只有已定稿的消息能到达这个 slot——被中断冻结的部分输出不带 messageId,因此也没有反馈控件。该操作栏每个 Turn 渲染一次,位于…
by DeepSeek
模型选择插件(浏览器侧):两个入口共用一份会话级目录,由 ModelDirectoryResolver(ctx.modelDirectories)持有。对于普通会话,/model popupSelect 贡献项(经 ctx.commandUi 注册)与 composer 的具名 conversation.input.model slot 都通过同一个 ModelDirectory 实例,经 session.models 加载会话的建议目录,并经 session.selectModel 提交。紧凑型 composer…
by DeepSeek
面向两种不同生命周期的浏览器权限界面。「通用」设置行读取显式暴露的 permission Settings 描述符,从 host 的动态 defaultPreset enum 中推导选项,并携带描述符的 revision 写入一条 settings.mutate 路径操作。它的 observable 经 slot 系统的 hooks 格传递,因此 React 钩子由渲染器绑定;推送的失效通知会重新获取描述符。这个值仅在后续会话创建时生效;改变它不会切换当前会话。选择 Full access 时必须先显式确认风险,该…
by DeepSeek
Plan mode 状态徽章,纯浏览器 surface 插件。浏览器侧占用会话声明的 conversation.input.plan 单实例 seat(位于 access 模式控件右侧);node 侧是空 apply(roster 行)。plan 行为本身——/plan 命令、边界或空闲即时提交的 plan/mode 状态、plan 投影单元与 policy 段——归 @deepseek-ai/dsh-plan-mode 所有,由 host roster 独立组合。
by DeepSeek
设置领域的底座,承担两项职责,本身不含任何呈现内容。它提供 ctx.settingsScope——每个偏好设置行绑定自己那份持久化命名空间分区所用的宿主传输层;并声明由注册方填充的设置 slot 类型:settings.trigger/settings.header/settings.close(界面框架内容)、settings.action(内容标题栏中的有序操作)、settings.section(每项功能一页)、settings.plugins.tab(“插件”分区内由各功能持有的页面)和 settings.…
by DeepSeek
设置外壳、无特定功能归属文案与持久化产品引导 namespace。它以触发控件和模态设置面板占用 sidebar.settings,把 settings.section 账本投影成导航、把 settings.onboarding 账本投影成每次只挂载一个步骤的引导流程,并在设置页面上注册所有不属于单一功能的内容:触发器、标题栏与关闭控件内容、本地配置文件操作,「通用」分区及其 settings.general.item slot,以及 settings 字典。它渲染进的那些 slot 类型归 ui-settings…
by DeepSeek
模型设置与产品引导插件。同一个 client Cordis 插件会注册 Models 页面和两个有序的首次使用弹窗:版本化内测声明,以及按条件显示的 DeepSeek 官方凭据步骤。两个步骤共用同一套弹窗组件,并继续由 settings.onboarding 排序。Models 平面把三个协议领域汇聚为一个共享快照:llm.providers(可配置提供方目录,含每条路由的存活/休眠状态)、settings.describe(序列化 schema、分层脱敏值、secret slot)与 credentials.de…
by DeepSeek
Web 设置中的只读插件列表标签页。浏览器插件注册一个 id 为 all 的本地化 settings.plugins.tab 贡献;“插件”分区拥有导航入口与标签栏。插件激活期间不会读取 Remote;首次选择该标签页时才挂载组件,并通过 api-remotes 懒调用 ctx.remote.pluginInventory.list()。
by DeepSeek
插件设置分区及其插件配置标签页。该分区拥有标题与紧凑的标签栏;功能插件通过 settings.plugins.tab 贡献页面。本包自己的标签页为每个配置由用户拥有的 Host 插件展示一张可展开卡片。卡片展示插件名称及其管辖范围;就地展开后是绑定到该插件 settings 命名空间的手写控件,每个字段标注用户是否覆盖过它,并提供重置回部署组装值的入口。
by DeepSeek
侧边栏外壳插件:负责字标、New Session 操作、布局持有的折叠控件、可感知滚动的区域 seat,以及固定在底部的 Settings seat。ui-workspace 持有渲染到 sidebar.workspaces 的 Workspace 与 Session 浏览器;本包既不派生其中的行,也不持有其视图偏好。折叠到布局拥有的 56px 轨道仍属于本地呈现行为。约定:slot 系统标准。
by DeepSeek
skill(技能)调用 source 的浏览器端:把 / 触发的 skill source 注册进 ctx.inputTriggers。普通会话的候选来自 skill.list RPC,以每次调用的 ClientSessionContext 投影中的 {sessionId} 寻址,host 从会话 header 解析 cwd。宿主提供每一个用户可调用的 skill;modelInvocable: false 的条目(即 disable-model-invocation skill,此路径是其唯一入口)会以当前语言把…
by DeepSeek
Web subagent 功能 owner:向 conversation.session.header.actions 贡献可懒加载展开的目录树,向会话编辑器链贡献按原因区分的只读替代呈现,并保留注册到 ctx.inputTriggers 的既有 @ 引用 source。
by DeepSeek
主题插件:基于 --dsw-* token 基础样式表(静态尺度 + 别名语义层)的 ThemeRuntime。该服务拥有实时主题偏好(light/dark/system),将 system 通过 prefers-color-scheme 解析为实际主题,并发布不可变的 ThemeSnapshot,通过 theme/change 事件通知变化;它绝不接触 DOM:ui-layout 的呈现器会应用解析后的快照(html { color-scheme }、body[data-ds-dark-theme],以及主题的别…
by DeepSeek
Client 工具展示插件。ui-conversation 通过 conversation.chat.node 的匹配 key 分发每个已排序的 tool-call Conversation Node;本包渲染其中的 root 及其 Code Dispatch 子调用,并把每个原子调用通过 keyed slot tool.call.toolview 分发。没有注册的工具名称使用通用卡片。
by DeepSeek
Trajectory 渲染按轮次组织的事件记录表,其中可选择用户、助手、工具和嵌套子工具记录。较粗的分割线标示轮次边界,紧凑的行内标记标识步骤,主记录表仅保留索引、事件和内容;选择记录则会打开局部检查器,查看 token 用量、耗时、输入、输出和计时。可滚动的概述区域默认保持滚动条滑块透明,直到鼠标悬停该区域或其中包含键盘焦点时才显示,同时不改变滚动条预留的几何空间。独立运行的压缩(compaction)请求会按时间顺序显示在自己的 Between turns 区段中,而带编号的压缩仍位于其所属轮次内。长记录表打开…
by DeepSeek
Web 提问功能插件:其浏览器侧把 question 条目注册到会话拥有的 conversation.composer 键控 slot 中。其主机侧刻意为空——在那里挂载 dsh-tool-ask-user 会把工具放进注册表的全局层,而全局层会并入每一个 agent(智能体),无论它由哪个 preset 组装,于是一个「两工具」的 benchmark preset 实际会呈现三个。渲染提问是宿主的 UI 能力,拥有该工具则是 agent 的能力,因此 tool-ask-user 行属于需要它的各个 preset(…
by DeepSeek
这个浏览器插件把持久化的顶层工作流运行重建为独立 Chat 节点。它消费由 dsh-tool-workflow 拥有的四类 tool-workflow/* Session 事件,注册一个 ConversationNodeDefinition,并通过 keyed conversation.chat.node slot 渲染,不改变现有工作流工具卡。
by DeepSeek
共享 Workspace 浏览器与选择器插件。WorkspaceBrowser 填充侧边栏的 sidebar.workspaces slot,WorkspacePicker 则填充页面局部 Session Intent 主视觉区的 conversation.hero.workspace slot;两个界面使用同一套 Workspace 菜单和添加流程。
by DeepSeek
动态双半插件包的浏览器半。host 侧 runner 把每个定义的代码留在进程内存里,并经一条 cordis/request-run 事件向打开的页面发问「要不要运行它」;本包回答这个请求、把定义变成活的浏览器插件,并把 dynamicCordisRunner/retract 事件变回干净的页面。
by DeepSeek
由模型挂载的动态包在 host 侧的那一半:定义注册表、host 半所用的 node:vm 沙箱与 fiber 生命周期、invoke handler 表,以及由某个浏览器页面执行的 run 往返。以 ctx.dynamicCordisRunner 提供。面向模型的工具在 @deepseek-ai/dsh-tool-cordis 中;浏览器半由 @deepseek-ai/dsh-cordis-client-runner 装载。
by DeepSeek
所有客户端共用的 API 网关由三部分组成:TypeScript API 约定(src/api/,不依赖 Node,可从浏览器导入)、fetch 载体对(src/fetch/:宿主侧的 toFetchHandler,以及客户端侧的 AbstractApiClient 与平台子类)和宿主侧实现(src/api-proxy.ts:createApiProxy 加上默认导出的 ApiProxyService 网关插件,其配置为 {nativeOpen?, sessionExportCompressionLevel?, c…
by DeepSeek
目录选择 seam 的自适应选择器:一个只有 node 半侧的插件,在启动时一次性判定宿主处境,并把匹配的双面后端——-native 或 -browse——作为真实的 Loader 条目挂进内存根树(绝不持久化到配置文件;根树的 write() 是 no-op)。由于后端以普通条目的形式到达,其 browser half 被 client 模块表发现的方式与配置行完全相同,因此对判定出的选择,seam 的“一行同时换两面”不变式依然成立。卸载该选择器会再次移除该条目,连同两面一起卸载。
by DeepSeek
当前 Cordis Loader 树的只读 Host 投影。PluginInventoryGateway 注册 pluginInventory 服务,并发布一个由 Typert 生成的直接 Remote:pluginInventory/list。每次调用都直接读取 ctx.loader.entries(),跳过结构性的 group 行,再按 Loader 顺序返回其余条目,并且只包含 Loader 条目 id、模块标识、有效启用状态与当前根 Fiber 阶段。
by DeepSeek
Web HTTP 与 upgrade route 注册插件(默认导出 WebServer,配置为 {host, port}):一个在激活时开始监听的 node:http 服务器,提供 ctx.webServer。register(route) 添加具名的 exact/prefix HTTP route;registerUpgrade(route) 添加精确 pathname 的 upgrade route;同一张表内的重复路径会抛错,因为 route 模式是组合层约定,冲突即配置错误;两者返回的 disposer…
by DeepSeek
本包提供由 Host 拥有、针对单条已完成 assistant 消息的可编辑反馈。它注册 ctx.messageFeedback,在 storage-domain 中为每个 Session 持久化一条绑定生命周期的伴随记录(sidecar),并发布 Host messageFeedback.list、messageFeedback.put 与 messageFeedback.delete 一元 Remote 契约。它与不可变的 Session 级 feedback/record 事件相互独立,不执行遥测交接。消息反…
by DeepSeek
DeepSeek Harness 的 Workspace 实体注册表(ctx.workspaceRegistry):通过领域数据形式存储持久 workspace 记录、稳定 workspace 顺序和按新到旧排列的候选会话索引。消费方看到 Workspace 接口;实体实现保持包私有。
by chenyuheee
基于 Playwright 的浏览器自动化,支持稳定无障碍引用、多标签页、内容提取与截图。