dsh-plugin-checker
其他 活跃维护

dsh-plugin-checker

bowenliang123/dsh-plugin-checker

GitHub Actions 工作流的轻量校验工具,无需手动部署环境即可自动检测 dsh 插件的配置语法、依赖兼容性与接口规范符合性,可集成到项目 CI 流程即时反馈校验结果,降低插件上线前的潜在错误风险。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
Other
主要语言
Apache-2.0
开源协议
28 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:bowenliang123/dsh-plugin-checker
git clone https://github.com/bowenliang123/dsh-plugin-checker.git
git clone git@github.com:bowenliang123/dsh-plugin-checker.git
README.md main

DeepSeek Harness Plugin Checker - GitHub Action

A GitHub Action that checks the correctness of a DeepSeek Harness (dsh) plugin.

It checks the plugin in the following order, cheapest first:

  1. Check the manifest — package.json exists, is valid JSON, declares a name, declares dsh.bundle.patch, and the referenced patch file exists. A package without dsh.bundle is not a dsh plugin.
  2. Install with dsh — runs dsh plugin --profile web add; fails if dsh cannot install it (e.g. failed pnpm install).
  3. Verify the layer applies — runs dsh --profile web --dump-config and fails if the plugin does not appear as a bundle layer (# == <name>) in the composed config.

Usage

Add the action to your plugin repository's workflow:

name: ci

on:
  push:
    branches: [main]
  pull_request:

jobs:
  check-plugin:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - name: Check the DSH plugin
        uses: bowenliang123/dsh-plugin-checker@v1

This checks the repository root. To check a plugin that lives in a subdirectory, pass rootPath:

      - name: Check the DSH plugin
        uses: bowenliang123/dsh-plugin-checker@v1
        with:
          rootPath: plugins/my-plugin

Inputs

Input Description Required Default
rootPath Path to the plugin root directory, relative to the repository root. No .
profile dsh profile to install the plugin into. No web
dshVersion Version of the @deepseek-ai/dsh npm package to install. Use latest for newest. No latest
pnpmVersion Version of pnpm to install (dsh plugin management runs pnpm internally). No latest
nodeVersion Node.js version to run the dsh CLI with. No 24

How it works

  1. Sets up Node.js and installs pnpm and the @deepseek-ai/dsh CLI (npm install @deepseek-ai/dsh) from npm.
  2. Checks the plugin's package.json manifest statically (valid JSON, name, dsh.bundle.patch declared, patch file exists).
  3. Runs dsh plugin --profile <profile> add <rootPath> to install the plugin into a fresh dsh profile under the runner home.
  4. Runs dsh --profile <profile> --dump-config and verifies the plugin shows up as a bundle layer (# == <name>), confirming the patch actually loads.

A plugin package.json looks like:

{
  "name": "my-dsh-plugin",
  "version": "0.1.0",
  "type": "module",
  "main": "index.js",
  "dsh": {
    "bundle": {
      "patch": "./cordis.patch.yml"
    }
  }
}

Examples

  • examples/hello-plugin — a minimal valid plugin that passes the check.
  • examples/broken-plugin — a plugin with an invalid package.json that must fail the check.

License

Apache License 2.0