在 DeepSeek Harness (DSH) 中操作远程镜像工作区时,区分当前会话是本地连接还是远程机器连接非常重要。当工作区标题保持不变,仅通过目录切换来隐式改变上下文时,容易在多会话切换或故障排查时产生混淆。下面介绍一个用于解决这一问题的 UI 指示器插件。
插件简介¶
dsh-remote-status 是一个 DeepSeek Harness 插件,位于侧边栏底部。它通过一个状态芯片显示当前会话是“本地”还是“远程 · 机器名”,并支持悬停查看详细诊断信息。
- 维护者:HandsYe
- 许可证:MIT
- 核心定位:纯 UI 指示器,不修改工作区标题或数据,仅提供状态可视化。
核心功能¶
1. 状态芯片显示¶
插件在侧边栏底部提供状态指示,根据当前会话类型显示不同样式:
* 本地会话:显示为 ◉ 本地,使用绿色圆点。
* 远程会话:显示为 ⇄ 远程 · 机器名,使用橙色圆点(收起态为 ⇄ 图标)。
2. 悬停诊断信息¶
鼠标悬停在状态芯片上,会显示当前会话的详细信息:
* 本地会话:不显示任何远程机器信息。
* 远程会话:显示会话模式、连接机器、最近刷新时间、最近错误信息等。
3. 响应与容错¶
- 秒级响应:采用事件订阅(150ms 防抖)+ 1s 轮询兜底的机制,切换目录后状态立即更新。
- 正确跟随选择:基于 DSH 2.0.15 的
retainedBy.mainView和layout.panelInfo确认正在显示的会话,不取列表第一项,避免误判。 - 容错降级:接口失败时,同一会话保留已知状态并显示
⚠;切换会话后失败显示“状态待确认”;未选择会话时明确显示“未选择会话”。
数据来源与依赖¶
依赖项¶
插件依赖以下宿主模块,安装前需确保环境已包含:
* @deepseek-ai/dsh-host-webserver
* @deepseek-ai/dsh-client-ui-renderer
数据读取¶
本插件不注册任何工具,仅作为 UI 层读取共享数据源。它依赖 dsh-remote 生态或兼容插件创建的数据:
* $DSH_HOME/remote-workspaces/machines.json:机器注册表,包含 currentId、机器 name/host。
* $DSH_HOME/remote-workspaces/<host-dir>/<name>/.dsh-remote-meta.json:镜像路径与机器身份(remotePath、host、username、port)。
自带宿主路由¶
插件自带宿主路由(/dsh-remote-status/status|machines|resolve-mirror),实现了 Web 与桌面 IPC 双通道通信。这意味着在不依赖 dsh-remote 插件本身的情况下,它也可以作为宿主端逻辑独立工作,前提是有数据源提供镜像和机器信息。
典型用法¶
- 确认连接状态:在侧边栏底部查看状态芯片,快速判断当前操作是在本地还是远程服务器上。
- 查看诊断信息:将鼠标悬停在芯片上,检查会话模式、连接机器及最近的错误日志。
- 切换目录验证:在远程镜像工作区中切换目录,观察芯片状态是否在 1 秒内更新为对应的机器名。
注意事项¶
- 重启生效:升级插件代码后,必须重启 DSH Desktop 才能加载新逻辑。
- 权限与源码:插件以当前 DSH 进程权限运行。安装前建议检查源码与许可证(MIT)。