dsh-workspace-enhancement: 统一本地与远程工作区管理

前言

DeepSeek Harness(DSH)通过插件体系扩展能力。dsh-workspace-enhancement 是一个由 DobyChao 维护的 DSH 插件,核心价值在于将本地工作区与远程(SSH)工作区统一管理在一个会话中。它解决的是在开发或运维场景下,需要频繁在本地文件系统与多台远程服务器之间切换上下文的问题。

核心功能

该插件主要提供以下能力:

  1. 远程工作区管理
    利用 ssh2 库,通过单个 SSH 链接(支持多跳跳板机)运行 bash、文件操作、PTY 终端和目录浏览。现有使用 ctx.subprocess 或 ctx.fs 的工具无需修改代码即可在远程运行。

  2. 多工作区会话
    在一个主会话中,通过“⊕ 工作区”按钮附加额外的本地或远程目录。这些目录作为声明列表存在,支持挂载、卸载和打标签。模型能够感知这些上下文并直接操作。

  3. 添加工作区流程
    插件提供连接侧边栏(包含已保存机器、~/.ssh/config 别名和本地路径)以及目录浏览器(支持面包屑导航、原生选择器和新建文件夹)。在远程模式下点击“连接并打开”即可创建会话。

  4. 机器设置
    插件内置机器设置页面,支持机器的增删改查、测试连接、设为当前、忘记主机密钥。同时支持系统钥匙链密码和 TOFU(Trust on First Use)主机密钥管理。

  5. 会话感知
    侧边栏会显示远程标记、在线三态指示以及重连功能。会话提示词会明确告知模型当前处于远程或附加工作区的上下文中。

  6. 跨服务器执行
    提供 sw_exec(server, command) 工具,在已注册命名的机器上运行命令。

  7. 远程批准门控
    可选功能(默认关闭)。针对每台机器配置门控,在执行任何 Shell 形式的远程命令或打开远程终端前,系统会进行询问。用户选择“human”时每次询问,选择“ai”时自动授予短暂只读白名单命令(如 pwd、ls、git status)并询问其余命令。

  8. 模型工具
    模型可调用的工具包括 sw_status(查看当前会话状态)、sw_connect(连接已注册机器)和 sw_exec。

  9. 运行时本地化
    UI 文本、工具描述、错误信息和路由错误均遵循设置页面中的语言选项(zh/en),默认使用浏览器语言。

安装与启用

安装前需确保使用 DSH 的 pnpm 供应链以允许原生构建脚本(如 ssh2、node-pty)的运行。

# 使用 npm 安装
dsh plugin --profile web add dsh-workspace-enhancement

# 从源码安装(需先运行 npm run build)
dsh plugin --profile web add <this-repo-path>

典型用法

安装后,模型可使用以下工具和交互方式:

  • 跨服务器执行:模型通过 sw_exec(server, command) 向已注册的机器发送命令。
  • 状态查询:通过 sw_status 查看当前会话的连接状态。
  • 连接机器:使用 sw_connect 附加已注册的机器到当前会话。
  • 附加目录:用户点击会话头部的“⊕ 工作区”按钮,手动挂载额外的本地或远程目录。

注意事项

  1. 无远程依赖:DSH 无需在远程服务器上安装,模型在本地编排,命令在远程执行,结果返回上下文。
  2. 版本兼容性:主机和插件版本需保持一致。插件对不同 DSH 版本的兼容性有明确要求,请参考 GitHub 仓库中的兼容性文档。
  3. 批准门控默认值:远程批准门控默认是关闭的,每次执行敏感操作前需要人工确认。

总结

dsh-workspace-enhancement 为 DSH 提供了结构化的 SSH 远程执行与文件系统代理能力,同时通过多工作区机制解决了上下文割裂的问题。适合需要同时管理本地代码库和多台远程服务器的开发者使用。

GitHub 仓库:https://github.com/DobyChao/dsh-workspace-enhancement

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