DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Devops — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
D

@jacksonchen/dsh-devops

Devops

DeepSeek Harness 的 GitLab + Kubernetes DevOps 控制平面:AI 工具、Web 控制台、Webhook 和告警监控

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Jackson-chen97/dsh-devops#08ce3ea8ce4c4564421c31a17f5a4beb1fd9c236
README兼容性版本
Dashboard gitlabDashboard k8s

兼容性与来源证明

Devops 以 @jacksonchen/dsh-devops 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/25

版本

0.2.0stable
2026/9/25

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/25
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

@jacksonchen/dsh-devops

GitLab + Kubernetes DevOps control plane for DeepSeek Harness (DSH): AI tools, web console, webhook notifications, and alert monitoring.

中文文档

GitLab tabK8s tab
查看图片查看图片

Features

  • GitLab API: Create/review/close merge requests, manage tags, monitor CI/CD pipelines with per-job detail and build logs
  • Kubernetes API: Deployment status, pod lists, events, logs, image change and rollout restart
  • Dashboard UI: Dual-card switcher (GitLab server / project, kubeconfig / context / namespace) + second-level tabs (MRs / Tags / Pipelines / Deployments / Events), searchable dropdowns everywhere, modal-driven operations
  • Multi-config: Multiple GitLab servers and multiple kubeconfigs, switchable from both the dashboard and settings
  • Webhook + Alert engine: GitLab webhook → followup() notification; background polling detects pipeline failures and pod issues
  • i18n: Chinese / English dictionaries registered into the DSH LocaleRuntime — the console follows the app's language setting
  • Self-signed clusters: Per-request CA pinning from kubeconfig via node:https

Installation

🚀 Recommended: Local Checkout Method (No npm dependency issues)

Due to a known issue with @deepseek-ai/dsh-type-meta missing from npm, the local checkout method is the most reliable way to install this plugin. See GitHub discussion #410 and discussion #984.


Method 1: Complete Setup Guide (Recommended ✅)

This guide walks you through cloning the repository and installing it locally.

Step 1: Clone the Repository

# Create a directory for your project tools (or use existing location)
mkdir -p ~/dev/tools
cd ~/dev/tools

# Clone the dsh-devops repository
git clone https://github.com/Jackson-chen97/dsh-devops
cd dsh-devops

Step 2: Install the Plugin in the DSH Profile

Use one of these two methods:

Option A: Using the dsh plugin CLI (registers dependency + bundle automatically)

dsh plugin --profile web add "~/dev/tools/dsh-devops"

Option B: Edit the profile package.json directly

Declare it in BOTH dependencies and dsh.profile.bundles:

{
  "dependencies": {
    "@jacksonchen/dsh-devops": "~/dev/tools/dsh-devops"
  },
  "dsh": {
    "profile": {
      "bundles": ["@jacksonchen/dsh-devops"]
    }
  }
}

Step 3: Restart DSH

dsh --profile web

