dsh-mcp-panel 0.6.14 → 0.6.16
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 +31 -0
- package/README-es.md +25 -8
- package/README-hi.md +25 -8
- package/README-pt.md +25 -8
- package/README-zh.md +25 -8
- package/README.md +29 -9
- package/cordis.patch.yml +5 -0
- package/docs/canary-alpha2-errors.md +28 -0
- package/docs/upstream-proposal.md +9 -0
- package/lib/client.js +787 -437
- package/lib/client.js.map +1 -1
- package/lib/index.js +122 -34
- package/lib/{schemas-D2hn9ib3.js → schemas-Bc0dJzRm.js} +557 -361
- package/lib/typert.host.js +32 -61
- package/lib/types/client/McpPanelTab.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +14 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/remote.d.ts +56 -179
- package/lib/types/client/remote.d.ts.map +1 -1
- package/lib/types/client/styles.d.ts +7 -1
- package/lib/types/client/styles.d.ts.map +1 -1
- package/lib/types/command.d.ts.map +1 -1
- package/lib/types/config.d.ts +8 -0
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/patch.d.ts +7 -6
- package/lib/types/patch.d.ts.map +1 -1
- package/lib/types/service.d.ts +20 -0
- package/lib/types/service.d.ts.map +1 -1
- package/lib/types/trial.d.ts +8 -0
- package/lib/types/trial.d.ts.map +1 -1
- package/lib/types/typert.host.d.ts +56 -179
- package/lib/types/typert.host.d.ts.map +1 -1
- package/lib/types/upstream.d.ts +27 -20
- package/lib/types/upstream.d.ts.map +1 -1
- package/lib/types/wire.d.ts +113 -359
- package/lib/types/wire.d.ts.map +1 -1
- package/package.json +36 -33
- package/src/client/McpPanelTab.tsx +79 -0
- package/src/client/index.ts +18 -4
- package/src/client/locales.ts +20 -4
- package/src/client/styles.ts +46 -8
- package/src/command.ts +8 -4
- package/src/config.ts +20 -0
- package/src/index.ts +8 -1
- package/src/patch.ts +17 -9
- package/src/probe.ts +1 -1
- package/src/service.ts +99 -21
- package/src/trial.ts +32 -6
- package/src/upstream.ts +27 -20
- package/src/wire.ts +33 -61
- package/src/write.ts +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.6.16] - 2026-09-18
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **The approval gate no longer reads the session event log.** `writePatch` decided whether to route a profile write through `ctx.approval` by scanning the session's events for `turn/start`/`turn/end` through the synchronous event-snapshot read, which the 0.1.6 line marks `@deprecated` ("new calls are prohibited"). It now reads the published `agent.status === 'running'`; the approval seam must still be present, so a host without it falls back to the explicit UI confirmation path instead of silently treating the write as pre-approved. Regression tests cover running (asks), idle (never asks), and unbound-agent (never asks).
|
|
10
|
+
|
|
11
|
+
- **The panel's "current session" works again where `SessionListState.current` was removed.** The client read `getSnapshot().current` through a structural cast, which returned `undefined` on the 0.1.6 line and left the panel without a current session; the id is now derived from the per-session retention facts (`retainedBy.mainView > 0`, the upstream `ui-session` pattern), with the legacy field still winning where a host publishes it.
|
|
12
|
+
|
|
13
|
+
- **Panel styles survive a remount.** The stylesheet installer returned an empty disposer when the `<style>` element already existed, so unmounting the first of two live mounts pulled the sheet out from under the survivor and orphaned the node. Installations are now counted: any live install keeps the element, and only the last disposer removes it (idempotent).
|
|
14
|
+
|
|
15
|
+
- **A disposed mount no longer registers into a dead fiber.** Mounting the service opens an await window inside `apply`; the status listener, `/mcp` command and probe tool are now registered only when the fiber survived that await (A02).
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Declare `dsh.manifestVersion: 1` and the canonical three-clause `engines.dsh` (G-3).
|
|
20
|
+
- **Canary duty (this is the family's only canary repo):** the dev/test pins moved to `0.1.6-alpha.2` and both typecheck rulers are green on that face. No new errors surfaced from the raise, so there is no canary warning to forward to the other 31 repositories this round.
|
|
21
|
+
|
|
22
|
+
## [0.6.15] - 2026-09-15
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **Issue #27 — `disable` / `enable` / `edit` emitted `- set:` fragments the loader dialect does not implement (silent no-op).** Both renderers (`renderPatchFragment` and the `/mcp <server> disable|enable` suggestion) now emit the loader's real dialect: `- id: <entryId>` + `name:` + `disabled:` (or a full `config:` block for edits). `appendPatchFragment` reads the file back to confirm the appended block survived, and `writePatch` re-verifies every write against the loader's re-applied state before reporting success — a skipped patch (wrong dialect, a row living in a layer a profile patch cannot reach such as `$DSH_HOME/cordis.patch.yml`, or a name mismatch) now fails honestly instead of reading "written". New config: `writeVerifyEnabled` (default true) and `writeVerifyTimeoutMs` (default 3000).
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- **Read-only Resources browser.** The shipped `@deepseek-ai/dsh-mcp-resources` service now bridges MCP resources upstream; the console feature-detects the service + the three registered shared tools and offers list / templates / URI read per server card through the OFFICIAL tool pipeline (results stay panel-only). `callTool` now accepts the three shared resource tools and injects the requested `server` into their arguments (conflicts fail closed). Capability detection no longer probes the never-shipped `mcpCatalog` face; Prompts stays `available: false` until upstream bridges prompt templates.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- Compatibility baseline raised to `dsh-v0.1.6-alpha.1`: all `@deepseek-ai/dsh-*` dev/test pins and the runtime `dsh-subprocess` pin moved to `0.1.6-alpha.1`; `dshWorkshop.compatibility.dshVersions` gains `0.1.6-alpha.1`; the five-language READMEs now document the id-override CRUD dialect, the Resources browser, the write-verification hardening, and the corrected capabilities wording (Prompts + resource subscriptions pending).
|
|
35
|
+
|
|
5
36
|
## [0.6.14] - 2026-09-12
|
|
6
37
|
|
|
7
38
|
### Changed
|
package/README-es.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Cliente oficial = puente, este plugin = consola: lee el estado por el seam `mcp/status`, escribe solo parches de perfil de solo-anexar y con aprobación.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-mcp-panel)
|
|
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
|
| 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): las dos reglas de typecheck en verde sobre la cara `0.1.6-alpha.2` (este repo es el canario de la familia: no aparecieron errores nuevos), 174 pruebas y la cadena completa de puertas (typecheck / typecheck:ci / test / build / verify / package). La re-verificación de `writePatch` se sostiene en esta línea. Línea base anterior: `dsh-v0.1.6-alpha.1` (verificado el 2026-09-16). |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Plataformas | Web GUI (doble cara: host + navegador) |
|
|
32
33
|
| Modelo | Cualquiera (el panel es de solo lectura; solo la salida de `/mcp` es legible por el modelo) |
|
|
@@ -40,7 +41,8 @@
|
|
|
40
41
|
- **`/mcp <servidor> health`** — sugerencias de autorreparación derivadas (ENOENT → dependencia faltante, ECONNREFUSED, timeouts, 401/403/404, DNS, rate limit, reconexión agotada…); código de salida / stderr etiquetados honestamente como *pendiente de soporte upstream*.
|
|
41
42
|
- **`/mcp <servidor> call <tool> [json]`** — llamada de prueba por el **pipeline oficial de herramientas** (`ctx.tools.execute()`); política de permisos pre-ejecución, aprobación, guards y post-ejecución, todo en vigor.
|
|
42
43
|
- **Ajustes → Plugins → MCP** — tarjetas de estado con insignias, diagnósticos y sondas, más el CRUD de servidores y el banco de pruebas de herramientas.
|
|
43
|
-
- **CRUD de servidores** — formularios de alta/edición/borrado →
|
|
44
|
+
- **CRUD de servidores** — formularios de alta/edición/borrado → `insert` para alta y anulaciones dirigidas por id (`- id:` + `name:` + `disabled:`/`config:`) para edición/borrado → copia al portapapeles o escritura con aprobación, copias de seguridad automáticas y re-verificación contra el loader.
|
|
45
|
+
- **Navegación de Resources** — listado de recursos, listado de plantillas y lecturas de URI de solo lectura mediante las herramientas oficiales `list_mcp_resources` / `list_mcp_resource_templates` / `read_mcp_resource` (puenteadas por el servicio `@deepseek-ai/dsh-mcp-resources`); los resultados se muestran solo en la pestaña, nunca en el contexto del modelo.
|
|
44
46
|
- **Banco de pruebas de herramientas** — servidor → herramienta `mcp__*` → argumentos JSON → resultado JSON canónico + contenido renderizado; limitado por `trialMaxResultChars`; solo panel, nunca contexto del modelo.
|
|
45
47
|
|
|
46
48
|
## Architecture: official client = bridge, this plugin = console
|
|
@@ -78,7 +80,7 @@ La consola **lee** el cliente por su seam de observabilidad `mcp/status` (evento
|
|
|
78
80
|
|---|---|---|
|
|
79
81
|
| Añadir servidor | Editar YAML, cuidar indentación/comillas | Formulario → fragmento de parche → **copiar** o **escribir** (aprobación + copia de seguridad) |
|
|
80
82
|
| Editar servidor | Editar YAML, reiniciar/recarga en caliente | Formulario precargado de la fila en vivo; los secretos sin cambios conservan su valor en el host |
|
|
81
|
-
| Eliminar servidor | Borrar la fila |
|
|
83
|
+
| Eliminar servidor | Borrar la fila | Anulación `- id:` + `disabled: true` (el vocabulario de parches no tiene remove) — re-habilitable |
|
|
82
84
|
| Ver estado | Leer logs | Insignias + reconexiones + último error, en vivo desde `mcp/status` |
|
|
83
85
|
| Probar una herramienta | Pedírselo al modelo | Banco de pruebas → pipeline oficial `ctx.tools.execute()` (permisos y aprobación en vigor) |
|
|
84
86
|
| Diagnosticar fallos | grep de logs | `/mcp <servidor> health` con sugerencias derivadas |
|
|
@@ -132,6 +134,8 @@ Todas las opciones son campos Schemastery `Config` (modificables desde cordis.ym
|
|
|
132
134
|
| `trialTimeoutMs` | `120000` | Plazo del panel por llamada de prueba en ms |
|
|
133
135
|
| `trialMaxResultChars` | `60000` | Tope del payload de resultado de prueba en caracteres |
|
|
134
136
|
| `writeEnabled` | `true` | Interruptor de seguridad: `false` rechaza toda escritura (copiar sigue funcionando) |
|
|
137
|
+
| `writeVerifyEnabled` | `true` | Re-verifica cada escritura contra el estado re-aplicado del loader antes de reportar éxito |
|
|
138
|
+
| `writeVerifyTimeoutMs` | `3000` | Presupuesto de sondeo para la verificación de escritura en ms |
|
|
135
139
|
| `backupCount` | `5` | Copias de `cordis.patch.yml` retenidas por escritura |
|
|
136
140
|
| `catalogEntries` | `[]` | Superposición de usuario para el directorio recomendado: anexa entradas; una entrada con el mismo `id` reemplaza la integrada |
|
|
137
141
|
|
|
@@ -149,7 +153,9 @@ Todas las opciones son campos Schemastery `Config` (modificables desde cordis.ym
|
|
|
149
153
|
|
|
150
154
|
## Resources & Prompts
|
|
151
155
|
|
|
152
|
-
|
|
156
|
+
Resources YA están puenteados upstream: el bundle base monta `@deepseek-ai/dsh-mcp-resources`, el cliente oficial registra el provider de recursos de cada conexión en `ctx.mcpResources`, y ese paquete posee las tres herramientas compartidas (`list_mcp_resources`, `list_mcp_resource_templates`, `read_mcp_resource`). La consola detecta el servicio y las herramientas registradas, y ofrece un navegador de Resources de solo lectura (lista / plantillas / lectura de URI) en cada tarjeta de servidor — cada llamada pasa por el pipeline OFICIAL de herramientas y los resultados nunca entran en el contexto del modelo.
|
|
157
|
+
|
|
158
|
+
Las **plantillas de prompts** y las **suscripciones a recursos** siguen diferidas upstream; el tablero de capacidades marca Prompts **pendiente de soporte upstream**.
|
|
153
159
|
|
|
154
160
|
## Permissions & data
|
|
155
161
|
|
|
@@ -160,14 +166,15 @@ El cliente oficial documenta que *"Tools are the only bridged MCP capability"*
|
|
|
160
166
|
|
|
161
167
|
- **El puente sigue siendo el puente.** Sin cambios de transporte, OAuth o protocolo; una fila mcp-client por servidor, exactamente como a mano.
|
|
162
168
|
- **Sin estado falso.** Los campos de conexión sin observaciones upstream leen `unknown` / `—` con `statusSource: 'derived'`; códigos de salida y stderr nunca se inventan.
|
|
163
|
-
- **Escrituras solo-anexar, con aprobación y respaldo.** La consola nunca reescribe `cordis.patch.yml`; anexa operaciones generadas
|
|
169
|
+
- **Escrituras solo-anexar, con aprobación y respaldo.** La consola nunca reescribe `cordis.patch.yml`; anexa operaciones generadas, conserva las `backupCount` copias más recientes y re-verifica cada escritura contra el estado re-aplicado del loader antes de reportar éxito (un parche omitido nunca se muestra como éxito).
|
|
164
170
|
- **Sin inyección de prompts.** El panel no registra secciones de prompt; su único texto visible al modelo son las dos descripciones de herramienta/comando.
|
|
165
171
|
|
|
166
172
|
## Known limitations
|
|
167
173
|
|
|
168
|
-
- **
|
|
174
|
+
- **Plantillas de prompts y suscripciones a recursos** están pendientes de soporte upstream — el cliente oficial puentea herramientas y recursos, pero no prompts ni suscripciones.
|
|
169
175
|
- **Códigos de salida / stderr** se etiquetan *pendiente de soporte upstream* hasta que el cliente los exponga.
|
|
170
176
|
- **Panel de solo lectura** — la consola nunca falsifica un estado de conexión; los campos no observables leen `unknown` / `-1` / `—`.
|
|
177
|
+
- **Las escrituras se verifican, no se garantizan** — la consola re-verifica cada escritura contra el estado re-aplicado del loader y falla honestamente cuando el loader no la aplicó (p. ej. una fila insertada por `$DSH_HOME/cordis.patch.yml`, que un parche de capa de perfil no puede alcanzar).
|
|
171
178
|
|
|
172
179
|
## Development
|
|
173
180
|
|
|
@@ -189,7 +196,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
189
196
|
|
|
190
197
|
## PerryLink DSH Plugin Family
|
|
191
198
|
|
|
192
|
-
Este proyecto es uno de los [
|
|
199
|
+
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:
|
|
193
200
|
|
|
194
201
|
| Plugin | One-liner |
|
|
195
202
|
|---|---|
|
|
@@ -218,6 +225,7 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
218
225
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
|
|
219
226
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Inyector de directivas personales con interruptor en la barra superior (edición framework) |
|
|
220
227
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
|
|
228
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
221
229
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Puente multicanal de aprobación/preguntas: WeChat/Telegram/Feishu, consola de sesión |
|
|
222
230
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
|
|
223
231
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
|
|
@@ -228,7 +236,16 @@ Este proyecto es uno de los [37 complementos de DeepSeek Harness](https://github
|
|
|
228
236
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
|
|
229
237
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Puente de tareas TickTick/Dida365: panel de cabecera de sesión + 11 herramientas |
|
|
230
238
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
|
|
231
|
-
| **[dsh-wechat](https://github.com/
|
|
239
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Puente WeChat ↔ DSH (bot Tencent iLink): texto/imagen/archivo/voz, aprobaciones en el chat |
|
|
240
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
241
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
242
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
243
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
244
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
245
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
246
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
247
|
+
| **[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 | |
|
|
248
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
232
249
|
|
|
233
250
|
## License
|
|
234
251
|
|
package/README-hi.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*आधिकारिक क्लाइंट = पुल, यह प्लगइन = कंसोल: `mcp/status` seam से स्थिति पढ़ें, केवल जोड़ने वाले, अनुमोदित प्रोफ़ाइल patch लिखें।*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-mcp-panel)
|
|
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
|
| सतह | स्थिति |
|
|
28
29
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
30
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2` (2026-09-18 को सत्यापित): `0.1.6-alpha.2` dev/test फ़ेस पर दोनों typecheck रूलर हरे (यह रेपो परिवार का कैनरी है — कोई नई त्रुटि नहीं आई), 174 टेस्ट, और पूर्ण गेट शृंखला (typecheck / typecheck:ci / test / build / verify / package)। `writePatch` का पुनः-सत्यापन इस लाइन पर मान्य है। पिछली आधार रेखा: `dsh-v0.1.6-alpha.1` (2026-09-16 को सत्यापित)। |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| प्लेटफ़ॉर्म | Web GUI (दोहरा चेहरा: host + browser) |
|
|
32
33
|
| मॉडल | कोई भी (पैनल रीड-ओनली है; केवल `/mcp` आउटपुट मॉडल-पठनीय है) |
|
|
@@ -40,7 +41,8 @@
|
|
|
40
41
|
- **`/mcp <server> health`** — व्युत्पन्न स्व-उपचार सुझाव (ENOENT → अनुपलब्ध निर्भरता, ECONNREFUSED, टाइमआउट, 401/403/404, DNS, दर सीमा, रीकनेक्ट समाप्त…); एग्ज़िट कोड / stderr पूँछ ईमानदारी से *upstream समर्थन की प्रतीक्षा में* चिह्नित।
|
|
41
42
|
- **`/mcp <server> call <tool> [json]`** — **आधिकारिक टूल पाइपलाइन** (`ctx.tools.execute()`) से परीक्षण कॉल; प्री-एग्ज़ीक्यूट अनुमति नीति, अनुमोदन, guards और post-execute सब लागू।
|
|
42
43
|
- **सेटिंग्स → प्लगइन्स → MCP टैब** — बैज, निदान और प्रोब वाले स्थिति कार्ड, साथ में सर्वर CRUD और टूल ट्रायल कंसोल।
|
|
43
|
-
- **सर्वर CRUD** — जोड़/बदल/हटा फ़ॉर्म → `insert
|
|
44
|
+
- **सर्वर CRUD** — जोड़/बदल/हटा फ़ॉर्म → जोड़ने के लिए `insert` और बदलने/हटाने के लिए id-लक्षित ओवरराइड (`- id:` + `name:` + `disabled:`/`config:`) → क्लिपबोर्ड कॉपी या अनुमोदित लेखन, स्वचालित बैकअप और loader के विरुद्ध पुनः सत्यापन के साथ।
|
|
45
|
+
- **Resources ब्राउज़िंग** — आधिकारिक `list_mcp_resources` / `list_mcp_resource_templates` / `read_mcp_resource` टूल से रीड-ओनली संसाधन सूची, टेम्पलेट सूची और URI पठन (`@deepseek-ai/dsh-mcp-resources` सेवा द्वारा जोड़े गए); परिणाम केवल टैब में दिखते हैं, मॉडल संदर्भ में कभी नहीं।
|
|
44
46
|
- **टूल ट्रायल कंसोल** — सर्वर → `mcp__*` टूल → JSON तर्क → कैनोनिकल JSON परिणाम + रेंडर सामग्री; `trialMaxResultChars` से सीमित; केवल पैनल, मॉडल संदर्भ में कभी नहीं।
|
|
45
47
|
|
|
46
48
|
## Architecture: official client = bridge, this plugin = console
|
|
@@ -78,7 +80,7 @@
|
|
|
78
80
|
|---|---|---|
|
|
79
81
|
| सर्वर जोड़ें | YAML संपादित करें, इंडेंट/कोट्स का ध्यान | फ़ॉर्म → patch अंश → **कॉपी** या **लिखें** (अनुमोदन + बैकअप) |
|
|
80
82
|
| सर्वर बदलें | YAML संपादित करें, रीस्टार्ट/हॉट-रीलोड | लाइव पंक्ति से पहले से भरा फ़ॉर्म; बिना बदले सीक्रेट host पर ही रहते हैं |
|
|
81
|
-
| सर्वर हटाएँ | पंक्ति मिटाएँ | `
|
|
83
|
+
| सर्वर हटाएँ | पंक्ति मिटाएँ | `- id:` + `disabled: true` ओवरराइड (patch शब्दावली में remove नहीं) — कभी भी फिर से सक्षम करने योग्य |
|
|
82
84
|
| स्थिति देखें | लॉग पढ़ें | बैज + रीकनेक्ट + अंतिम त्रुटि, `mcp/status` से लाइव |
|
|
83
85
|
| टूल आज़माएँ | मॉडल से कहें | ट्रायल कंसोल → आधिकारिक `ctx.tools.execute()` पाइपलाइन (अनुमतियाँ और अनुमोदन लागू) |
|
|
84
86
|
| विफलताओं का निदान | लॉग grep करें | `/mcp <server> health` व्युत्पन्न सुझावों के साथ |
|
|
@@ -132,6 +134,8 @@ dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
|
|
|
132
134
|
| `trialTimeoutMs` | `120000` | प्रति ट्रायल कॉल पैनल-साइड समय सीमा (ms) |
|
|
133
135
|
| `trialMaxResultChars` | `60000` | ट्रायल परिणाम payload की सीमा (वर्ण) |
|
|
134
136
|
| `writeEnabled` | `true` | कठोर स्विच: `false` हर प्रोफ़ाइल लेखन अस्वीकार करता है (कॉपी फिर भी चलती है) |
|
|
137
|
+
| `writeVerifyEnabled` | `true` | सफलता बताने से पहले हर लेखन को loader के पुनः-लागू अवस्था के विरुद्ध सत्यापित करता है |
|
|
138
|
+
| `writeVerifyTimeoutMs` | `3000` | लेखन सत्यापन के लिए पोलिंग बजट (मि.से.) |
|
|
135
139
|
| `backupCount` | `5` | प्रति लेखन रखे गए `cordis.patch.yml` बैकअप |
|
|
136
140
|
| `catalogEntries` | `[]` | अनुशंसित निर्देशिका के लिए उपयोगकर्ता ओवरले: प्रविष्टियाँ जोड़ता है; समान `id` वाली प्रविष्टि अंतर्निहित को बदल देती है |
|
|
137
141
|
|
|
@@ -149,7 +153,9 @@ dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
|
|
|
149
153
|
|
|
150
154
|
## Resources & Prompts
|
|
151
155
|
|
|
152
|
-
आधिकारिक क्लाइंट
|
|
156
|
+
Resources अब upstream जोड़ चुका है: base bundle `@deepseek-ai/dsh-mcp-resources` माउंट करता है, आधिकारिक क्लाइंट हर कनेक्शन का संसाधन provider `ctx.mcpResources` में पंजीकृत करता है, और वह पैकेज तीन साझा टूल (`list_mcp_resources`, `list_mcp_resource_templates`, `read_mcp_resource`) रखता है। कंसोल सेवा और पंजीकृत टूल को फ़ीचर-डिटेक्ट करता है, और हर सर्वर कार्ड पर रीड-ओनली Resources ब्राउज़र (सूची / टेम्पलेट / URI पठन) देता है — हर कॉल आधिकारिक टूल पाइपलाइन से जाती है और परिणाम मॉडल संदर्भ में कभी नहीं जाते।
|
|
157
|
+
|
|
158
|
+
MCP **prompt टेम्पलेट** और **संसाधन सदस्यताएँ** अभी भी upstream स्थगित हैं; क्षमता बोर्ड Prompts को **upstream समर्थन की प्रतीक्षा में** दर्शाता है।
|
|
153
159
|
|
|
154
160
|
## Permissions & data
|
|
155
161
|
|
|
@@ -160,14 +166,15 @@ dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
|
|
|
160
166
|
|
|
161
167
|
- **पुल पुल ही रहता है।** ट्रांसपोर्ट, OAuth या प्रोटोकॉल में कोई बदलाव नहीं; प्रति सर्वर एक mcp-client पंक्ति, ठीक हाथ से लिखी हुई।
|
|
162
168
|
- **कोई नकली स्थिति नहीं।** बिना upstream अवलोकन वाले कनेक्शन फ़ील्ड `unknown` / `—` और `statusSource: 'derived'` पढ़ते हैं; एग्ज़िट कोड और stderr पूँछ कभी गढ़े नहीं जाते।
|
|
163
|
-
- **लेखन केवल-जोड़ने वाला, अनुमोदित, बैकअप सहित।** कंसोल कभी `cordis.patch.yml` को दोबारा नहीं लिखता; यह जनरेट किए ऑपरेशन जोड़ता
|
|
169
|
+
- **लेखन केवल-जोड़ने वाला, अनुमोदित, बैकअप सहित।** कंसोल कभी `cordis.patch.yml` को दोबारा नहीं लिखता; यह जनरेट किए ऑपरेशन जोड़ता है, नवीनतम `backupCount` बैकअप रखता है, और सफलता बताने से पहले हर लेखन को loader के पुनः-लागू अवस्था के विरुद्ध सत्यापित करता है (छोड़ा गया patch कभी सफल नहीं दिखता)।
|
|
164
170
|
- **कोई प्रॉम्प्ट इंजेक्शन नहीं।** पैनल कोई प्रॉम्प्ट अनुभाग पंजीकृत नहीं करता; मॉडल को दिखने वाला उसका एकमात्र पाठ दो टूल/कमांड विवरण हैं।
|
|
165
171
|
|
|
166
172
|
## Known limitations
|
|
167
173
|
|
|
168
|
-
- **
|
|
174
|
+
- **prompt टेम्पलेट और संसाधन सदस्यताएँ** upstream समर्थन की प्रतीक्षा में — आधिकारिक क्लाइंट टूल और संसाधन जोड़ता है, पर prompts या सदस्यताएँ नहीं।
|
|
169
175
|
- **एग्ज़िट कोड / stderr पूँछ** तब तक *upstream समर्थन की प्रतीक्षा में* चिह्नित रहते हैं जब तक क्लाइंट उन्हें उजागर न करे।
|
|
170
176
|
- **रीड-ओनली पैनल** — कंसोल कभी कनेक्शन स्थिति नहीं गढ़ता; अप्रेक्षणीय फ़ील्ड `unknown` / `-1` / `—` पढ़ते हैं।
|
|
177
|
+
- **लेखन सत्यापित होते हैं, गारंटी नहीं** — कंसोल हर लेखन को loader के पुनः-लागू अवस्था के विरुद्ध सत्यापित करता है और जब loader उसे लागू न करे (जैसे `$DSH_HOME/cordis.patch.yml` द्वारा डाली गई पंक्ति, जिसे प्रोफ़ाइल-परत patch नहीं पहुँच सकता) तो ईमानदारी से विफल होता है।
|
|
171
178
|
|
|
172
179
|
## Development
|
|
173
180
|
|
|
@@ -189,7 +196,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
189
196
|
|
|
190
197
|
## PerryLink DSH Plugin Family
|
|
191
198
|
|
|
192
|
-
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [
|
|
199
|
+
यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [40 DeepSeek Harness प्लगइनों](https://github.com/PerryLink) में से एक है। अगर यह आपकी मदद करता है, तो बाकी भी करेंगे:
|
|
193
200
|
|
|
194
201
|
| Plugin | One-liner |
|
|
195
202
|
|---|---|
|
|
@@ -218,6 +225,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
218
225
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | ऑडिट के साथ Claude Code-शैली घोषणात्मक allow/deny/ask अनुमति नियम | |
|
|
219
226
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | शीर्ष-बार टॉगल के साथ व्यक्तिगत निर्देश इंजेक्टर (फ्रेमवर्क संस्करण) |
|
|
220
227
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | माँग पर एजेंट कौशल के रूप में प्लगइन-विकास ज्ञान आधार | |
|
|
228
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
221
229
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | मल्टी-चैनल अनुमोदन/प्रश्न ब्रिज: WeChat/Telegram/Feishu, सत्र कंसोल |
|
|
222
230
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | सामग्री-पता साक्ष्य और सीलबंद संस्करणों वाला सत्यापन-योग्य अनुसंधान-रिपोर्ट इंजन | |
|
|
223
231
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness प्लगिनों की बहु-आयामी गुणवत्ता स्कोरिंग। | |
|
|
@@ -228,7 +236,16 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
228
236
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness प्लगिनों के लिए पृथक इंस्टॉल-एंड-स्मोक टेस्ट ड्राइव। | |
|
|
229
237
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/Dida365 कार्य ब्रिज: सत्र-हेडर पैनल + 11 टूल |
|
|
230
238
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness के लिए वेंडर पैरामीटर अनुवाद और नियतात्मक JSON मरम्मत। | |
|
|
231
|
-
| **[dsh-wechat](https://github.com/
|
|
239
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | WeChat ↔ DSH ब्रिज (Tencent iLink bot): टेक्स्ट/इमेज/फ़ाइल/आवाज़, चैट में अनुमोदन |
|
|
240
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
241
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
242
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
243
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
244
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
245
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
246
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
247
|
+
| **[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 | |
|
|
248
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
232
249
|
|
|
233
250
|
## License
|
|
234
251
|
|
package/README-pt.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*Cliente oficial = ponte, este plugin = console: leia o status pelo seam `mcp/status`, escreva apenas patches de perfil somente-anexar e com aprovação.*
|
|
9
9
|
|
|
10
10
|
[](LICENSE)
|
|
11
|
+
[](https://gitee.com/perrylink/dsh-mcp-panel)
|
|
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
|
| 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): as duas réguas de typecheck verdes na face `0.1.6-alpha.2` (este repositório é o canário da família: nenhum erro novo apareceu), 174 testes e a cadeia completa de portas (typecheck / typecheck:ci / test / build / verify / package). A re-verificação do `writePatch` vale nesta linha. Linha de base anterior: `dsh-v0.1.6-alpha.1` (verificado em 2026-09-16). |
|
|
30
31
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
31
32
|
| Plataformas | Web GUI (duas faces: host + navegador) |
|
|
32
33
|
| Modelo | Qualquer (o painel é somente leitura; só a saída de `/mcp` é legível pelo modelo) |
|
|
@@ -40,7 +41,8 @@ O `dsh-mcp-panel` é a camada de experiência sobre o cliente MCP oficial: uma v
|
|
|
40
41
|
- **`/mcp <servidor> health`** — sugestões de autorreparo derivadas (ENOENT → dependência ausente, ECONNREFUSED, timeouts, 401/403/404, DNS, rate limit, reconexão esgotada…); código de saída / cauda de stderr rotulados honestamente como *aguardando suporte upstream*.
|
|
41
42
|
- **`/mcp <servidor> call <tool> [json]`** — chamada de teste pelo **pipeline oficial de ferramentas** (`ctx.tools.execute()`); política de permissão pré-execução, aprovação, guards e pós-execução, tudo em vigor.
|
|
42
43
|
- **Configurações → Plugins → MCP** — cartões de status com selos, diagnósticos e sondas, mais o CRUD de servidores e o banco de testes de ferramentas.
|
|
43
|
-
- **CRUD de servidores** — formulários de adicionar/editar/remover →
|
|
44
|
+
- **CRUD de servidores** — formulários de adicionar/editar/remover → `insert` para adicionar e anulações dirigidas por id (`- id:` + `name:` + `disabled:`/`config:`) para editar/remover → cópia para a área de transferência ou gravação com aprovação, backups automáticos e re-verificação contra o loader.
|
|
45
|
+
- **Navegação de Resources** — listagem de recursos, listagem de templates e leituras de URI somente leitura pelas ferramentas oficiais `list_mcp_resources` / `list_mcp_resource_templates` / `read_mcp_resource` (ponteadas pelo serviço `@deepseek-ai/dsh-mcp-resources`); os resultados aparecem apenas na aba, nunca no contexto do modelo.
|
|
44
46
|
- **Banco de testes de ferramentas** — servidor → ferramenta `mcp__*` → argumentos JSON → resultado JSON canônico + conteúdo renderizado; limitado por `trialMaxResultChars`; somente painel, nunca contexto do modelo.
|
|
45
47
|
|
|
46
48
|
## Architecture: official client = bridge, this plugin = console
|
|
@@ -78,7 +80,7 @@ O console **lê** o cliente pelo seu seam de observabilidade `mcp/status` (event
|
|
|
78
80
|
|---|---|---|
|
|
79
81
|
| Adicionar servidor | Editar YAML, cuidar indentação/aspas | Formulário → fragmento de patch → **copiar** ou **gravar** (aprovação + backup) |
|
|
80
82
|
| Editar servidor | Editar YAML, reiniciar/recarga a quente | Formulário pré-preenchido da linha ao vivo; segredos inalterados preservam o valor no host |
|
|
81
|
-
| Remover servidor | Apagar a linha |
|
|
83
|
+
| Remover servidor | Apagar a linha | Anulação `- id:` + `disabled: true` (o vocabulário de patches não tem remove) — re-habilitável |
|
|
82
84
|
| Ver status | Ler logs | Selos + reconexões + último erro, ao vivo do `mcp/status` |
|
|
83
85
|
| Testar uma ferramenta | Pedir ao modelo | Banco de testes → pipeline oficial `ctx.tools.execute()` (permissões e aprovação em vigor) |
|
|
84
86
|
| Diagnosticar falhas | grep de logs | `/mcp <servidor> health` com sugestões derivadas |
|
|
@@ -132,6 +134,8 @@ Todas as opções são campos Schemastery `Config` (modificáveis a partir do co
|
|
|
132
134
|
| `trialTimeoutMs` | `120000` | Prazo do painel por chamada de teste em ms |
|
|
133
135
|
| `trialMaxResultChars` | `60000` | Teto do payload do resultado de teste em caracteres |
|
|
134
136
|
| `writeEnabled` | `true` | Interruptor de segurança: `false` rejeita toda gravação (copiar continua funcionando) |
|
|
137
|
+
| `writeVerifyEnabled` | `true` | Re-verifica cada gravação contra o estado re-aplicado do loader antes de reportar sucesso |
|
|
138
|
+
| `writeVerifyTimeoutMs` | `3000` | Orçamento de sondagem para a verificação de gravação em ms |
|
|
135
139
|
| `backupCount` | `5` | Backups de `cordis.patch.yml` retidos por gravação |
|
|
136
140
|
| `catalogEntries` | `[]` | Sobreposição do usuário para o diretório recomendado: anexa entradas; uma entrada com o mesmo `id` substitui a integrada |
|
|
137
141
|
|
|
@@ -149,7 +153,9 @@ Todas as opções são campos Schemastery `Config` (modificáveis a partir do co
|
|
|
149
153
|
|
|
150
154
|
## Resources & Prompts
|
|
151
155
|
|
|
152
|
-
|
|
156
|
+
Resources JÁ são ponteados upstream: o bundle base monta `@deepseek-ai/dsh-mcp-resources`, o cliente oficial registra o provider de recursos de cada conexão em `ctx.mcpResources`, e esse pacote possui as três ferramentas compartilhadas (`list_mcp_resources`, `list_mcp_resource_templates`, `read_mcp_resource`). O console detecta o serviço e as ferramentas registradas, e oferece um navegador de Resources somente leitura (lista / templates / leitura de URI) em cada cartão de servidor — cada chamada passa pelo pipeline OFICIAL de ferramentas e os resultados nunca entram no contexto do modelo.
|
|
157
|
+
|
|
158
|
+
**Templates de prompts** e **assinaturas de recursos** permanecem adiados upstream; o painel de capacidades marca Prompts **aguardando suporte upstream**.
|
|
153
159
|
|
|
154
160
|
## Permissions & data
|
|
155
161
|
|
|
@@ -160,14 +166,15 @@ O cliente oficial documenta que *"Tools are the only bridged MCP capability"*
|
|
|
160
166
|
|
|
161
167
|
- **A ponte continua sendo a ponte.** Sem mudanças de transporte, OAuth ou protocolo; uma linha mcp-client por servidor, exatamente como à mão.
|
|
162
168
|
- **Sem status falso.** Campos de conexão sem observações upstream leem `unknown` / `—` com `statusSource: 'derived'`; códigos de saída e stderr nunca são inventados.
|
|
163
|
-
- **Gravações somente-anexar, com aprovação e backup.** O console nunca reescreve o `cordis.patch.yml`; anexa operações geradas
|
|
169
|
+
- **Gravações somente-anexar, com aprovação e backup.** O console nunca reescreve o `cordis.patch.yml`; anexa operações geradas, conserva os `backupCount` backups mais recentes e re-verifica cada gravação contra o estado re-aplicado do loader antes de reportar sucesso (um patch omitido nunca aparece como sucesso).
|
|
164
170
|
- **Sem injeção de prompts.** O painel não registra seções de prompt; seu único texto visível ao modelo são as duas descrições de ferramenta/comando.
|
|
165
171
|
|
|
166
172
|
## Known limitations
|
|
167
173
|
|
|
168
|
-
- **
|
|
174
|
+
- **Templates de prompts e assinaturas de recursos** aguardam suporte upstream — o cliente oficial pontua ferramentas e recursos, mas não prompts nem assinaturas.
|
|
169
175
|
- **Códigos de saída / caudas de stderr** são rotulados *aguardando suporte upstream* até o cliente expô-los.
|
|
170
176
|
- **Painel somente leitura** — o console nunca falsifica um estado de conexão; campos não observáveis leem `unknown` / `-1` / `—`.
|
|
177
|
+
- **Gravações são verificadas, não garantidas** — o console re-verifica cada gravação contra o estado re-aplicado do loader e falha honestamente quando o loader não a aplicou (ex.: uma linha inserida por `$DSH_HOME/cordis.patch.yml`, que um patch de camada de perfil não alcança).
|
|
171
178
|
|
|
172
179
|
## Development
|
|
173
180
|
|
|
@@ -189,7 +196,7 @@ O `scripts/verify-headless.mjs` inicia o perfil web real e imprime a saída exat
|
|
|
189
196
|
|
|
190
197
|
## PerryLink DSH Plugin Family
|
|
191
198
|
|
|
192
|
-
Este projeto é um dos [
|
|
199
|
+
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:
|
|
193
200
|
|
|
194
201
|
| Plugin | One-liner |
|
|
195
202
|
|---|---|
|
|
@@ -218,6 +225,7 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
218
225
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria | |
|
|
219
226
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | Injetor de diretivas pessoais com alternância na barra superior (edição framework) |
|
|
220
227
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda | |
|
|
228
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
221
229
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | Ponte multicanal de aprovação/perguntas: WeChat/Telegram/Feishu, console de sessão |
|
|
222
230
|
| **[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 | |
|
|
223
231
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. | |
|
|
@@ -228,7 +236,16 @@ Este projeto é um dos [37 plugins de DeepSeek Harness](https://github.com/Perry
|
|
|
228
236
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. | |
|
|
229
237
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | Ponte de tarefas TickTick/Dida365: painel no cabeçalho da sessão + 11 ferramentas |
|
|
230
238
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | Tradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness. | |
|
|
231
|
-
| **[dsh-wechat](https://github.com/
|
|
239
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | Ponte WeChat ↔ DSH (bot Tencent iLink): texto/imagem/arquivo/voz, aprovações no chat |
|
|
240
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
241
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
242
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
243
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
244
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
245
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
246
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
247
|
+
| **[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 | |
|
|
248
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
232
249
|
|
|
233
250
|
## License
|
|
234
251
|
|
package/README-zh.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
> **官方仓库。** 本仓库是 dsh-mcp-panel 的唯一官方仓库,由 PerryLink 维护。其他账号下的同名仓库与本项目无关。
|
|
11
11
|
|
|
12
12
|
[](LICENSE)
|
|
13
|
+
[](https://gitee.com/perrylink/dsh-mcp-panel)
|
|
13
14
|
[](https://github.com/topics/dsh-plugin)
|
|
14
15
|
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
|
|
15
16
|
[](#)
|
|
@@ -28,7 +29,7 @@
|
|
|
28
29
|
|
|
29
30
|
| 维度 | 状态 |
|
|
30
31
|
|---|---|
|
|
31
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
32
|
+
| Harness | DeepSeek Harness `dsh-v0.1.6-alpha.2`(2026-09-18 核验):双 typecheck 尺子在 `0.1.6-alpha.2` dev/test 面上双绿(本仓是全族金丝雀,抬线未暴露新错误)、174 项测试、全量门禁链(typecheck / typecheck:ci / test / build / verify / package)。`writePatch` 的写入复验断言在该线上成立。上一基线:`dsh-v0.1.6-alpha.1`(2026-09-16 已核验)。 |
|
|
32
33
|
| Node | `^22.19.0 \|\| >=24.0.0` |
|
|
33
34
|
| 平台 | Web GUI(双面:Host + 浏览器) |
|
|
34
35
|
| 模型 | 任意(面板只读;仅 `/mcp` 输出对模型可见) |
|
|
@@ -42,7 +43,8 @@
|
|
|
42
43
|
- **`/mcp <server> health`** —— 派生自愈建议(ENOENT → 依赖缺失、ECONNREFUSED、超时、401/403/404、DNS、限流、重连耗尽…);退出码 / stderr 尾部如实标注*待官方支持*。
|
|
43
44
|
- **`/mcp <server> call <tool> [json]`** —— 经**官方工具管线**(`ctx.tools.execute()`)试用调用;pre-execute 权限策略、审批、guard、post-execute 全部生效。
|
|
44
45
|
- **设置 → 插件 → MCP 页** —— 状态卡片(徽章、诊断、探测),加 server CRUD 与工具试用台。
|
|
45
|
-
- **Server CRUD** —— 增删改表单 → `insert
|
|
46
|
+
- **Server CRUD** —— 增删改表单 → 添加用 `insert`,编辑/删除用 id 定向覆盖(`- id:` + `name:` + `disabled:`/`config:`)→ 剪贴板复制或审批写入,自动备份,并在报成功前对照 loader 复验。
|
|
47
|
+
- **Resources 浏览** —— 经官方 `list_mcp_resources` / `list_mcp_resource_templates` / `read_mcp_resource` 工具只读列出资源、模板与 URI 读取(由上游 `@deepseek-ai/dsh-mcp-resources` 服务桥接);结果只显示在本页、绝不进入模型上下文。
|
|
46
48
|
- **工具试用台** —— 选 server → 选 `mcp__*` 工具 → JSON 填参 → 规范 JSON 结果 + render 内容;按 `trialMaxResultChars` 截断;仅面板可见、永不进入模型上下文。
|
|
47
49
|
|
|
48
50
|
## Architecture: official client = bridge, this plugin = console
|
|
@@ -80,7 +82,7 @@
|
|
|
80
82
|
|---|---|---|
|
|
81
83
|
| 添加服务器 | 改 YAML,注意缩进与引号 | 表单 → patch 片段 → **一键复制**或**写入**(审批 + 自动备份) |
|
|
82
84
|
| 修改服务器 | 改 YAML,重启/热重载 | 表单预填当前行;未改动的密钥在 host 侧保留原值 |
|
|
83
|
-
| 删除服务器 | 删掉该行 | 追加 `
|
|
85
|
+
| 删除服务器 | 删掉该行 | 追加 `- id:` + `disabled: true` 覆盖操作(patch 词汇表没有 remove)——可随时重新启用 |
|
|
84
86
|
| 查看状态 | 翻日志 | 徽章 + 重连次数 + 最近错误,来自 `mcp/status` seam 实时数据 |
|
|
85
87
|
| 试用工具 | 让模型调用 | 试用台 → 官方 `ctx.tools.execute()` 管线(权限与审批全程生效) |
|
|
86
88
|
| 排查故障 | grep 日志 | `/mcp <server> health` 派生自愈建议 |
|
|
@@ -134,6 +136,8 @@ dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
|
|
|
134
136
|
| `trialTimeoutMs` | `120000` | 每次试用调用的面板侧截止时间(ms) |
|
|
135
137
|
| `trialMaxResultChars` | `60000` | 试用结果载荷上限(字符) |
|
|
136
138
|
| `writeEnabled` | `true` | 总开关:`false` 拒绝一切 profile 写入(仍可复制片段) |
|
|
139
|
+
| `writeVerifyEnabled` | `true` | 每次写入在报成功前对照 loader 重放后的状态复验 |
|
|
140
|
+
| `writeVerifyTimeoutMs` | `3000` | 写入复验的轮询预算(毫秒) |
|
|
137
141
|
| `backupCount` | `5` | 每次写入保留的 `cordis.patch.yml` 备份数 |
|
|
138
142
|
| `catalogEntries` | `[]` | 推荐服务器目录的用户覆盖:追加条目,同 `id` 的条目替换内置条目 |
|
|
139
143
|
|
|
@@ -151,7 +155,9 @@ dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
|
|
|
151
155
|
|
|
152
156
|
## Resources & Prompts
|
|
153
157
|
|
|
154
|
-
|
|
158
|
+
Resources 已由上游桥接:base bundle 默认挂载 `@deepseek-ai/dsh-mcp-resources`,官方 client 把每个连接的资源 provider 注册进 `ctx.mcpResources`,该包拥有三个共享工具(`list_mcp_resources`、`list_mcp_resource_templates`、`read_mcp_resource`)。控制台特征探测该服务与已注册工具,并在每个 server 卡上提供只读 Resources 浏览(列表 / 模板 / URI 读取)——每次调用都走**官方工具管线**,结果只显示在本页、绝不进入模型上下文。
|
|
159
|
+
|
|
160
|
+
MCP **prompt 模板**与**资源订阅**仍待上游;能力一览中 Prompts 标注**待官方支持**。
|
|
155
161
|
|
|
156
162
|
## Permissions & data
|
|
157
163
|
|
|
@@ -162,14 +168,15 @@ dsh --profile web --dump-config | grep -A3 'id: mcp-panel'
|
|
|
162
168
|
|
|
163
169
|
- **桥接层仍是桥接层。** 不改传输、OAuth、协议;每个 server 一行 mcp-client,与你手写完全一致。
|
|
164
170
|
- **不伪造状态。** 无上游观测时连接字段显示 `unknown` / `—` 并标注 `statusSource: 'derived'`;退出码与 stderr 尾部绝不臆造。
|
|
165
|
-
- **写入只追加、走审批、先备份。** 控制台从不改写 `cordis.patch.yml
|
|
171
|
+
- **写入只追加、走审批、先备份。** 控制台从不改写 `cordis.patch.yml`:只追加生成的操作,保留最新 `backupCount` 份备份,并在报成功前对照 loader 重放后的状态复验(被跳过的补丁绝不显示为成功)。
|
|
166
172
|
- **零提示词注入。** 本插件不注册任何提示词段落;对模型可见的文本只有两个工具/命令描述。
|
|
167
173
|
|
|
168
174
|
## Known limitations
|
|
169
175
|
|
|
170
|
-
- **
|
|
176
|
+
- **prompt 模板与资源订阅** 待官方支持——官方 client 桥接工具与资源,但未桥接 prompts 与订阅。
|
|
171
177
|
- **退出码 / stderr 尾部** 在 client 暴露前如实标注*待官方支持*。
|
|
172
178
|
- **只读面板** —— 控制台从不伪造连接状态;不可观测字段显示 `unknown` / `-1` / `—`。
|
|
179
|
+
- **写入复验而非保证** —— 控制台对照 loader 重放后的状态复验每次写入;loader 未应用时(例如该行由 `$DSH_HOME/cordis.patch.yml` 插入、profile 层补丁够不着)如实报失败。
|
|
173
180
|
|
|
174
181
|
## Development
|
|
175
182
|
|
|
@@ -191,7 +198,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
191
198
|
|
|
192
199
|
## PerryLink DSH Plugin Family
|
|
193
200
|
|
|
194
|
-
这是 [PerryLink](https://github.com/PerryLink) 维护的 [
|
|
201
|
+
这是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink) 之一。如果它能帮到你,其他的也会:
|
|
195
202
|
|
|
196
203
|
| Plugin | One-liner |
|
|
197
204
|
|---|---|
|
|
@@ -220,6 +227,7 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
220
227
|
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | Claude Code 风格声明式 allow/deny/ask 权限规则,带审计 | |
|
|
221
228
|
| **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器:顶栏开关(框架版) |
|
|
222
229
|
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 作为按需代理技能的插件开发知识库 | |
|
|
230
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | Zero-dependency static + sandbox smoke detector for DSH plugins | |
|
|
223
231
|
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
|
|
224
232
|
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告引擎:内容寻址证据账本与封存版本 | |
|
|
225
233
|
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | DeepSeek Harness 插件的多维质量评分。 | |
|
|
@@ -230,7 +238,16 @@ pnpm run typecheck && pnpm run typecheck:ci && pnpm test && pnpm run build && pn
|
|
|
230
238
|
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | DeepSeek Harness 插件的隔离试装冒烟。 | |
|
|
231
239
|
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单任务桥接:会话头面板 + 11 个工具 |
|
|
232
240
|
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | DeepSeek Harness 的厂商参数翻译与确定性 JSON 修复。 | |
|
|
233
|
-
| **[dsh-wechat](https://github.com/
|
|
241
|
+
| **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥接(Tencent iLink 机器人):文本/图片/文件/语音,聊天内审批卡片 |
|
|
242
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | Automatic strong/cheap model-tier routing with deterministic risk guards and a `/tier` command | |
|
|
243
|
+
| **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | DSH Desktop Market standard catalog source for the PerryLink family | |
|
|
244
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
|
|
245
|
+
| **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | One-command starter pack that installs the core family | |
|
|
246
|
+
| **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | Community certification registry with repro-checkable grades and badges | |
|
|
247
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | Shared zero-runtime-dependency toolkit for the PerryLink DSH plugins | |
|
|
248
|
+
| **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | Zero-dependency static portal rendering the whole plugin family as one page | |
|
|
249
|
+
| **[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 | |
|
|
250
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | Cross-session team rooms: shared message bus, task board and timeline | |
|
|
234
251
|
|
|
235
252
|
## License
|
|
236
253
|
|