# dsh-remote-deck · Roadmap > Remote Deck(远程工作台):把任意 SSH 机器接进 DeepSeek Harness, > 用同一个对话界面在远端开发。**对话是主界面,配置是辅助。** - 当前版本:`0.3.0-dev.0`(阶段 1 开发中) - 设计稿:`docs/design/v2/`(6 屏,已确认) - 旧插件:`dsh-remote-ssh`(保持可用,直到 v1.0.0 切换) --- ## 0. 产品原则(迭代时每次对照) 1. **对话优先**:用户 90% 时间在对话里。胶囊、控制台、设置只在需要时出现, 不抢占主区,不做常驻侧栏大块,不把配置做成首页。 2. **一个窗口**:不另开 DSH 实例,不弹外部窗口;所有远程操作留在现有 UI。 3. **多机器并行**:N 台机器可同时连接;工作区与会话按机器归类,一眼可辨。 4. **透明**:状态、延迟、错误原因、host 构建号都可见;不出现"点了没反应"。 5. **可回滚**:任何一步失败都能退回上一个可用版本;数据迁移只读旧数据。 6. **可分享**:npm 包 + GitHub 仓库,别人装上就能用。 --- ## 1. 版本路线 ### v0.3.0 — 基座(Foundation) **目标**:新名字、新仓库、数据平滑迁移、连接层重写、两屏设计落脚。 交付: - 包名 `dsh-remote-deck`,图标、README、LICENSE、CHANGELOG、CI。 - 数据目录 `/remote-deck`;**只读迁移**旧 `remote-ssh`: 连接配置复制、旧工作区 stub **原地复用**(不改路径,会话归属不丢)。 - 连接层:每台机器一条常驻 SSH 连接 + 按需通道(exec / sftp),keepalive, 指数退避自动重连;并发多机器互不阻塞。 - 设计系统:`theme.js`(主题 token + 回退)、图标 sprite、组件(按钮/卡片/胶囊/输入)。 - 屏 01 快速面板(胶囊 + 机器切换 + 最近工作区 + 快捷操作)。 - 屏 02 标识(会话头胶囊、行徽标、悬停卡、工作区命名约定)。 - 多机器分类数据模型:`hosts[] / workspaces[] / sessionsByWorkspace`。 验收: - 旧连接、旧工作区、已有会话在新插件下全部可用,**不出现工作区丢失或未分组**。 - 两台机器同时连接,`bash` / 读写 / 搜索各自路由正确。 - 屏 01、02 真实渲染截图与设计稿逐项对照,差异清单清零或书面说明。 ### v0.4.0 — 控制台(Console) **目标**:机器多起来之后的管理入口。 交付: - `main#remote-deck` 主区页面 + `sidebar.panellist` 入口(仅图标,不占侧栏)。 - 机器栏(已连接/未连接/SSH 配置导入)、概览指标、工作区卡片、最近会话。 - 分类与筛选:按机器 / 按工作区 / 仅活跃;空状态、加载态、错误态。 - 从控制台一键:新建工作区、打开终端、连接/断开/重连、打开工作区会话。 验收: - 3 台机器(2 在线)切换无闪烁;工作区与会话归属正确。 - 屏 03 截图对照;进入控制台不打断正在进行的对话(返回对话一条路)。 ### v0.5.0 — 工作区与接入(Workspaces & Onboarding) 交付: - 屏 04:面包屑 + 可编辑路径 + 筛选 + 键盘操作 + 右侧预览 + 删除(二次确认,不删远端目录)。 - 屏 05:`~/.ssh/config` 解析与导入、手动配置、密钥/密码、`测试连接`(延迟/OS/shell)、 启动自动连接、`known_hosts` 首次确认提示。 - 新工作区命名 `机器名 · 目录名`,写入 AGENTS.md 引导(可关)。 验收: - 从零导入 4 台机器 → 连接 1 台 → 新建工作区 → 在该工作区开新会话, 远端 `pwd`、读写、rg 全部正确;删除工作区后远端目录仍在。 ### v0.6.0 — 终端与端口(Terminal & Ports) 交付: - 屏 06:远程 PTY(独立 SSH 会话,多标签),断线提示与重连。 - 端口转发:手动新增、自动发现远程监听端口、重连后恢复、打开/复制/停止。 - 每个转发的生命周期可查(日志页)。 验收: - 远端跑 `vite`,控制台自动提示并转发,`http://127.0.0.1:5173` 可打开。 - 终端里 `Ctrl+C`、中文、粘贴正常;关闭标签只断该会话。 ### v0.9.0 — 打磨(Polish)· 已完成 交付:浅色/深色主题全覆盖(token 化 + `data-rd-theme`)、连接失败与空状态、 真实的端口转发指标、错误文案统一、调试挂载收敛计划。 验收:浅色/深色截图对照通过;连接失败显示原始原因;页面无报错。 (完整 xterm 终端与中英双语顺延到 v1.1,见下。) ### v1.1.0 — 终端与国际化(发布后) - 终端多标签与会话命名。 - i18n:中文/英文词典,跟随 `ctx.locale`。 - 调试挂载(`__RD_*`)收敛为显式调试开关,默认关闭。 - 大目录(>2000 项)虚拟滚动;空闲时零轮询。 ### v1.0.0 — 发布(Release)· 已完成(切换待确认) 交付: - README(真实截图、安装、迁移、回滚、FAQ)、CHANGELOG、Release note、npm `files` 校验。 - 完整终端:内置 xterm.js 5.5(颜色/光标/全屏程序),失败时回退行渲染。 - CI:`node --check`、`npm test`、`npm pack --dry-run`、manifest 校验。 - 一键切换:`install.ps1 -Profile desktop -RemoveOld`(备份 + 保留旧文件),`-Rollback` 还原。 - GitHub 仓库字段、tag、Release、推送清单见 `PUBLISH.md`。 验收:切换脚本在测试 profile 上实测(安装/移除旧插件/回滚/卸载); 干净 profile 安装验证;桌面 profile 的实际切换等待用户确认后执行。 --- ## 2. 视觉验收流程(每屏都走) 1. 在**测试 profile**(`deckcheck`)里装载新插件,不改桌面 profile。 2. 用 headless Chrome 以 1440×900 渲染真实页面(真实 host + 真实数据),截图。 3. 与 `docs/design/v2/0x.png` 并排比对:间距、字号、圆角、颜色、层级、空态。 4. 输出差异清单(必须项 / 可接受项),必须项修完再进下一阶段。 5. 深色模式补一张截图(v0.9.0 起为必须项)。 6. 从 `docs/design/v2/` 渲染截图,README 引用。 对照不要靠"看起来差不多":以设计稿的像素结构为准,偏差写入 CHANGELOG。 --- ## 3. 与旧插件并行 / 迁移 / 回滚 - 新包名 `dsh-remote-deck`、新 bundle 行 `remote-deck`、新数据目录, **开发期间不写入桌面 profile**,只在 `deckcheck` 测试 profile 里加载。 - 旧 `dsh-remote-ssh` 继续跑在桌面 profile,不受影响。 - 数据迁移在 **v0.3.0 首次加载时执行一次**:只读旧目录,写新目录; 旧工作区 stub 原地复用,避免工作区 id 变化导致会话变成未分组。 - v1.0.0 切换桌面 profile: ```powershell .\install.ps1 -Profile desktop # 安装新插件 .\install.ps1 -Rollback # 一键回到旧插件 ``` - 在正式切换前,桌面 profile 的 `package.json` 与 `node_modules` 都会备份。 --- ## 4. 发布流程 1. 改 `package.json` 版本 → 更新 `CHANGELOG.md`。 2. `npm run check`(语法 + manifest)→ `npm pack --dry-run` 检查文件清单。 3. `git tag v0.x.0` → push → GitHub Release(附 zip)。 4. npm:`npm publish --access public`(发布前确认包名仍可用)。 5. 插件市场:把仓库地址与描述提交到 DSH 插件索引(另见 `PUBLISH.md`)。 --- ## 5. 迭代节奏 - 每个版本一个阶段,阶段内小步提交;提交信息 `feat:/fix:/docs:/chore:`。 - 每阶段结束:截图验收 → 更新 CHANGELOG → 打 tag → 进入下一阶段。 - 任何阶段破坏旧插件或丢数据,立即回滚并记录原因。