The browser should open the WebUI automatically (default http://127.0.0.1:3080/).

The plugin ships its own cordis.patch.yml, which is applied automatically as a bundle layer (including the connection-service dependency patch for DSH 0.1.5) — you do not need to insert the plugin entry into the profile's cordis.patch.yml manually.

Step 4: Configure DevOps Settings

  1. Open DSH Settings → DevOps tab
  2. Click "+ Add server" to fill in GitLab info (Base URL + Token) and test the connection
  3. Click "+ Add config file" to fill in a kubeconfig path and test the connection
  4. Save and return to the dashboard

Why Local Checkout?

✅ Works offline - No pnpm registry needed
✅ Bypasses dependency issues - The dsh-type-meta problem is avoided
✅ Install without building - The checkout ships lib/ built by tsdown (host ESM + web client CJS)
✅ Hot reload support - Re-run pnpm build after changing src/, restart DSH, done


Other Methods (For Reference Only)

Once the dsh-type-meta issue is resolved by maintainers, you can use these traditional methods:

From npm (after publishing):

dsh plugin --profile web add @jacksonchen/dsh-devops

From GitHub:

dsh plugin --profile web add https://github.com/Jackson-chen97/dsh-devops.git

Equivalent pnpm commands in the profile directory:

cd ~/.dsh/profiles/web
pnpm add @jacksonchen/dsh-devops       # npm (once published)
pnpm add https://github.com/Jackson-chen97/dsh-devops.git  # GitHub

Usage

  1. Open DSH Settings > DevOps, add GitLab server(s) (Base URL + token) and kubeconfig file(s) — saved to ~/.dsh-devops/config.json
  2. On the dashboard, pick the GitLab project and K8s context/namespace — switching saves automatically and AI calls follow immediately
  3. Create MRs, tags, inspect pipelines with build logs, and operate deployments right from the dashboard — or just ask the AI, which calls the same tools with the same config

Or configure via a cordis patch entry config: block (headless setups etc.):

- id: dsh-devops
  name: '@jacksonchen/dsh-devops'
  config:
    gitlab:
      baseUrl: 'https://gitlab.example.com'
      token: 'glpat-xxxx'
      projects:
        - id: main
          path: 'my-group/my-project'
          tokenEnv: 'GITLAB_TOKEN'
    k8s:
      kubeconfigs:
        - id: prod
          path: '~/.kube/config'
          context: 'prod'

Note the structural difference: the Settings UI writes ~/.dsh-devops/config.json (the servers[] / kubeconfigs[] multi-entry shape), while a cordis config: uses the Schemastery schema above and takes precedence over the settings file.

AI Tools

All tools are registered as soon as the plugin loads — no YAML config needed. They read the same configuration the Settings > DevOps UI saves (~/.dsh-devops/config.json), so switching project/cluster in the dashboard applies to AI calls immediately. Calling a tool before configuring returns a hint to finish setup first.

An explicit config: block in the cordis patch entry still works as an override layer for headless setups.

ToolDescription
gitlab_mr_createCreate MR (optional reviewers, auto-triggers pipeline watch)
gitlab_mr_reviewReview MR (approve/request_changes/comment)
gitlab_mr_listList merge requests
gitlab_tag_createCreate git tag
gitlab_pipeline_statusGet pipeline status
gitlab_pipeline_jobsList pipeline jobs
gitlab_pipeline_watchStart/check pipeline monitoring
k8s_deployment_statusGet deployment rolling status
k8s_podsList pods with restart counts
k8s_eventsGet recent K8s events
k8s_logsGet pod logs (tail N lines)

Configuration Reference

GitLab Config

FieldRequiredDescription
baseUrlYesGitLab instance URL
tokenYesGitLab access token (direct value)
defaultProjectNoDefault project ID (falls back to first)
projects[].idYesUnique project identifier
projects[].pathYesGitLab project path (group/project)
projects[].tokenEitherPer-project direct token (settings-file source, wins over tokenEnv)
projects[].tokenEnvEitherEnv var name containing the token (cordis config source)
projects[].defaultBranchNoDefault branch for this project

K8s Config

FieldRequiredDescription
kubeconfigs[].idYesUnique cluster identifier
kubeconfigs[].pathYesKubeconfig file path (~ supported)
kubeconfigs[].contextNoContext to use (defaults to current-context)
kubeconfigs[].namespaceNoDefault namespace override
defaultContextNoDefault cluster ID
defaultNamespaceNoFallback namespace

Webhook Config

FieldRequiredDescription
secretYesShared secret for webhook verification
projectPathsNoFilter by project path (whitelist)
quietEventsNoEvent types to suppress

Monitor Config

FieldDefaultDescription
pollIntervalSec30Polling interval
cooldownSec300Alert cooldown to prevent spam
pipeline[]⚠️Pipeline alert rules (trigger: failed/canceled/success)
pod[]⚠️Pod alert rules (trigger: crash/restart/pending_stuck)

Development

pnpm install         # install dependencies
pnpm run typecheck   # TypeScript check
pnpm run build       # tsdown dual build: host ESM + browser client (output in lib/)
pnpm run test        # run vitest suite
pnpm run verify      # typecheck + build + test in one go

Note: With a local link install (the profile dependencies point at this directory), DSH loads the artifacts in lib/ directly — re-run pnpm build after changing src/, otherwise the host keeps loading the stale bundle. The committed lib/ also means a fresh clone can be installed without building.

Architecture

src/
├── index.ts            # Public contract: name / inject / Config / apply
├── protocol.ts         # RPC channel + endpoint names (shared host/client)
├── config.ts           # Schemastery schema + cross-field validation
├── types.ts            # Shared domain types
├── core/               # Framework-independent domain layer
│   ├── gitlab/         #   GitLab REST client + multi-project router/service
│   ├── k8s/            #   K8s REST client + kubeconfig parser + router/service
│   ├── webhook/        #   Pure event parsing + followup message generation
│   ├── monitor/        #   Alert rule evaluation + throttle
│   ├── http.ts         #   fetch/node:https with timeout + CA pinning
│   └── logging.ts      #   ~/.dsh-devops/devops.log writer/reader
├── host/               # DSH host adaptation layer
│   ├── plugin.ts       #   apply(): lazy services + tools + RPC + webhook + monitor
│   ├── rpc.ts          #   /dsh-devops-read + /dsh-devops-write channels
│   ├── endpoints-*.ts  #   RPC endpoint handlers (raw params, test-before-save)
│   ├── tools*.ts       #   gitlab_* / k8s_* AI tool definitions
│   ├── services.ts     #   Lazy per-call service wrappers
│   ├── config-store.ts #   ~/.dsh-devops/config.json persistence + migration
│   └── runtime-config.ts # cordis override > settings file resolution
└── client/             # Web console (React TSX + CSS Modules, zh/en locales)
    ├── index.ts        #   slots.inject('settings.section' | 'conversation.view')
    ├── api.ts          #   DevopsClient — RPC wrapper over the two channels
    ├── locales.ts      #   zh/en dictionaries (DSH LocaleRuntime)
    ├── DevopsSettings.tsx / DevopsDashboard.tsx
    ├── DevopsUI.module.css
    └── ui.tsx          #   Shared primitives (searchable Select/Modal/StatCard/…)

Requirements

  • Node.js ≥ 20 (native fetch, ESM; development builds need ≥ 22)
  • GitLab ≥ 16.0 (MR Approvals API)
  • Kubernetes API ≥ 1.25 (apps/v1)
  • Network access to GitLab and K8s API endpoints

License

MIT