dsh-goal-pause-guard

DSH PLUGIN工具与能力

仓库 frederico-kluser/dsh-goal-pause-guard

工具与能力 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 的暂停目标按钮加上确认弹窗,避免误点中断当前轮次与正在运行的子任务。

一句话选型结论

按资料字段整理

dsh-goal-pause-guard 是工具与能力类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类工具与能力 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 1 复刻 0 · 未关闭 issue 0
最近更新 2026-09-18 创建于 2026-09-18
README 6.4 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:frederico-kluser/dsh-goal-pause-guard
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2 等 3 个;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2 等 3 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-goal-pause-guard:为 DeepSeek Harness 的暂停目标操作加上确认弹窗

  • 暂停前弹出确认弹窗
  • 双通道识别暂停按钮
  • 识别失败时放行不拦截
  • 确认时重新定位当前按钮
  • 支持中英葡三语与明暗主题

适用场景

智能体编排

上游标签

ai-agentsconfirmation-dialogcordisdeepseek-harnessdshdsh-plugintypescript

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询
— · 其它检查项
  • L4_0_SANDBOX 沙盒安装判定 方式:沙盒安装执行

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2 等 3 个),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在工具与能力场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-goal-pause-guard当前 L5 · 运行验证通过 低风险 1 0.2.0-rc.2 等 3 个 有
huashu-design 未做沙盒验证 未标注 3.0 万 未标注 有
loopx 未做沙盒验证 未标注 6,233 未标注 无
agy-staff 未做沙盒验证 未标注 870 未标注 有
dsh-startup-screen 未做沙盒验证 未标注 633 未标注 有
minara-skills L4 · 沙盒安装通过 中风险 360 未标注 有

仓库档案

工具与能力
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方frederico-kluser仓库 dsh-goal-pause-guard · 默认分支 main
分类工具与能力agents
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue1 / 0 / 0收录时的数值,非实时
创建 / 更新2026-09-18 · 2026-09-18最后推送 2026-09-18
本站收录2026-09-19首次进入本站目录的时间

README 全文

6.4 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-goal-pause-guard

Plugin para o DeepSeek Harness: modal de confirmação antes de pausar uma atividade rodando.





Pausar uma goal não é um gesto pequeno: ela interrompe a rodada atual e todas
as subtarefas em execução na hora. O plugin pede confirmação antes.


Porquê

No harness, pausar uma goal armada dispara uma cascata (motorizada no
goal-round-driver, goal/changed → agent.cancel, keepInbox):

  1. a rodada em andamento é abortada — o agente para de executar no meio do
    que estava fazendo;
  2. as subtarefas em execução param junto (tools, comandos, subagentes);
  3. a continuação automática fica desarmada — nada de novas rodadas até um
    resume humano.

É exatamente esse efeito que o plugin coloca atrás de um portão: um clique
acidental no botão de pause não pode desligar uma atividade que está rodando.

O que o plugin faz

clique em "Pause goal" (clique humano, trusted)
│
▼
┌──────────────┐   captura no document (capture phase, antes do React)
│ GUARD        │   isPauseButton? ── não ──► o clique passa (fail-open)
└──────┬───────┘
▼ sim
MODAL DE CONFIRMAÇÃO  (pt-BR / en / zh, tema claro-escuro do host)
├── Cancelar / Esc / fundo ──► nada acontece
└── Confirmar ──► re-clique UNTRUSTED no botão de pause ATUAL
│  (passa pelo guard sem re-gate)
▼
GoalBar → goals.pause (Remote RPC)
▼
host: goal paused + rodada abortada + subtasks param
  • Detecção por dois canais — o botão é reconhecido pelo aria-label
    localizado (Pause goal / 暂停目标, os dois dicionários da barra de goal)
    ou pelo path SVG do ícone de pause (IconPauseOutline16), sempre dentro
    de [data-goal-bar] (o marcador que o próprio e2e oficial usa).
  • Fail-open por projeto — se o botão não for identificável, o clique passa e
    o pause se comporta exatamente como sem o plugin. Um portão de confirmação
    nunca pode quebrar a ação que protege.
  • Sem loop, sem referência velha — o confirm re-localiza o botão de pause
    atual antes de re-clicar (um re-render entre abrir e confirmar nunca
    transforma "confirmar" em "clicar outra coisa"); botão desabilitado ou
    removido nesse meio-tempo = nada acontece.
  • Um modal por vez — Esc, fundo e Cancelar fecham; o foco vai ao botão de
    confirmar e volta ao botão de pause no fechar.
  • Determinismo — sem timers, sem rede, sem storage. A metade host é um
    apply vazio (mesmo padrão do @deepseek-ai/dsh-client-ui-goal): nenhum
    estado do harness é tocado.

