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。

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

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

小夜