dsh-memento 0.5.12 → 0.5.13
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 +16 -0
- package/README-es.md +21 -7
- package/README-hi.md +22 -8
- package/README-pt.md +21 -7
- package/README-zh.md +21 -7
- package/README.md +20 -7
- package/client/client.js +204 -19
- package/client/globals.d.ts +27 -0
- package/index.mjs +113 -38
- package/package.json +14 -7
- package/types.d.ts +8 -6
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.5.13] - 2026-09-18
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- The host checkout's type face is now a real second ruler instead of a duplicate command. `tsconfig.check.json` resolves every `@deepseek-ai/*` import through `paths` into the built `lib/types` of a local `D:\deepseek-harness` checkout (currently `dsh-v0.1.6-alpha.2`), while `tsconfig.check.ci.json` keeps resolving the pinned published line from `node_modules`. Measured counterexamples on this machine: a neutral type error fails both rulers (1/1), an alpha.2-only member (`SessionMessageProjection`) passes the checkout ruler and fails the published one (0/1), and a structural session passed into a class-typed approval seam does the opposite (1/0). `npm run typecheck` runs it through `scripts/typecheck-checkout.mjs`, which prints "not verifiable" and exits 0 when the checkout is absent (CI runners), so the runner never gets a permanently red step.
|
|
13
|
+
- `client/client.js` is now inside a type gate of its own: `tsconfig.check.client.json` (DOM lib) plus a new `check:client` script, both wired into `ci.yml` alongside the other two rulers. The browser half previously had no type evidence at all (a same-named `client/client.d.ts` subpath anchor made TypeScript skip the runtime file); 66 `checkJs` findings were resolved with JSDoc annotations only.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- The session audit gate reports itself in three states (`'appended' | 'skipped-unknown-type' | 'no-session'`) and warns exactly once per process on the first skip. `/memory audit` now appends a line naming the gap: the session-log side of the audit is not written, because the harness does not know the `memory/*` session event types and appending them would make the session unloadable. The notice disappears on its own once the host knows `memory/added`. The gate stays adaptive; appending is never changed to a bare call.
|
|
18
|
+
- `retrieval.vector` hot swaps are transactional: the new retriever is built before the old one is unregistered, so a failure can no longer leave `vector` configured with nothing registered. A failed swap leaves an `settings-swap-failed` audit row, reverts the field to the value that actually took effect, and is retried on the next change of that value. The self-held retriever disposer is also cleared when the fiber unloads, so a late settings callback cannot call a stale disposer twice.
|
|
19
|
+
|
|
20
|
+
### Docs
|
|
21
|
+
|
|
22
|
+
- `types.d.ts` states the session-event contract as "vocabulary present, write channel absent" and lists the four host lines the gate was re-checked against (0.1.5-rc.6, 0.1.2-rc.1, 0.1.3-alpha.1, 0.1.6-alpha.2).
|
|
23
|
+
|
|
8
24
|
## [0.5.12] - 2026-09-12
|
|
9
25
|
|
|
10
26
|
### Changed
|
package/README-es.md
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
**Memoria entre sesiones acotada, por capas, con puerta de aprobación y auditable para DeepSeek Harness.**
|
|
7
7
|
|
|
8
|
-
*Una costura tipada `ctx.memory`, una puerta de aprobación de escritura que ninguna ruta del modelo puede eludir y
|
|
8
|
+
*Una costura tipada `ctx.memory`, una puerta de aprobación de escritura que ninguna ruta del modelo puede eludir y una auditoría reconstruible — desde el par de aprobación más la tabla de auditoría del plugin, con la brecha del registro de sesión dicha en voz alta.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-memento)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Surface | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (revisado el 2026-09-18): sigue sin haber superficie de registro de eventos para plugins — `KNOWN_SESSION_EVENT_TYPES` no incluye `memory/*` y el tercer argumento de `Session.append` solo lleva un `SurfaceIntent` para tipos de superficie, así que la puerta de auditoría sigue siendo adaptativa y se salta igual (ahora lo dice una vez por proceso y en `/memory audit`). El rango de peers conserva las líneas `0.1.2-rc.1`, `0.1.5-alpha.1` y `0.1.6-0`. La evidencia de tipos viene de tres caras: los tipos ya compilados del checkout local, la línea publicada fijada en `node_modules` y la mitad de navegador bajo una lib DOM. |
|
|
30
31
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
31
32
|
| Platforms | Windows / macOS / Linux (solo host; sin código nativo, sin red) |
|
|
32
33
|
| Model | Cualquiera |
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
- **La puerta no se puede eludir.** Toda ruta de escritura (`add` / `replace` / `remove` / `seed`) se fuerza a través de la cascada de aprobación dentro del servicio, no en la capa de herramientas. `writePolicy: ask | auto | off` es configuración invisible para el modelo; `replace` / `remove` / `consolidate` llevan el texto completo de las entradas que cambian en el payload de aprobación, y una escritura denegada deja igualmente una fila de auditoría `*-denied`.
|
|
39
40
|
- **Visible para el modelo ⟺ registrado.** La instantánea inyectada llega textualmente a `system/message`; cada escritura es reconstruible a partir de `approval/asked` + `approval/decided` + la propia tabla de auditoría del plugin.
|
|
40
41
|
- **Acotada y honesta.** Presupuestos estrictos de caracteres por pista y por capa (por defecto usuario 2000 / agente 4000). Un almacén lleno falla con un error estructurado (uso + límite): nunca se trunca, nunca se compacta automáticamente.
|
|
42
|
+
- **La brecha de auditoría es visible.** `/memory audit` lista la tabla de auditoría del plugin y añade una línea cuando el lado del registro de sesión no se escribe: este host no conoce los tipos de evento `memory/*`, y añadir tipos desconocidos dejaría la sesión ilegible, así que las escrituras se auditan con `approval/asked` + `approval/decided` y la tabla del plugin. La puerta es adaptativa: la línea desaparece sola cuando el host conoce esos tipos.
|
|
41
43
|
|
|
42
44
|
Dos pistas × dos capas × clave por agente: una pista `user` (hechos sobre el usuario) y una pista `agent` (hechos de entorno y convenciones), cada una dividida en capas `user-global` y `workspace`, aisladas por `agentPreset`. La instantánea se congela una vez por sesión en el primer ensamblado del prompt y nunca cambia a mitad de sesión.
|
|
43
45
|
|
|
@@ -185,7 +187,7 @@ El nombre es **`dsh-memento`** (publicado en npm y GitHub). No `dsh-recall` (con
|
|
|
185
187
|
|
|
186
188
|
- **Permissions**: el manifiesto de workshop declara `harness:tool`, `filesystem:read`, `filesystem:write` y `network:none` / `subprocess:none` / `shell:none` / `python:none` / `credentials:none`. La aprobación de escritura usa la costura oficial de aprobación.
|
|
187
189
|
- **Data**: base de datos SQLite local (`0600`), cero red, cero credenciales.
|
|
188
|
-
- **Session log**: la completitud de auditoría proviene del par de aprobación (`approval/asked` + `approval/decided`) más la tabla de auditoría del plugin
|
|
190
|
+
- **Session log**: la completitud de auditoría proviene del par de aprobación (`approval/asked` + `approval/decided`) más la tabla de auditoría del plugin; la brecha del lado del registro de sesión se declara en `/memory audit` y desaparece cuando el host registra `memory/*`.
|
|
189
191
|
|
|
190
192
|
## Security boundaries
|
|
191
193
|
|
|
@@ -218,10 +220,12 @@ Y las partes deliberadamente rechazadas: la auto-resumación oculta hacia estado
|
|
|
218
220
|
|
|
219
221
|
```sh
|
|
220
222
|
npm install # node ^22.19 || >=24
|
|
221
|
-
npm test # node --test:
|
|
223
|
+
npm test # node --test: 187 pruebas
|
|
222
224
|
npm run lint # oxlint
|
|
223
225
|
npm run test:conformance # dsh-memory-protocol v1 conformance suite
|
|
224
|
-
npm run typecheck #
|
|
226
|
+
npm run typecheck # cara host × checkout local D:\deepseek-harness (imprime «no verificable» y sale 0 sin checkout)
|
|
227
|
+
npm run typecheck:ci # cara host × línea publicada fijada en node_modules
|
|
228
|
+
npm run check:client # mitad de navegador (lib DOM)
|
|
225
229
|
npm run check:coverage # line-coverage gate
|
|
226
230
|
npm run check:readmes # five-language README consistency gate
|
|
227
231
|
npm run verify:self-contained # reject out-of-repo dependency specs
|
|
@@ -240,7 +244,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
240
244
|
|
|
241
245
|
## PerryLink DSH Plugin Family
|
|
242
246
|
|
|
243
|
-
Este proyecto es uno de los [
|
|
247
|
+
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:
|
|
244
248
|
|
|
245
249
|
| Plugin | One-liner |
|
|
246
250
|
|---|---|
|
|
@@ -269,6 +273,7 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
269
273
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
|
|
270
274
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Inyector de directivas personales con interruptor en la barra superior (edición framework) |
|
|
271
275
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
|
|
276
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
272
277
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Puente multicanal de aprobación/preguntas: WeChat/Telegram/Feishu, consola de sesión |
|
|
273
278
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
|
|
274
279
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
|
|
@@ -279,7 +284,16 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
279
284
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
|
|
280
285
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Puente de tareas TickTick/Dida365: panel de cabecera de sesión + 11 herramientas |
|
|
281
286
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
|
|
282
|
-
| **[dsh-wechat](https://github.com/
|
|
287
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
|
|
288
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
289
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
290
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
291
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
292
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
293
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
294
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
295
|
+
| **[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 | |
|
|
296
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
283
297
|
|
|
284
298
|
## License
|
|
285
299
|
|
package/README-hi.md
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
**DeepSeek Harness के लिए परिबद्ध, स्तरित, अनुमोदन-द्वारी, लेखा-परीक्षण-योग्य क्रॉस-सेशन मेमोरी।**
|
|
7
7
|
|
|
8
|
-
*एक टाइप्ड `ctx.memory` सीम, एक
|
|
8
|
+
*एक टाइप्ड `ctx.memory` सीम, एक राइट-अनुमोदन द्वार जिसे मॉडल का कोई रास्ता बायपास नहीं कर सकता, और एक पुनर्निर्मेय ऑडिट — अनुमोदन जोड़ी और प्लगइन की अपनी ऑडिट तालिका से, सेशन लॉग की कमी को खुलकर बताते हुए।*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-memento)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Surface | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (2026-09-18 को पुनः जाँचा): प्लगइन इवेंट पंजीकरण सतह अब भी नहीं है — `KNOWN_SESSION_EVENT_TYPES` में `memory/*` नहीं है, और `Session.append` का तीसरा तर्क केवल सरफ़ेस-योग्य प्रकारों के लिए `SurfaceIntent` ले जाता है, इसलिए ऑडिट द्वार अनुकूली रहता है और पहले जैसे छोड़ देता है (अब यह प्रति प्रोसेस एक बार और `/memory audit` में बताता है)। peer रेंज `0.1.2-rc.1`, `0.1.5-alpha.1` और `0.1.6-0` पंक्तियाँ बनाए रखती है। टाइप प्रमाण तीन फ़ेस से आता है: स्थानीय checkout के बने टाइप, `node_modules` में पिन की गई प्रकाशित लाइन, और DOM लाइब्रेरी के अंतर्गत ब्राउज़र आधा। |
|
|
30
31
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
31
32
|
| Platforms | Windows / macOS / Linux (केवल host; कोई नेटिव कोड नहीं, कोई नेटवर्क नहीं) |
|
|
32
33
|
| Model | कोई भी |
|
|
@@ -37,7 +38,8 @@
|
|
|
37
38
|
|
|
38
39
|
- **अनुमोदन द्वार को टाला नहीं जा सकता।** हर लेखन पथ (`add` / `replace` / `remove` / `seed`) सेवा के भीतर अनुमोदन वॉटरफ़ॉल से होकर गुज़रता है, टूल परत से नहीं। `writePolicy: ask | auto | off` मॉडल के लिए अदृश्य विन्यास है; `replace` / `remove` / `consolidate` अनुमोदन पेलोड में बदली जाने वाली प्रविष्टियों का पूरा पाठ ले जाते हैं, और अस्वीकृत लेखन भी एक `*-denied` ऑडिट पंक्ति छोड़ता है।
|
|
39
40
|
- **मॉडल-दृश्य ⟺ लॉग किया गया।** इंजेक्ट किया गया स्नैपशॉट `system/message` में शब्दशः पहुँचता है; हर लेखन `approval/asked` + `approval/decided` + प्लगइन की अपनी ऑडिट तालिका से पुनर्निर्माण-योग्य है।
|
|
40
|
-
-
|
|
41
|
+
- **सीमित और ईमानदार।** प्रति ट्रैक/परत कड़े कैरेक्टर बजट (डिफ़ॉल्ट user 2000 / agent 4000)। भरा हुआ स्टोर संरचित त्रुटि देता है (उपयोग + सीमा) — कभी काटता नहीं, कभी स्वतः संकुचित नहीं करता।
|
|
42
|
+
- **ऑडिट की कमी दिखती है।** `/memory audit` प्लगइन की ऑडिट तालिका दिखाता है और जब सेशन लॉग वाला पक्ष नहीं लिखा जाता तो एक पंक्ति जोड़ता है: यह होस्ट `memory/*` सेशन इवेंट प्रकार नहीं जानता, और अज्ञात प्रकार जोड़ने से वह सेशन दोबारा लोड ही नहीं होगा, इसलिए लेख `approval/asked` + `approval/decided` और प्लगइन की तालिका से ऑडिट होते हैं। द्वार अनुकूली है — होस्ट इन प्रकारों को जानते ही यह पंक्ति स्वयं हट जाती है।
|
|
41
43
|
|
|
42
44
|
दो ट्रैक × दो परतें × प्रति-एजेंट कुंजी: एक `user` ट्रैक (उपयोगकर्ता के बारे में तथ्य) और एक `agent` ट्रैक (पर्यावरण तथ्य और परंपराएँ), प्रत्येक `user-global` और `workspace` परतों में बँटा, `agentPreset` के अनुसार पृथक। स्नैपशॉट पहले प्रॉम्प्ट संयोजन पर प्रति-सत्र एक बार फ़्रीज़ होता है और सत्र के बीच कभी नहीं बदलता।
|
|
43
45
|
|
|
@@ -185,7 +187,7 @@ Claude Desktop (`claude_desktop_config.json`) उदाहरण:
|
|
|
185
187
|
|
|
186
188
|
- **Permissions**: workshop मैनिफ़ेस्ट `harness:tool`, `filesystem:read`, `filesystem:write` और `network:none` / `subprocess:none` / `shell:none` / `python:none` / `credentials:none` घोषित करता है। लेखन अनुमोदन आधिकारिक अनुमोदन सीम पर चलता है।
|
|
187
189
|
- **Data**: स्थानीय SQLite डेटाबेस (`0600`), शून्य नेटवर्क, शून्य क्रेडेंशियल।
|
|
188
|
-
- **Session log**: ऑडिट पूर्णता अनुमोदन जोड़ी (`approval/asked` + `approval/decided`) और प्लगइन की अपनी ऑडिट तालिका से आती है।
|
|
190
|
+
- **Session log**: ऑडिट पूर्णता अनुमोदन जोड़ी (`approval/asked` + `approval/decided`) और प्लगइन की अपनी ऑडिट तालिका से आती है; सेशन लॉग वाली कमी `/memory audit` में घोषित होती है और होस्ट के `memory/*` दर्ज करते ही हट जाती है।
|
|
189
191
|
|
|
190
192
|
## Security boundaries
|
|
191
193
|
|
|
@@ -218,10 +220,12 @@ Claude Desktop (`claude_desktop_config.json`) उदाहरण:
|
|
|
218
220
|
|
|
219
221
|
```sh
|
|
220
222
|
npm install # node ^22.19 || >=24
|
|
221
|
-
npm test # node --test:
|
|
223
|
+
npm test # node --test: 187 टेस्ट
|
|
222
224
|
npm run lint # oxlint
|
|
223
225
|
npm run test:conformance # dsh-memory-protocol v1 conformance suite
|
|
224
|
-
npm run typecheck #
|
|
226
|
+
npm run typecheck # होस्ट फ़ेस × स्थानीय D:\deepseek-harness checkout (checkout न हो तो «सत्यापन असंभव» छापकर exit 0)
|
|
227
|
+
npm run typecheck:ci # होस्ट फ़ेस × node_modules में पिन की गई प्रकाशित लाइन
|
|
228
|
+
npm run check:client # ब्राउज़र आधा (DOM लाइब्रेरी) टाइप गेट
|
|
225
229
|
npm run check:coverage # line-coverage gate
|
|
226
230
|
npm run check:readmes # five-language README consistency gate
|
|
227
231
|
npm run verify:self-contained # reject out-of-repo dependency specs
|
|
@@ -240,7 +244,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
240
244
|
|
|
241
245
|
## PerryLink DSH Plugin Family
|
|
242
246
|
|
|
243
|
-
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [
|
|
247
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
244
248
|
|
|
245
249
|
| Plugin | One-liner |
|
|
246
250
|
|---|---|
|
|
@@ -269,6 +273,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
269
273
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
|
|
270
274
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | शीर्ष-बार टॉगल के साथ व्यक्तिगत निर्देश इंजेक्टर (फ्रेमवर्क संस्करण) |
|
|
271
275
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
|
|
276
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
272
277
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | मल्टी-चैनल अनुमोदन/प्रश्न ब्रिज: WeChat/Telegram/Feishu, सत्र कंसोल |
|
|
273
278
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
|
|
274
279
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
|
|
@@ -279,7 +284,16 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
279
284
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
|
|
280
285
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 कार्य ब्रिज: सत्र-हेडर पैनल + 11 टूल |
|
|
281
286
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
|
|
282
|
-
| **[dsh-wechat](https://github.com/
|
|
287
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
|
|
288
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
289
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
290
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
291
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
292
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
293
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
294
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
295
|
+
| **[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 | |
|
|
296
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
283
297
|
|
|
284
298
|
## License
|
|
285
299
|
|
package/README-pt.md
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
**Memória entre sessões limitada, em camadas, com porta de aprovação e auditável para o DeepSeek Harness.**
|
|
7
7
|
|
|
8
|
-
*Uma costura tipada `ctx.memory`, uma porta de aprovação de escrita que nenhum caminho do modelo pode contornar e
|
|
8
|
+
*Uma costura tipada `ctx.memory`, uma porta de aprovação de escrita que nenhum caminho do modelo pode contornar e uma auditoria reconstruível — do par de aprovação mais a tabela de auditoria do plugin, com a lacuna do log de sessão dita em voz alta.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-memento)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Surface | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (revisado em 2026-09-18): ainda não há superfície de registro de eventos para plugins — `KNOWN_SESSION_EVENT_TYPES` não inclui `memory/*` e o terceiro argumento de `Session.append` só carrega um `SurfaceIntent` para tipos de superfície, então a porta de auditoria continua adaptativa e pula como antes (agora diz isso uma vez por processo e em `/memory audit`). O intervalo de peers mantém as linhas `0.1.2-rc.1`, `0.1.5-alpha.1` e `0.1.6-0`. A evidência de tipos vem de três faces: os tipos já compilados do checkout local, a linha publicada fixada em `node_modules` e a metade de navegador sob uma lib DOM. |
|
|
30
31
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
31
32
|
| Platforms | Windows / macOS / Linux (somente host; sem código nativo, sem rede) |
|
|
32
33
|
| Model | Qualquer |
|
|
@@ -38,6 +39,7 @@ O `dsh-memento` é uma costura de capacidade, não outro armazém: um serviço t
|
|
|
38
39
|
- **A porta não pode ser contornada.** Todo caminho de escrita (`add` / `replace` / `remove` / `seed`) passa pela cascata de aprovação dentro do serviço, não na camada de ferramentas. `writePolicy: ask | auto | off` é configuração invisível para o modelo; `replace` / `remove` / `consolidate` carregam o texto completo das entradas que alteram no payload de aprovação, e uma escrita negada ainda gera uma linha de auditoria `*-denied`.
|
|
39
40
|
- **Visível para o modelo ⟺ registrado.** O snapshot injetado chega textualmente a `system/message`; toda escrita é reconstruível a partir de `approval/asked` + `approval/decided` + a própria tabela de auditoria do plugin.
|
|
40
41
|
- **Limitado e honesto.** Orçamentos rígidos de caracteres por trilha e por camada (padrão usuário 2000 / agente 4000). Um armazém cheio falha com erro estruturado (uso + limite) — nunca trunca, nunca compacta automaticamente.
|
|
42
|
+
- **A lacuna de auditoria é visível.** `/memory audit` lista a tabela de auditoria do plugin e acrescenta uma linha quando o lado do log de sessão não é escrito: este host não conhece os tipos de evento `memory/*`, e acrescentar tipos desconhecidos deixaria a sessão ilegível, então as escritas são auditadas por `approval/asked` + `approval/decided` e pela tabela do plugin. A porta é adaptativa: a linha desaparece sozinha quando o host conhece esses tipos.
|
|
41
43
|
|
|
42
44
|
Duas trilhas × duas camadas × chave por agente: uma trilha `user` (fatos sobre o usuário) e uma trilha `agent` (fatos de ambiente e convenções), cada uma dividida em camadas `user-global` e `workspace`, isoladas por `agentPreset`. O snapshot é congelado uma vez por sessão na primeira montagem do prompt e nunca muda no meio da sessão.
|
|
43
45
|
|
|
@@ -185,7 +187,7 @@ O `dsh-memento` é o ensaio comunitário do protocolo de memória DSH — uma fo
|
|
|
185
187
|
|
|
186
188
|
- **Permissions**: o manifesto de workshop declara `harness:tool`, `filesystem:read`, `filesystem:write` e `network:none` / `subprocess:none` / `shell:none` / `python:none` / `credentials:none`. A aprovação de escrita usa a costura oficial de aprovação.
|
|
187
189
|
- **Data**: banco de dados SQLite local (`0600`), zero rede, zero credenciais.
|
|
188
|
-
- **Session log**: a completude da auditoria vem do par de aprovação (`approval/asked` + `approval/decided`) mais a tabela de auditoria do plugin
|
|
190
|
+
- **Session log**: a completude da auditoria vem do par de aprovação (`approval/asked` + `approval/decided`) mais a tabela de auditoria do plugin; a lacuna do lado do log de sessão é declarada em `/memory audit` e desaparece quando o host registra `memory/*`.
|
|
189
191
|
|
|
190
192
|
## Security boundaries
|
|
191
193
|
|
|
@@ -218,10 +220,12 @@ E as partes deliberadamente recusadas: a auto-resumização oculta em estado pri
|
|
|
218
220
|
|
|
219
221
|
```sh
|
|
220
222
|
npm install # node ^22.19 || >=24
|
|
221
|
-
npm test # node --test:
|
|
223
|
+
npm test # node --test: 187 testes
|
|
222
224
|
npm run lint # oxlint
|
|
223
225
|
npm run test:conformance # dsh-memory-protocol v1 conformance suite
|
|
224
|
-
npm run typecheck #
|
|
226
|
+
npm run typecheck # face host × checkout local D:\deepseek-harness (imprime «não verificável» e sai 0 sem checkout)
|
|
227
|
+
npm run typecheck:ci # face host × linha publicada fixada em node_modules
|
|
228
|
+
npm run check:client # metade de navegador (lib DOM)
|
|
225
229
|
npm run check:coverage # line-coverage gate
|
|
226
230
|
npm run check:readmes # five-language README consistency gate
|
|
227
231
|
npm run verify:self-contained # reject out-of-repo dependency specs
|
|
@@ -240,7 +244,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
240
244
|
|
|
241
245
|
## PerryLink DSH Plugin Family
|
|
242
246
|
|
|
243
|
-
Este projeto é um dos [
|
|
247
|
+
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:
|
|
244
248
|
|
|
245
249
|
| Plugin | One-liner |
|
|
246
250
|
|---|---|
|
|
@@ -269,6 +273,7 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
269
273
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
270
274
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
|
|
271
275
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
|
|
276
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
272
277
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Ponte multicanal de aprovação/perguntas: WeChat/Telegram/Feishu, console de sessão |
|
|
273
278
|
| **[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 | |
|
|
274
279
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
@@ -279,7 +284,16 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
279
284
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
280
285
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
|
|
281
286
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
|
|
282
|
-
| **[dsh-wechat](https://github.com/
|
|
287
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
|
|
288
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
289
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
290
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
291
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
292
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
293
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
294
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
295
|
+
| **[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 | |
|
|
296
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
283
297
|
|
|
284
298
|
## License
|
|
285
299
|
|
package/README-zh.md
CHANGED
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
**给 DeepSeek Harness 补上有界、分层、带审批门、可审计的跨会话记忆。**
|
|
7
7
|
|
|
8
|
-
*一个类型安全的 `ctx.memory`
|
|
8
|
+
*一个类型安全的 `ctx.memory` 接缝、模型绕不过去的写入审批门,以及可重建的审计链——来自审批对加插件自有审计表,并把会话日志侧的缺口说出来。*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-memento)
|
|
11
12
|
[](https://github.com/topics/dsh-plugin)
|
|
12
13
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
13
14
|
[](#)
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
|
|
27
28
|
| Surface | Status |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`(2026-09-18 复核):仍无插件事件注册面——`KNOWN_SESSION_EVENT_TYPES` 不含 `memory/*`,且 `Session.append` 第三参只承载 surface 类型的 `SurfaceIntent`,故审计门保持自适应、行为不变(现在会在进程内告警一次,并在 `/memory audit` 输出里明示缺口)。peer 区间保留 `0.1.2-rc.1`、`0.1.5-alpha.1`、`0.1.6-0` 三条线。类型证据来自三个面:本机 checkout 的已构建类型、`node_modules` 里钉住的已发布线、以及 DOM 库下的浏览器半侧。 |
|
|
30
31
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
31
32
|
| Platforms | Windows / macOS / Linux(纯 host;无原生代码、无网络) |
|
|
32
33
|
| Model | 任意 |
|
|
@@ -38,6 +39,7 @@
|
|
|
38
39
|
- **审批门不可绕过。** 每条写路径(`add` / `replace` / `remove` / `seed`)都被强制经过服务内部的审批 waterfall,而非工具层。`writePolicy: ask | auto | off` 是模型看不见的配置;`replace` / `remove` / `consolidate` 的审批载荷携带将被改动条目的全文,被拒的写同样落一条 `*-denied` 审计行。
|
|
39
40
|
- **模型可见 ⟺ 已记录。** 注入的快照逐字进入 `system/message`;每次写都能从 `approval/asked` + `approval/decided` + 插件自有审计表重建。
|
|
40
41
|
- **有界且诚实。** 每轨每层硬字符预算(默认 user 2000 / agent 4000)。写满返回结构化错误(用量 + 上限)——绝不截断、绝不自动压缩。
|
|
42
|
+
- **审计缺口可见。** `/memory audit` 列出插件审计表,并在会话日志侧未落盘时附一行说明:本宿主不认识 `memory/*` 会话事件类型,而 append 未知类型会让该会话无法再加载,因此写入的审计由 `approval/asked` + `approval/decided` 与插件审计表承担。该提示随门自适应——宿主收录这些类型后自行消失。
|
|
41
43
|
|
|
42
44
|
两条轨道 × 两个层级 × 按 agent 隔离:`user` 轨(关于用户的事实)与 `agent` 轨(环境事实与约定),各自再分为 `user-global` 与 `workspace` 层,并按 `agentPreset` 隔离。快照在会话首次组装提示时冻结一次,会话中途不再变化。
|
|
43
45
|
|
|
@@ -185,7 +187,7 @@ Claude Desktop(`claude_desktop_config.json`)配置示例:
|
|
|
185
187
|
|
|
186
188
|
- **Permissions**:workshop 清单声明 `harness:tool`、`filesystem:read`、`filesystem:write`,以及 `network:none` / `subprocess:none` / `shell:none` / `python:none` / `credentials:none`。写审批走官方审批接缝。
|
|
187
189
|
- **Data**:本地 SQLite 数据库(`0600`),零网络、零凭据。
|
|
188
|
-
- **Session log**:审计完整性来自审批对(`approval/asked` + `approval/decided
|
|
190
|
+
- **Session log**:审计完整性来自审批对(`approval/asked` + `approval/decided`)加插件自有审计表;会话日志侧的缺口由 `/memory audit` 明示,宿主收录 `memory/*` 后自动消失。
|
|
189
191
|
|
|
190
192
|
## Security boundaries
|
|
191
193
|
|
|
@@ -218,10 +220,12 @@ Claude Desktop(`claude_desktop_config.json`)配置示例:
|
|
|
218
220
|
|
|
219
221
|
```sh
|
|
220
222
|
npm install # node ^22.19 || >=24
|
|
221
|
-
npm test # node --test:
|
|
223
|
+
npm test # node --test: 187 tests
|
|
222
224
|
npm run lint # oxlint
|
|
223
225
|
npm run test:conformance # dsh-memory-protocol v1 conformance suite
|
|
224
|
-
npm run typecheck #
|
|
226
|
+
npm run typecheck # 宿主面 × 本机 D:\deepseek-harness checkout(无 checkout 时打印「不可验证」并 exit 0)
|
|
227
|
+
npm run typecheck:ci # 宿主面 × node_modules 里钉住的已发布线
|
|
228
|
+
npm run check:client # 浏览器半侧(DOM 库)类型门
|
|
225
229
|
npm run check:coverage # line-coverage gate
|
|
226
230
|
npm run check:readmes # five-language README consistency gate
|
|
227
231
|
npm run verify:self-contained # reject out-of-repo dependency specs
|
|
@@ -240,7 +244,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
240
244
|
|
|
241
245
|
## PerryLink DSH Plugin Family
|
|
242
246
|
|
|
243
|
-
这是 [PerryLink](https://github.com/PerryLink) 维护的 [
|
|
247
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
244
248
|
|
|
245
249
|
| Plugin | One-liner |
|
|
246
250
|
|---|---|
|
|
@@ -269,6 +273,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
269
273
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
270
274
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
|
|
271
275
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
276
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
272
277
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
|
|
273
278
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
274
279
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
@@ -279,7 +284,16 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
279
284
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
280
285
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
|
|
281
286
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
282
|
-
| **[dsh-wechat](https://github.com/
|
|
287
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
|
|
288
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
289
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
290
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
291
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
292
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
293
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
294
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
295
|
+
| **[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 | |
|
|
296
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
283
297
|
|
|
284
298
|
## License
|
|
285
299
|
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**Bounded, layered, approval-gated, auditable cross-session memory for DeepSeek Harness.**
|
|
8
8
|
|
|
9
|
-
*A typed `ctx.memory` seam, a write-approval gate no model path can bypass, and audit
|
|
9
|
+
*A typed `ctx.memory` seam, a write-approval gate no model path can bypass, and an audit trail you can rebuild — from the approval pair plus the plugin's own audit table, with the session-log gap named out loud.*
|
|
10
10
|
|
|
11
11
|
[](LICENSE)
|
|
12
12
|
[](https://github.com/topics/dsh-plugin)
|
|
@@ -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` (re-checked 2026-09-18): still no plugin event-registration surface — `KNOWN_SESSION_EVENT_TYPES` does not carry `memory/*`, and `Session.append`'s third argument only carries a `SurfaceIntent` for surface-eligible types, so the audit gate stays adaptive and skips as before (it now says so once per process and in `/memory audit`). Peer range keeps the `0.1.2-rc.1`, `0.1.5-alpha.1` and `0.1.6-0` lines. Type evidence comes from three faces: the local checkout's built types, the pinned published line in `node_modules`, and the browser half under a DOM lib. |
|
|
31
31
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
32
32
|
| Platforms | Windows / macOS / Linux (pure host; no native code, no network) |
|
|
33
33
|
| Model | Any |
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
- **The approval gate cannot be bypassed.** Every write path (`add` / `replace` / `remove` / `seed`) is forced through the approval waterfall inside the service, not in the tool layer. `writePolicy: ask | auto | off` is model-invisible configuration; `replace` / `remove` / `consolidate` carry the full text of the entries they change in the approval payload, and a denied write still lands a `*-denied` audit row.
|
|
40
40
|
- **Model-visible ⟺ logged.** The injected snapshot lands verbatim in `system/message`; every write is reconstructable from `approval/asked` + `approval/decided` + the plugin's own audit table.
|
|
41
41
|
- **Bounded and honest.** Hard per-track/per-layer character budgets (default user 2000 / agent 4000). A full store fails with a structured error (usage + limit) — never truncated, never auto-compacted.
|
|
42
|
+
- **The audit gap is visible.** `/memory audit` lists the plugin audit table and appends one line when the session-log side is not written: this harness does not know the `memory/*` session event types, and appending unknown types would make the session unloadable, so writes are audited through `approval/asked` + `approval/decided` and the plugin's table instead. The gate is adaptive — the line disappears on its own once the host knows those types.
|
|
42
43
|
|
|
43
44
|
Two tracks × two layers × per-agent key: a `user` track (facts about the user) and an `agent` track (environment facts and conventions), each split into `user-global` and `workspace` layers, isolated per `agentPreset`. The snapshot is frozen once per session at first prompt assembly and never changes mid-session.
|
|
44
45
|
|
|
@@ -186,7 +187,7 @@ The name is **`dsh-memento`** (published on npm and GitHub). Not `dsh-recall` (c
|
|
|
186
187
|
|
|
187
188
|
- **Permissions**: declares `harness:tool`, `filesystem:read`, `filesystem:write`, and `network:none` / `subprocess:none` / `shell:none` / `python:none` / `credentials:none` in its workshop manifest. Write approval rides the official approval seam.
|
|
188
189
|
- **Data**: local SQLite database (`0600`), zero network, zero credentials.
|
|
189
|
-
- **Session log**: audit completeness comes from the approval pair (`approval/asked` + `approval/decided`) plus the plugin's own audit table
|
|
190
|
+
- **Session log**: audit completeness comes from the approval pair (`approval/asked` + `approval/decided`) plus the plugin's own audit table; the session-log side of that gap is declared in `/memory audit` and disappears once the host registers `memory/*`.
|
|
190
191
|
|
|
191
192
|
## Security boundaries
|
|
192
193
|
|
|
@@ -219,10 +220,12 @@ And the parts deliberately refused: hidden auto-summarization into model-private
|
|
|
219
220
|
|
|
220
221
|
```sh
|
|
221
222
|
npm install # node ^22.19 || >=24
|
|
222
|
-
npm test # node --test:
|
|
223
|
+
npm test # node --test: 187 tests
|
|
223
224
|
npm run lint # oxlint
|
|
224
225
|
npm run test:conformance # dsh-memory-protocol v1 conformance suite
|
|
225
|
-
npm run typecheck #
|
|
226
|
+
npm run typecheck # host face vs a local D:\deepseek-harness checkout (prints "not verifiable" and exits 0 without one)
|
|
227
|
+
npm run typecheck:ci # host face vs the pinned published line in node_modules
|
|
228
|
+
npm run check:client # browser half (DOM lib) type gate
|
|
226
229
|
npm run check:coverage # line-coverage gate
|
|
227
230
|
npm run check:readmes # five-language README consistency gate
|
|
228
231
|
npm run verify:self-contained # reject out-of-repo dependency specs
|
|
@@ -241,7 +244,7 @@ npm run verify:artifacts # artifact presence + syntax + import
|
|
|
241
244
|
|
|
242
245
|
## PerryLink DSH Plugin Family
|
|
243
246
|
|
|
244
|
-
This project is one of the [
|
|
247
|
+
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:
|
|
245
248
|
|
|
246
249
|
| Plugin | One-liner |
|
|
247
250
|
|---|---|
|
|
@@ -270,6 +273,7 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
270
273
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code-style declarative allow/deny/ask permission rules with audit | |
|
|
271
274
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Personal directive injector with top-bar toggle (framework edition) |
|
|
272
275
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | |
|
|
276
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
273
277
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Multi-channel approval/question bridge: WeChat/Telegram/Feishu, session console |
|
|
274
278
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Verifiable research-report engine: content-addressed evidence ledger and sealed versions | |
|
|
275
279
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Multi-dimensional quality scoring for DeepSeek Harness plugins. | |
|
|
@@ -280,7 +284,16 @@ This project is one of the [37 DeepSeek Harness plugins](https://github.com/Perr
|
|
|
280
284
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Isolated install-and-smoke test drives for DeepSeek Harness plugins. | |
|
|
281
285
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 task bridge: session-header panel + 11 tools |
|
|
282
286
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Vendor parameter translation and deterministic JSON repair for DeepSeek Harness. | |
|
|
283
|
-
| **[dsh-wechat](https://github.com/
|
|
287
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH bridge (Tencent iLink bot): text/image/file/voice, approvals in chat |
|
|
288
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
289
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
290
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
291
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
292
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
293
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
294
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
295
|
+
| **[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 | |
|
|
296
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
284
297
|
|
|
285
298
|
### Install from the DSH Desktop Market
|
|
286
299
|
|