dsh-doublecheck 0.9.12 → 0.9.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README-es.md +50 -46
- package/README-hi.md +50 -46
- package/README-pt.md +50 -46
- package/README-zh.md +50 -46
- package/README.md +33 -21
- package/lib/events.d.ts +58 -0
- package/lib/events.js +38 -1
- package/lib/guard/command.js +2 -1
- package/lib/guard/gate.d.ts +12 -1
- package/lib/guard/gate.js +12 -1
- package/lib/guard/index.d.ts +88 -13
- package/lib/guard/index.js +86 -48
- package/package.json +19 -16
package/README-pt.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
12
12
|
[](https://github.com/topics/dsh-plugin)
|
|
13
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
14
|
+
[](https://dsh.market/)
|
|
14
15
|
[](#)
|
|
15
16
|
[](https://github.com/PerryLink/dsh-doublecheck/actions)
|
|
16
17
|
[](https://github.com/PerryLink/dsh-doublecheck/releases)
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
|
|
28
29
|
| Superfície | Status |
|
|
29
30
|
|---|---|
|
|
30
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
31
|
+
| Harness | DeepSeek Harness `dsh-v0.1.7-alpha.1`. Verificado em 2026-09-22 (typecheck duplo + suíte completa verde); o intervalo de peers admite `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2`, `0.1.6-alpha.2` e `0.1.7-alpha.1`, então nenhuma linha suportada é perdida. |
|
|
31
32
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
32
33
|
| Plataformas | Todas (host puro; sem código nativo, sem requisições de rede diretas próprias) |
|
|
33
34
|
| Modelo | Qualquer (o guard nunca chama um modelo; as fases de crítico e revisor rodam como subagentes do harness) |
|
|
@@ -37,7 +38,7 @@
|
|
|
37
38
|
`dsh-doublecheck` instala duas linhas de plugin que leem e aplicam a partir do mesmo registro de sessão durável:
|
|
38
39
|
|
|
39
40
|
1. **`doublecheck-grill`** — o forno de requisitos: a skill empacotada `grill-requirements` mais as ferramentas voltadas ao modelo `doublecheck_skills`, `doublecheck_spec` e `doublecheck_report`, e o fluxo de verificação por dimensão.
|
|
40
|
-
2. **`doublecheck-guard`** — o guard de disciplina: o portão grill, os portões de evidência vermelho/verde, a revisão adversarial, os comandos `/doublecheck` e `/gate`, o
|
|
41
|
+
2. **`doublecheck-guard`** — o guard de disciplina: o portão grill, os portões de evidência vermelho/verde, a revisão adversarial, os comandos `/doublecheck` e `/gate`, o cartão de configurações ao vivo `gate` e o portão de entrega de quatro fases.
|
|
41
42
|
|
|
42
43
|
Juntos impõem o **ciclo de disciplina** — *grill → design → red → green → review → verify*:
|
|
43
44
|
|
|
@@ -127,6 +128,8 @@ Todos os ajustes são campos `Config` do Schemastery (alteráveis a partir do co
|
|
|
127
128
|
| `gate.review.engine` | `'auto'` | `auto` = registros de veredicto do dsh-auto-review quando presentes, senão o revisor local; `local` = sempre local. |
|
|
128
129
|
| `gate.review.provider` | `'fork'` | Provedor do revisor local de revisão (seu `model`/`tools`/`timeoutMs`/`maxFindings` coincidem com `gate.consistency.*`). |
|
|
129
130
|
|
|
131
|
+
Cada chave `gate.*` acima faz parte de um único **campo ao vivo**: o guard marca todo o bloco `gate` como `.volatile()`, então ele é o cartão de configurações editável da linha (o namespace do formulário é o id de entrada de perfil da linha). As demais chaves são configuração de composição comum do patch de perfil. O bloco é lido uma vez ao carregar, então uma edição passa a valer no próximo carregamento — `gate.enabled` decide se o aviso vermelho do limite de turno é instalado. Se o schemastery do host for anterior a `.volatile()`, a linha monta mesmo assim: não há cartão e o bloco vem do patch de perfil.
|
|
132
|
+
|
|
130
133
|
A má configuração falha em voz alta ao carregar: regex inválidas, listas de nomes vazias ou duplicadas, limites fora de faixa e ids de lista duplicados lançam erro em vez de não fazer nada em silêncio. `strict.patch.yml` é a camada de todos os portões em bloqueio que redeclara a linha guard com `intensity: block`, todos os módulos ativos e o requisito de cobertura habilitado.
|
|
131
134
|
|
|
132
135
|
## Ferramentas e superfícies
|
|
@@ -139,7 +142,7 @@ A má configuração falha em voz alta ao carregar: regex inválidas, listas de
|
|
|
139
142
|
| `/doublecheck status\|report\|on\|off` | comando | Interruptor, módulos, intensidade, fatos de etapa, relatório dobrado e a sobrescrita durável on/off. |
|
|
140
143
|
| `/gate status\|run\|config` | comando | Progresso da lista em tempo real, o relatório entregável/retrabalho assentado e a configuração efetiva. |
|
|
141
144
|
| `grill-requirements`, `red-green-tdd`, `delivery-review`, `delivery-proof` | skill | Skills de disciplina empacotadas que cobrem as seis etapas do ciclo. |
|
|
142
|
-
| `
|
|
145
|
+
| `gate` | campo de configuração ao vivo | A lista plugável é o único campo `.volatile()` da linha do guard: é editada no cartão de configurações da linha (namespace = o id de entrada de perfil da linha) e lida uma vez ao carregar. |
|
|
143
146
|
| `strict.patch.yml` | camada de sobreposição | Cada portão ativo com intensidade `block` mais o requisito de cobertura, em uma camada de patch. |
|
|
144
147
|
| `dsh-doublecheck/invariant` | linha acompanhante | Reporta contradições de caminho de escrita próprias do pacote por meio do registro `invariants` do host. |
|
|
145
148
|
|
|
@@ -210,7 +213,7 @@ O CLI apenas serializa o `GateState` já assentado — nunca reexecuta a porta d
|
|
|
210
213
|
|
|
211
214
|
## Permissões e dados
|
|
212
215
|
|
|
213
|
-
- **Lê**: o registro de sessão (`tool/call` / `tool/result` / `tool/ptc-dispatch`, fontes `user/message` injetadas e os registros de veredicto alheios `autoReview/*`) somente em processo; o estado opcional do serviço de modo plano. Antes da renomeação da V3, o host registra os subenvios PTC com o rótulo predecessor `tool/code-dispatch`; os dois rótulos são dobrados de forma idêntica.
|
|
216
|
+
- **Lê**: o registro de sessão (`tool/call` / `tool/result` / `tool/ptc-dispatch`, fontes `user/message` injetadas e os registros de veredicto alheios `autoReview/*`) somente em processo; o estado opcional do serviço de modo plano. Antes da renomeação da V3, o host registra os subenvios PTC com o rótulo predecessor `tool/code-dispatch`; os dois rótulos são dobrados de forma idêntica. Os avisos injetados carregam o kind de fonte de mensagem próprio do pacote, `dsh-doublecheck`; registros anteriores a esse kind chegam como `plugin:dsh-doublecheck` (a reescrita que a migração V3→V4 do host aplica a um invólucro catch-all publicado) ou como o invólucro `plugin` publicado, e as três formas são dobradas igualmente.
|
|
214
217
|
- **Escreve**: `doublecheck-spec.md`, `doublecheck-report.md` e `gate-report.md` no workspace da sessão (caminhos configuráveis) por meio da interface `ctx.fs`; os eventos de sessão duráveis `doublecheck/state` e `doublecheck/gate`.
|
|
215
218
|
- **Chamadas a modelo**: as fases de consistência e revisão local do portão (um subagente cada por `/gate run`), a revisão adversarial opcional e o fluxo de verificação de `doublecheck_report` iniciam execuções de subagente; nada mais chama um modelo ou a rede.
|
|
216
219
|
- **Nunca toca**: credenciais, variáveis de ambiente ou qualquer arquivo fora do workspace da sessão. O manifesto do workshop declara apenas `filesystem:read` e `filesystem:write`. Os relatórios do portão carregam apenas contagens, ids e veredictos; segredos reconhecidos nos textos do revisor são redigidos antes de armazenar ou exibir.
|
|
@@ -227,10 +230,11 @@ O CLI apenas serializa o `GateState` já assentado — nunca reexecuta a porta d
|
|
|
227
230
|
|
|
228
231
|
- **Escritas duráveis.** `/doublecheck on\|off` → `doublecheck/state` e `/gate run` → `doublecheck/gate` precisam da superfície de append `ignorable` do host (pós-rc.6 até `0.1.1-rc.2`). Em hosts sem essa superfície (rc.6/rc.8 e `0.1.2-alpha.1`, que removeu o envelope — `0.1.2-rc.1` restaura o campo apenas para compatibilidade de leitura de logs armazenados e ainda não consegue estampá-lo), as escritas são omitidas e o interruptor permanece em processo.
|
|
229
232
|
0.1.2-rc.1 (adaptado em 2026-09-02): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda.
|
|
230
|
-
0.1.5-alpha.1 (adaptado em 2026-09-09): o formato de sessão V3 renomeia o evento durável de subenvio `tool/code-dispatch` para `tool/ptc-dispatch` (carga útil inalterada; os dois rótulos são dobrados de forma idêntica). O Session.append continua sem canal `ignorable`, então as escritas duráveis são omitidas e o interruptor permanece em processo - comportamento inalterado. O namespace de configurações `doublecheck-gate`
|
|
233
|
+
0.1.5-alpha.1 (adaptado em 2026-09-09): o formato de sessão V3 renomeia o evento durável de subenvio `tool/code-dispatch` para `tool/ptc-dispatch` (carga útil inalterada; os dois rótulos são dobrados de forma idêntica). O Session.append continua sem canal `ignorable`, então as escritas duráveis são omitidas e o interruptor permanece em processo - comportamento inalterado. (O namespace de configurações `doublecheck-gate` que essa entrada introduziu foi removido em 0.1.7-alpha.1, quando o host apagou o registro de namespaces.)
|
|
231
234
|
0.1.5-rc.1 (adaptado em 2026-09-10): os pinos de dependências passam para a linha publicada 0.1.5-rc.1; nenhuma mudança de interface afeta o comportamento deste plugin.
|
|
232
235
|
0.1.5-rc.2 (adaptado em 2026-09-11): os pinos de dependências passam para a linha publicada 0.1.5-rc.2; nenhuma mudança de interface afeta o comportamento deste plugin.
|
|
233
|
-
-
|
|
236
|
+
0.1.7-alpha.1 (adaptado em 2026-09-22): o host removeu o kind de fonte de mensagem catch-all compartilhado `plugin` (os avisos agora carregam o kind próprio `dsh-doublecheck`, e a dobra de `remindOnce` continua lendo as duas formas anteriores à atualização que um registro durável pode conter) e substituiu o registro de namespaces de configurações por `SettingsForms` (o namespace `doublecheck-gate` desaparece; a lista do portão passa a ser o único campo `.volatile()` da linha do guard, ainda lido uma vez ao carregar). Os pisos de peers de `@deepseek-ai/cordis` e `@deepseek-ai/schemastery` passam para `^4.0.3` / `^3.18.3` nas dependências de desenvolvimento; os intervalos de peers continuam `^4.0.2` / `^3.18.2` e a capacidade de campos ao vivo é detectada ao carregar, então as linhas de host anteriores ainda montam a linha (sem cartão de configurações). Sem mudança de comportamento além do local de armazenamento das configurações.
|
|
237
|
+
- **Interfaces opcionais.** O cartão de configurações da linha do guard aparece quando o serviço de configurações está montado; o cartão é a Config desta própria linha (namespace = seu id de entrada de perfil), e o bloco `gate` é lido uma vez ao carregar, então seus valores valem para o painel `/gate` e o aviso vermelho no próximo carregamento. A capacidade de campos ao vivo é detectada ao carregar: se o schemastery do host for anterior a `.volatile()`, a linha monta mesmo assim — sem cartão, com o bloco `gate` vindo do patch de perfil. A linha de modo plano de `/gate status` lê o `ctx.planMode` opcional (mostra `unknown` sem ele); a revisão adversarial precisa de `ctx.subagents`; a verificação precisa de `workflowEngine`.
|
|
234
238
|
- **Degradação local.** `gate.review.engine: auto` degrada para o revisor local quando o dsh-auto-review está ausente ou não tem registros de veredicto nesta sessão — o relatório nomeia a razão em vez de inventar um veredicto.
|
|
235
239
|
- **A evidência dsh-eval é baseada em arquivos.** O motor de avaliação do dsh-auto-review (`dsh-eval`) grava seus resultados de regressão de prompt / estresse / equidade em um arquivo de relatório do espaço de trabalho, não no registro de sessão. `gate.tests.evalReports.enabled` dobra esse arquivo (desativado por padrão; pula quando ausente) e as contagens dobradas viajam no registro durável `doublecheck/gate` para que uma execução assentada ainda seja reproduzível.
|
|
236
240
|
|
|
@@ -258,56 +262,56 @@ pnpm run pack:check # build + pack the tarball
|
|
|
258
262
|
|
|
259
263
|
## PerryLink DSH Plugin Family
|
|
260
264
|
|
|
261
|
-
|
|
265
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
262
266
|
|
|
263
267
|
| Plugin | One-liner |
|
|
264
268
|
|---|---|
|
|
265
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
266
|
-
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Agentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção | |
|
|
267
|
-
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Governança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel. | |
|
|
268
|
-
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Equivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único | |
|
|
269
|
-
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH | |
|
|
270
|
-
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Controle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro. | |
|
|
271
|
-
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Histórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R | |
|
|
272
|
-
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Verificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui) | |
|
|
273
|
-
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Defesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness. | |
|
|
274
|
-
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Roteamento unificado de geração de imagens estáticas para DeepSeek Harness. | |
|
|
275
|
-
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Diagnóstico de desempenho só de leitura para DeepSeek Harness. | |
|
|
276
|
-
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Relatórios de pesquisa deterministas para fundos mútuos públicos chineses | |
|
|
277
|
-
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | Integração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação | |
|
|
278
|
-
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Orquestração de pesquisa setorial que sela as suas entregas através do `ctx.researchReport.assemble` deste plugin | |
|
|
279
|
-
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Base de conhecimento documental local para DeepSeek Harness. | |
|
|
280
|
-
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Integração de modelos locais (Ollama) para DeepSeek Harness. | |
|
|
281
|
-
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | Diagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem | |
|
|
282
|
-
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | Middleware de mascaramento de PII: anonimiza no limite do modelo, restaura na camada de exibição | |
|
|
283
|
-
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Painel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros | |
|
|
284
|
-
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Memória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória | |
|
|
285
|
-
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | Exportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness. | |
|
|
286
|
-
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Troca de estilo em tempo de execução equivalente ao outputStyles do Claude Code | |
|
|
287
|
-
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Ponte multicanal de aprovação/perguntas: WeChat/Telegram/Feishu, console de sessão |
|
|
288
|
-
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
289
|
-
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
|
|
290
|
-
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
|
|
291
|
-
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
292
|
-
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo | |
|
|
293
|
-
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
294
|
-
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fixe sessões na barra lateral web com ordenação durável | |
|
|
295
|
-
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Sincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões. | |
|
|
296
|
-
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Pacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos | |
|
|
297
|
-
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Loop de sessão com voz para DeepSeek Harness: fale e ouça a resposta. | |
|
|
298
|
-
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
299
|
-
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
|
|
300
|
-
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
|
|
301
|
-
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
|
|
269
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
302
270
|
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
271
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
272
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
303
273
|
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
274
|
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
-
| **[dsh-
|
|
275
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
276
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
277
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
278
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
279
|
+
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
280
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
281
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
282
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
283
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
284
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
285
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
286
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
287
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
288
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
289
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
290
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
291
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
|
|
292
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
|
|
293
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
294
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
295
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
296
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
306
297
|
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
298
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
299
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
307
300
|
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
-
| **[dsh-plugin-
|
|
301
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
309
302
|
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
303
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
304
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
305
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
306
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
307
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
308
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
309
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
310
310
|
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
311
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
312
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
313
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
314
|
+
|
|
311
315
|
|
|
312
316
|
### Instalar a partir do mercado do DSH Desktop
|
|
313
317
|
|
package/README-zh.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
12
12
|
[](https://github.com/topics/dsh-plugin)
|
|
13
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
14
|
+
[](https://dsh.market/)
|
|
14
15
|
[](#)
|
|
15
16
|
[](https://github.com/PerryLink/dsh-doublecheck/actions)
|
|
16
17
|
[](https://github.com/PerryLink/dsh-doublecheck/releases)
|
|
@@ -27,7 +28,7 @@
|
|
|
27
28
|
|
|
28
29
|
| 方面 | 状态 |
|
|
29
30
|
|---|---|
|
|
30
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
31
|
+
| Harness | DeepSeek Harness `dsh-v0.1.7-alpha.1`。已于 2026-09-22 核验(双 typecheck 尺子 + 全量测试绿);peer 区间接纳 `0.1.2-rc.1`、`0.1.5-alpha.1`、`0.1.5-rc.2`、`0.1.6-alpha.2` 与 `0.1.7-alpha.1`,不丢任何已支持宿主线。 |
|
|
31
32
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
32
33
|
| 平台 | 全部(纯宿主;无原生代码,自身无直接网络请求) |
|
|
33
34
|
| 模型 | 任意(守卫本身从不调用模型;评审与批评阶段作为宿主 subagent 运行) |
|
|
@@ -37,7 +38,7 @@
|
|
|
37
38
|
`dsh-doublecheck` 安装两个插件行,它们读取并执行同一份持久会话日志:
|
|
38
39
|
|
|
39
40
|
1. **`doublecheck-grill`** —— 需求熔炉:内置的 `grill-requirements` 技能,加上面向模型的 `doublecheck_skills`、`doublecheck_spec`、`doublecheck_report` 工具,以及按维度执行的验证工作流。
|
|
40
|
-
2. **`doublecheck-guard`** —— 纪律守卫:grill 门禁、红/绿证据门禁、对抗式评审、`/doublecheck` 与 `/gate`
|
|
41
|
+
2. **`doublecheck-guard`** —— 纪律守卫:grill 门禁、红/绿证据门禁、对抗式评审、`/doublecheck` 与 `/gate` 命令、实时的 `gate` 设置卡片,以及四阶段交付门禁。
|
|
41
42
|
|
|
42
43
|
两者共同执行**纪律闭环** —— *grill → design → red → green → review → verify*:
|
|
43
44
|
|
|
@@ -127,6 +128,8 @@ dsh --profile web --dump-config | grep -E -A3 'id: doublecheck-(grill|guard)'
|
|
|
127
128
|
| `gate.review.engine` | `'auto'` | `auto` = 存在时使用 dsh-auto-review 的裁决记录,否则使用本地评审者;`local` = 始终使用本地评审者。 |
|
|
128
129
|
| `gate.review.provider` | `'fork'` | 本地评审评审者的提供者(其 `model`/`tools`/`timeoutMs`/`maxFindings` 与 `gate.consistency.*` 相同)。 |
|
|
129
130
|
|
|
131
|
+
上表中每个 `gate.*` 键都属于同一个**活动字段**:守卫行把整个 `gate` 块标记为 `.volatile()`,因此它就是该行的可编辑设置卡片(表单命名空间即该行的 profile 条目 id)。其余键是来自 profile patch 的普通 composition 配置。该块在加载时读取一次,所以编辑在下次加载生效——`gate.enabled` 决定回合边界的红灯提示是否安装。若宿主的 schemastery 早于 `.volatile()`,本行照旧挂载:没有卡片,该块仍取自 profile patch。
|
|
132
|
+
|
|
130
133
|
配置错误会在加载时大声失败:无效的正则、空或重复的名称列表、越界阈值、重复的清单 id 都会抛错,而不是悄无声息地什么都不做。`strict.patch.yml` 是全门禁阻断覆盖层,以 `intensity: block` 重新声明守卫行,开启所有模块并要求覆盖率。
|
|
131
134
|
|
|
132
135
|
## 工具与界面
|
|
@@ -139,7 +142,7 @@ dsh --profile web --dump-config | grep -E -A3 'id: doublecheck-(grill|guard)'
|
|
|
139
142
|
| `/doublecheck status\|report\|on\|off` | 命令 | 开关、模块、强度、阶段事实、折叠报告,以及持久的开/关覆盖。 |
|
|
140
143
|
| `/gate status\|run\|config` | 命令 | 实时清单进度、已确定的可交付/返工报告,以及生效配置。 |
|
|
141
144
|
| `grill-requirements`、`red-green-tdd`、`delivery-review`、`delivery-proof` | 技能 | 覆盖全部六个闭环阶段的内置纪律技能。 |
|
|
142
|
-
| `
|
|
145
|
+
| `gate` | 活动配置字段 | 可插拔清单是守卫行唯一的 `.volatile()` 字段:从该行的设置卡片编辑(命名空间 = 该行的 profile 条目 id),在加载时读取一次。 |
|
|
143
146
|
| `strict.patch.yml` | 覆盖层 | 一个补丁层内以 `block` 强度开启每个门禁并启用覆盖率要求。 |
|
|
144
147
|
| `dsh-doublecheck/invariant` | 伴生行 | 通过宿主 `invariants` 注册表报告包自有写路径矛盾。 |
|
|
145
148
|
|
|
@@ -210,7 +213,7 @@ CLI 只序列化已定的 `GateState` —— 它从不重新运行四阶段门
|
|
|
210
213
|
|
|
211
214
|
## 权限与数据
|
|
212
215
|
|
|
213
|
-
- **读取**:仅进程内读取会话日志(`tool/call` / `tool/result` / `tool/ptc-dispatch`、注入的 `user/message` 来源,以及外部的 `autoReview/*` 裁决记录);可选的计划模式服务状态。V3 改名前的宿主用旧标签 `tool/code-dispatch` 记录 PTC
|
|
216
|
+
- **读取**:仅进程内读取会话日志(`tool/call` / `tool/result` / `tool/ptc-dispatch`、注入的 `user/message` 来源,以及外部的 `autoReview/*` 裁决记录);可选的计划模式服务状态。V3 改名前的宿主用旧标签 `tool/code-dispatch` 记录 PTC 子调用;两个标签折叠结果完全一致。注入的提示携带本包自有的 `dsh-doublecheck` 消息来源 kind;该 kind 出现之前记录的日志会以 `plugin:dsh-doublecheck`(宿主 V3→V4 迁移对已发布的 catch-all 包装所做的改写)或已发布的 `plugin` 包装抵达,三种形态折叠结果一致。
|
|
214
217
|
- **写入**:会话工作区中的 `doublecheck-spec.md`、`doublecheck-report.md` 和 `gate-report.md`(路径可配置),通过 `ctx.fs` 接口;持久的 `doublecheck/state` 和 `doublecheck/gate` 会话事件。
|
|
215
218
|
- **模型调用**:门禁的一致性阶段和本地评审阶段(每次 `/gate run` 各一个 subagent)、可选的对抗式评审,以及 `doublecheck_report` 验证工作流会启动 subagent 运行;除此之外不调用模型或网络。
|
|
216
219
|
- **绝不触碰**:凭据、环境变量,或会话工作区之外的任何文件。workshop 清单只声明 `filesystem:read` 和 `filesystem:write`。门禁报告只携带计数、id 和裁决;评审文本中被识别的机密在存储或显示之前会被脱敏。
|
|
@@ -227,10 +230,11 @@ CLI 只序列化已定的 `GateState` —— 它从不重新运行四阶段门
|
|
|
227
230
|
|
|
228
231
|
- **持久写入。** `/doublecheck on\|off` → `doublecheck/state` 与 `/gate run` → `doublecheck/gate` 需要宿主的 `ignorable` 追加接口(rc.6 之后至 `0.1.1-rc.2`)。在无此接口的宿主上(rc.6/rc.8,以及移除该信封的 `0.1.2-alpha.1`——`0.1.2-rc.1` 仅恢复存量日志读取兼容字段、仍无法盖章),写入被跳过、开关保持进程内状态。
|
|
229
232
|
0.1.2-rc.1(2026-09-02 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。
|
|
230
|
-
0.1.5-alpha.1(2026-09-09 已适配):会话格式 V3 把持久子调用事件 `tool/code-dispatch` 改名为 `tool/ptc-dispatch`(载荷不变;两个标签折叠结果一致)。Session.append 仍无 `ignorable`
|
|
233
|
+
0.1.5-alpha.1(2026-09-09 已适配):会话格式 V3 把持久子调用事件 `tool/code-dispatch` 改名为 `tool/ptc-dispatch`(载荷不变;两个标签折叠结果一致)。Session.append 仍无 `ignorable` 写入通道,写入继续跳过、开关保持进程内——行为不变。(该条引入的 `doublecheck-gate` 设置命名空间已在 0.1.7-alpha.1 随宿主删除命名空间注册表一并移除。)
|
|
231
234
|
0.1.5-rc.1(2026-09-10 已适配):依赖钉号移至已发布的 0.1.5-rc.1 线;无接口变更影响本插件行为。
|
|
232
235
|
0.1.5-rc.2(2026-09-11 已适配):依赖钉号移至已发布的 0.1.5-rc.2 线;无接口变更影响本插件行为。
|
|
233
|
-
-
|
|
236
|
+
0.1.7-alpha.1(2026-09-22 已适配):宿主删除了共享的 catch-all `plugin` 消息来源 kind(提示改携本包自有的 `dsh-doublecheck` kind,`remindOnce` 折叠仍能读取持久日志可能持有的两种升级前形态),并用 `SettingsForms` 取代了设置命名空间注册表(`doublecheck-gate` 命名空间消失;门禁清单改为守卫行唯一的 `.volatile()` 字段,仍在加载时读取一次)。`@deepseek-ai/cordis` 与 `@deepseek-ai/schemastery` 的 dev/test 钉号移至 `^4.0.3` / `^3.18.3`,即 `Volatile` 与 `.volatile()` 首次出现的版本;peer 区间仍为 `^4.0.2` / `^3.18.2`,且活动字段能力在加载时探测,因此更早的宿主线仍能挂载本行(只是没有设置卡片)。除设置存储位置外无行为变更。
|
|
237
|
+
- **可选接口。** 挂载设置服务时会出现守卫行自己的设置卡片;该卡片就是本行自己的 Config(命名空间 = 其 profile 条目 id),`gate` 块在加载时读取一次,因此其取值在下一次加载时作用于 `/gate` 面板与红灯提示。活动字段能力在加载时探测:若宿主的 schemastery 早于 `.volatile()`,本行照旧挂载——没有卡片,`gate` 块仍取自 profile patch。`/gate status` 的计划模式行读取可选的 `ctx.planMode`(没有则显示 `unknown`);对抗式评审需要 `ctx.subagents`;验证需要 `workflowEngine`。
|
|
234
238
|
- **本地降级。** 当 dsh-auto-review 缺失或本会话没有裁决记录时,`gate.review.engine: auto` 会降级到本地评审者——报告会写明原因,而不是捏造裁决。
|
|
235
239
|
- **dsh-eval 证据基于文件。** dsh-auto-review 评测引擎(`dsh-eval`)把其 prompt 回归 / 压测 / 公平性结果写入工作区报告文件,而非会话日志。`gate.tests.evalReports.enabled` 折叠该文件(默认关闭;缺失时跳过),折叠出的计数随持久 `doublecheck/gate` 记录保存,使已定的运行仍可重放。
|
|
236
240
|
|
|
@@ -258,56 +262,56 @@ pnpm run pack:check # build + pack the tarball
|
|
|
258
262
|
|
|
259
263
|
## PerryLink DSH Plugin Family
|
|
260
264
|
|
|
261
|
-
|
|
265
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
262
266
|
|
|
263
267
|
| Plugin | One-liner |
|
|
264
268
|
|---|---|
|
|
265
|
-
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |
|
|
266
|
-
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 带 Web UI 侧栏、消息与中断的持久后台子代理 | |
|
|
267
|
-
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | DeepSeek Harness 的成本治理:预算、碳排与延迟一屏呈现。 | |
|
|
268
|
-
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind 等价:快照、会话 fork、一次性恢复 | |
|
|
269
|
-
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 把 Claude Code 会话、记忆、技能与 CLAUDE.md 迁入 DSH | |
|
|
270
|
-
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | 跨平台原生桌面控制(DeepSeek Harness),Windows 优先。 | |
|
|
271
|
-
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Web 输入框的终端式历史:方向键、Ctrl+R 搜索 | |
|
|
272
|
-
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | 数据集质量检查与引文核查(本插件可选消费的数字核查桥) | |
|
|
273
|
-
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | DeepSeek Harness 的提示注入、越狱与密钥泄露防护。 | |
|
|
274
|
-
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | DeepSeek Harness 的统一静态图像生成路由。 | |
|
|
275
|
-
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | DeepSeek Harness 只读性能诊断。 | |
|
|
276
|
-
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | 面向中国公募基金的确定性研究报告 | |
|
|
277
|
-
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | 面向 DSH 的 GitHub PR/issues 集成,每次写入经审批门控 | |
|
|
278
|
-
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | 行业研究编排,经本插件的 `ctx.researchReport.assemble` 封存交付物 | |
|
|
279
|
-
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | DeepSeek Harness 的本地文档知识库。 | |
|
|
280
|
-
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | DeepSeek Harness 的本地模型(Ollama)接入。 | |
|
|
281
|
-
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | 通过语言服务器的 LSP 诊断、格式化、补全、代码操作与重命名 | |
|
|
282
|
-
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII 脱敏中间件:模型边界匿名化、展示层还原 | |
|
|
283
|
-
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | 只读 MCP 运行时面板:/mcp 命令 + 带状态、工具与错误的 Settings 标签页 | |
|
|
284
|
-
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | 审批门控的跨会话记忆:ctx.memory 接缝 + SQLite + 记忆工具 | |
|
|
285
|
-
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | DeepSeek Harness 的 OpenTelemetry 与 Langfuse 可观测导出器。 | |
|
|
286
|
-
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles 等价的运行时风格切换 | |
|
|
287
|
-
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
|
|
288
|
-
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
289
|
-
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
|
|
290
|
-
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
291
|
-
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
292
|
-
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
293
|
-
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
294
|
-
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
|
|
295
|
-
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | DeepSeek Harness 的跨设备会话同步——会话存储的专用 git 镜像。 | |
|
|
296
|
-
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | 安全审计技能包:密钥扫描、依赖与供应链审查 | |
|
|
297
|
-
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | DeepSeek Harness 的语音优先会话闭环:对它说,听它答。 | |
|
|
298
|
-
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
299
|
-
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
|
|
300
|
-
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
301
|
-
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
|
|
269
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
302
270
|
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
271
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
272
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
303
273
|
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
274
|
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
-
| **[dsh-
|
|
275
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
276
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
277
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
278
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
279
|
+
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
280
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
281
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
282
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
283
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
284
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
285
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
286
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
287
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
288
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
289
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
290
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
291
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | PII masking middleware: anonymize at the model boundary, restore at the display layer | |
|
|
292
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | |
|
|
293
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
294
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
295
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
296
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
306
297
|
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
298
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
299
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
307
300
|
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
-
| **[dsh-plugin-
|
|
301
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
309
302
|
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
303
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
304
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
305
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
306
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
307
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
308
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
309
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
310
310
|
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
311
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
312
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
313
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
314
|
+
|
|
311
315
|
|
|
312
316
|
### 从 DSH Desktop 市场安装
|
|
313
317
|
|
package/README.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# dsh-doublecheck
|
|
4
4
|
- **1024 store channel**: `npm i -g dsh1024` once, then `dsh1024 plugin --profile web add dsh-doublecheck` (counts toward the [deepseek1024.com](https://deepseek1024.com) install ranking).
|
|
5
5
|
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
6
|
+
[](https://api.securityscorecards.dev/projects/github.com/PerryLink/dsh-doublecheck)
|
|
6
7
|
|
|
7
8
|
**The delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery — then gate the handoff with a deliverable/rework decision.**
|
|
8
9
|
|
|
@@ -11,6 +12,7 @@
|
|
|
11
12
|
[](LICENSE)
|
|
12
13
|
[](https://github.com/topics/dsh-plugin)
|
|
13
14
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
15
|
+
[](https://dsh.market/)
|
|
14
16
|
[](#)
|
|
15
17
|
[](https://github.com/PerryLink/dsh-doublecheck/actions)
|
|
16
18
|
[](https://github.com/PerryLink/dsh-doublecheck/releases)
|
|
@@ -27,7 +29,7 @@
|
|
|
27
29
|
|
|
28
30
|
| Surface | Status |
|
|
29
31
|
|---|---|
|
|
30
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
32
|
+
| Harness | DeepSeek Harness `dsh-v0.1.7-alpha.1`. Verified 2026-09-22 (dual typecheck rulers + full test suite green); the peer range admits `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2`, `0.1.6-alpha.2` and `0.1.7-alpha.1`, so no supported host line is dropped. |
|
|
31
33
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
32
34
|
| Platforms | All (pure host; no native code, no direct network requests of its own) |
|
|
33
35
|
| Model | Any (the guard itself never calls a model; the critic and reviewer phases run as harness subagents) |
|
|
@@ -37,7 +39,7 @@
|
|
|
37
39
|
`dsh-doublecheck` installs two plugin rows that read and enforce from the same durable session log:
|
|
38
40
|
|
|
39
41
|
1. **`doublecheck-grill`** — the requirements furnace: the bundled `grill-requirements` skill plus the model-facing `doublecheck_skills`, `doublecheck_spec`, and `doublecheck_report` tools and the per-dimension verification workflow.
|
|
40
|
-
2. **`doublecheck-guard`** — the discipline guard: the grill gate, the red/green evidence gates, the adversary review, the `/doublecheck` and `/gate` commands, the `
|
|
42
|
+
2. **`doublecheck-guard`** — the discipline guard: the grill gate, the red/green evidence gates, the adversary review, the `/doublecheck` and `/gate` commands, the live `gate` settings card, and the four-phase delivery gate.
|
|
41
43
|
|
|
42
44
|
Together they enforce the **discipline loop** — *grill → design → red → green → review → verify*:
|
|
43
45
|
|
|
@@ -127,6 +129,15 @@ All tunables are Schemastery `Config` fields (changeable from cordis.yml). An id
|
|
|
127
129
|
| `gate.review.engine` | `'auto'` | `auto` = dsh-auto-review verdict records when present, else the local reviewer; `local` = always local. |
|
|
128
130
|
| `gate.review.provider` | `'fork'` | The local review reviewer's provider (its `model`/`tools`/`timeoutMs`/`maxFindings` match `gate.consistency.*`). |
|
|
129
131
|
|
|
132
|
+
Every `gate.*` key above is one **live field**: the guard row marks the whole
|
|
133
|
+
`gate` block `.volatile()`, so it is the row's editable settings card (the form
|
|
134
|
+
namespace is the row's profile entry id). The remaining keys are ordinary
|
|
135
|
+
composition config from the profile patch. The block is read once at load, so an
|
|
136
|
+
edit takes effect on the next load — `gate.enabled` decides whether the
|
|
137
|
+
turn-boundary red notice is installed at all. On a host line whose schemastery
|
|
138
|
+
predates `.volatile()` the row still mounts: the card is absent and the block
|
|
139
|
+
comes from the profile patch exactly as before.
|
|
140
|
+
|
|
130
141
|
Misconfiguration fails loud at load: invalid regexes, empty or duplicated name lists, out-of-range thresholds, and duplicate checklist ids throw instead of silently doing nothing. `strict.patch.yml` is the all-gates-block overlay that restates the guard row at `intensity: block` with every module on and the coverage requirement enabled.
|
|
131
142
|
|
|
132
143
|
## Tools & surfaces
|
|
@@ -139,7 +150,7 @@ Misconfiguration fails loud at load: invalid regexes, empty or duplicated name l
|
|
|
139
150
|
| `/doublecheck status\|report\|on\|off` | command | Switch, modules, intensity, stage facts, folded report, and the durable on/off override. |
|
|
140
151
|
| `/gate status\|run\|config` | command | Live checklist progress, the settled deliverable/rework report, and the effective config. |
|
|
141
152
|
| `grill-requirements`, `red-green-tdd`, `delivery-review`, `delivery-proof` | skill | Bundled discipline skills covering all six loop stages. |
|
|
142
|
-
| `
|
|
153
|
+
| `gate` | live config field | The pluggable checklist is the guard row's one `.volatile()` field: it is edited from the row's settings card (namespace = the row's profile entry id) and read once at load. |
|
|
143
154
|
| `strict.patch.yml` | overlay | Every gate on at `block` intensity plus the coverage requirement, in one patch layer. |
|
|
144
155
|
| `dsh-doublecheck/invariant` | companion row | Reports package-owned write-path contradictions through the host `invariants` registry. |
|
|
145
156
|
|
|
@@ -210,7 +221,7 @@ The CLI only serializes the already-settled `GateState` — it never re-runs the
|
|
|
210
221
|
|
|
211
222
|
## Permissions & data
|
|
212
223
|
|
|
213
|
-
- **Reads**: the session log (`tool/call` / `tool/result` / `tool/ptc-dispatch`, injected `user/message` sources, and the foreign `autoReview/*` verdict records) in-process only; the optional plan-mode service state. PTC sub-dispatches carry the predecessor `tool/code-dispatch` label on hosts before the V3 rename; both labels fold identically.
|
|
224
|
+
- **Reads**: the session log (`tool/call` / `tool/result` / `tool/ptc-dispatch`, injected `user/message` sources, and the foreign `autoReview/*` verdict records) in-process only; the optional plan-mode service state. PTC sub-dispatches carry the predecessor `tool/code-dispatch` label on hosts before the V3 rename; both labels fold identically. Injected notices carry the producer-owned `dsh-doublecheck` message-source kind; logs recorded before that kind existed arrive as `plugin:dsh-doublecheck` (the harness's V3→V4 migration on a released catch-all wrapper) or as the released `plugin` wrapper, and all three fold identically.
|
|
214
225
|
- **Writes**: `doublecheck-spec.md`, `doublecheck-report.md`, `gate-report.md`, and `gate-report.json` in the session workspace (paths configurable) through the `ctx.fs` seam; the durable `doublecheck/state` and `doublecheck/gate` session events.
|
|
215
226
|
- **Model calls**: the gate's consistency and local-review phases (one subagent each per `/gate run`), the optional adversary review, and the `doublecheck_report` verification workflow start subagent runs; nothing else calls a model or the network.
|
|
216
227
|
- **Never touched**: credentials, environment variables, or any file outside the session workspace. The workshop manifest declares `filesystem:read` and `filesystem:write` only. Gate reports carry counts, ids, and verdicts only; recognized secrets in reviewer texts are redacted before storage or display.
|
|
@@ -227,10 +238,11 @@ The CLI only serializes the already-settled `GateState` — it never re-runs the
|
|
|
227
238
|
|
|
228
239
|
- **Durable writes.** `/doublecheck on\|off` → `doublecheck/state` and `/gate run` → `doublecheck/gate` ride the host's `ignorable` append surface (post-rc.6 through `0.1.1-rc.2`). On hosts without that surface (rc.6/rc.8, and `0.1.2-alpha.1`, which removed the envelope — `0.1.2-rc.1` restores the field for stored-log read compatibility only and still cannot stamp it), the writes are skipped and the switch stays process-local.
|
|
229
240
|
0.1.2-rc.1 (adapted 2026-09-02): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged.
|
|
230
|
-
0.1.5-alpha.1 (adapted 2026-09-09): session format V3 renames the durable sub-dispatch event `tool/code-dispatch` to `tool/ptc-dispatch` (payload unchanged; both labels fold identically). Session.append still exposes no `ignorable` channel, so durable writes stay skipped and the switch stays process-local - behavior unchanged. The `doublecheck-gate` settings namespace
|
|
241
|
+
0.1.5-alpha.1 (adapted 2026-09-09): session format V3 renames the durable sub-dispatch event `tool/code-dispatch` to `tool/ptc-dispatch` (payload unchanged; both labels fold identically). Session.append still exposes no `ignorable` channel, so durable writes stay skipped and the switch stays process-local - behavior unchanged. (The `doublecheck-gate` settings namespace this entry introduced was removed in 0.1.7-alpha.1, when the harness deleted the namespace registry.)
|
|
231
242
|
0.1.5-rc.1 (adapted 2026-09-10): dependency pins move to the published 0.1.5-rc.1 line; no seam change affects this plugin's behavior.
|
|
232
243
|
0.1.5-rc.2 (adapted 2026-09-11): dependency pins move to the published 0.1.5-rc.2 line; no seam change affects this plugin's behavior.
|
|
233
|
-
-
|
|
244
|
+
0.1.7-alpha.1 (adapted 2026-09-22): the harness deleted the shared catch-all `plugin` message-source kind (notices now carry the producer-owned `dsh-doublecheck` kind, and the `remindOnce` fold still reads the two pre-upgrade shapes a durable log can hold), and it replaced the settings-namespace registry with `SettingsForms` (the `doublecheck-gate` namespace is gone; the gate checklist is now the guard row's one `.volatile()` field, still read once at load). Dev/test pins for `@deepseek-ai/cordis` and `@deepseek-ai/schemastery` move to `^4.0.3` / `^3.18.3`, where `Volatile` and `.volatile()` first exist; the peer ranges stay `^4.0.2` / `^3.18.2` and the live-field surface is detected at load, so the older host lines mount the row with no settings card. No behavior change beyond the settings storage location.
|
|
245
|
+
- **Optional seams.** The guard row's settings card appears when the settings service is mounted; the card is this row's own Config (namespace = its profile entry id), and the `gate` block is read once at load, so its values apply to the `/gate` panel and the gate-red notice on the next load. The live-field surface is detected at load, so on a host line whose schemastery predates `.volatile()` the row mounts anyway — without a card, with the `gate` block taken from the profile patch. The `/gate status` plan-mode line reads the optional `ctx.planMode` (shows `unknown` without it); the adversary review needs `ctx.subagents`; verification needs `workflowEngine`.
|
|
234
246
|
- **Local degrade.** `gate.review.engine: auto` degrades to the local reviewer when dsh-auto-review is absent or has no verdict records this session — the report names the reason instead of inventing a verdict.
|
|
235
247
|
- **dsh-eval evidence is file-based.** The dsh-auto-review eval engine (`dsh-eval`) writes its prompt-regression / stress / fairness results to a workspace report file, not the session log. `gate.tests.evalReports.enabled` folds that file (off by default; skips when absent) and the folded counts ride the durable `doublecheck/gate` record so a settled run still replays.
|
|
236
248
|
|
|
@@ -258,24 +270,29 @@ pnpm run pack:check # build + pack the tarball
|
|
|
258
270
|
|
|
259
271
|
## PerryLink DSH Plugin Family
|
|
260
272
|
|
|
261
|
-
This project is one of the
|
|
273
|
+
This project is one of the **45 DeepSeek Harness plugins** maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
262
274
|
|
|
263
275
|
| Plugin | One-liner |
|
|
264
276
|
|---|---|
|
|
265
277
|
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | Second-model auto-review on the approval chain, fail-closed by default | |
|
|
278
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
266
279
|
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | Durable background child agents with a Web UI sidebar, messaging and interrupt | |
|
|
267
280
|
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | |
|
|
281
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
282
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
268
283
|
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
|
|
269
284
|
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | |
|
|
270
285
|
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
|
|
271
286
|
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
|
|
272
287
|
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
|
|
273
288
|
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | |
|
|
289
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | Engineering-discipline guard: requirements grill, test gates, adversary review | |
|
|
274
290
|
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | Unified static-image generation routing for DeepSeek Harness. | |
|
|
275
291
|
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | Read-only performance diagnostics for DeepSeek Harness. | |
|
|
276
292
|
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | Deterministic research reports for Chinese public mutual funds | |
|
|
277
293
|
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issues integration for DSH, every write gated by approval | |
|
|
278
294
|
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | Industry research orchestration that seals its deliverables through this plugin's `ctx.researchReport.assemble` | |
|
|
295
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | Laya typed decisions (`noul`/`choice`/`score`) as a first-class Cordis service and model-visible tools | |
|
|
279
296
|
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | Local document knowledge base for DeepSeek Harness. | |
|
|
280
297
|
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | Local-model (Ollama) integration for DeepSeek Harness. | |
|
|
281
298
|
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP diagnostics, formatting, completion, code actions and rename over language servers | |
|
|
@@ -284,30 +301,25 @@ This project is one of the [40 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
284
301
|
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | |
|
|
285
302
|
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | OpenTelemetry and Langfuse observability exporter for DeepSeek Harness. | |
|
|
286
303
|
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching | |
|
|
287
|
-
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console |
|
|
288
304
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
289
|
-
| **[dsh-
|
|
290
|
-
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
305
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
291
306
|
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
307
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
308
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
309
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | One-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card | |
|
|
310
|
+
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
311
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console | |
|
|
292
312
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
293
313
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
294
314
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
295
315
|
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store. | |
|
|
296
316
|
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | Security-audit skill pack: secret scan, dependency and supply-chain review | |
|
|
297
317
|
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | Voice-first session loop for DeepSeek Harness: talk to it, hear it answer. | |
|
|
318
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
298
319
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
299
|
-
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
|
|
320
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools | |
|
|
300
321
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
301
|
-
|
|
302
|
-
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
303
|
-
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
304
|
-
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
305
|
-
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
306
|
-
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
307
|
-
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
308
|
-
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
309
|
-
| **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | Merged `0.1.3-alpha.1` → `0.1.5-rc.1` upgrade corridor card plus a zero-dependency seam scanner | |
|
|
310
|
-
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
322
|
+
|
|
311
323
|
|
|
312
324
|
### Install from the DSH Desktop Market
|
|
313
325
|
|