dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
基于本地 kubectl 的 Kubernetes 多集群管理面板:资源筛选、YAML 编辑、Pod 实时日志、交互式容器终端、工作负载重启与扩缩容,并同步 DSH 主题;支持侧栏入口和会话视图。需要 DSH 0.2.0-rc.2。
一个用于 DeepSeek Harness (DSH) 的 Kubernetes 集群管理插件。通过侧栏入口或会话视图管理你的 K8s 集群,界面跟随 DSH 主题。
当前版本:0.2.0 · 已验证宿主:DSH 0.2.0-rc.2。
kubectl 和 kubeconfig当前插件版本为 0.2.0,针对 DSH 0.2.0-rc.2(Web 和 Desktop)构建。DSH 预发布接口变化较快,本版明确锁定已验证的宿主版本。插件 0.1.0 基于 @deepseek-ai/dsh-settings ^0.1.0-rc.8,仅适用于满足其依赖要求的旧宿主。
0.2 迁移使用 dsh-client-ui-renderer 提供客户端插槽,普通宿主命令使用 shell.execute(),交互式终端使用 DSH 的 subprocess.spawnTerminal();不再依赖已移除的 dsh-client-runtime 或未使用的 dsh-settings。
node-pty 的 posix_spawnp failed,支持输入输出、窗口尺寸同步及退出清理kubectl,并确保启动 DSH 的用户可以从 PATH 找到它git clone https://github.com/MrYangyt/dsh-k8s.git
cd dsh-k8s
npm ci
npm run build
dsh-k8s 项目根目录(包含 package.json)桌面客户端管理自己的 desktop profile。终端中的 npm CLI 可能使用另一版本的运行时,请通过桌面客户端管理插件。
确认 dsh CLI 本身使用兼容的 0.2.0-rc.2 运行时,然后安装:
dsh plugin --profile web add github:MrYangyt/dsh-k8s
仓库包含构建后的 lib/ 和 client/,直接从 GitHub 安装无需手动构建。
锁定到某个 commit(推荐,避免意外升级):
dsh plugin --profile web add "github:MrYangyt/dsh-k8s#<commit-hash>"
git clone https://github.com/MrYangyt/dsh-k8s.git
cd dsh-k8s
npm ci
npm run build
dsh plugin --profile web add /path/to/dsh-k8s
Web 安装完成后,结束原来的 Web 进程,再启动 DSH:
dsh web
在项目目录中更新并重新构建:
git pull --ff-only
npm ci
npm run build
然后重启 DSH。若客户端仍加载旧版本,在插件管理中重新选择这个目录安装。仅刷新管理页面不会重新加载后端模块。
从插件 0.1.0 升级后,集群配置仍使用原来的 ~/.kube/configs/,无需重新添加。GitHub 安装可重新执行安装命令;若之前锁定了 commit,请换成新 commit。
首次启动会扫描 ~/.kube/configs/,不会自动导入现有的 ~/.kube/config。保存或删除配置会根据该目录重新生成主配置;操作前请备份已有的 ~/.kube/config。
prod、staging)~/.kube/configs/<name>.yaml,并自动把所有配置合并到 ~/.kube/config删除只移除本地 kubeconfig 文件,不会删除 Kubernetes 集群。删除最后一个配置时,生成的 ~/.kube/config 会变为空文件。
phase;表格中的 ImagePullBackOff 等状态是更具体的展示信息,因此不一定与阶段名称相同0–10000 的整数并确认kubectl exec -it 进入容器内的 /bin/shexit 或点击 断开连接 结束会话;退出后可再次连接日志和终端的容器下拉框显示 Pod 的普通容器,暂不提供 init container 选择。终端由 DSH 0.2 的托管 PTY 提供,无需为本插件另行安装终端原生依赖。目标容器必须包含 /bin/sh,且账号需要 pods/exec 权限;启动错误会直接显示在页面。断开连接、切换详情标签、关闭详情或卸载插件时,会结束对应终端进程。
页面直接继承 DSH 的标准 CSS 语义变量(--dsw-alias-*、侧栏变量等),无需单独切换主题。宿主或主题插件更新这些变量时,文字、按钮、状态色、边框、背景颜色及其 alpha、遮罩会自动同步;主画布保持透明,保留宿主背景,终端也会动态同步语义配色。
窄窗口中资源导航改为横向滚动,详情覆盖显示,表格支持横向滚动。主题插件若只用私有 CSS 定向修改其他组件,没有更新标准语义变量,其配色或透明度无法保证自动映射到本插件。
~/.kube/configs/;添加或删除集群时会重新生成 ~/.kube/config,请先备份已有主配置kubectlnpm ci
npm run typecheck
npm test
npm test 会先构建再运行测试;仅构建时使用 npm run build。
构建产物:
lib/index.js —— Host 插件(ESM)lib/terminal.js —— DSH 托管 PTY 与 WebSocket 桥接client/client.js —— Client 插件(ModuleLoader bundle,内含 xterm.js)npm run watch
此命令仅监视客户端源码并输出到 .tsdown-output/,不会编译 Host,也不会生成最终的 client/client.js 包装文件。要让已安装插件加载修改,仍需执行 npm run build 并重启 DSH。
cd /path/to/dsh-k8s
npm run build
dsh plugin --profile web add /path/to/dsh-k8s
然后重启 dsh web。
dsh-k8s-manager/
├── client/
│ └── client.js # 浏览器端打包产物
├── lib/
│ ├── index.js # Host 插件产物(ESM)
│ └── terminal.js # 终端桥接产物
├── scripts/
│ └── build-client.mjs # client bundle 后处理脚本
├── src/
│ ├── index.ts # Host 插件源码
│ ├── terminal.ts # DSH 托管 PTY 与 WebSocket 桥接
│ └── client/
│ ├── index.tsx # Client 页面与交互
│ ├── styles.css # 响应式布局与宿主主题样式
│ ├── resources.ts # 资源表格解析与状态显示
│ └── theme.ts # 终端主题同步
├── tests/ # 兼容性、资源、主题与终端测试
├── cordis.patch.yml # DSH bundle patch
├── package.json
├── tsconfig.json # Host TS 配置
├── tsconfig.client.json # Client TS 配置
├── tsdown.config.ts # 打包配置
├── LICENSE
├── README.md
└── README.en.md
/dsh-k8s-manager/* HTTP 路由和 /dsh-k8s-manager/ws/shell WebSocket 路由ctx.subprocess.resolveExecutable() 查找 kubectl,使用 spawnTerminal() 创建托管 PTY;WebSocket 双向传输 UTF-8 数据与窗口尺寸,连接结束和插件卸载会等待终端进程清理sidebar.panellist 和 main 插槽提供直接入口,并保留 conversation.view 会话视图;样式继承宿主主题变量~/.kube/configs/*.yaml,插件通过 kubectl config view --flatten 合并到 ~/.kube/configKUBECONFIG=~/.kube/configs/<name>.yaml 实现无状态多集群切换请先安装 kubectl 并确保它在 PATH 中。
插件尚未在 ~/.kube/configs/ 找到配置。点击 管理集群,粘贴有效的 kubeconfig YAML,然后点击 保存集群。已有主配置不会自动导入。
本版插件要求 DSH 0.2.0-rc.2 的 shell、subprocess 和 webserver SDK。如果错误仍显示 dsh-k8s-manager@0.1.0 或要求 @deepseek-ai/dsh-settings ^0.1.0-rc.8,说明加载的是旧版本;更新项目、重新构建并重新安装项目目录,再重启 DSH。
这是宿主 profile 的依赖发布时间检查。根据错误中的包名、版本和发布时间检查被拒绝的依赖;它可能来自同一 profile 中的其他插件。等待该版本满足宿主的发布时间要求后再重试,或由 profile 管理者审查锁文件及对应策略。不要把此错误当作本插件与 DSH 的版本不兼容。
先查看页面显示的启动错误,确认 DSH 可以从 PATH 找到 kubectl、选中的 Pod 和容器正在运行,且目标容器包含 /bin/sh。同时检查 kubeconfig 的集群连接和 pods/exec 权限;PTY 启动问题由 DSH 的 subprocess 运行时处理。
若仍出现 [pty fallback: posix_spawnp failed.],加载的还是旧终端实现。本版已移除独立 node-pty 及非 TTY 降级路径;更新并构建后重启 DSH,不能只刷新页面。
以下截图来自 0.1.0。0.2.0 的入口、布局和主题行为以以上说明及当前客户端为准。
MIT