轮询 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 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 卡片呈现失败项
- 带日志上下文开修复会话
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ZZZjf13960/dsh-onfail
轮询 Actions 失败检查,点卡片带日志开修
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,399未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,384已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13950 个插件含 PR 收录与…
★ 360已汉化DSH
71.9
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。