dsh-task2docker-studio:把重任務下發到你自己的 SSH 服務器

前言

在 DeepSeek Harness(DSH)裏和智能體協作時,常見兩類瓶頸:本機算力或內存不夠(大模型推理、長時間構建、批量任務),以及不敢在本機直接執行不受信任或實驗性代碼。常見做法是手動 SSH 上去跑命令、自己寫 scp/rsync 傳文件、另開終端盯日誌——步驟分散,Agent 也很難把「登記機器 → 傳代碼 → 隔離執行 → 跟狀態 → 拉回產物」串成穩定流程。

下面介紹社區插件 dsh-task2docker-studio(維護者 CarryChang,GitHub 分類爲工作流相關能力)。它在 DSH 側提供一組工具,把任務下發到你已經能通過 SSH 連上的機器:可選 Docker 容器隔離運行,配合 scp 傳文件,並用狀態與日誌接口跟隨任務。設計上廠家中立,不綁定特定雲 API;同一套邏輯還以開放 Agent Skills 形式提供,可裝進 Claude Code、Cursor、Copilot 等環境,從 shell 驅動。

這是什麼

dsh-task2docker-studio 是面向 DeepSeek Harness 的「Task-to-Docker studio」插件:主機只做控制器——登記 runner、下發任務、跟隨結果;計算發生在你可控的遠程機上。

兩類典型場景(README 原文表述):

  • 主機弱於目標環境:模型放不下、構建太慢、批任務太大時,改在能扛住的 server 上跑。
  • 安全執行:不可信或實驗代碼在遠端一次性 Docker 容器裏跑(推薦設鏡像以隔離),與本機打字環境分離。

指定鏡像時任務以 detached 容器運行;否則在 runner 上以後臺進程方式執行。插件 MIT 許可;倉庫 CarryChang/dsh-task2docker-studio,社區目錄頁見 SkillHub 條目。DSH 生態強調「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係,下文安裝與配置均以倉庫 README 爲準。

核心功能

插件向 Agent 暴露的工具如下(名稱與用途來自 README 表格):

工具 作用
t2d_register_runner 登記 runner:名稱、host、port、user、認證(key / sshpass),可選默認鏡像
t2d_list_runners 列出已登記 runner(僅憑證指針,不輸出密鑰)
t2d_remove_runner 移除 runner
t2d_copy_to 經 scp 將本機文件/目錄推到 runner
t2d_copy_from 從 runner 拉回產物
t2d_run 向 runner 下發命令 → 生成可跟蹤 job(容器或原生);可用 mounts 把 host 路徑掛進容器
t2d_status 輪詢 job:RUNNING / SUCCEEDED / FAILED / STOPPED 及退出碼
t2d_logs 查看或有限時間跟隨任務輸出
t2d_stop 停止 job

內置 skill(task2docker-studio)描述推薦閉環:list → register → copy_to → run(含 mounts)→ status → logs → copy_from → stop,並覆蓋容器與原生執行、文件傳輸與密鑰處理規則。

後端通過注入的 SshClient 與 runner 通信,無廠商 SDK;skills/dsh-task2docker-studio/ 下另有 stdlib-only 的 scripts/t2d.mjs CLI,與插件共用同一套 dispatch 邏輯。

安裝與啓用

在 DSH 中安裝(README 給出的命令,勿自行改寫 URL 形式):

dsh plugin --profile web add https://github.com/CarryChang/dsh-task2docker-studio

登記 runner 可在對話中即時完成,例如:

> 我有一臺服務器 203.0.113.10,root + 公鑰免密,名字叫 gpu-box,幫我登記,之後訓練都丟它上面跑

也可在 profile 的 cordis.yml 中預置,啓動即就緒:

- id: task2docker
  name: dsh-task2docker-studio
  config:
    stateDir: ''                 # 默認 ~/.dsh-task2docker(runners.json + jobs.json)
    sshTimeoutSec: 60
    runners:
      - name: gpu-box
        host: 203.0.113.10
        user: root
        auth: key
        defaultImage: nvidia/cuda:12.4.1-base-ubuntu22.04
      - name: isolated
        host: 203.0.113.20
        auth: sshpass
        passwordEnv: ISOLATED_PW # 或 passwordFile: /run/secrets/isolated_pw

憑證:公鑰 / agent 路徑不落盤祕密;sshpass 方式僅在配置裏保存 passwordEnv 或 passwordFile 指針,調用時讀取,不寫入賬本、不出現在工具輸出中。密碼認證需本機安裝 sshpass,README 建議優先密鑰。

安裝插件前,應按慣例檢查倉庫源碼與 MIT 許可證;插件在當前 dsh 進程權限下運行,會代表你發起 SSH/scp 並在遠端執行命令,只應登記你信任且有權使用的機器。

典型用法

README 中的對話示例可直接改寫路徑與鏡像試跑:

> 把 ./train.py 丟到 gpu-box 上用 pytorch:2.4 鏡像跑起來,跑完告訴我狀態
> 這段不受信任的腳本別在我本機跑,去 isolated 上開個容器執行,只看輸出
> run npm ci && npm test on my build server and tail the log

傳本地目錄、掛載進容器、跟日誌、拉回產物的完整表述:

> 把本地 ./src 目錄傳到 gpu-box 的 /data/src,然後掛載進容器跑 python /data/src/train.py,
> 實時看 60 秒日誌,跑完把 /data/out 拉回本地

不依賴 DSH 時,可複製 skills/dsh-task2docker-studio/,用 CLI 走同一流程(README 摘錄):

cd skills/dsh-task2docker-studio
node scripts/t2d.mjs register --name gpu-box --host 203.0.113.10 --user root --image pytorch:2.4
node scripts/t2d.mjs run --runner gpu-box --command "python train.py"        # detached container
node scripts/t2d.mjs status --job <id>
node scripts/t2d.mjs logs   --job <id> --tail 80
node scripts/t2d.mjs stop   --job <id>

CLI 運行時位於 skills/dsh-task2docker-studio/scripts/lib/(由 scripts/build-portable.mjs 從與 DSH 解耦的 src/backend/ 生成);按 README 說明,複製文件夾即可使用 CLI,無需再 build 插件本體。

適用場景與注意

適合誰:已有 SSH 可達的自有或租用機器(雲主機、GPU 盒子、集羣入口節點等),希望在 Agent 對話裏統一完成遠程訓練、構建測試、隔離跑腳本,並能把產物拉回本機的工作流開發者。

README 列出的限制(v0.2 小節,實現細節以當前倉庫爲準):

  • runner 須從本機 SSH 可達;容器模式要求 runner 上裝有 Docker,原生後臺執行則不需要。
  • 原生後臺跑追蹤 PID 與日誌文件,不能像容器那樣一律拿到容器式 exit code。
  • 密碼認證依賴本機 sshpass。
  • 文檔中寫明尚無專用「大文件傳輸工具」——除 copy_to / copy_from 外,也可自行對 runner 使用 scp/rsync,或在容器中 mount 路徑。

版本演進:README 註明 v0.1 曾面向 OpenBayes / HyperAI GraphQL,v0.2 去掉廠商耦合,泛化爲任意 SSH runner + 可選 Docker;與 DeepSeek、Docker 或任何雲廠商均無隸屬或背書關係。

結尾

dsh-task2docker-studio 把「遠程算力 + 可選 Docker 隔離 + scp + 任務狀態/日誌」收成 DSH 可調用的工具鏈,主機保持輕量與安全邊界。需要查閱分類與簡介時可打開 SkillHub 目錄頁;安裝命令、配置字段與架構說明以 GitHub 倉庫 README 爲準。

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

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

小夜