DeepSeek Harness 插件 · 已收录于 awesome-dsh-plugin

在 DSH 里,像 SSH 一样用你的 VPS

21 条零 token 命令看状态,对话里开一个真终端自己动手,或者直接跟 AI 说一句话让它上服务器干活 —— 全部经 SSH 密钥登录,改动按风险分级确认,改文件先备份、改防火墙先设连通性保险。

MIT npm: dsh-vps-manager DSH ≥ 0.1.5-rc.2 macOS / Linux Node ≥ 22.13 238 tests
这是装进 DSH 里的插件,不是把 DSH 装到 VPS 上。想在 VPS 上跑一个公网可达的 DSH,看姊妹项目 deepseek-harness-vps;两者可以配合用 —— 在那台 VPS 上的 DSH 里装上本插件,就能在对话里直接管理这台服务器。
$ dsh plugin add dsh-vps-manager

装完重启 DSH,到 设置 → VPS 管理 添加机器。仅支持 SSH 密钥登录。

三种用法

看信息、跟 AI 说话、按菜谱安装 —— 各走各的路

看信息跟 AI 说话按菜谱安装与维护
怎么用/vps-sysinfo 这类命令「给这台装个 nginx,把 a.com 反代到 3000 端口」/vps-install <菜谱id> 看计划,/vps-yes 执行
走不走模型不走走不走
花费零 token正常消耗 token零 token
能做什么固定的只读查询SSH 能做的都能做,按风险分级确认29 条可重复执行的菜谱
能力一览

一个引擎,三个入口:命令、终端、AI 工具

设置页、/vps- 命令和 AI 工具共用同一套执行机制:会改东西的操作跑成远端任务,断线后在服务器上继续;同一台机器上的改动一个接一个执行;每次执行都记审计日志。

zero-token

21 条零 token 命令

看状态、装软件、重启并等机器回来,全程不走模型、不花 token。

vps-mode

VPS 模式

对话头部点一下,这个对话就绑定这台服务器;一个窗口操作服务器,另一个窗口照常写本机代码。

status

真实的连接状态

头部方块 灰 没选 · 黄 连接中 · 绿 已连上 · 红 连不上;连不上直接说原因,带「重试」。

terminal

对话里的终端

真终端(xterm.js + ssh -tt),top、vim、docker exec -it 都能用;最小化、切对话不丢内容,断线自动接回。

files

对话里的文件管理

服务器上的「访达」:拖进来上传、右键下载、双击编辑、删除进回收站可还原;覆盖前自动备份。

ai-tools

让 AI 操作服务器

5 个工具,按风险分级确认:只读自动、改动问你、高危再问。档位可按机器、分组、全局设置。

safety

三道保护

改文件先备份、校验失败自动还原;改防火墙和 SSH 前设连通性保险;长操作跑成远端任务,断线不中断。

probe

按这台机器的实际写命令

体检出系统、包管理器、init、权限、在跑的服务和容器,告诉模型按实际情况写命令,不许猜。

recipes

29 条菜谱

安装 7 · 配置 6 · 查询 16,都能重复执行;AI 做成的事可以一句话存成菜谱。

settings

设置页

添加向导(生成钥匙、放公钥)、从 ~/.ssh/config 导入、基础配置、终端设置、卸载。

compat

两种 DSH 都能用

DSH Desktop 与 dsh web;终端连接过 DSH 登录校验、同源检查和插件令牌,默认只许本机打开。

light

装起来轻

不用原生模块(不编译 node-pty),运行时依赖只有 ws 与 yaml。

实际效果

从装插件到接上第一台机器

演示里的地址、用户名已涂去。

演示:装插件 → 添加机器(生成钥匙、把公钥放到服务器)→ 连上 → 设置页
装插件 → 添加机器(生成钥匙、放公钥)→ 连上 → 设置页
安装

装进 DSH,重启,加机器

# DSH 插件市场里搜索 dsh-vps-manager,点安装 # DSH Desktop 与 dsh web 都可以,装完重启 DSH

插件在 DSH 启动时加载,装好记得重启。

dsh plugin add dsh-vps-manager

