caoyiwei850/dsh-ssh-ops ↗★ 30

dsh-ssh-ops

提供远程SSH终端、SFTP及数据库管理面板 适合需要在DSH中管理远程服务器、传输文件及操作数据库的运维开发人员。

包名
dsh-ssh-ops
兼容性
待验证
Harness 依赖范围
>=0.1.5-alpha.1
版本
0.3.19
许可证
MIT
最近更新
2026年10月7日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:caoyiwei850/dsh-ssh-ops

使用方式

  1. 打开 设置 → SSH 资源,新建分组或服务器资源;PEM / .key 文件可直接导入。
  2. 保存的资源可直接“连接并打开”,并自动创建右侧 PTY 终端。编辑时秘密字段留空会保持原值;清除凭据需要显式确认。
  3. 顶部 SSH 仅控制右侧终端的显示和隐藏;右上角 + 可选择已保存资源,或创建不落盘的临时连接。
  4. 在主对话中直接说“查询服务器内存使用情况”或“配置 Nginx SSL 证书”。主 Agent 只能操作当前活动连接,不能读取凭据;默认也不能枚举保存资源或自动用保存凭据连接——在 设置 → SSH 资源 → AI 自动连接 打开开关后,Agent 才能按名称连接已保存服务器并切换当前连接(每次连接都会在右侧面板打开终端,操作者始终可见)。
  5. 需要数据库时,让 Agent 调 db_connect(或自己在「数据库」页签新建连接),随后即可在对话中查询/执行。
  6. 插件界面语言自动跟随 DSH 自身的语言设置(中文 / English):切换即时重绘整个插件界面,Agent 可见的工具消息经回写即时并持久跟随;左侧设置菜单的「SSH 资源」标签与图标也随语言动态变化。

固定界面语言。 可以通过插件设置文件(~/.dsh/storages/ssh_ops_settings.json)关闭自动跟随行为。该功能适用于系统使用插件未内置的第三方语言(如俄语)的场景——若不固定,此类语言会被强制回退为默认中文,且插件会在每次加载时把该值回写进配置文件。改为固定使用指定语言即可:

{
  "unit": { "name": "ssh_ops_settings", "version": 1 },
  "global": null,
  "tables": {
    "settings": {
      "main": {
        "language": "en",
        "autoApplySystemLanguage": false
      }
    }
  }
}
  • autoApplySystemLanguage:true(默认值;字段缺失时与 true 相同)表示跟随 DSH 自身语言并在每次加载时回写,行为与之前完全一致。false 表示固定使用存储的 language 值:既不跟随宿主语言,也不回写,文件保持你手动编辑的状态。升级后首次加载时,插件会把默认值 true 写入配置文件,以便看到该开关。
  • language:"zh" 或 "en",当 autoApplySystemLanguage 为 false 时作为固定语言使用;自动跟随开启时忽略该字段。
  • 请在 Harness 停止时编辑该文件(运行中的实例在加载时可能会改写它),编辑完成后重启 Harness 使更改生效。

Agent 工具

共 34 个 Agent 工具,省略 connection_id / db_connection_id 时默认作用于当前活动连接,无需先调 ssh_list / db_list_connections。

SSH(7)
工具用途
ssh_list查看当前活动连接的安全元数据与秘密无关信息;开启「AI 自动连接」后同时列出已保存服务器(不含凭据),仅在需要枚举时用
ssh_connect建立 SSH 连接(密码或私钥)并设为当前服务器
ssh_connect_profile按名称连接已保存的 SSH 资源并设为当前服务器(右侧面板同步打开终端);仅在操作者开启「AI 自动连接」后可用,未开启时明确报错提示转人工
ssh_exec在当前服务器执行 Agent 命令(继承交互 shell 当前目录),回传退出码/输出/cwd/耗时/超时/截断/脱敏状态
ssh_read按需读取右侧终端缓冲输出(不静默塞入对话)
ssh_write向指定终端写入交互输入;press_enter(默认 true)自动补回车提交(可传 connection_id 指定目标服务器的终端)
ssh_disconnect断开当前连接及其 shell 会话
手动终端上下文(2)
工具用途
ssh_terminal_sessions列出已打开终端的低敏元数据与读取游标,不返回终端内容或凭据
ssh_terminal_context经每次用户确认后,按游标读取指定手动终端的有限、脱敏历史;不会影响右侧终端回看
SFTP(8)
工具用途
sftp_list列出远程目录条目(含大小/mtime/权限)
sftp_read读取远程文件内容(默认上限 4 MiB)
sftp_write写入远程文件(创建或覆盖)
sftp_mkdir新建远程目录
sftp_delete删除远程文件或空目录(不直接执行,改为把 rm -rf 加入待确认队列或返回可复制卡片)
sftp_rename重命名/移动远程路径
sftp_upload_dir上传本地目录树到远程(自动建目录结构;小文件并发、大文件独占;单文件失败逐条上报不中断整批)
sftp_download_dir下载远程目录树到本地(同上调度策略)
端口转发(3)
工具用途
tunnel_start建立本地转发(local,本机 → 服务器可达目标)或远程转发(remote,服务器 → 本机)
tunnel_list列出活动隧道
tunnel_stop按 tunnel_id 停止隧道
批量执行(1)
工具用途
ssh_batch基于 SSH 资源中已保存服务器(含未连接的)创建批量执行任务,由操作者在面板勾选确认后并发下发,结果按服务器分节;仅当用户明确要求多机批量时使用(旧的 ssh_cluster 已彻底移除,多机操作无免确认路径)
数据库(14)
工具用途
db_connect连接 MySQL / PostgreSQL / Redis / MongoDB;回环地址自动经当前 SSH 服务器隧道,SSL 三档可选
db_list_connections列出已打开的数据库连接(仅用户询问时用)
db_query在 MySQL/PostgreSQL 上跑词法级强制只读查询(仅放行 SELECT/SHOW/DESCRIBE/EXPLAIN/纯查询 WITH;拒绝写动词、SELECT INTO、FOR UPDATE 锁读、数据修改 CTE);结果默认流式截断 200 行,30s 超时;DSH_SSH_OPS_MAX_DB_ROWS 可调整为最多 5000 行;支持 ? / $1 占位符
db_execute执行写语句(INSERT/UPDATE/DELETE/CREATE/ALTER);高危 SQL(DROP/TRUNCATE/SHUTDOWN)不执行,返回可复制卡片
db_list_tables列出 MySQL/PostgreSQL 当前 schema 的表
db_describe_table完整表结构:列、索引、外键、行数/容量估计、MySQL 附 SHOW CREATE TABLE DDL
db_preview按表名分页采样数据(LIMIT/OFFSET 参数绑定,标识符白名单防注入),附全表行数估计,无需手写 SQL
db_explain查看查询执行计划(EXPLAIN FORMAT=JSON),检查索引使用
db_tx_begin / db_tx_execute / db_tx_commit / db_tx_rollback交互式事务工作流:开事务 → 执行变更 → SELECT 验证 → 提交/回滚(独占连接,闲置 5 分钟自动回滚)
db_run在 Redis 上跑命令(command+args),或在 MongoDB 上跑 find/findOne/insertOne/updateOne/deleteOne/countDocuments
db_disconnect关闭数据库连接

db_query 用于 SQL 只读查询,db_execute 用于 SQL 写操作,db_run 用于 Redis/MongoDB。MySQL 用 ? 占位符、PostgreSQL 用 $1 占位符。