dsh-doublecheck 0.9.10 → 0.9.12
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 +18 -2
- package/{README.es.md → README-es.md} +16 -4
- package/{README.hi.md → README-hi.md} +16 -4
- package/{README.pt.md → README-pt.md} +16 -4
- package/{README.zh.md → README-zh.md} +16 -4
- package/README.md +15 -4
- package/lib/guard/index.js +7 -2
- package/lib/session-events.d.ts +2 -0
- package/lib/session-events.js +7 -1
- package/package.json +32 -27
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to dsh-doublecheck are recorded here, newest first.
|
|
4
4
|
|
|
5
|
-
## [
|
|
5
|
+
## [0.9.12] - 2026-09-18
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **A `gate` configuration change now really takes effect after a reload.** The `doublecheck` session projection was registered without holding the disposer the projection registry returns, so a config hot-reload left the previous closure live: turning the delivery gate (or any detection knob) off and on again kept judging with the stale definitions — a silent false-safety window, and a hard throw the moment the projection state version moved. The registration is now owned by an effect, exactly like the invariant companion, and a regression test proves both halves: dispose releases the old registration, and a remount folds with the new detection.
|
|
10
|
+
- A session that exposes neither `snapshotEvents()` nor a legacy `events` array now fails loud instead of folding an empty log. The silent empty read turned every discipline fold into a wrong "nothing happened" conclusion (no spec required, no red test on record) rather than an error.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Declare `dsh.manifestVersion: 1` and the canonical three-clause `engines.dsh` range (`>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0`); every `@deepseek-ai/dsh-*` peer already carried the third clause. Declarative only — no reader changes behavior.
|
|
15
|
+
|
|
16
|
+
## [0.9.11] - 2026-09-12
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Rename the four translated READMEs to `README-<lang>.md`. npm selects the package-page readme as the first markdown file matching its `{README,README.*}` glob (`@npmcli/package-json`, publish path), and that glob order puts `README.<lang>.md` ahead of `README.md` — so npm was serving the Simplified-Chinese file for this package too (measured on 15/15 sampled packages of the family). The new names sit outside the glob, so the English source is served again. No content changed apart from the language-switcher link each translation holds to its siblings, and the repo readme gate still passes. Takes effect with the next release; an already-published version cannot gain a corrected readme retroactively.
|
|
21
|
+
- Pin the `@deepseek-ai/dsh-*` dev/test dependencies to the published `0.1.5-rc.2` line and record `0.1.5-rc.2` in `dshWorkshop.compatibility.dshVersions`; the monthly Compat workflow now runs against `0.1.5-rc.2`. The peer range `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` is unchanged, so no supported host line is dropped.
|
|
6
22
|
|
|
7
23
|
## [0.9.10] - 2026-09-10
|
|
8
24
|
|
|
@@ -162,7 +178,7 @@ The hardening release: the whole model-visible surface honors `language`, the pr
|
|
|
162
178
|
- **Wider default test coverage**: `deno test` and `uv run pytest` joined the default test-command patterns.
|
|
163
179
|
- **`strict.patch.yml` restored**: the v0.5-changeloged all-gates-`block` overlay now actually ships (added to `files`).
|
|
164
180
|
- **Release pipeline**: `NPM_TOKEN` lives in the repo secrets; the publish step skips versions already on the registry (idempotent re-tags) instead of failing, and a new `release` job creates the GitHub Release with the top changelog section as its notes.
|
|
165
|
-
- **Package metadata**: `publishConfig.access: 'public'`, `sideEffects: false`, an npm version badge across the five READMEs, and `README
|
|
181
|
+
- **Package metadata**: `publishConfig.access: 'public'`, `sideEffects: false`, an npm version badge across the five READMEs, and `README-hi.md` fully synced to v0.6.
|
|
166
182
|
|
|
167
183
|
## v0.5.0 — 2026-08-14
|
|
168
184
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Los requisitos se interrogan antes de la primera edición; la entrega se demuestra, nunca se afirma.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Superficie | Estado |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`. Verificado el 2026-09-18 (doble typecheck + suite completa en verde); el rango de peers admite `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2` y `0.1.6-alpha.2`, así que no se pierde ninguna línea soportada. |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Plataformas | Todas (host puro; sin código nativo, sin solicitudes de red directas propias) |
|
|
32
33
|
| Modelo | Cualquiera (el guard nunca llama a un modelo; las fases de crítico y revisor se ejecutan como subagentes del harness) |
|
|
@@ -228,6 +229,7 @@ El CLI solo serializa el `GateState` ya asentado — nunca vuelve a ejecutar la
|
|
|
228
229
|
0.1.2-rc.1 (adaptado el 2026-09-02): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia.
|
|
229
230
|
0.1.5-alpha.1 (adaptado el 2026-09-09): el formato de sesión V3 renombra el evento durable de subenvío `tool/code-dispatch` a `tool/ptc-dispatch` (carga útil sin cambios; ambas etiquetas se pliegan de forma idéntica). Session.append sigue sin canal `ignorable`, así que las escrituras durables se omiten y el interruptor permanece en proceso - comportamiento sin cambios. El espacio de ajustes `doublecheck-gate` es una interfaz débil, resuelta al cargar (véase Limitaciones conocidas).
|
|
230
231
|
0.1.5-rc.1 (adaptado el 2026-09-10): los pines de dependencias pasan a la línea publicada 0.1.5-rc.1; ningún cambio de interfaz afecta el comportamiento de este plugin.
|
|
232
|
+
0.1.5-rc.2 (adaptado el 2026-09-11): los pines de dependencias pasan a la línea publicada 0.1.5-rc.2; ningún cambio de interfaz afecta el comportamiento de este plugin.
|
|
231
233
|
- **Interfaces opcionales.** El espacio de ajustes `doublecheck-gate` se registra solo cuando el servicio de ajustes está montado; entonces aparece en `ctx.settings.describe()` y su sección del usuario sobrescribe los valores `gate.*` de la composición en la siguiente carga (el paquete no incluye tarjeta de cliente, así que la página de plugins de la Web GUI no lo lista); la línea de modo plan de `/gate status` lee el `ctx.planMode` opcional (muestra `unknown` sin él); la revisión adversarial necesita `ctx.subagents`; la verificación necesita `workflowEngine`.
|
|
232
234
|
- **Degradación local.** `gate.review.engine: auto` degrada al revisor local cuando dsh-auto-review está ausente o no tiene registros de veredicto en esta sesión — el informe nombra la razón en lugar de inventar un veredicto.
|
|
233
235
|
- **La evidencia dsh-eval se basa en archivos.** El motor de evaluación de dsh-auto-review (`dsh-eval`) escribe sus resultados de regresión de prompt / estrés / equidad en un archivo de informe del espacio de trabajo, no en el registro de sesión. `gate.tests.evalReports.enabled` pliega ese archivo (desactivado por defecto; salta cuando está ausente) y los recuentos pliegados viajan en el registro duradero `doublecheck/gate` para que una ejecución asentada siga siendo reproducible.
|
|
@@ -256,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
256
258
|
|
|
257
259
|
## PerryLink DSH Plugin Family
|
|
258
260
|
|
|
259
|
-
Este proyecto es uno de los [
|
|
261
|
+
Este proyecto es uno de los [40 complementos de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te ayuda, probablemente los demás también:
|
|
260
262
|
|
|
261
263
|
| Plugin | One-liner |
|
|
262
264
|
|---|---|
|
|
@@ -286,6 +288,7 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
286
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
|
|
287
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Inyector de directivas personales con interruptor en la barra superior (edición framework) |
|
|
288
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
289
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
|
|
290
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
|
|
291
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fija sesiones en la barra lateral web con orden durable | |
|
|
@@ -295,7 +298,16 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
295
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
|
|
296
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Puente de tareas TickTick/Dida365: panel de cabecera de sesión + 11 herramientas |
|
|
297
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
|
|
298
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
|
|
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 | |
|
|
299
311
|
|
|
300
312
|
### Instalar desde el mercado de DSH Desktop
|
|
301
313
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*पहली एडिट से पहले आवश्यकताओं की पड़ताल होती है; डिलीवरी साबित की जाती है, दावा नहीं किया जाता।*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| सतह | स्थिति |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`। 2026-09-18 को सत्यापित (दोहरा typecheck + पूरी टेस्ट सूट हरी); peer रेंज `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.2` और `0.1.6-alpha.2` को स्वीकार करती है, इसलिए कोई समर्थित लाइन नहीं छूटती। |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| प्लेटफ़ॉर्म | सभी (शुद्ध host; कोई नेटिव कोड नहीं, स्वयं का कोई सीधा नेटवर्क अनुरोध नहीं) |
|
|
32
33
|
| मॉडल | कोई भी (guard स्वयं कभी मॉडल नहीं बुलाता; critic और reviewer चरण harness subagent के रूप में चलते हैं) |
|
|
@@ -228,6 +229,7 @@ CLI केवल पहले से स्थापित `GateState` को
|
|
|
228
229
|
0.1.2-rc.1 (2026-09-02 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है।
|
|
229
230
|
0.1.5-alpha.1 (2026-09-09 को अनुकूलित): सत्र प्रारूप V3 टिकाऊ उप-प्रेषण इवेंट `tool/code-dispatch` का नाम `tool/ptc-dispatch` करता है (पेलोड अपरिवर्तित; दोनों लेबल समान रूप से फ़ोल्ड होते हैं)। Session.append में अभी भी `ignorable` चैनल नहीं है, इसलिए टिकाऊ लेखन छोड़े जाते हैं और स्विच प्रक्रिया-स्थानीय रहता है - व्यवहार अपरिवर्तित। `doublecheck-gate` सेटिंग्स नेमस्पेस एक कमज़ोर इंटरफ़ेस है, जो लोड पर हल होता है (ज्ञात सीमाएँ देखें)।
|
|
230
231
|
0.1.5-rc.1 (2026-09-10 को अनुकूलित): निर्भरता पिन प्रकाशित 0.1.5-rc.1 लाइन पर चले जाते हैं; कोई इंटरफ़ेस परिवर्तन इस प्लगइन के व्यवहार को प्रभावित नहीं करता।
|
|
232
|
+
0.1.5-rc.2 (2026-09-11 को अनुकूलित): निर्भरता पिन प्रकाशित 0.1.5-rc.2 लाइन पर चले जाते हैं; कोई इंटरफ़ेस परिवर्तन इस प्लगइन के व्यवहार को प्रभावित नहीं करता।
|
|
231
233
|
- **वैकल्पिक इंटरफ़ेस।** `doublecheck-gate` सेटिंग्स नेमस्पेस केवल तब पंजीकृत होता है जब सेटिंग्स सेवा माउंट हो; तब यह `ctx.settings.describe()` में दिखता है और इसका उपयोगकर्ता अनुभाग अगले लोड पर composition के `gate.*` मानों को ओवरराइड करता है (पैकेज में कोई client कार्ड नहीं है, इसलिए Web GUI का plugin पृष्ठ इसे सूचीबद्ध नहीं करता); `/gate status` की प्लान-मोड पंक्ति वैकल्पिक `ctx.planMode` पढ़ती है (इसके बिना `unknown` दिखाती है); प्रतिकूल समीक्षा को `ctx.subagents` चाहिए; सत्यापन को `workflowEngine` चाहिए।
|
|
232
234
|
- **स्थानीय अवनति।** जब dsh-auto-review अनुपस्थित हो या इस सत्र में उसके कोई निर्णय रिकॉर्ड न हों, तो `gate.review.engine: auto` स्थानीय समीक्षक पर घट जाता है — रिपोर्ट निर्णय गढ़ने के बजाय कारण बताती है।
|
|
233
235
|
- **dsh-eval साक्ष्य फ़ाइल-आधारित है।** dsh-auto-review का मूल्यांकन इंजन (`dsh-eval`) अपने prompt-regression / stress / fairness परिणाम कार्यक्षेत्र रिपोर्ट फ़ाइल में लिखता है, सत्र लॉग में नहीं। `gate.tests.evalReports.enabled` उस फ़ाइल को मोड़ता है (डिफ़ॉल्ट रूप से बंद; अनुपस्थित होने पर छोड़ देता है) और मोड़ी गई गणनाएँ टिकाऊ `doublecheck/gate` रिकॉर्ड पर चलती हैं, ताकि तयशुदा रन फिर भी रीप्ले हो सके।
|
|
@@ -256,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
256
258
|
|
|
257
259
|
## PerryLink DSH Plugin Family
|
|
258
260
|
|
|
259
|
-
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [
|
|
261
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
260
262
|
|
|
261
263
|
| Plugin | One-liner |
|
|
262
264
|
|---|---|
|
|
@@ -286,6 +288,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
286
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
|
|
287
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | शीर्ष-बार टॉगल के साथ व्यक्तिगत निर्देश इंजेक्टर (फ्रेमवर्क संस्करण) |
|
|
288
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 | |
|
|
289
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
|
|
290
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
|
|
291
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | टिकाऊ क्रम के साथ वेब साइडबार में सत्र पिन करें | |
|
|
@@ -295,7 +298,16 @@ pnpm run pack:check # build + pack the tarball
|
|
|
295
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
|
|
296
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 कार्य ब्रिज: सत्र-हेडर पैनल + 11 टूल |
|
|
297
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
|
|
298
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
|
|
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 | |
|
|
299
311
|
|
|
300
312
|
### DSH Desktop मार्केट से इंस्टॉल करें
|
|
301
313
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Os requisitos são interrogados antes da primeira edição; a entrega é comprovada, nunca afirmada.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Superfície | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`. Verificado em 2026-09-18 (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` e `0.1.6-alpha.2`, então nenhuma linha suportada é perdida. |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Plataformas | Todas (host puro; sem código nativo, sem requisições de rede diretas próprias) |
|
|
32
33
|
| Modelo | Qualquer (o guard nunca chama um modelo; as fases de crítico e revisor rodam como subagentes do harness) |
|
|
@@ -228,6 +229,7 @@ O CLI apenas serializa o `GateState` já assentado — nunca reexecuta a porta d
|
|
|
228
229
|
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.
|
|
229
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` é uma interface fraca, resolvida ao carregar (ver Limitações conhecidas).
|
|
230
231
|
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
|
+
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.
|
|
231
233
|
- **Interfaces opcionais.** O namespace de configurações `doublecheck-gate` é registrado apenas quando o serviço de configurações está montado; então aparece em `ctx.settings.describe()` e sua seção do usuário substitui os valores `gate.*` da composição no próximo carregamento (o pacote não inclui cartão de cliente, então a página de plugins da Web GUI não o lista); 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`.
|
|
232
234
|
- **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.
|
|
233
235
|
- **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.
|
|
@@ -256,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
256
258
|
|
|
257
259
|
## PerryLink DSH Plugin Family
|
|
258
260
|
|
|
259
|
-
Este projeto é um dos [
|
|
261
|
+
Este projeto é um dos [40 plugins de DeepSeek Harness](https://github.com/PerryLink) mantidos por [PerryLink](https://github.com/PerryLink). Se este ajuda você, os outros provavelmente também:
|
|
260
262
|
|
|
261
263
|
| Plugin | One-liner |
|
|
262
264
|
|---|---|
|
|
@@ -286,6 +288,7 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
286
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
287
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
|
|
288
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 | |
|
|
289
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 | |
|
|
290
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
291
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Fixe sessões na barra lateral web com ordenação durável | |
|
|
@@ -295,7 +298,16 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
295
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
296
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
|
|
297
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. | |
|
|
298
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
|
|
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 | |
|
|
299
311
|
|
|
300
312
|
### Instalar a partir do mercado do DSH Desktop
|
|
301
313
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*需求在第一次改动之前就被拷问清楚;交付是被证明的,而不是被口头宣称的。*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-doublecheck)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
17
18
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
18
19
|
|
|
19
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
20
21
|
|
|
21
22
|
</div>
|
|
22
23
|
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| 方面 | 状态 |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`。已于 2026-09-18 核验(双 typecheck 尺子 + 全量测试绿);peer 区间接纳 `0.1.2-rc.1`、`0.1.5-alpha.1`、`0.1.5-rc.2` 与 `0.1.6-alpha.2`,不丢任何已支持宿主线。 |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| 平台 | 全部(纯宿主;无原生代码,自身无直接网络请求) |
|
|
32
33
|
| 模型 | 任意(守卫本身从不调用模型;评审与批评阶段作为宿主 subagent 运行) |
|
|
@@ -228,6 +229,7 @@ CLI 只序列化已定的 `GateState` —— 它从不重新运行四阶段门
|
|
|
228
229
|
0.1.2-rc.1(2026-09-02 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。
|
|
229
230
|
0.1.5-alpha.1(2026-09-09 已适配):会话格式 V3 把持久子调用事件 `tool/code-dispatch` 改名为 `tool/ptc-dispatch`(载荷不变;两个标签折叠结果一致)。Session.append 仍无 `ignorable` 写入通道,写入继续跳过、开关保持进程内——行为不变。`doublecheck-gate` 设置命名空间是弱接口,在加载时解析(见「已知限制」)。
|
|
230
231
|
0.1.5-rc.1(2026-09-10 已适配):依赖钉号移至已发布的 0.1.5-rc.1 线;无接口变更影响本插件行为。
|
|
232
|
+
0.1.5-rc.2(2026-09-11 已适配):依赖钉号移至已发布的 0.1.5-rc.2 线;无接口变更影响本插件行为。
|
|
231
233
|
- **可选接口。** `doublecheck-gate` 设置命名空间仅在挂载设置服务时注册;注册后出现在 `ctx.settings.describe()` 中,其用户段在下次加载时覆盖 composition 的 `gate.*` 值;本包不带 client 卡片,故 Web GUI 插件页不会单列它。`/gate status` 的计划模式行读取可选的 `ctx.planMode`(没有则显示 `unknown`);对抗式评审需要 `ctx.subagents`;验证需要 `workflowEngine`。
|
|
232
234
|
- **本地降级。** 当 dsh-auto-review 缺失或本会话没有裁决记录时,`gate.review.engine: auto` 会降级到本地评审者——报告会写明原因,而不是捏造裁决。
|
|
233
235
|
- **dsh-eval 证据基于文件。** dsh-auto-review 评测引擎(`dsh-eval`)把其 prompt 回归 / 压测 / 公平性结果写入工作区报告文件,而非会话日志。`gate.tests.evalReports.enabled` 折叠该文件(默认关闭;缺失时跳过),折叠出的计数随持久 `doublecheck/gate` 记录保存,使已定的运行仍可重放。
|
|
@@ -256,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
256
258
|
|
|
257
259
|
## PerryLink DSH Plugin Family
|
|
258
260
|
|
|
259
|
-
这是 [PerryLink](https://github.com/PerryLink) 维护的 [
|
|
261
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
260
262
|
|
|
261
263
|
| Plugin | One-liner |
|
|
262
264
|
|---|---|
|
|
@@ -286,6 +288,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
286
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
287
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
|
|
288
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 | |
|
|
289
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
290
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
291
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 在 Web 侧栏置顶会话,带持久排序 | |
|
|
@@ -295,7 +298,16 @@ pnpm run pack:check # build + pack the tarball
|
|
|
295
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
296
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
|
|
297
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
298
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
|
|
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 | |
|
|
299
311
|
|
|
300
312
|
### 从 DSH Desktop 市场安装
|
|
301
313
|
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
18
18
|
[](https://www.npmjs.com/package/dsh-doublecheck)
|
|
19
19
|
|
|
20
|
-
[English](README.md) · [简体中文](README
|
|
20
|
+
[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)
|
|
21
21
|
|
|
22
22
|
</div>
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
| Surface | Status |
|
|
29
29
|
|---|---|
|
|
30
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`. Verified 2026-09-18 (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` and `0.1.6-alpha.2`, so no supported host line is dropped. |
|
|
31
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
32
32
|
| Platforms | All (pure host; no native code, no direct network requests of its own) |
|
|
33
33
|
| Model | Any (the guard itself never calls a model; the critic and reviewer phases run as harness subagents) |
|
|
@@ -229,6 +229,7 @@ The CLI only serializes the already-settled `GateState` — it never re-runs the
|
|
|
229
229
|
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
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 is a weak seam resolved at load (see Known limitations).
|
|
231
231
|
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
|
+
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.
|
|
232
233
|
- **Optional seams.** The `doublecheck-gate` settings namespace registers only when the settings service is mounted; it then appears in `ctx.settings.describe()`, and its user section overrides the composition `gate.*` values on the next load. The package ships no client card, so the shipped Web GUI plugin page does not list it. The `/gate status` plan-mode line reads the optional `ctx.planMode` (shows `unknown` without it); the adversary review needs `ctx.subagents`; verification needs `workflowEngine`.
|
|
233
234
|
- **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.
|
|
234
235
|
- **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.
|
|
@@ -257,7 +258,7 @@ pnpm run pack:check # build + pack the tarball
|
|
|
257
258
|
|
|
258
259
|
## PerryLink DSH Plugin Family
|
|
259
260
|
|
|
260
|
-
This project is one of the [
|
|
261
|
+
This project is one of the [40 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too:
|
|
261
262
|
|
|
262
263
|
| Plugin | One-liner |
|
|
263
264
|
|---|---|
|
|
@@ -287,6 +288,7 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
287
288
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
288
289
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with top-bar toggle (framework edition) |
|
|
289
290
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
291
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
290
292
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
291
293
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
292
294
|
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | Pin sessions in the Web sidebar with durable ordering | |
|
|
@@ -296,7 +298,16 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
296
298
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
297
299
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
|
|
298
300
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
299
|
-
| **[dsh-wechat](https://github.com/
|
|
301
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat |
|
|
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 | |
|
|
300
311
|
|
|
301
312
|
### Install from the DSH Desktop Market
|
|
302
313
|
|
package/lib/guard/index.js
CHANGED
|
@@ -545,7 +545,12 @@ export function apply(ctx, config) {
|
|
|
545
545
|
const registry = projectionCtx.get('sessionProjections');
|
|
546
546
|
if (registry === undefined)
|
|
547
547
|
return;
|
|
548
|
-
registry
|
|
548
|
+
// The registry returns the disposer that unregisters this projection; it
|
|
549
|
+
// MUST be owned by an effect. Registering without holding it left the old
|
|
550
|
+
// closure live after a config hot-reload: turning `gate` (or any detection
|
|
551
|
+
// knob) off and on again kept judging with the stale definitions — a
|
|
552
|
+
// silent false-safety window, and a hard throw once the state version moved.
|
|
553
|
+
projectionCtx.effect(() => registry.register({
|
|
549
554
|
key: 'doublecheck',
|
|
550
555
|
stateSchema: doublecheckStateSchema,
|
|
551
556
|
init: emptyDoublecheckState,
|
|
@@ -555,7 +560,7 @@ export function apply(ctx, config) {
|
|
|
555
560
|
view: viewDoublecheck,
|
|
556
561
|
},
|
|
557
562
|
stateVersion: 2,
|
|
558
|
-
});
|
|
563
|
+
}), 'dsh-doublecheck: projection');
|
|
559
564
|
});
|
|
560
565
|
// The invariant companion, registered from the main plugin so its checks
|
|
561
566
|
// see the live detection knobs. Activates only when an invariant registry
|
package/lib/session-events.d.ts
CHANGED
|
@@ -14,5 +14,7 @@ export type SessionEventsSource = Session | {
|
|
|
14
14
|
* The current event snapshot of one session, whichever harness line owns it.
|
|
15
15
|
* @param session - the host Session (or a fixture-shaped session in tests).
|
|
16
16
|
* @returns a frozen full log snapshot on alpha.5+, the `.events` array earlier.
|
|
17
|
+
* @throws when the object exposes neither read face: an empty log would turn
|
|
18
|
+
* every fold into a wrong "nothing happened" conclusion instead of an error.
|
|
17
19
|
*/
|
|
18
20
|
export declare function sessionEvents(session: SessionEventsSource | null | undefined): readonly SessionEvent[];
|
package/lib/session-events.js
CHANGED
|
@@ -9,11 +9,17 @@
|
|
|
9
9
|
* The current event snapshot of one session, whichever harness line owns it.
|
|
10
10
|
* @param session - the host Session (or a fixture-shaped session in tests).
|
|
11
11
|
* @returns a frozen full log snapshot on alpha.5+, the `.events` array earlier.
|
|
12
|
+
* @throws when the object exposes neither read face: an empty log would turn
|
|
13
|
+
* every fold into a wrong "nothing happened" conclusion instead of an error.
|
|
12
14
|
*/
|
|
13
15
|
export function sessionEvents(session) {
|
|
14
16
|
if (session === null || session === undefined)
|
|
15
17
|
return [];
|
|
16
18
|
if (typeof session.snapshotEvents === 'function')
|
|
17
19
|
return session.snapshotEvents();
|
|
18
|
-
|
|
20
|
+
const legacy = session.events;
|
|
21
|
+
if (legacy !== undefined)
|
|
22
|
+
return legacy;
|
|
23
|
+
throw new Error('dsh-doublecheck: the session exposes neither snapshotEvents() nor an events array — '
|
|
24
|
+
+ 'the discipline folds cannot read the log (pass a real Session, not a partial shape)');
|
|
19
25
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-doublecheck",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.12",
|
|
4
4
|
"description": "Delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery, and gate the handoff with a deliverable/rework decision.",
|
|
5
5
|
"packageManager": "pnpm@11.7.0",
|
|
6
6
|
"repository": {
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"strict.patch.yml",
|
|
48
48
|
"CHANGELOG.md",
|
|
49
49
|
"README.md",
|
|
50
|
-
"README
|
|
51
|
-
"README
|
|
52
|
-
"README
|
|
53
|
-
"README
|
|
50
|
+
"README-zh.md",
|
|
51
|
+
"README-es.md",
|
|
52
|
+
"README-pt.md",
|
|
53
|
+
"README-hi.md",
|
|
54
54
|
"LICENSE"
|
|
55
55
|
],
|
|
56
56
|
"scripts": {
|
|
@@ -82,9 +82,11 @@
|
|
|
82
82
|
"author": "PerryLink",
|
|
83
83
|
"license": "Apache-2.0",
|
|
84
84
|
"engines": {
|
|
85
|
-
"node": "^22.19.0 || >=24.0.0"
|
|
85
|
+
"node": "^22.19.0 || >=24.0.0",
|
|
86
|
+
"dsh": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0"
|
|
86
87
|
},
|
|
87
88
|
"dsh": {
|
|
89
|
+
"manifestVersion": 1,
|
|
88
90
|
"bundle": {
|
|
89
91
|
"patch": "./cordis.patch.yml"
|
|
90
92
|
}
|
|
@@ -111,7 +113,10 @@
|
|
|
111
113
|
"filesystem:write"
|
|
112
114
|
],
|
|
113
115
|
"compatibility": {
|
|
114
|
-
"dshVersions": [
|
|
116
|
+
"dshVersions": [
|
|
117
|
+
"0.1.2-rc.1",
|
|
118
|
+
"0.1.5-rc.2"
|
|
119
|
+
]
|
|
115
120
|
},
|
|
116
121
|
"capability": {
|
|
117
122
|
"id": "doublecheck",
|
|
@@ -128,14 +133,14 @@
|
|
|
128
133
|
},
|
|
129
134
|
"peerDependencies": {
|
|
130
135
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
131
|
-
"@deepseek-ai/dsh-agent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
132
|
-
"@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
133
|
-
"@deepseek-ai/dsh-invariants": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
134
|
-
"@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
135
|
-
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
136
|
-
"@deepseek-ai/dsh-session-projection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
137
|
-
"@deepseek-ai/dsh-skill": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
138
|
-
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
136
|
+
"@deepseek-ai/dsh-agent": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
137
|
+
"@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
138
|
+
"@deepseek-ai/dsh-invariants": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
139
|
+
"@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
140
|
+
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
141
|
+
"@deepseek-ai/dsh-session-projection": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
142
|
+
"@deepseek-ai/dsh-skill": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
143
|
+
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0",
|
|
139
144
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
140
145
|
},
|
|
141
146
|
"dependencies": {
|
|
@@ -145,18 +150,18 @@
|
|
|
145
150
|
"devDependencies": {
|
|
146
151
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
147
152
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.3",
|
|
148
|
-
"@deepseek-ai/dsh-agent": "0.1.5-rc.
|
|
149
|
-
"@deepseek-ai/dsh-commands": "0.1.5-rc.
|
|
150
|
-
"@deepseek-ai/dsh-fs": "0.1.5-rc.
|
|
151
|
-
"@deepseek-ai/dsh-llm": "0.1.5-rc.
|
|
152
|
-
"@deepseek-ai/dsh-session": "0.1.5-rc.
|
|
153
|
-
"@deepseek-ai/dsh-session-projection": "0.1.5-rc.
|
|
154
|
-
"@deepseek-ai/dsh-settings": "0.1.5-rc.
|
|
155
|
-
"@deepseek-ai/dsh-skill": "0.1.5-rc.
|
|
156
|
-
"@deepseek-ai/dsh-subagent": "0.1.5-rc.
|
|
157
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.
|
|
158
|
-
"@deepseek-ai/dsh-tools": "0.1.5-rc.
|
|
159
|
-
"@deepseek-ai/dsh-workflow": "0.1.5-rc.
|
|
153
|
+
"@deepseek-ai/dsh-agent": "0.1.5-rc.2",
|
|
154
|
+
"@deepseek-ai/dsh-commands": "0.1.5-rc.2",
|
|
155
|
+
"@deepseek-ai/dsh-fs": "0.1.5-rc.2",
|
|
156
|
+
"@deepseek-ai/dsh-llm": "0.1.5-rc.2",
|
|
157
|
+
"@deepseek-ai/dsh-session": "0.1.5-rc.2",
|
|
158
|
+
"@deepseek-ai/dsh-session-projection": "0.1.5-rc.2",
|
|
159
|
+
"@deepseek-ai/dsh-settings": "0.1.5-rc.2",
|
|
160
|
+
"@deepseek-ai/dsh-skill": "0.1.5-rc.2",
|
|
161
|
+
"@deepseek-ai/dsh-subagent": "0.1.5-rc.2",
|
|
162
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2",
|
|
163
|
+
"@deepseek-ai/dsh-tools": "0.1.5-rc.2",
|
|
164
|
+
"@deepseek-ai/dsh-workflow": "0.1.5-rc.2",
|
|
160
165
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
161
166
|
"@eslint/js": "^9.30.0",
|
|
162
167
|
"@types/node": "^22.15.0",
|