ci-runner:觸發 GitHub Actions 工作流並診斷失敗的 DSH 插件

前言

在開發 DSH 智能體時,與 CI 系統的交互通常涉及手動觸發工作流、查詢狀態和排查日誌。ci-runner 插件將 GitHub Actions(workflow_dispatch、check-run API)和本地命令管道整合到一個統一的接口中,實現了日誌流式傳輸、狀態跟蹤以及利用 DeepSeek 生成故障診斷報告。

是什麼

這是一個由 JohnXu22786 維護的 DSH 插件。它提供了一套工具集,用於觸發 GitHub Actions 工作流或本地測試管道,流式傳輸日誌,並在失敗時將日誌尾部發送給 DeepSeek 以生成 Markdown 報告。

安裝與配置

前置要求

  • Node.js >= 18.17
  • 已安裝 DeepSeek Harness
  • GitHub Token 配置在環境變量 GITHUB_TOKEN 中(需要 actions:write 或 actions:read 權限)

安裝

使用插件包安裝:

dsh plugin --profile demo add ./path/to/ci-runner

安裝後,插件會通過 cordis.patch.yml 插入適配器入口。

配置

插件配置通常在 profile/config.yml 中設置。以下是關鍵配置項:

ci-runner:
  github:
    defaultRepo: owner/repo
    defaultBranch: main
    apiBase: https://api.github.com
    pollIntervalMs: 5000
    pollTimeoutMs: 600000
  diagnosis:
    llm:
      baseUrl: https://api.deepseek.com/v1
      apiKey: sk-...
      model: deepseek-chat
    maxTailChars: 12000

功能與工具

插件提供 5 個核心工具,均通過 ctx.tools 訪問:

  1. ci_trigger:觸發 GitHub workflow_dispatch 或運行本地管道直到完成。
  2. ci_status:查詢運行狀態(queued/in_progress/completed)及結論。
  3. ci_logs:讀取日誌,日誌已掩碼且尾部截斷。
  4. ci_watch:等待運行完成,失敗時包含日誌尾部。
  5. ci_diagnose:端到端診斷。運行/等待後,將失敗日誌尾部發送給 DeepSeek,生成包含失敗階段、錯誤分類、根因、修復步驟和相關文件的 Markdown 報告。

安全與運行時

  • 零運行時依賴:僅依賴 fetch 和 node:child_process。
  • 憑據處理:GitHub Token 僅從環境變量讀取,不持久化,運行時即用即棄。
  • 日誌安全:返回的日誌和報告會對已知密鑰進行掩碼處理。

適用場景

適合需要自動化 CI 反饋、故障自愈或日誌分析的 DSH 智能體開發者。

總結

ci-runner 將 CI 觸發、狀態查詢、日誌查看和智能診斷整合爲標準工具。它不依賴複雜的運行時環境,通過環境變量管理憑據,適合集成到各類自動化流程中。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