dsh-codespace-workspace:把 GitHub Codespace 當作 DSH 工作區使用

前言

DeepSeek Harness (DSH) 的插件化架構允許擴展本地工作區能力。本地 DSH 側邊欄通常管理本地目錄。dsh-codespace-workspace 插件將 GitHub Codespace 集成爲虛擬工作區。Agent 在雲端 Codespace 內部操作文件和命令,而不是通過 SSH 連接遠程主機。它不往 DSH 的 SSH 主機列表裏塞任何東西,因此不會和其他雲工作區插件衝突。

核心功能

設置與配置

在 DSH 設置頁新增 Codespace 面板,用於集中管理連接參數和運行策略:

  • GitHub 用戶名:用於校驗與展示;留空則從 token 讀取登錄名。
  • 默認分支:新建 Codespace 時使用,默認 main。
  • 自動暫停等待時間(分鐘):一輪對話結束後開始倒計時,默認 30。
  • SSH 密鑰(可選):僅保存路徑;值永不回顯,只顯示「已設置 / 未設置」。
  • 始終顯示雲端工作區按鈕:開關,默認關;開啓後按鈕不再跟隨 hover 隱藏。
  • 自動初始化空倉庫:開關,默認開;空倉庫先提交一個 README 再建 Codespace。
  • README 初始內容:可選;留空則創建空 README。

設置通過 DSH 標準設置存儲持久化,不佔用 localStorage。

工作區列表交互

雲端工作區沿用原工作區的文件夾圖標位置,把那裏的文件夾字形換成雲朵。位置、尺寸、顏色以及懸停時“讓位給展開箭頭”的行爲都和原來一致。行首始終只有一個圖標。

操作按鈕位於倒數第三個——在三個點菜單和新建對話按鈕之前。顯示邏輯跟隨宿主默認行爲,不 hover 時隱藏;開啓“始終顯示”後常顯。

狀態 圖標 懸停提示 點擊
已停止 播放 啓動 Codespace 啓動
運行中 暫停 暫停 Codespace 暫停
倒計時中 鬧鐘 還剩 X 分鐘自動暫停 取消倒計時
啓動/暫停中 轉圈 正在切換狀態… 不可點

雙擊時鐘圖標 = 立即暫停。

正在使用的工作區,雲朵圖標會繼承宿主的 folderActive 顏色。工作區行的標題用倉庫短名(owner/name 裏的 name)。

新建雲端工作區流程

新建雲端工作區採用分步窗口流程,不彈窗堆疊:

  1. 拉取 GitHub 倉庫列表,選擇倉庫。
  2. 檢查該倉庫的 Codespace:多個 → 選擇;一個 → 直接用;沒有 → 創建。
  3. 創建前檢查 prebuild,採用三態邏輯:
    • 有 → 提示“已配置預構建”。
    • 明確沒有 → 提示“未配置預構建,創建可能較慢”,提供取消/直接創建選項。
    • 讀不出來 → 提示“無法確認預構建狀態,創建可能需要 1–3 分鐘”,不提供按鈕(由插件自己讀取失敗,不強行斷言)。
  4. 空倉庫 → 自動提交一個空 README,然後繼續創建。
  5. 機器規格可選,默認最小。
  6. 啓動失敗 → 窗口內報錯,可重試。

生命週期管理

  • DSH 啓動時:不自動啓動任何 Codespace。檢查上次遺留的運行中 Codespace 並提示用戶(帶“停止”按鈕),但不自動停。
  • 退出 DSH 時:嘗試自動關閉所有本插件管理的 Codespace。
  • 自動暫停:一輪對話結束後開始倒計時;倒計時期間用戶發新消息 → 取消倒計時;點時鐘 → 取消;雙擊時鐘 → 立即暫停。

Agent 集成

  • 自動就緒檢查:發消息前,系統會自動檢查並啓動 Codespace。如果 Codespace 處於自動暫停或啓動中,會等待其變爲 Available 才真正發送給模型。
  • Git 能力:Agent 擁有完整的 git 命令執行能力。插件不干預 Git 操作,不封裝 push 邏輯。僅在創建會話時向系統提示詞注入一條規則,提示 Agent 完成改動後 git push 回倉庫。

前置條件

依賴 必需 說明
git 是 Agent 用它 push 回倉庫
ssh 是 連接 Codespace 的數據通道
gh(GitHub CLI) 推薦 用於 gh codespace ssh;未安裝時插件仍可用,改用設置頁配置的 SSH 別名
GitHub token 是 控制面(REST API)。取值順序:設置 → GITHUB_TOKEN → gh auth token

所需 GitHub 權限範圍:codespace、repo。

安裝與啓用

安裝命令如下:

dsh plugin --profile desktop add dsh-codespace-workspace

注意:dsh plugin add 只改寫 profile 的 package.json 依賴與 pnpm-lock.yaml,不會登記 dsh.profile.bundles 數組。必須手動編輯配置:

# 1. 編輯 %USERPROFILE%\.dsh\profiles\desktop\package.json
# 2. 在 dsh.profile.bundles 數組裏加入 "dsh-codespace-workspace"
# 3. 重啓 DSH(插件文件改動不會熱生效)

也可以從本地克隆裝(改代碼時用這個):

git clone <this-repo> dsh-codespace-workspace
dsh plugin --profile desktop add "link:<絕對路徑>\dsh-codespace-workspace"

dsh plugin add 會報一條 peer dependency 警告(@deepseek-ai/cordis、@deepseek-ai/schemastery 由宿主提供),可以忽略。

典型用法

  1. 在 DSH 設置頁配置 GitHub 用戶名、默認分支(默認 main)和自動暫停等待時間(默認 30 分鐘)。
  2. 點擊工作區標題欄的雲朵圖標啓動 Codespace,雙擊時鐘圖標立即暫停。
  3. 新建工作區時,系統會自動檢查倉庫的預構建狀態,若未配置則提示創建可能較慢。
  4. 在 Codespace 會話中發送消息,如果 Codespace 處於自動暫停或啓動中,系統會等待其變爲 Available 才真正發送給模型。
  5. 在 Codespace 中操作 Git,插件會在會話創建時注入規則,提示 Agent 完成改動後 push 回倉庫。

注意事項

  • 安裝限制:dsh plugin add 只改寫 profile 的 package.json 依賴,必須手動編輯 dsh.profile.bundles 數組。
  • Profile 限制:desktop profile 由 Electron 應用獨佔管理,CLI 無法使用 --dump-config-schema。
  • 權限範圍:GitHub Token 必須擁有 codespace 和 repo 權限範圍。
  • 降級方案:未安裝 gh 時插件仍可用,改用設置頁配置的 SSH 別名。

結語

該插件通過佔位目錄和按 cwd 路由的設計,將 DSH 的本地工作區機制無縫擴展至雲端。它提供了完整的工作區生命週期管理和 Agent 工具集成能力,適合需要在雲端進行代碼開發與調試的場景。

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

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

小夜