DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Bundle — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
B

@dsh-ssh-workspace/bundle

Bundle

DeepSeek Harness 的远程工作区:选择一台机器和一个目录,在远程主机上运行文件系统、终端和命令

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:ya-b/dsh-ssh-workspace#bc9a1117b6ab86a822e321a367eda976937b1921
README兼容性版本

兼容性与来源证明

Bundle 以 @dsh-ssh-workspace/bundle 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/19

版本

0.1.0stable
2026/10/19

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/19
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Opsdsh-ops适用于 Windows x64、Linux x64 和 macOS Apple Silicon 上 DSH 的原生文件和 PTC 工具;仅限 Windows 的可选 Bash 和 PowerShell 7 载荷Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件Skills Manager@michengai/dsh-skills-managerDSH Skills Manager — 在 DeepSeek Harness 中统一加载并安全管理本机 Agent Skills · 在 DSH 中加载并安全管理本地 Agent SkillsMarket Plusdsh-market-plusDSH 插件市场增强版:dsh-market 基座 + dsh-store 的 npm 权威源/质量验证/GitHub 热度/代理注入/回退安装(MIT,融合 dsh-market 与 dsh-store)

README

dsh-ssh-workspace 【开发中】

English | 简体中文

DeepSeek Harness 的远程工作区插件:在 Web UI 里先选机器(本机或 ~/.ssh/config 中的主机), 再选目录,创建出来的工作区其文件读写、终端和命令执行全部发生在远端。

SSH 只是数据管道。远端常驻 workspace daemon,客户端断线不会中断远端命令;重连后按偏移 续取输出与终态,写操作经 opId 幂等门,不会重放副作用。

环境要求

位置要求
宿主Node ≥ 20;dsh 0.2.1-rc.2;可用的 OpenSSH 客户端;可读的 ~/.ssh/config
远端Linux x64;Node ≥ 20;POSIX sh;tar;OpenSSH 服务端
认证密钥或 ssh-agent 等非交互登录;不支持交互式密码
SSHOpenSSH ≥ 8.2(客户端需支持 ControlMaster / -O forward)
终端归档内含 linux-x64 的 node-pty;其他平台缺少 node-pty 时仅终端不可用,文件与命令正常

安装

从 Git 安装(推荐)

dsh plugin --profile web add https://github.com/ya-b/dsh-ssh-workspace

这条命令会:

  1. 把 @dsh-ssh-workspace/bundle 安装进 web profile;
  2. 把该 bundle 追加到 profile 的 dsh.profile.bundles;
  3. 按包内 cordis.patch.yml 装入 ssh-workspace-mount、api-ssh-workspace、 ui-ssh-workspace 三行。

仓库已提交构建产物 lib/ 与 dist/daemon.tar.gz,所以 Git 安装不需要额外构建。

安装后重启实例生效。

本地开发安装

pnpm install
pnpm run build
dsh plugin --profile web add 'link:/abs/path/to/dsh-ssh-workspace'

link: 安装直接使用 checkout 中的 lib/ 和 dist/。修改源码后重新执行 pnpm run build,再重启实例;只改源码不重建不会生效。

配置

SSH 主机

机器列表来自本机 + ~/.ssh/config 中所有具体的 Host 别名(递归跟随 Include; 通配符和取反规则会被跳过,因为它们不是具体机器)。普通 OpenSSH 配置全部有效: HostName、Port、User、IdentityFile、ProxyJump、ProxyCommand 等。

# ~/.ssh/config
Host devbox
  HostName 192.0.2.10
  User root
  Port 22
  IdentityFile ~/.ssh/id_ed25519