DSH Desktop:点菜单栏(Windows 上是任务栏托盘)的 DSH 图标 →「打开 DSH 终端」;命令行版 DSH(dsh web)用普通终端。装好后重启 DSH。

dsh plugin add github:AIcivilization/dsh-vps-manager

想装 GitHub 上的最新代码(可能比 npm 上发布的版本新),把包名换成上面这行。

dsh plugin remove dsh-vps-manager

也可以在 设置 → VPS 管理 拉到最下面点「卸载…」,逐项勾选后再执行。命令行方式只移除插件,机器清单、钥匙、SSH 配置和审计日志都会留着。

运行要求

  • DSH 版本0.1.5-rc.2 起(在 DSH Desktop 2.0.10 上测试)
  • 系统macOS 或 Linux —— 依赖 OpenSSH 的连接复用,Windows 自带的 OpenSSH 不支持
  • Node.js≥ 22.13
  • 登录方式只支持 SSH 密钥登录,不支持密码登录,也不支持需要输密码的 sudo
  • 权限会改系统的操作要求远端用户是 root 或有免密 sudo;只读查询不需要

添加机器:一页表单,四步完成

  1. 插件生成一把专用钥匙 ~/.ssh/dsh_vps_ed25519(不动你原有的钥匙)
  2. 用你填的密码登录一次,把这把钥匙的公钥放进服务器的 ~/.ssh/authorized_keys(已有就不重复加)
  3. 连接配置写入 ~/.ssh/config.d/dsh-vps.conf,在 ~/.ssh/config 最顶部加一行 Include(改之前备份为 ~/.ssh/config.dsh-bak),然后用钥匙连一次、体检一次
  4. 显示结果和主机指纹(首次连接时记录,以后指纹变了会拒绝连接,防止有人冒充你的服务器)

密码只用这一次,不保存:它只放进那一次 ssh 子进程的环境变量,经 SSH_ASKPASS 交给 ssh,不写进任何文件、日志或审计记录。服务器只允许密钥登录时,展开表单里的「没有密码?」按提示放公钥即可。

命令

21 条命令,不走模型、不花 token

两条使用规则:命令作用在当前对话绑定的机器上,没有绑定就不执行;下表里没写参数的命令,只发命令名本身。需要确认的操作都是先出计划,再单独发 /vps-yes。

命令作用
/vps-sysinfo系统、CPU、内存、磁盘、负载、公网 IP
/vps-disk挂载点、inode、占用最大的目录(扫描有时间上限)
/vps-ports监听端口和对应进程
/vps-services正在运行和失败的服务
/vps-net网卡、累计流量、连接数
/vps-docker容器列表与磁盘占用
/vps-ping主机名、系统、负载、运行时长
/vps-logs <服务名>某个服务最近 100 行日志
/vps-q <菜谱id>运行任意一条查询菜谱,如 ip-info、top-procs、cron-list、cert-expiry、firewall-status、updates、login-history
/vps-sh <命令>在机器上执行命令,输出直接显示在对话里;记住 cd 到的目录,会一直刷新的命令自动改成一次性输出,高危的先拦下;加 --bg 放后台,加 --private 表示这条输出不附给 AI
命令作用
/vps-list已登记的机器与状态,★ 标出当前对话绑定的那台
/vps-use <别名>把当前对话绑定到一台机器;/vps-use off 解除绑定
/vps-probe重新体检:系统、init、包管理器、权限、CPU、内存、磁盘
/vps-reboot重启前先检查为什么该重启、现在适不适合重启、会停掉哪些容器;发 /vps-yes 才重启,之后等机器回来并报告结果
命令作用
/vps-recipes菜谱清单,按安装 / 配置 / 查询分组
/vps-install <id> [k=v …]出计划:检测结果、参数与默认值、步骤、脚本原文。发 /vps-yes 执行
/vps-tasks这台机器上的远端任务列表
/vps-task <任务号> [--stop]一个任务的状态和日志;加 --stop 终止它
命令作用
/vps-help全部命令与用法
/vps-yes确认刚才的计划:重启、安装,或被拦下的高危命令。只对当前对话有效,5 分钟内有效,执行一次后作废
/vps-doctor插件与 DSH 版本(是否验证过)、各部分注册情况、当前绑定的机器、连通测试、最近的错误与执行;末尾附预填好的反馈链接

