dsh-dev-runner:在 DSH 側欄一鍵編排整套開發棧

前言

在 DSH 裏和智能體協作時,對話窗口往往佔滿屏幕,但本地開發仍要同時跑後端、前端,甚至註冊中心或遷移腳本。IDE 的運行配置通常是「單選」:點一次只能起一個進程,日誌分散在多個窗口,前端起來時也缺少「後端已在應答」的客觀依據。多項目 monorepo 還要自己記目錄、命令和啓動順序。

dsh-dev-runner 是 DeepSeek Harness 的客戶端插件,把項目表、啓動順序、就緒探測和日誌收進右側欄,並在會話頂欄提供整棧啓停。它對具體技術棧不做假設——Maven、npm、Python、Go、Docker Compose 都以數據形式配置,自動發現只給出可審查的提議。

這是什麼

  • 名稱:dsh-dev-runner(倉庫 1020252969/dsh-dev-runner)
  • 維護者:1020252969
  • 分類:客戶端(側欄 + 頂欄控件)
  • 定位:一鍵拉起整套開發環境;在側欄增刪改項目,在同一側讀帶顏色、可搜索、可下載的日誌,全程不必爲啓停反覆切出對話。

插件不替代構建系統:清單裏讀不到的意圖(例如多模塊 Maven 要先 install)仍需你自行用啓動前步驟或命令表達。

核心功能

項目編排

  • 一張可見的項目表,每項包含工作目錄、常駐命令、環境變量、角色(backend / frontend / service / infra)等。
  • 啓動前步驟(before):可設輸出校驗(expect)和「失敗也繼續」(continueOnError)。
  • 就緒判定用 TCP 端口、主機或 HTTP URL 探測,而不是僅看進程是否存在;HTTP 任意響應即視爲就緒並回報狀態碼。
  • dependsOn:例如後端就緒後再起前端。
  • autoRestart 帶熔斷:短時間連續異常退出多次後停止繼續拉起。
  • oneShot:本應退出的命令(遷移、代碼生成等)以 done 結束,不算失敗,依賴方仍可繼續。

自動發現

指定根目錄後,插件讀取常見清單並提議啓動命令與端口依據(按下「應用」前不會寫入):

檢測器 依據文件 提議命令示例
Maven pom.xml spring-boot:run、quarkus:dev 等
Gradle build.gradle[.kts] gradlew bootRun
Node package.json、vite.config.* dev / start / serve;uni-app 傾向 dev:h5
Python manage.py、requirements.txt、pyproject.toml runserver、uvicorn、flask run 等
Go go.mod go run .
Compose docker-compose.yml、compose.yml docker compose up

端口來自配置文件、.env、腳本參數或 Compose 映射;未寫明時標註爲約定值;不猜測未激活的 profile 或佔位符環境變量。掃描默認最多 120 秒,可取消;目錄留空時默認掃第一個已配置項目的父目錄。Vite 代理指向後端端口,或掃描中只有一個後端時,前端提議會自動接到該後端。

側欄與頂欄

  • 側欄:項目列表(狀態、運行時長、重啓次數)、表單編輯、校驗(缺字段、非法端口、環依賴等會拒保存並列原因)。
  • 日誌:ANSI 彩色、篩選與跳轉、跟隨、清空、複製、下載爲 ‹id›.log;內存保留約每項目 2000 行。
  • 頂欄藥丸:狀態點、運行中/總數、整棧啓動/停止;點狀態可打開面板。空會話無會話頭時該控件不可見。

HTTP 接口

路由前綴 /dev-runner/api,僅迴環訪問,跨源頁面無法借瀏覽器驅動。提供狀態、項目 CRUD、單項目/整棧啓停、發現與應用候選、日誌分頁與文本下載等(詳見倉庫 README 表格)。

安裝與啓用

桌面 profile 安裝:

dsh plugin --profile desktop add dsh-dev-runner

從本地源碼目錄安裝(客戶端無構建步驟,可直接 file: 路徑):

dsh plugin --profile desktop add 'file:<absolute path to the checkout>'

裝好後側欄引導會出現 Dev services。默認無需額外配置:打開面板輸入掃描目錄,確認候選即可落盤。

環境要求(來自 package.json):DSH >=0.2.0-rc.2 || >=0.2.1-rc.2 || >=0.2.2-alpha.3;peer 依賴 @deepseek-ai/schemastery ^3.18.4。

典型用法

配置來源

生效表有兩個來源,同時存在時以存儲文件爲準:

  1. <DSH_HOME>/.dev-runner/projects.json(未設置 DSH_HOME 時用 ~/.dsh)
  2. profile 補丁 cordis.patch.yml 裏 dev-runner.config.projects

GET /status 與面板會標明當前來源(store、store-empty 或 config)。刪掉 projects.json 可回退到 YAML 補丁。

profile 示例片段

在 cordis.patch.yml 中預置後端 + 前端與依賴(路徑需改爲你的絕對路徑):

- insert:
    - id: dev-runner
      name: 'dsh-dev-runner'
      config:
        discoverDepth: 2
        projects:
          - id: backend
            name: API
            cwd: <absolute path to your shop-api checkout>
            command: mvn -Dmaven.test.skip=true spring-boot:run
            role: backend
            readyPort: 8080
            readyTimeoutMs: 180000
            env:
              SPRING_PROFILES_ACTIVE: dev
          - id: frontend
            name: 商城前端
            cwd: <absolute path to your shop-ui checkout>
            command: npm run dev:h5
            role: frontend
            readyPort: 5173
            args: -- --host
            dependsOn: [backend]
            autoRestart: true
            before:
              - name: 生成接口代碼
                command: npm run gen:api
                expect: 'generated'

常用字段:readyPort / readyHost / readyUrl、dependsOn、before、autoRestart、oneShot 等;完整說明見 README 項目字段表。

日常操作

  1. 打開側欄 Dev services 面板,必要時對倉庫根目錄執行自動發現並應用候選。
  2. 在頂欄點擊整棧啓動,或按依賴順序單獨啓停項目。
  3. 在側欄查看日誌;需要留檔時用下載得到 ‹id›.log。

也可通過 /dev-runner/api 腳本化(例如 POST /start-all、POST /discover)。

適用場景與注意

適合:經常在 DSH 會話旁同時維護後端 + 前端(或其它多進程棧);希望用端口/URL 證明「可以連了」再串行啓動;希望日誌集中在側欄而不是多個終端。

邊界與權限:

  • 插件以當前 DSH 進程權限啓動子進程;安裝前應閱讀源碼與 MIT 許可證。
  • Windows 上難以向子進程組投遞 SIGINT,停止行爲爲直接終止,面板會如實說明。
  • 就緒探測不等於健康檢查:端口通即算就緒,應用可能仍在預熱。
  • 環境變量:插件只下發你在項目裏聲明的 env;宿主會先剝離憑據與 DSH_*,需要繼承的內容請顯式寫入。

社區目錄 SkillHub 插件頁 與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方從屬關係;DSH 生態一貫是「一切皆插件」,可按需從目錄或倉庫安裝。

結尾

dsh-dev-runner 把「項目表 + 依賴順序 + 就緒探測 + 側欄日誌」接到 DSH 桌面客戶端上,用數據描述命令而非綁定某一框架。若你正在 SkillHub 或 GitHub 上挑選客戶端類 DSH 插件,可用官方命令 dsh plugin --profile desktop add dsh-dev-runner 試用;細節與 API 以 GitHub README 爲準。

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

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

小夜