fonlan/dsh-quick-commands ↗★ 0
@fonlan/dsh-quick-commands
DSH web plugin: per-workspace quick commands. Configure named shell commands per DSH workspace, run one from the session header with live stdout/stderr in a floating popup.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:fonlan/dsh-quick-commands说明文档
阅读完整 README ↗配置
插件设置命名空间为 quick-commands:
{
"workspaces": [
{ "workspaceId": "", "commands": [
{ "name": "lint", "command": "npm run lint" },
{ "name": "test", "command": "npm test" }
]}
],
"popupAnchor": "corner", // 或 "button"
"popupSize": { "width": 520, "height": 340 } // 可选,用户拖动弹窗调整手柄时写入
}
占位符
| 占位符 | 值 |
|---|---|
{workspace} | 工作区根路径(也是执行时的 cwd) |
{cwd} | 会话的实际 cwd(可能是子目录) |
{title} | 工作区显示标题 |
在远程工作区上,占位符解析为 远程 路径:{workspace} 和 {cwd} 为远程绝对路径(当会话 cwd 位于占位符工作区内时,会被重新锚定到远程文件系统),因此 echo {cwd} 打印的是远程目录。
环境变量
本地命令继承宿主进程环境,并额外设置:
DSH_WORKSPACE、DSH_WORKSPACE_ID、DSH_WORKSPACE_TITLE。
远程命令在 SSH 主机上以该主机的自身 shell 环境运行(远程侧不会注入 DSH_* 变量)。
远程执行细节
- 需要加载
@dsh-ssh/dsh-ssh宿主插件(它提供sshPool服务和dsh-ssh-hosts设置命名空间);缺失时,对远程占位符工作区执行的快捷命令会被明确拒绝并报错,而不是静默地在本地执行。 - 输出流通过 SSH 通道实时传输(相同的 tail/offset 轮询,弹窗不变)。杀进程会终止远程 进程组(
kill -TERM -- -加 pkill 回退),因此sleep/ 构建器等子进程也会被覆盖。 - 远程命令前会加上一行探针标记以探测组 leader pid;弹窗显示的 stderr 中会过滤掉该行。
- 远程执行 shell:Linux / macOS 主机(bash 兼容),取决于 远程 主机的平台,而非本地主机。