前言¶
在本地维护多个远程 Linux 机器的开发环境时,DeepSeek Harness(DSH)要求工作区必须是一个本地目录,这往往需要先同步代码再打开。这增加了操作步骤,也限制了直接在远程执行命令的体验。
dsh-ssh-agent-workspace 插件在 DSH 的“创建项目”对话框中增加了一个“远程设备”车道,可以直接选择已配置的 SSH 主机作为源。命令在远程执行,文件读写通过本地缓存加速,并保证远程与本地的一致性。
这是什么¶
这是一个 DSH 工作流插件,把远程 SSH 主机直接变成一个可交互的 DeepSeek Harness 工作区。由 Aizen 维护。它解决了“需要在远程机器上使用 DSH 工具链”的需求,同时保持远程作为事实源,并通过本地缓存提升性能。
核心功能¶
-
远程设备车道:在创建工作区的对话框中增加“远程设备”车道,支持内联添加/编辑/删除 SSH 主机、跳机主机和密钥口令。主机配置存储在
~/.dsh/dsh-ssh.json,与@linxin666/dsh-ssh共享。 -
远程为事实源:Shell 命令、Glob、Grep 直接在远程主机上执行;写操作立即上传,读操作优先使用远程最新副本;每次前台命令后增量刷新缓存,确保本地工具看到最新状态。
-
驻留 Python 代理(Fast Path):每个主机驻留一个单文件 stdlib Python 代理(
agent/dsh-agent.py,Python ≥ 3.6,需要 inotify),避免每次命令的 SSH 握手与登录环境加载(测量延迟约 0.2 秒)。代理通过 SSH exec 通道通信,不监听端口,断开或 120 秒无消息自动退出。如果代理不可用,自动降级到普通 SSH。 -
缓存与一致性:支持按需/全量/树模式;使用三向同步索引保证无字节丢失、无静默分歧;冲突时远程胜出,本地版本备份到
.conflicts/;提供配额、磁盘守卫、LRU 驱逐和缓存管理 UI。 -
Agent 工具集:
remote_hosts/test/exec/read/write/sync_push/sync_pull/cache/bindings,可在会话中直接进行远程与缓存操作。remote_read/remote_write使用驻留代理,并保持绑定工作区缓存的同步。 -
安全与边界:HTTP API 仅绑定回环地址,带有来源限制;采用“首次使用即信任(TOFU)”主机密钥固定;每次写入使用原子替换。不支持 Windows/macOS 远程;仅 Linux 远程(sshd + bash,代理需要 python3 ≥ 3.6 和 inotify)。不支持交互式命令(TUI、REPL、需要 tty 的命令)、sudo 等中途密码提示;不支持远程 GUI 或自动端口映射;删除本地文件不会删除远程文件,远程删除会同步到本地;同时双向编辑视为冲突。缓存不是备份;有默认大小限制(预取 ≤1MB、单文件 ≤100MB、预取预算 64MB、全局配额 5GB、下载需 5GB 空闲)。并发 SSH 通道 ≤9(6 SFTP + 3 exec)。仅支持 OpenSSH 私钥;仅支持 DSH 桌面/Web GUI;远程副作用仅写入
~/.dsh-remote-dev/与同步目录,不安装系统包或修改 sshd。
安装与启用¶
通过 DSH 插件目录页安装:
- 打开插件目录页:https://www.skillhub.cn/plugins/wwwyyyc/dsh-ssh-agent-workspace
- 在页面上选择“安装”或按插件管理流程启用插件
(插件仓库:https://github.com/wwwyyyc/dsh-ssh-agent-workspace)
典型用法¶
-
配置 SSH 主机:在 DSH 的“创建项目”对话框中选择“远程设备”车道,内联添加主机(主机名/别名、用户、端口、跳机主机、私钥路径、密钥口令)。配置会写入
~/.dsh/dsh-ssh.json。 -
创建远程工作区:在“远程设备”车道中浏览远程目录,选择一个文件夹,确认创建。DSH 会为该主机在
~/.dsh/remote-dev/<alias>/下维护本地缓存。 -
在远程执行命令:打开工作区后,在 Shell 工具中选择 Bash 或 Pwsh,工作目录位于远程工作区。命令会通过代理在远程执行,输出与退出码会透传。
-
读写与冲突:编辑文件时,编辑器会监视变更并上传到远程。如果远程文件被其他操作修改,会触发冲突;冲突由远程版本胜出,本地版本备份到
.conflicts/。 -
手动同步与缓存管理:使用
remote_sync_push/remote_sync_pull手动推送/拉取变更;使用remote_cache管理缓存策略与状态。 -
检查代理状态:在“远程设备”车道中,主机旁会显示状态点(绿色=代理+延迟,黄色=启动中,红色=离线,灰色=仅 SSH)。也可通过
remote_test检查。
适用场景与注意¶
- 适合需要在远程 Linux 机器上直接使用 DSH 工具链、希望远程作为事实源、并希望获得接近本地速度的开发者。
- 注意:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
- 远程仅支持 Linux(sshd + bash),Windows/macOS 未测试且不支持。
- 不要把本地缓存当作唯一备份,清除/驱逐缓存不会影响远程。
短结尾¶
通过 dsh-ssh-agent-workspace,你可以把远程 SSH 主机直接变成一个实时、高性能的 DSH 工作区,同时保持远程作为事实源与安全一致性。目录页:https://www.skillhub.cn/plugins/wwwyyyc/dsh-ssh-agent-workspace;仓库:https://github.com/wwwyyyc/dsh-ssh-agent-workspace