Instalação

Como bundle do profile web — o dsh.bundle.patch do pacote ativa a camada
sozinho (insert próprio, sem colidir com nenhum outro id):

dsh plugin --profile web add /caminho/para/dsh-goal-pause-guard
dsh web   # reinicie a instância; plugins entram no boot

Desinstalar: remova a linha do bundle do ~/.dsh/profiles/web/package.json
(dsh plugin --profile web remove dsh-goal-pause-guard) e reinicie.

Verificação

Toda a verificação roda isolada — nenhum teste toca uma instância real do
DSH (nem a porta 3080, nem o $DSH_HOME):

pnpm install
pnpm run typecheck   # tsc estrito
pnpm run build       # dist/ (host) + lib/client.js (browser, closure-factory)
pnpm test            # 23 testes: detector + comportamento + e2e do artefato
Camada Prova
Detector (unit, jsdom) os dois canais de identificação; rejeição de todo o resto (resume/edit/clear, botões fora da barra, ícones estrangeiros, prefixos parecidos)
Comportamento (jsdom) clique humano abre o modal e nunca chega ao app; confirmar re-clica UMA vez como untrusted; cancelar/Esc/fundo não pausam; segundo clique engolido; botão removido/desabilitado no confirm não dispara; disposer remove tudo
E2E do artefato o lib/client.js enviado é carregado como o harness carrega (window.__ModuleLoader__.load({id, factory})) e o fluxo inteiro é dirigido sobre ele

O screenshot acima é real: capturado num boot isolado ( $DSH_HOME
temporária + porta própria) com Chromium headless, clicando no botão de pause
de verdade (evento trusted via CDP) — o guard abriu o modal e o cancelamento
não enviou pausa nenhuma.

Estrutura

dsh-goal-pause-guard/
├── package.json             # dsh.bundle.patch + dsh.client (platform web) + exports["./client"]
├── cordis.patch.yml         # camada 1 (bundle): insert próprio, sem !!js, sem config
├── src/index.ts             # host half: apply vazio (entrada do Loader)
├── client/
│   ├── guard-core.ts        # TODA a lógica: detector, textos, modal, install (0 imports)
│   ├── index.ts             # plugin body: inject [] + apply(ctx) via ctx.effect
│   ├── guard.css            # modal com tokens --dsw-* (claro/escuro), classes gpg-
│   └── client.d.ts          # declaração do subpath ./client
├── scripts/build-client.mjs # esbuild → lib/client.js (closure-factory, CSS embutido)
├── test/                    # jsdom + node:test, offline por projeto
└── dist/, lib/              # produtos do build (host half / browser bundle)

Compatibilidade

Verificado contra DSH 0.1.5-alpha.2 (a linha viva instalada, bootada do
source). O detector ancora em dois fatos estáveis da superfície — data-goal-bar
e o aria-label do action.pause do dicionário goal. Se o harness mudar os
dois ao mesmo tempo, o guard fica fail-open (pause sem modal) — nunca quebrado.

Licença

MIT © Frederico Kluser

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-goal-pause-guard 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:frederico-kluser/dsh-goal-pause-guard` 即可。

dsh-goal-pause-guard 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-goal-pause-guard 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-goal-pause-guard 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-goal-pause-guard 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.1.7-rc.2、0.1.6-alpha.2。

dsh-goal-pause-guard 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-goal-pause-guard 有哪些功能?

暂停前弹出确认弹窗、双通道识别暂停按钮、识别失败时放行不拦截、确认时重新定位当前按钮、支持中英葡三语与明暗主题。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

工具与能力
按星标排序,可作替代方案

huashu-design

huashu-design

在 DeepSeek Harness 里说一句话,就能拿回可交付的设计:网页、App 原型、可编辑 PPTX、动画与信息图,自带 84 种风

未标注验证等级 3.0 万 星

loopx

loopx

LoopX 是面向长周期 Agent 的本地优先控制平面,作为 DSH plugin 为 DeepSeek Harness 提供持久目标、证

未标注验证等级 6,233 星

agy-staff

agy-staff

把 Google Antigravity CLI 作为快速 Gemini 员工接入 DSH,提供子代理侧边栏、编排模式与多种角色技能。

未标注验证等级 870 星

dsh-startup-screen

dsh-startup-screen

DeepSeek Harness 的启动界面与启动动画插件。

未标注验证等级 633 星

dsh-blender-plugin

dsh-blender-plugin

让 AI 模型通过直连 TCP 通道实时驱动 Blender 的 DSH plugin:15 个工具覆盖视口取帧、任意角度渲染、内循环搜索、

未标注验证等级 211 星

frederico-kluser 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。