Skip to content

整体架构 ​

dsh-mytable 的核心不是某一个组件,而是服务端插件、客户端工作台和 DSH 宿主之间的协作。

三个层次 ​

1. 插件入口与打包 ​

dsh.plugin.json 声明插件名称、版本和 Web 客户端平台;cordis.patch.yml 负责把插件接入 DSH 配置。build.mjs 使用 esbuild 分别生成服务端入口 lib/index.js 与客户端入口 lib/client.js,最终再通过 npm 包交付。

2. 服务端能力 ​

src/index.ts 注入 DSH 的 webServer 和 sessions 服务,并在 /api/worktable/* 下提供私有协议。主要职责包括:

  • 列出与搜索工作区文件;
  • 读取文件并按类型返回正确的 MIME;
  • 获取 Git 仓库、分支和工作区改动;
  • 从会话事件中收窄并整理工具调用、输出和 token 统计;
  • 在宿主依赖允许时注册终端 WebSocket;
  • 探测外部网页是否允许被 iframe 嵌入。

服务端会优先通过官方 @deepseek-ai/dsh-home-paths 解析数据目录,不可用时再按 DSH_HOME 与 ~/.dsh 规则回退,避免不同 profile 或桌面环境读错数据。

3. 客户端工作台 ​

客户端入口位于 src/client/index.tsx。它把工作台侧边栏、布局编辑、文件预览、终端、浏览器、Git 改动、任务、提示词空间和 Flowglass 等能力接入 DSH Web UI。

其中 split.tsx 负责通用分栏引擎,mytable-service.ts 提供第三方插件扩展入口,各类具体窗口则被拆分为 explorer-pane.tsx、browser-pane.tsx、changes-pane.tsx、jobs-pane.tsx 等模块。

一次典型交互 ​

  1. 用户在工作台里选择一个项目和会话。
  2. 客户端根据布局配置创建窗格与标签页。
  3. 文件树、Git 或会话统计通过 /api/worktable/* 请求插件服务端。
  4. 服务端基于会话目录或客户端传入目录解析目标工作区。
  5. 结果回到对应窗格,布局与偏好保存在浏览器本地存储中。

这种结构让 UI 可以快速组合,同时把文件系统、Git 和终端等高权限能力留在服务端边界内。

下一篇:分栏工作区模型