dsh-github-actions

September 12, 2026 · View on GitHub

DeepSeek Harness 插件:离线检查、概览与展开 GitHub Actions 工作流 YAML。

内置一个 YAML 子集解析器与 Actions 规则集,全部逻辑都是纯函数:不调用 gh CLI、不联网、 不读写文件系统、不启动子进程。因此结果完全确定,可以在单元测试中复现。

安装

npx -y @deepseek-ai/dsh plugin --profile web add @qingshanjiluo/dsh-github-actions

仓库内也提供了 cordis.patch.yml 包层片段,可手工插入到 profile 的层栈中。

工具

工具名描述参数
gh_workflow_validate校验工作流 YAML:必填键、job/step 结构、action 引用、触发器与过滤条件、cron、needs 悬空与环、permissions/concurrency${{ matrix.* }} 引用;返回全部阻断错误与不阻断建议yamlText (string, 必填)
gh_workflow_outline输出工作流概览:名称、触发器列表,以及每个 job 的 id、显示名、runs-onneeds、matrix 维度、步骤摘要yamlText (string, 必填)
gh_matrix_expandstrategy.matrix 展开为 GitHub 实际会调度的组合列表,按 GitHub 语义应用 include / exclude 并去重matrixJson (string, 必填)、limit (number, 选填)

gh_matrix_expand 接受 JSON 对象(推荐),也接受 YAML 映射作为回退,并可自动解包 strategy: / matrix: 外层。走 YAML 回退路径时所有值都是文本。

使用示例

gh_workflow_validate
  yamlText: |
    name: CI
    on: [push]
    jobs:
      build:
        runs-on: ${{ matrix.os }}
        steps:
          - uses: actions/checkout@v4

返回 ok: false,并给出 jobs.build: references ${{ matrix.os }} but strategy.matrix declares no "os" dimension(该 job 也没有 strategy.matrix)。

gh_matrix_expand
  matrixJson: {"os":["ubuntu-latest","windows-latest"],"node":[18,20]}

返回 count: 4,组合顺序为 os 最慢、node 最快: {os:ubuntu-latest,node:18}{os:ubuntu-latest,node:20}{os:windows-latest,node:18}{os:windows-latest,node:20}

配置

配置项类型默认值说明
maxCombosnumber256单次矩阵展开允许返回的最大组合数(GitHub 自身的上限是 256)
maxWorkflowLinesnumber4000解析器允许读取的工作流最大行数

解析器范围

支持:块映射与块序列、流式 [a, b]{a: b}| / > 块标量(含 - / + 修饰)、 单双引号标量、行内 # 注释、--- 文档标记、锚点/标签前缀剥离。

不支持(会作为错误报出而不是静默忽略):显式 ? key 复杂键、跨行引号标量、多行纯量续行。 超过 64 层块嵌套或 32 层流嵌套时解析会提前停止,避免异常输入拖垮宿主进程。

开发

npm install --no-audit --no-fund
npx tsc --noEmit
npm run build
npx vitest run
node scripts/load-smoke.mjs

scripts/load-smoke.mjs 会加载构建产物 lib/index.js,断言导出面并实际调用三个工具。

License

MIT