前言¶
在 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 权限(每个会话独立)¶
- 仅可看:AI 只能读,写入类工具被拒绝
- 问答(默认):每条命令需你在「待确认」里点「允许」
- 完全: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 进程权限运行。
典型用法¶
第一次连接¶
- 重启 Harness 并刷新页面后,打开右侧栏
- 加号 → Guide 里的 「SSH 会话管理器」
- 填写 target(
host、user@host或~/.ssh/config别名)→ 连接 - 密码 / 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(含配置项、测试与架构说明)。