Include ~/.ssh/config.d/*

要求 ssh devbox true 能在不询问密码的情况下成功(密钥、agent 或 ControlMaster)。 修改 ~/.ssh/config 后刷新浏览器页面,主机列表会重新枚举。

不想在弹窗中显示某些别名时,用 api-ssh-workspace 的 hiddenHosts 隐藏:

# ~/.dsh/profiles/web/cordis.patch.yml
- id: api-ssh-workspace
  config:
    hiddenHosts:
      - automation
      - ci-runner

插件参数

ssh-workspace-mount 的可配置项:

项默认值说明
daemonDir~/.dsh-workspace远端 daemon 状态目录;~ 由远端 shell 展开
nodenode远端 Node 可执行文件;非交互 SSH 的 PATH 常找不到 nvm 的 Node,建议写绝对路径,如 /usr/local/bin/node
installtrue首次使用某主机时投递内置 daemon 归档;按 (host, daemonDir, 归档摘要) 去重
daemonArchive内置归档覆盖 daemon 归档路径,主要用于开发调试
requestTimeoutMs30000安装、准入、打开等管理请求的超时
reconnectBaseMs250重连退避初始值
reconnectMaxMs15000重连退避上限
controlDir临时目录本地 SSH ControlMaster socket 目录;不填则使用 /tmp/dsh-ws-*
statePath${DSH_HOME:-~/.dsh}/storages/ssh-workspaces.json本地工作区归属侧映射路径

api-ssh-workspace 的可配置项:

项默认值说明
probeTimeoutMs8000主机连通性预检的单次超时
hiddenHosts[]不显示在机器列表中的 SSH 别名
prefix/ssh-workspaceHTTP 路由前缀;浏览器半固定使用 /ssh-workspace,不要修改

ui-ssh-workspace 没有配置项。

覆盖参数时,在 profile 自己的 cordis.patch.yml 中按相同 id 重述整行配置:

# ~/.dsh/profiles/web/cordis.patch.yml
- id: ssh-workspace-mount
  config:
    daemonDir: '~/.dsh-workspace'
    node: /usr/local/bin/node
    install: true
    requestTimeoutMs: 30000
    reconnectBaseMs: 250
    reconnectMaxMs: 15000

同一 id 的 config 会整体替换 bundle 中的配置,未写的字段使用 schema 默认值, 建议把需要的项写全。若 profile 的 patch 文件还是空数组 [],用条目替换它,而不是 直接追加到 [] 后面。

远端 daemon

首次在某个 (主机, daemonDir) 上打开目录时,插件会通过 SSH 把归档解压到远端 daemonDir,并执行远端 Node 版本检查。之后:

  • daemon 状态在远端 ~/.dsh-workspace:sock、pid、lock、config.json、 streams/、daemon.log;
  • config.json 的 roots 是允许作为工作区打开的目录白名单,由客户端在打开前写入, 保留最近 64 条;
  • daemon 已运行时不重复启动;客户端断线、心跳或租约变化都不会回收远端进程;
  • 远端 Node 缺失或过旧会在建连阶段报 remote workspace daemon preflight failed: <node> is not a usable Node >= 20。

使用

  1. 打开 Web UI,侧边栏「添加工作区(+)」→「添加工作区…」。
  2. 在弹窗顶部的主机下拉中选择本机或某个 SSH 主机。
  3. 选择目录(可「上级」回溯、开关隐藏文件),点「打开」。
  4. 远端工作区默认命名为 <目录名>@<主机别名>;会话中的 pwd、文件读写、终端和命令 均在远端执行。

升级与卸载

升级 bundle:

dsh plugin --profile web update @dsh-ssh-workspace/bundle
# 或重新安装并锁定提交
dsh plugin --profile web add 'https://github.com/ya-b/dsh-ssh-workspace#<sha>'

重启 dsh 实例后新代码生效。远端已运行的 daemon 不会自动换代码;必要时杀掉远端 daemon 进程,让下一次使用重新投递并启动:

ssh <host> 'kill "$(cat ~/.dsh-workspace/pid)" 2>/dev/null || true'

卸载:

dsh plugin --profile web remove @dsh-ssh-workspace/bundle

卸载只移除依赖、bundle 选择和它带来的三行 patch,不会删除本地侧映射或远端 ~/.dsh-workspace。需要彻底清理时,先停掉远端 daemon,再删除数据:

rm -f "${DSH_HOME:-$HOME/.dsh}/storages/ssh-workspaces.json"
ssh <host> 'kill "$(cat ~/.dsh-workspace/pid)" 2>/dev/null || true; rm -rf ~/.dsh-workspace'

故障排除

现象处理
弹窗里没有远端主机确认是具体 Host 别名而非通配符;刷新页面;检查 ~/.ssh/config 与 Include
预检显示 needs-credentialsssh <alias> true 必须无需交互即可成功;配置密钥或启动 agent
报 Node 版本/路径错误把 node 配成远端绝对路径,例如 /usr/local/bin/node;确认 node -v ≥ 20
终端打不开,但文件和命令正常远端平台/架构与归档中的 node-pty 不匹配;文件与命令不受影响
安装后没有出现菜单dsh --profile web --dump-config 检查三行 patch;重启 dsh 实例
升级后行为仍旧重启 dsh 实例;远端 daemon 也要重启才会加载新归档

开发

pnpm install
pnpm run build        # → lib/{mount,api,index,client}.js + dist/daemon.tar.gz

node tests/api/machines.test.mjs
node tests/daemon/probe-transport.mjs
node tests/daemon/probe-providers.mjs
node tests/daemon/probe-mount.mjs
node tests/daemon/probe-resilience.mjs

lib/ 与 dist/daemon.tar.gz 是 Git 安装使用的已提交产物:改源码后必须重建并提交。 更细的构建、回滚与运维说明见 INSTALL.md,实现计划和证据台账见 PLAN.md 与 PROGRESS.md。