@deepwhale-cn/dsh-ssh-console:給 agent 一條受控的 SSH 執行通道

前言

在 DSH 裏讓智能體操作遠端機器,最常見的做法是另開一條 ssh 通道:命令由 agent 自己拼,shell 由 agent 自己管。這種做法有三個直接的問題:你看不到它實際敲了什麼命令,密碼 / sudo / 指紋這類必須由人完成的交互沒有落點,事後也沒有一份可以回看的記錄。

feely0208/dsh-ssh-console 給出的是一條受控、可審計的執行通道。它不做共享 PTY,而是把邊界寫死:主機白名單、只走密鑰、危險命令二次確認、全量留痕。下面介紹它的能力、安裝方式和使用邊界。

這是什麼

@deepwhale-cn/dsh-ssh-console 是 DSH(DeepSeek Harness)的一個插件,包描述爲「深鯨 SSH 控制台」:在側欄面板裏列出 ~/.ssh/config 中的主機、執行遠程命令、全量審計留痕。它由 feely0208 維護,倉庫地址爲 github:feely0208/dsh-ssh-console,package.json 中作者一欄爲溫州深鯨智能科技有限公司。

解決的問題是:agent 需要能碰遠端機器,但執行過程要處於人的可視、可確認、可回看範圍內。關鍵詞(README 原文)爲 SSH、遠程運維、審計、危險命令確認、DeepSeek Harness 插件。

核心功能

  1. 主機白名單:默認只允許 ~/.ssh/config 裏的別名;確需把策略放寬到任意 user@host 時,顯式設置 DSH_SSH_ALLOW_ANY=1。
  2. 只走密鑰:調用本機 ssh 時使用 BatchMode=yes。需要密碼的場景會明確報錯,而不是誘導你把密碼寫進配置或插件。
  3. 危險命令二次確認:命中 rm -rf、mkfs、dd、shutdown、chmod 777、強推、npm publish 等模式時,返回「需要確認」,只有帶 confirm=true 纔會執行。
  4. 全量審計:每次執行、被拒絕的執行、待確認的請求都寫入 ~/.dsh/ssh-console-audit.jsonl。

面板分四個區域:

區域 內容
主機 從 ~/.ssh/config 讀取(別名 + 用戶@主機)
命令 多行輸入;執行後顯示退出碼、耗時、stdout/stderr
待確認 危險命令命中時出現,必須點「我知道風險,執行」
審計 最近 20 條執行記錄(時間 / 主機 / 結果 / 命令摘要)

安裝與啓用

安裝命令來自 README 原文:

dsh plugin --profile web add @deepwhale-cn/dsh-ssh-console

安裝前需要的環境要求(package.json):

"engines": {
  "dsh": ">=0.1.0-rc.6 <0.3.0",
  "node": ">=18"
}

許可證爲 MIT,當前版本 0.1.0。該插件面向 web 平臺,dsh.client.inject 注入 @deepseek-ai/dsh-client-runtime,platform 爲 web,immediately 爲 true;dsh.bundle.patch 指向 ./cordis.patch.yml。入口爲 ./lib/index.js,另有 ./lib/client.js。

安裝前應先讀一遍源碼與 LICENSE。該插件以當前 dsh 進程的權限運行,它執行遠程命令依賴的是本機 ssh 可執行文件,因此也要看運行 dsh 的賬號本身能訪問哪些主機和憑據。

典型用法

安裝完成後,側欄會多出「SSH 控制台」。先做兩件準備:確認目標主機的別名已經寫在 ~/.ssh/config 裏,確認本機 ssh 已配置好密鑰或 ssh-agent(插件不保存密碼,也不做憑據代理)。

執行順序如下:

  1. 在「主機」區域選定別名。列表來自 ~/.ssh/config。
  2. 在「命令」區域輸入要執行的命令,支持多行。
  3. 點「執行」,面板顯示退出碼、耗時、stdout 與 stderr。
  4. 若命中危險命令模式,面板不會直接執行,而是在「待確認」區域出現條目,需要點「我知道風險,執行」;或者以帶 confirm=true 的方式確認後才執行。
  5. 每次執行、拒絕、待確認都會追加一條記錄到 ~/.dsh/ssh-console-audit.jsonl,可在「審計」區域查看最近 20 條。

以下命令均爲危險命令示例,會觸發二次確認:

rm -rf /var/lib/app
mkfs.ext4 /dev/sdb1
dd if=/dev/zero of=/dev/sda
shutdown -h now
chmod 777 /etc/app
git push --force origin main
npm publish

適用場景與注意

適合這幾類場合:需要從 DSH 側欄發起遠程命令、想讓每次遠端操作都有時間 / 主機 / 結果 / 命令摘要可回看、不想讓密碼進入插件或配置文件。

需要注意的邊界(README「邊界(重要)」一節):

  • 不保存密碼、不做代理:只調用本機 ssh,憑據由你的 ssh 體系(key / agent)管理。
  • 不是完整終端:一次一條命令執行,不保留 shell 狀態,cd / export 不跨命令。需要交互式登錄請用系統終端。
  • 超時:默認 30 秒,最長 120 秒;長任務請用 nohup / tmux 自己託管。
  • 審計文件是明文 JSONL,留在本機;不要把它放在共享目錄裏。

該插件是一個工具,使用者需遵守所在地區法律法規,對使用本項目造成的後果自行承擔責任。

結尾

這個插件的價值不在於提供更順手的遠程 shell,而是把遠程執行的邊界固定下來:誰來執行、能不能執行、執行了什麼、被拒絕過什麼,都有記錄。目錄頁與倉庫如下:

  • SkillHub 目錄頁:https://www.skillhub.cn/plugins/feely0208/dsh-ssh-console
  • GitHub:https://github.com/feely0208/dsh-ssh-console

需要說明的是,SkillHub 是獨立的社區目錄站點,與 DeepSeek / 幻方沒有官方從屬關係,該插件並非官方應用商店中上架的產品。

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

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

小夜