# 兼容性与升级检查 ## 当前适配范围 插件 0.0.6;已安装 DSH 基线 0.1.5-rc.1。Windows 浏览器 → WSL 插件宿主 → Linux SSH/DSH 已做隔离验收。Windows、macOS 远端及多客户端并发实机验证暂缓,不能宣传“所有平台已验证”。 | 功能 | 实现及验证范围 | | --- | --- | | 原生会话、历史、流式输出 | gateway 按所属后端路由;此前原生浏览器验收通过 | | 发送、取消 | 接入;本地模拟协议测试覆盖。当前轮没有对真实后端发送模型请求或取消已有任务 | | 改名、归档、工作区内排序 | 接入;本轮在专用空会话上真实验收 | | 创建工作区和会话 | 通过所属后端目录接口登记已有目录;隔离浏览器真实验收 | | 分叉 | 转发原生 fork 接口并转换返回会话 ID;未在本轮对真实有历史会话验收 | | 队列操作、附件读取与上传、会话 skills、文件引用 | 已接入显式路由与身份隔离测试;完整真实 UI 流程仍待验收。传输响应及流帧当前限制 4 MiB | | 工具审批、用户提问 | 未接入。上游使用可回传结果的远程事件通道,不是普通会话 RPC;须到所属后端界面处理 | | 第三方卡片和动态插件运行 | 未接入;不能因为原生界面渲染了卡片就认为其交互已支持 | | 已归档会话 | 管理页隐藏;恢复请使用所属后端的归档管理。原生 workspace 契约未提供恢复方法 | | 远端文件侧栏 | 未接入;已识别远端文件 scope,拒绝向主后端回落 | | 跨机器移动/复制 | 不支持;不同后端身份组合拒绝执行 | | 重连 | 有限重试、保留身份、原生重新订阅;不会自动重发变更请求 | | 主后端重启 | 保存主机配置,但连接需手动重建 | | 全局设置、插件与 skills 同步 | 不同步,主后端仍负责全局界面 | ## 如何接入 `src/index.js` 在插件生命周期内包装 `typertGateway.invoke/stream`,保留原方法并在卸载时恢复。`native-gateway.js` 只翻译已知身份字段,不改写对话文本、路径和附件内容。`native-contract.js` 集中声明当前适配的操作。 这是对公开服务方法的运行时适配,不是上游承诺稳定的多后端中间件接口。没有覆盖 DSH 安装文件,也没有第二套对话 renderer 接管原生会话;源码中保留的早期 renderer 仅用于历史测试,不是当前界面。 设置和主页面通过 DSH 插件槽注册。原有 directoryFlow 是单占用槽,本插件不替换其现有目录选择器;远端“添加工作区”入口在多端管理中,原生侧栏的原有按钮仍创建主后端工作区。 ## 基础协议检查的边界 连接和重新登录时,在暂存的 SSH carrier 上读取 workspace/follow 与 session/control 的首个 baseline,校验结构并关闭探测订阅。失败则不接入,主后端保持可用。当前契约不提供这里可以依赖的 DSH 语义版本字段,所以界面明确显示“远端版本未核验”;不能把它标为与主机版本一致。基础协议检查也不能证明所有写操作都兼容。 ## 更新流程 1. 记录目标 DSH 版本,检查 Host gateway、Client loader 依赖、原生会话与工作区签名。 2. 在独立 profile 加载插件,运行 `npm ci`、`npm run build`、`npm test`。 3. 实际验证连接、目录浏览、创建、原生会话、改名、归档、排序、断线、未发送草稿;变更测试只用专用会话。 4. 分别验证附件、审批及第三方卡片,不能用文本对话通过代替这些验收。 5. 记录通过和未覆盖的范围,再发布插件预览版。不要直接在运行任务的主力后端升级。 DSH 0.1.5-rc.1 的当前开发安装不监视链接源码;Host 代码更新需要检查任务状态后重载后端,刷新浏览器只能更新 Client 代码。 ## 上游源码参照 - [DSH 源码](https://github.com/deepseek-ai/deepseek-harness) - `packages/client/ui-workspace` 的 directoryFlow 与工作区注入契约。 - 安装包 `dsh-api-workspace-controller`、`dsh-api-session-controller` 的 `typert.remote-client.d.ts`。 - `dsh-api-remotes` 转发事件中的 `approval/request` 与 `user-questions/request`。 上述 master 链接只用来定位源码,不构成对任意未来版本的兼容承诺。