自己敲的命令会附给 AI:插件记下你用 /vps-sh 执行的最近几条命令和输出(令牌、密码、私钥先打码),下次跟 AI 说话时一起附上 —— 所以可以先自己查,再直接问「看看上面为什么报错」。

AI 与防护

让模型动手之前,先过三道门

插件给模型注册 5 个工具,并附带一份操作规则(skill vps-operator,模型需要时自己读取)。

工具作用
vps_hosts列出已登记的机器
vps_exec在机器上执行脚本
vps_write_file写远端文件:先备份,校验不通过自动还原
vps_task远端任务:列表、状态、日志、终止
vps_recipe菜谱:列表、查看、运行,以及把刚做成的事存成菜谱

分级确认

每段脚本执行前判定风险级别,模型自己声明的级别只能往高调,不能往低压。只读:df -h、systemctl status、docker ps;改动:apt-get install、sed -i、写文件;高危:rm -rf、改防火墙、passwd、reboot、杀进程、curl … | sh。

档位只读改动高危
谨慎(默认)自动问问
放手自动自动问
全自动自动自动自动
没有审批界面的环境自动拒绝拒绝

三道保护

  • 改文件先备份。先把原文件备份到服务器的 ~/.cache/dsh-vps/backups/,再原子写入(覆盖时权限和属主保持原样),然后运行你给的校验命令(比如 nginx -t),不通过就自动还原。
  • 连通性保险。改防火墙、SSH、网络配置之前,先在服务器上设一个定时恢复(默认 120 秒),改完用全新连接测试;连不上就等它到时自动恢复,你不会被锁在门外。
  • 长操作不怕断线。会改东西的操作跑成远端任务,断线后在服务器上继续,可以再接回来看日志。取消只是停止等待,不会杀掉任务。

它防不住什么

  • 分级确认防的是 AI 失误,不防存心绕过的 AI —— 静态判定识别不了所有变形写法
  • DSH 的沙箱管不到插件自己启动的 ssh 进程
  • 终端里的操作不分级确认 —— 那是你自己在敲命令,跟直接用 SSH 一样
  • 没有通用回滚。能兜底的只有文件备份、连通性保险和可重复执行的菜谱;动分区、升大版本前请先到服务商后台打快照
菜谱库

29 条内置菜谱,每条都能重复执行

每条由 detect(是否已装好)→ plan(写给人看的步骤)→ run(执行)→ verify(证明真能用,比如用 docker info 而不是 docker --version)四部分组成;已经是目标状态时会跳过安装直接验证。

安装 · 7 条
DockerNginxfail2ban常用命令行工具PortainerUptime KumaNginx Proxy Manager
配置 · 6 条
系统更新系统清理虚拟内存(swap)时区BBR 拥塞控制自动安全更新
查询 · 16 条
系统信息磁盘端口服务网络容器服务日志连通与负载机器体检出口 IP资源占用最多的进程定时任务证书到期防火墙状态可升级的包登录记录
/vps-install setup-swap size_mb=4096 /vps-yes

参数用 key=value 传入。想存自己的菜谱:让 AI 做成一件可复用的事后说一句「存成菜谱」,或者自己写 YAML 放进 $DSH_HOME/vps-manager/recipes/;自定义菜谱 id 带 my- 前缀,按不可信内容对待。

运行机制

界面和模型都经插件,再走 OpenSSH 出海

