🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

CI 失败看板 ZZZjf13960/dsh-onfail

DeepSeek Harness
ZZZjf1396069 天前有提交已提供中文文档扫描:含敏感能力

轮询 Actions 失败检查,点卡片带日志开修

28.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ZZZjf13960/dsh-onfail
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 69 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 发起网络请求
    dsh/client.js:148
    return fetch(STATE_PATH)
  • 发起网络请求
    dsh/client.js:356
    fetch(CONFIG_PATH)
  • 发起网络请求
    dsh/client.js:387
    fetch(CONFIG_PATH, {
  • 读取本地文件
    dsh/poll.js:67
    const parsed = JSON.parse(readFileSync(path, 'utf8'))
  • 执行外部命令来自配置/变量
    dsh/scope.js:8
    return String(execFileSync(command, args || [], {
  • 读取本地文件
    dsh/shown.js:26
    const parsed = JSON.parse(readFileSync(filePath, "utf8"))
  • 写入本地文件
    dsh/shown.js:35
    mkdirSync(dirname(filePath), { recursive: true })
  • 写入本地文件
    dsh/shown.js:36
    writeFileSync(filePath, JSON.stringify({ keys: Array.from(keys) }, null, 2) + "\n", "utf8")
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 卡片呈现失败项
  • 带日志上下文开修复会话

DSH 插件:轮询 GitHub Actions,把失败的检查以卡片形式呈现,带着日志上下文打开修复会话。

README

由 DeepSeek 最新模型翻译生成
dsh-onfail CI 挂了也别离开 DSH:侧栏一张失败卡,点一下带 log 开修。 DeepSeek Harness 插件:轮询此工作区的 GitHub 仓库 Actions(当前分支,或打开的 PR head),将新的失败检查以侧栏卡片形式呈现(job 名称、SHA、有用的日志摘录),并带着该失败上下文继续当前会话。 已在 dsh 0.1.1-rc.2 上测试(package.json 的 dsh.peer / engines.dsh)。 v0.2 仅支持轮询。不支持 webhook。 安装 需要 DSH web profile。在任意目录下: dsh plugin --profile web add github:ZZZjf13960/dsh-onfail 此包在 main 分支上附带已提交的 JavaScript(dsh/index.js + dsh/client.js),因此 GitHub 说明符无需 prepare 构建或 pnpm allowBuilds 门控即可加载。 然后启动(或重启)web UI: dsh --profile web 该插件通过 cordis.patch.yml 以包名 dsh-onfail 挂载。在 Settings 中,Plugins 应显示一张 Onfail (GitHub Actions) 卡片。
展开完整文档(README 剩余 1 节)
dsh-onfail

CI 挂了也别离开 DSH:侧栏一张失败卡,点一下带 log 开修。

DeepSeek Harness 插件:轮询此工作区的 GitHub 仓库 Actions(当前分支,或打开的 PR head),将新的失败检查以侧栏卡片形式呈现(job 名称、SHA、有用的日志摘录),并带着该失败上下文继续当前会话。

已在 dsh 0.1.1-rc.2 上测试(package.json 的 dsh.peer / engines.dsh)。

v0.2 仅支持轮询。不支持 webhook。

安装

需要 DSH web profile。在任意目录下:

dsh plugin --profile web add github:ZZZjf13960/dsh-onfail

此包在 main 分支上附带已提交的 JavaScript(dsh/index.js + dsh/client.js),因此 GitHub 说明符无需 prepare 构建或 pnpm allowBuilds 门控即可加载。

然后启动(或重启)web UI:

dsh --profile web

该插件通过 cordis.patch.yml 以包名 dsh-onfail 挂载。在 Settings 中,Plugins 应显示一张 Onfail (GitHub Actions) 卡片。侧栏页脚会出现一个 CI 控件;失败的检查也会以覆盖卡片形式呈现。

移除

以下任一形式都会移除 profile 依赖和 bundle 层:

dsh plugin --profile web remove github:ZZZjf13960/dsh-onfail

dsh plugin --profile web remove dsh-onfail

重启 web UI,以便宿主进程卸载路由和浏览器端部分。

配置

| 字段 | 默认值 | 位置 |
默认范围为 auto:当前工作区的 git remote get-url origin(owner/repo)和 git rev-parse --abbrev-ref HEAD(分支)。如果该分支存在打开的 PR(gh pr view 或 REST),插件会跟随 PR head。设置中的手动 repo 仍会覆盖自动检测。

| 字段 | 默认值 | 位置 |
| repo | 从 git origin 自动获取 | 插件设置卡片,或 config.repo(owner/name)。为空表示自动。 |
| token | 空 | 插件设置卡片(不会回显)。优先使用 gh auth login。也可用 DSH_ONFAIL_TOKEN,然后是 GITHUB_TOKEN |
| pollIntervalMs | 60000 | 设置卡片或 loader 配置(约 60 秒) |
| fixture | false | 设置复选框、loader 配置,或 DSH_ONFAIL_FIXTURE=1 |
| logTailChars | 4000 | 获取上限;卡片/提示词存储一段简短有用的摘录 |

Token 解析顺序:插件配置 token → gh auth token / 现有 gh 登录 → DSH_ONFAIL_TOKEN → GITHUB_TOKEN。如果 gh 无法读取 Actions,则回退到环境变量/配置 token 路径(缺少 gh 不应意味着缺少卡片)。两者都缺失时会给出可读的错误;harness 不会崩溃。没有任何硬编码。

经典 repo PAT(或 GitHub App 安装 token)需要该仓库的 Actions 读取权限。细粒度 PAT 需要 Actions: Read。使用 gh auth login 时,无需第二个 PAT。

Loader 覆盖示例($DSH_HOME/profiles/web/cordis.patch.yml):

- id: dsh-onfail
config:
repo: your-org/your-repo # 可选;为空 = 从 git origin 自动获取 pollIntervalMs: 60000 fixture: false

轮询

每隔 pollIntervalMs,宿主端会:

1. 从工作区当前目录检测 owner/repo + 分支(以及打开的 PR head,如果有)
2. GET /repos/{owner}/{repo}/actions/runs?status=completed&branch={branch}
3. 过滤到该分支 / PR head SHA —— 而不是 main 上所有历史红色记录
4. 对于失败的 job,获取日志并存储失败的步骤 + 有用的错误行(已脱敏)
5. 仅当此 job id + SHA 尚未展示过时才发出卡片(持久化在 $DSH_HOME/onfail-shown.json 下)。使用新 job id 的重新运行可能会再次展示。轮询同一个已完成的失败 job 不会重复堆叠。

没有 webhook。浏览器端每隔几秒轮询 GET /dsh-onfail/state 并渲染卡片。

点击以继续当前会话

点击卡片会在当前会话(sessions.list.current / sessions.binding / sessions.active)上调用 session.prompt(..., 'queue')。它不会创建会话,不会打开新的会话 id,也不会抢占焦点。如果没有当前会话,卡片会显示可读的 role=status 错误 —— 那不是成功。Composer 粘贴不是成功。

Fixture 模式

测试和实时 UI 走查可以在没有 GitHub token 的情况下生成卡片:

- 设置,Onfail,启用 Fixture 模式,或
- DSH_ONFAIL_FIXTURE=1,或
- loader config.fixture: true

这会加载 fixtures/failed-run.json(acme/widget,job unit-tests,SHA aaaabbb,一段失败的测试日志尾部)。Fixture 模式将该 payload 视为新的失败,因此卡片仍会出现。

node --test

验收检查

1. 从 GitHub 上的 main 安装。 Manifest 测试断言 dsh.bundle.patch 指向 cordis.patch.yml,该文件插入包 dsh-onfail,外加 exports["./client"] 和 dsh.client。JS 已提交到 main。验证器仍会运行 dsh plugin --profile web add github:ZZZjf13960/dsh-onfail。

2. 失败的 Actions 检查变为侧边栏卡片(job、SHA、日志摘录),针对当前分支 / 打开的 PR,仅新失败。Fixture 和轮询映射器会生成该卡片形状。客户端注册 sidebar.footer.action 和 shell.overlay。验证器仍会在 DSH Web 中确认 CI 页脚 / 覆盖层卡片。

3. 点击卡片会继续当前会话,包含 repo、job、SHA、失败步骤和一段简短有用的日志。点击路径是在当前会话上调用 session.prompt(..., 'queue')。缺少当前会话或提示被拒绝时,卡片上会显示 role=status 错误。Composer 粘贴不是会话。验证器仍会在实时 UI 中点击卡片。

4. 缺少 token:可读错误,harness 不会崩溃或挂起。 没有 token(且没有 gh 登录)时调用 apply() 会设置 error 并仍然注册路由;它从不抛出异常。验证器仍会在 token/repo 为空的情况下打开插件 UI。

5. 移除会删除 profile 条目。 已记录;dsh plugin remove 会根据安装状态协调 bundles。验证器仍会运行 remove 并检查 dsh.profile.bundles。

布局

dsh-onfail/
package.json # dsh.bundle + dsh.client + dsh.peer + exports
.github/workflows/test.yml
cordis.patch.yml # 插入 id/name: dsh-onfail fixtures/failed-run.json dsh/index.js # 宿主 apply dsh/plugin.js # 轮询循环 + /dsh-onfail/* 路由 dsh/client.js # 惰性 CJS 浏览器端 dsh/config.js poll.js cards.js http.js scope.js shown.js log.js test/*.test.js

许可证

MIT
预览分享卡片长什么样 ↓ZZZjf13960/dsh-onfail
分享 · DeepSeek Harness Hub
ZZZjf13960/dsh-onfail

轮询 Actions 失败检查,点卡片带日志开修

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部