dsh-ci-doctor:監視 GitHub Actions 失敗並生成結構化診斷

前言

對使用 DeepSeek Harness(DSH)的開發者來說,插件可以把常見工作流接進智能體對話裏。一個常見痛點是 GitHub Actions 失敗後,需要打開很長的原始日誌,再人工判斷哪一步失敗、是否之前也失敗過、哪些文件可能相關。

dsh-ci-doctor 是一個 DSH 插件,用來監視 GitHub Actions 的新失敗,並把原始日誌診斷成結構化發現。

這是什麼

這是一個包名爲 dsh-ci-doctor 的 DeepSeek Harness 插件。

它的核心定位是:

  • 監視 GitHub Actions 的新失敗運行
  • 將原始日誌整理成結構化發現
  • 通過聊天中的自然語言指令啓動監視或診斷

資料中給出的倉庫地址是:

https://github.com/jkrandom-sudo/dsh-ci-doctor

許可證爲 MIT。

核心能力

dsh-ci-doctor 主要提供兩類能力:監視和診斷。

  1. 啓動 ci_watch 後臺任務,輪詢新的失敗運行。
  2. 運行 ci_diagnose,對最新失敗運行或指定 runId 生成 Markdown 診斷卡。
  3. 生成歸一化錯誤簽名、失敗類別、可疑文件和修剪後的日誌摘錄。
  4. 通過失敗簽名賬本記錄歷史簽名,並標記重複失敗。
  5. 僅讀取 GitHub 狀態,不推送、合併、取消、重跑或寫入倉庫。
  6. 依賴已認證的 GitHub CLI 會話。

其中,ci_watch 首次輪詢會設置基線,歷史紅色運行不會觸發報警。日誌摘錄按預算裁剪,不發明內容。

安裝與啓用

先確認本機 GitHub CLI 已登錄,插件會複用這個會話:

gh auth login

Node 引擎要求爲:

^22.19.0 || >=24.0.0

安裝插件:

dsh plugin --profile web add dsh-ci-doctor

由於插件會運行在 DSH 插件環境中,並依賴已認證的 gh 會話讀取 GitHub 狀態,安裝前建議檢查源碼和 MIT 許可證。

典型用法

下面介紹三類常見指令。

啓動 CI 監視

在聊天中說:

Watch CI on this repo and tell me when something fails

這會啓動 ci_watch 後臺任務。

ci_watch 參數示例:

{
  "repo": "owner/name",
  "branch": "main",
  "intervalSeconds": 30,
  "timeoutMinutes": 60
}

這個任務會輪詢新的失敗運行。首次輪詢設置基線,因此歷史紅色運行不會觸發報警。遇到瞬時錯誤時會指數退避;連續 5 次失敗後放棄;認證錯誤會立即失敗。

診斷最新失敗運行

在聊天中說:

Why did the nightly build fail?

這會對最新失敗運行運行 ci_diagnose,並返回診斷卡。

診斷指定 run

在聊天中說:

Diagnose run 31782742089 on cli/cli

這會對指定 run 進行定向診斷。

ci_diagnose 參數示例:

{
  "repo": "owner/name",
  "runId": 31782742089
}

只讀邊界與簽名賬本

dsh-ci-doctor 的只讀契約比較明確:

  • 不 push
  • 不 merge
  • 不 cancel
  • 不 rerun
  • 不寫入倉庫

結果會攜帶 repositoryWrites: false 標記。

簽名賬本用於記錄歷史簽名,並標記重複失敗。當 profile 提供 storage domain 時,賬本持久化爲 ci_doctor 存儲單元;否則僅在內存中。

適用場景與注意

這個插件適合需要在 DSH 對話裏處理 GitHub Actions 失敗日誌的場景。例如,你希望智能體先盯住新失敗,再對某個 run 生成一份結構化診斷結果。

使用注意:

  • 插件依賴已認證的 GitHub CLI 會話。
  • 插件只讀取 GitHub 狀態,不執行寫操作。
  • 簽名賬本是否持久化取決於 profile 是否提供 storage domain。
  • 安裝前應檢查源碼和 MIT 許可證。
  • DSH 插件生態是社區目錄形式,不是官方應用商店。

鏈接

已覈實資料未提供目錄頁 URL。倉庫地址爲:

https://github.com/jkrandom-sudo/dsh-ci-doctor
羽毛球分组比赛记分
小程序二维码

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

小夜