dsh-likemobaxtearm-chumc:在 DSH 右侧栏共用一条 SSH 会话

前言

在 DeepSeek Harness(DSH)里让模型帮忙查日志、改配置,往往绕不开 SSH。常见做法是模型通过工具在子进程里跑命令,你在 Web UI 里另开终端,两边各看各的输出,既难对齐上下文,也不方便审计「谁执行了什么」。

下面介绍的插件 dsh-likemobaxtearm-chumc(包名同仓库名,版本 1.0.0,MIT)把本机 OpenSSH 客户端跑在真实 PTY 里,嵌在 DSH 右侧栏,交互方式接近 MobaXterm:你和 AI 共用同一条 SSH 会话,操作互相可见,并写入工作区下的 JSONL 审计日志。AI 通过 9 个专用工具操作会话,且受三级权限约束;危险命令在「完全」权限下也会先弹出可取消的告知窗口。

这是什么

  • 维护者:GitHub 用户 qaz320621
  • 分类:DSH 客户端插件(Web profile,sidebarRightTabs / slots)
  • 定位:DSH 右侧栏 SSH 控制台;不依赖远端额外安装组件,走的是你本机 PATH 上的 ssh,复用 ~/.ssh/config、密钥与 ssh-agent
  • 宿主要求:资料写明需 DSH 0.2.0-rc.2 / Web profile;插件 Host 代码在 Harness 进程内、工作区沙箱之外执行,安装通常需要 danger-full-access 或审批

社区目录页:SkillHub - dsh-likemobaxtearm-chumc。该目录与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的思路。

核心功能

终端与标签

  • 宿主标签条里只有「SSH 控制台」一项;各 SSH 会话在页面自建二级标签条上管理(滚轮横滚、◀ ▶、下拉列出全部、每项可 ✕ 关闭)
  • 终端基于 xterm.js,支持 vim、top 等全屏程序;Windows 侧对 ConPTY 整屏重绘等有适配说明
  • 断线重连:Harness 重启后标签仍在,按 r 或点「重新连接」可在原标签内重连;连接信息保存在浏览器本地

人与 AI 共用会话

  • 输入权互斥:同一时刻只有一个写者;AI 持锁时可一键「收回控制」(会真实发送 Ctrl+C)
  • 双向可见:AI 的命令在终端里标注;你也可通过 AI 侧工具拉取输出与日志
  • 用户留言给 AI:支持提问、报错(自动附最近终端输出)、仅记录(只写日志,不消耗 AI token)

AI 的 9 个工具

工具 作用
ssh_list_hosts 列出保存的主机(不含口令)
ssh_list_sessions 当前 DSH 会话里的 SSH 会话状态
ssh_connect 新建会话并在右侧栏开标签
ssh_exec 执行一条命令并等待结束,返回输出与退出码
ssh_send 写入原始文本(可选回车),用于交互式程序
ssh_read 按行分页读取终端输出
ssh_status 单会话状态与最近输出
ssh_log 读取 JSONL 审计日志
ssh_disconnect 关闭会话并回收进程树

三级 AI 权限(每个会话独立)

  1. 仅可看:AI 只能读,写入类工具被拒绝
  2. 问答(默认):每条命令需你在「待确认」里点「允许」
  3. 完全:AI 可直接执行;命中危险规则时先弹出可取消告知(默认 grace 5s,配置项 dangerGraceMs)

其它约定:远端等待密码 / 2FA 时 AI 写入会被拒绝(不得代填口令);日志里对口令相关输入记 [redacted]。插件不保存口令。

审计日志

  • 路径:<workspace>/.dsh-ssh/logs/*.jsonl;命令原文全量保留,过长输出按阈值截断并标注
  • 超过 logArchiveAfterDays(默认 7 天)可 gzip 归档到同目录 archive/;活跃会话不会被移动

平台支持(据 README 表格)

环节 Linux macOS Windows
浏览器 UI 支持 支持 支持
插件宿主(起 ssh、日志、AI 工具) 已实测 理论可用(未实测) 理论可用(未实测)
本机 ssh PATH 上 ssh 系统自带 OpenSSH Win10 1809+ 自带 OpenSSH,需在 PATH

实现上不依赖 Linux 专属代码;远端需 POSIX shell 时 ssh_exec 的退出码解析才可靠,远端为 cmd/PowerShell 时文档建议改用 ssh_send + ssh_read。

安装与启用

仓库已附带构建产物 client.xterm.js,从 Git 安装无需本地构建。安装后需重启 Harness 一次并刷新页面(Host 模块按 URL 缓存,Client 脚本刷新即可)。

方式 A:在 DSH 会话里让 AI 安装(README 推荐)

在会话中说明使用 plugin_manager 的 install_bundle,target 为插件目录的绝对路径(若你已下载到本机)。

方式 B:Web UI

侧边栏 Plugins → 安装 → 填入目录绝对路径或 npm 包名。

方式 C:直接从 GitHub 安装

「添加插件」可填以下任一形式(不要只写 qaz320621/dsh-likemobaxtearm-chumc,会被当成 npm 包名拒绝):

https://github.com/qaz320621/dsh-likemobaxtearm-chumc
github:qaz320621/dsh-likemobaxtearm-chumc

安装前请自行审阅 仓库源码与 LICENSE,并理解插件以当前 DSH 进程权限运行。

典型用法

第一次连接

  1. 重启 Harness 并刷新页面后,打开右侧栏
  2. 加号 → Guide 里的 「SSH 会话管理器」
  3. 填写 target(host、user@host 或 ~/.ssh/config 别名)→ 连接
  4. 密码 / 2FA 在终端内由你输入

日常操作

  • 终端内直接打字;工具栏切换 AI 权限三档、重命名标签、必要时「收回控制」
  • 底部抽屉:日志(按 user/ai/system/remote 过滤)、历史(含归档)、留言、待确认(问答模式下的命令审批)
  • 管理器与新建标签页会列出最近连接,可一键再连

让 AI 参与同一会话

在「问答」或「完全」权限下,模型可调用上表工具;「仅可看」时只能读。你可在留言里发「报错」类消息,把最近输出带给模型,而「仅记录」只进审计、不触发模型回复。

适用场景与注意

适合:已在用 DSH Web profile、希望 AI 与你在同一 PTY里协作运维、且需要 JSONL 审计与分级授权的团队或个人。

注意:

  • 依赖 DSH 0.2.0-rc.2 及文档列出的宿主契约(spawnTerminal、ctx.tools 等);契约变更时仓库内 npm test 含 Cordis 激活测试会先行暴露问题
  • ssh_exec 退出码为启发式,命令后台化或换 shell 时可能不准
  • macOS / Windows 宿主侧 README 标注为理论可用、未实测,上线前请在本机验证
  • 自研或二次开发需 Node ≥ 18;改 chunk/terminal.js 后才需 node build.mjs 重建 client.xterm.js(构建期依赖 esbuild、xterm,运行时零依赖)

结尾

dsh-likemobaxtearm-chumc 把「本机 ssh + 真实终端 + 人机共会话 + 审计与权限」收进 DSH 右侧栏,适合不想在 AI 工具链与独立 SSH 客户端之间来回切换的场景。进一步了解可查看 SkillHub 目录页 与 GitHub 仓库 README(含配置项、测试与架构说明)。

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

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

Xiaoye