dsh-env-manager:爲 DSH 會話提供可查詢的企業環境註冊表

前言

在 DSH 裏做運維或平臺相關開發時,主機、集羣、服務倉庫和部署關係往往散落在文檔、表格或各人記憶裏。智能體每次新開會話都要重新問一遍「測試環境 IP 是多少」「這個服務綁哪個 Skill」,既慢也容易串環境。常見做法是在工作區裏手寫 AGENTS.md 或臨時粘貼 YAML,但難以分層覆蓋配置、也難保證密碼不進倉庫。

下面介紹社區插件 dsh-env-manager(GitHub:zhiwuli0228/dsh-env-manager,維護者 zhiwuli0228)。它是 DSH 的客戶端類插件,在 Web 與 Desktop 上提供統一的環境註冊表、服務目錄與「操作 → Skill」路由視圖,並隨插件註冊發現用 Skill,供同 profile 下各工作區按需查詢。

這是什麼

DSH Environment Manager 的定位是:讓每個 DSH 會話都能按需讀取企業運行環境、服務目錄、部署實例、分層規則,以及操作與 Skill 的綁定關係。npm 包名爲 dsh-env-manager-plugin(當前資料中的版本爲 0.1.3),許可證 MIT,要求 Node.js ≥ 20、DSH ≥ 0.2.1-rc.5。

插件以當前 DSH 進程權限運行;安裝前建議自行閱讀倉庫源碼與許可證,確認符合你的安全與合規要求。

核心功能

資料中已實現並說明的能力如下(Phase 1 環境/平面模型與 Phase 1.1 K8s 節點/執行模型已在 desktop profile 落地)。

註冊表與解析

  • Environment Registry:主機、集羣、邏輯角色、訪問端點、主機賬號與登錄審計記錄集中在一套記錄裏。
  • Service Catalog:服務的 Git URL、默認分支、構建工具、製品與規則配置引用。
  • Deployment Binding:服務部署位置(native / docker / kubernetes)及實例級變量。
  • Rule Resolver:分層、字段級覆蓋,並保留來源說明(每個值來自哪裏、受什麼影響)。
  • Operation Skill Router:將 deploy、redeploy、collect-logs 等操作映射到唯一綁定的 Skill,檢測衝突並配合審批策略;只返回綁定的 Skill 與策略,不代爲執行。
  • Session Context:每個會話有默認環境,不會泄漏到其他會話。

工具、界面與發現 Skill

  • 已實現 十個 env_* 工具、同源路由 /env-manager/api,以及側邊欄/主面板 環境管理器。
  • 捆綁 Discovery Skill dsh-env-manager:隨插件通過 ctx.skills.register() 註冊到當前 profile 的全局 Skill 層,不單獨安裝、不注入全局系統提示;完整工作流在調用 Skill 後加載,建議流程爲 env_list / env_find → env_set_context → env_resolve → env_resolve_operation。
  • 配置項 registerSkill: false 可關閉 Skill 目錄條目,不影響工具與面板。

環境與節點模型(UI)

  • 一個環境對應一張完整網絡與一個配置頁;管理、業務、數據庫、擴展等平面是對同一 hosts[] 的角色視圖,同一節點可承擔多個角色。
  • 默認打開 環境 (Environments) 頁;任意標籤頁頂欄均可 新增環境。記錄 (Records) 僅涵蓋服務、部署、規則配置與操作綁定。
  • 新建環境只創建環境殼並種子四個標準平面;節點在環境內單獨添加或批量導入。
  • 批量導入格式(每行):IP,name,roles,port,user,角色之間用 | 或 /;僅創建通用 VM 節點,不接受密碼。
  • 節點支持多種機器類型(vm、physical、K8s 合設、K8s worker、Pod 宿主機等)與命令訪問(ssh、kubectl、docker);Pod 宿主機指通過 docker exec 到達的機器,不把單個 Pod 記爲節點。
  • 密碼寫入 DSH 憑證服務,YAML 中僅保留引用路徑(如 env-manager/<environmentId>/<hostId>-<username>),不出現在工具輸出或日誌中。