dsh-vps-manager 工作方式 DSH 界面(对话头部开关、终端、设置页)经插件路由和实时连接、DSH 里的模型经工具调用,都进入 dsh-vps-manager 插件;插件做风险判定与确认,再通过 OpenSSH(密钥登录、连接复用)连到你的 VPS。 DSH 界面 头部开关 · 终端 设置页 · /vps- 命令 DSH 里的模型 你说一句话 它调用 5 个 VPS 工具 dsh-vps-manager 风险判定 · 分级确认 菜谱 · 审计日志 连接状态检测 终端会话(断线保留) 路由 · WebSocket 工具调用 OpenSSH 密钥登录 连接复用 子进程 你的 VPS 远端任务 文件备份 连通性保险 伪终端 ~/.cache/dsh-vps SSH 命令不走模型、不花 token;模型的每次操作都先经插件判定风险,改动类按你设的档位确认
  • 一个引擎,三个入口:设置页、/vps- 命令、AI 工具都走同一套执行引擎。脚本经 SSH 标准输入送到服务器,先落成文件再执行,远端命令行里不拼任何外部数据。
  • 连接复用:同一台机器共用一条 SSH 主连接(OpenSSH ControlMaster),命令和连接检测走复用连接时只要几十毫秒。
  • 终端:伪终端由 ssh -tt 在服务器上申请,浏览器经 WebSocket 连到插件;断线后会话保留一段时间(默认 10 分钟),接回时补发断开期间的输出。不需要编译任何原生模块。
  • 给模型的说明:进入 VPS 模式时,插件把这台机器的系统、服务、容器和必须遵守的规则附给模型;VPS 模式下模型不能用本机 bash。

数据放在哪

位置内容
$DSH_HOME/vps-manager/hosts.yml机器清单、分组、确认档位(可手工编辑)
$DSH_HOME/vps-manager/state.json体检结果、各对话绑定的机器
$DSH_HOME/vps-manager/recipes/你自己的菜谱
$DSH_HOME/vps-manager/audit/审计日志:每次执行一行 JSON(来源、机器、动作、档位、结果),按月分文件,保留 6 个月
~/.ssh/config.d/dsh-vps.conf插件维护的 SSH 连接配置
~/.ssh/dsh_vps_ed25519插件生成的专用钥匙
服务器 ~/.cache/dsh-vps/远端任务目录、日志、文件备份

插件不读取私钥内容,密码也从不经过插件。

FAQ

几个常见疑问

支持 Windows 吗?

不支持。插件依赖 OpenSSH 的连接复用(ControlMaster),Windows 自带的 OpenSSH 不支持。需要 macOS 或 Linux。

服务器只开放密码登录怎么办?

添加机器时填的那次密码就是用来放公钥的:插件会用它登录一次,把专用钥匙的公钥写进 authorized_keys,之后一律用钥匙登录。服务器只允许密钥登录也没问题 —— 展开表单里的「没有密码?」,复制公钥粘到服务商后台,或复制一行命令到已能登录的服务器上执行。

会动我自己的 ~/.ssh/config 吗?

只在最顶部加一行 Include,改之前备份为 ~/.ssh/config.dsh-bak;插件自己的配置写在 ~/.ssh/config.d/dsh-vps.conf,不会改写你写的内容。卸载时可以撤销。

命令要花 token 吗?

不花。/vps- 命令不走模型。只有你用自然语言让 AI 干活时才正常消耗 token。你自己用 /vps-sh 敲的命令会在下次对话时附给 AI(敏感内容先打码),加 --private 可以不让这条附上。

终端能远程打开吗?

默认只能在运行 DSH 的这台电脑上打开。用局域网地址或反向代理访问 dsh web 时,需要先在 设置 → VPS 管理 → 终端 勾选「允许从其他设备打开 VPS 终端」——终端等于这台服务器的完整操作权限,只在你信任访问途径时打开。

DSH 升级后插件不能用了怎么办?

插件每 6 小时自动拿 DSH 的正式版、下一版、尝鲜版各测一遍(装上插件、启动网页版、逐项检查),测不过会自动开 issue。当前 DSH 版本没验证过时,设置页和 /vps-doctor 会提示。你也可以发 /vps-doctor 生成预填好的反馈单。

和 deepseek-harness-vps 是什么关系?

姊妹项目,方向相反:deepseek-harness-vps 是把 DSH 本身部署到 VPS 上(公网可达 + 登录页 + 自动 HTTPS),本插件是装进 DSH 里、用来管理服务器的。两者可以配合:在那台 VPS 上的 DSH 里装上本插件,就能在对话里直接管理这台服务器。