Compatibility
August 24, 2026 · View on GitHub
支持状态
| 场景 | 当前状态 | 说明 |
|---|---|---|
| 标准 DSH bundle | 阻塞 | bundle 声明已具备,但公开发布仍被 PUBLICATION_METADATA_UNCONFIRMED 阻断;stock DSH 还必须提供 Workspace Provider API v1。 |
| stock DSH(未提供 Provider API v1) | 不兼容 | 可以管理已有 SSH 连接配置,但不能创建新的服务器工作区;不会伪装为本机工作区。 |
| 开发者兼容 fork | 已验证的限定路径 | 只针对 DSH Desktop 2.0.2 / DSH core 0.1.1-rc.2,通过 developer fork/compat 安装器事务性替换 17 个锁定 runtime 包。 |
| 交互式 SSH PTY / persistent terminal | 不支持 | 当前只提供 Agent 文件工具和非交互普通 shell 命令;PTY 请求必须明确失败。 |
当前没有官方兼容版本列表。任何不同 DSH 版本、下游 fork 或不同 core hash 都必须重新完成契约、集成与回滚验证,不能从上述限定结果推断兼容。
Desktop 与 Web 的连接位置
- Desktop:SSH 从运行 DSH Desktop Host 的机器发起,密钥路径属于该 Host 机器。
- Web:SSH 从运行 DSH Web Host 的机器发起,不从访问页面的浏览器设备发起;表单中的密钥路径必须是 Web Host 上的绝对路径。
- 同一个浏览器访问不同 Web Host 时,会使用不同 Host 的配置、密钥、
known_hosts和网络出口。 - 非 loopback Web 管理不受支持。远程浏览器应通过 SSH 本地端口转发访问 Web Host 的 loopback 监听。
Workspace Provider API v1
插件要求 Host registry 暴露精确的数值版本 1。缺少版本、字符串 "1"、旧版本和未来更高版本都不会被猜测为兼容。
客户端把兼容性呈现为五种状态:
| 客户端状态 | 含义 | 行为 |
|---|---|---|
loading | 正在读取 Host 健康状态 | 暂不允许创建服务器工作区。 |
ready | Host 提供精确匹配的 Provider API v1 | 可以选择并创建服务器工作区,仍需连接已建立且路径通过权限校验。 |
unavailable | Host 没有 Provider API | 已有连接配置仍可查看和管理;服务器工作区创建失败关闭。 |
incompatible | Host API 版本或契约不匹配 | 已有连接配置仍可查看和管理;提示所需与实际版本,创建失败关闭。 |
error | 健康请求失败或返回格式无效 | 允许重试健康检查;创建失败关闭,避免误建本地目录。 |
Host 健康契约中的持久状态为 ready、unavailable、incompatible;loading 和 error 是客户端对请求生命周期与异常响应的状态表达。后端的工作区创建、解析、链接和 target 获取接口在非 ready 状态返回结构化 503;列表与删除保留为恢复路径。
运行依赖
DSH Host
- Node.js
>=22,并满足插件package.json中锁定的 DSH/Cordis peer 依赖。 - Windows 或 POSIX Host 上可调用的 OpenSSH 客户端;主机指纹探测使用
ssh-keyscan,Windows 不具备该命令时可回退到禁止认证和远端命令的ssh.exe协商。 - 自动生成密钥需要
ssh-keygen。 - Windows 密钥生成与开发者安装验证依赖 Windows PowerShell 5.1 兼容行为和可验证 ACL。
远端服务器
- 可通过 key-only SSH 访问,且目标用户的公钥已经由管理员安装。
- 提供
python3。目录/文件 helper 与远程执行监督器不会回退到服务器 shell 脚本实现。 - 远程命令 cleanup 监督要求 Linux 的
/proc、进程组/session 语义和 subreaper 能力;其他 Unix-like 系统没有被声明为命令执行兼容目标。 - 目标路径必须是 POSIX 绝对路径,并位于该连接的
allowedRoots内。
已知限制
- 不支持 SSH 密码、键盘交互认证、在插件中输入私钥内容或保存私钥口令。
- 不支持交互式 SSH PTY、persistent terminal、ProxyJump 或把用户 SSH config 作为隐式配置源。
- 不自动安装或撤销服务器
authorized_keys,也不自动轮换或删除已生成的私钥。 - Web 管理只允许直接 loopback;没有可复用的 DSH 插件认证 seam 前,不支持把管理 API 暴露给非 loopback 客户端。
- 本轮没有完成真实 Desktop/Web 视觉验收;公开发布前仍需在目标 Host 上完成可见运行时检查。
回滚与数据
标准 bundle 尚未发布,因此当前回滚说明只适用于 developer fork/compat 安装器:
- 完全退出对应的 DSH Desktop 与 DSH Web Host。
- 使用安装时相同的锁定 DSH package root 运行
scripts/install-local.ps1 -RestoreLastInstall。 - 安装器验证 v4 回执、备份、哈希、manifest 和目标路径后,才会恢复插件、profile 与全部受影响的 core 包。
scripts/uninstall-local.ps1 只移除插件注册,不能恢复被 developer installer 替换的 core 包。连接配置、工作区绑定、密钥、known_hosts、cleanup fence 和安装回执均不在本轮进行数据迁移;恢复或卸载不会自动删除服务器文件或已生成密钥。