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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye