前言¶
在 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,不在仓库内。
典型用法¶
在面板中新增环境¶
- 打开 环境管理器,默认在 环境 标签。
- 点击顶栏 新增环境,填写名称、可选 id、分类与描述;四个标准平面会自动创建,再点 创建环境。
- 进入新环境,在 全部节点 或某一平面标签下 添加节点。
- 需要 K8s 时,先在 K8s / 集群 建集群,再在 添加节点 中选择节点类型、集群与访问方式。
- 管理/业务 Web 控制台:在对应平面找到节点,使用 添加 Web 登录;URL 记在账号上,密码进凭证服务,可用 编辑账号 改 URL 或轮换密码。
- 仅当需要粘贴高级 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。