尚未完成(資料明示)

數據庫主從/分片拓撲(Phase 2)、節點/賬號/登錄的行級刪除、淺色主題視覺驗收、部分 live approval/credential 探測,以及向 DSH memory 插件喂數的 Memory Bridge(標註爲 P1)等仍在路線圖中。

安裝與啓用

社區目錄 SkillHub 上的標識爲 zhiwuli0228/dsh-env-manager,可與 DSH 對話說明安裝該插件;npm 側請使用包名 dsh-env-manager-plugin,不要全局 npm install -g,也不要用 dsh plugin add 激活(官方 README 明確改用 Harness 的 plugin_manager)。

從 npm 安裝 bundle(資料給出的 0.1.3 示例):

action: install_bundle
target: dsh-env-manager-plugin@0.1.3

從本地倉庫路徑安裝(需使用倉庫的絕對路徑;倉庫已提交編譯好的 lib/,未改源碼時可不構建):

action: install_bundle
target: <absolute path to this repository>

注意:plugin_manager 只會向 profile 添加一次 bundle;勿手動重複寫入 dsh.profile.bundles,也勿同時保留舊本地 bundle 名 dsh-env-manager 與 npm 包,否則可能重複加載導致 DSH 無法啓動。若 bundle 已存在,安裝後可能需要重啓 DSH。卸載示例:

action: remove_bundle
target: dsh-env-manager-plugin

可選配置(抑制 Skill 目錄項):

config:
  registerSkill: false

註冊表數據在首次運行時寫入解析後的 dataDir,不在倉庫內。

典型用法

在面板中新增環境

  1. 打開 環境管理器,默認在 環境 標籤。
  2. 點擊頂欄 新增環境,填寫名稱、可選 id、分類與描述;四個標準平面會自動創建,再點 創建環境。
  3. 進入新環境,在 全部節點 或某一平面標籤下 添加節點。
  4. 需要 K8s 時,先在 K8s / 集羣 建集羣,再在 添加節點 中選擇節點類型、集羣與訪問方式。
  5. 管理/業務 Web 控制台:在對應平面找到節點,使用 添加 Web 登錄;URL 記在賬號上,密碼進憑證服務,可用 編輯賬號 改 URL 或輪換密碼。
  6. 僅當需要粘貼高級 YAML 模板時,使用 新建記錄。

智能體查詢註冊表

在同一 DSH profile 的任意工作區(含空工作區)Skill 目錄中可見 dsh-env-manager。調用後按 Skill 指引先用 env_list / env_find 定位環境,再 env_set_context 設定會話默認環境,用 env_resolve 解析配置,用 env_resolve_operation 解析某操作應對應的執行 Skill 與策略。實際部署、重啓、拉日誌仍須由 operationBinding 指向的執行 Skill 完成。

適用場景與注意

適合:需要在 DSH Web/Desktop 中維護多環境主機與 K8s 元數據、服務與部署綁定、分層規則,並讓智能體在會話內可查詢、可解析操作路由的團隊。

注意:

  • 插件不執行運維操作,只做註冊、解析與路由建議;關鍵操作應在執行 Skill 或工具層繼續強制校驗。
  • 不同 profile 或機器不共享註冊表與 Skill,需在對應環境分別安裝 bundle。
  • 社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」思路,選型時以倉庫文檔與源碼爲準。

結尾

經過上面的步驟,你可以把分散的環境與服務信息收進 DSH 可查詢的註冊表,並在不污染全局系統提示的前提下,讓智能體通過 dsh-env-manager Skill 與 env_* 工具按需訪問。目錄頁:https://www.skillhub.cn/plugins/zhiwuli0228/dsh-env-manager;源碼與完整設計文檔:https://github.com/zhiwuli0228/dsh-env-manager。

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

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

小夜