Files
deepseek-harness/packages/client/ui-workspace/README.zh.md
2026-07-30 21:28:17 +08:00

3.5 KiB
Raw Blame History

@deepseek-ai/dsh-client-ui-workspace

English | 中文

共享 Workspace 选择器插件。WorkspaceBrowser 注册到侧边栏的 sidebar.workspaces slotWorkspacePicker 注册到页面局部 Session Intent 主视觉区的 conversation.hero.workspace slot因此两个表层使用同一菜单和创建流程。

该选择器通过全局 useWorkspaces hook 列出真实的 Host Workspace 实体。选择 Workspace 会调用 slot owner 的 onPick 回调,重新定位前端 Session 对象。每个注册各自声明一个目录流子洞single kindconversation.hero.workspace.directoryFlowsidebar.workspaces.directoryFlow),由组合的选择器包 client half 填入其选取交互——今天是 -native 后端的无渲染 OS 选择器驱动,-browse 组合下则是应用内浏览对话框。平铺显示的 打开本地文件夹… 操作仅在本表层的洞被占用时渲染每次菜单渲染读取占用状态洞为空意味着该组合没有选目录能力——seam 文档化的无流程默认行为)。本包持有触发与接纳:占用者经洞的 owner 会话(open/busy/onPicked/onCancel/onError每次打开上报一个所选路径owner 通过对象层接纳它,并等待 Workspace 列表投影刷新后才选中已提交的 Workspace取消操作不会显示提示错误落入可重试的文件夹对话框重新选择 会重新打开流程。创建新工作区 操作保留名称对话框,并禁用列表中已有的名称,而 Host 对并发或非 UI 调用方仍具有最终决定权。运行时 Session 与 Workspace 服务负责物化。Workspace 行内的 Delete 操作会打开确认框,说明保留边界、阻止重复提交,并在失败时保持打开;成功后,该分组会被移除,其 Session 则留在 Ungrouped 下。Session 行内的 Rename 操作打开同款浏览器持有的对话框并以该行的显示标题预填客户端不设名称冲突规则host 负责规范化,可能以 title-invalid 拒绝,错误渲染在对话框告警区);确认未修改的标题是有意允许的——这正是把当前自动标题钉住、不再被重新生成覆盖的手势。

Session 行内的 Fork 操作在源会话最后一个已完成轮次处 fork在 client 端递增继承的持久化标题后再打开子会话;尾部半角或全角括号编号会原样式递增,无编号标题追加 (1)。源会话与子会话在 workspace 组内始终作为同级行展示,谱系只保留为 session 数据。Fork 或改名失败都不会改变当前选中项,改名失败时已创建的子会话仍会留在列表中。

两个目标 slot 都由其他插件声明,因此 apply 通过声明感知的延迟机制完成注册,并在声明该 slot 的插件恢复后重新注册。

模型体验

无。选择器属于浏览器 chrome这里没有任何内容进入模型请求。

KV Cache 影响

无;该包既不组装也不发送提供方请求。

已知限制与暂缓事项

  • 没有 Session 删除控件Session 菜单的 Delete 行仍仅提供视觉效果;删除 Workspace 注册记录不会删除 Session。
  • 原生文件夹选择依赖本地 Host 载体:在 -native 组合下,仅使用 fixture测试前置数据的部署或远程浏览器部署无法打开本地操作系统对话框模态框会显示平台故障并允许重试。可远程的选取是 -browse 组合的应用内流程。