dsh-budget 0.3.0 → 0.4.0

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 CHANGED
@@ -5,6 +5,25 @@ All notable changes to this project are 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.4.0] - 2026-08-30
9
+
10
+ ### Fixed
11
+
12
+ - On DeepSeek Harness `0.1.2-alpha.1` and later, `budget/alert` and `budget/block` audit events are no longer appended to the session log: the fail-closed session event vocabulary rejects logs containing event types it does not know, and the host exposes no external registration surface. Harnesses before `0.1.2-alpha.1` keep the previous behavior; the suppression is logged once at mount with the degradation reason.
13
+
14
+ ### Changed
15
+
16
+ - The browser half types its root context as the `@deepseek-ai/cordis` `Context` (matching current harness client plugins); the removed `@deepseek-ai/dsh-client-runtime` entry was dropped from `dsh.client.inject`, the peer/optional-peer and dev dependencies, the tsconfig paths, and the tsdown platform-externals list.
17
+
18
+ ## [0.3.1] - 2026-08-27
19
+
20
+ ### Fixed
21
+
22
+ - Declare the web-client inject packages (`@deepseek-ai/dsh-client-connection`,
23
+ `@deepseek-ai/dsh-client-locale`, `@deepseek-ai/dsh-client-runtime`,
24
+ `@deepseek-ai/dsh-client-ui-settings`) as optional peerDependencies so the
25
+ bundle composition is explicit and standalone installs stay clean.
26
+
8
27
  ## [0.3.0] - 2026-08-26
9
28
 
10
29
  ### Added
package/README.es.md CHANGED
@@ -1,177 +1,182 @@
1
- <div align="center">
2
-
3
- # 💰 dsh-budget
4
-
5
- **Gobernanza de costos para DeepSeek Harness: presupuestos, carbono y latencia en un solo panel.**
6
-
7
- *Conoce cuánto cuesta cada sesión — antes de que te cueste a ti.*
8
-
9
- [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
10
- [![DSH plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
11
- [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
12
- [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-budget/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-budget/actions)
13
- [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-budget?label=version)](https://github.com/PerryLink/dsh-budget/releases)
14
- [![npm version](https://img.shields.io/npm/v/dsh-budget)](https://www.npmjs.com/package/dsh-budget)
15
- [![npm downloads](https://img.shields.io/npm/dm/dsh-budget)](https://www.npmjs.com/package/dsh-budget)
16
-
17
- [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
18
-
19
- </div>
20
-
21
- ---
22
-
23
- ## Compatibilidad
24
-
25
- | Superficie | Estado |
26
- |---|---|
27
- | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
- | Node | `^22.19.0 \|\| >=24.0.0` |
29
- | Superficies | Host + cliente Web (pestaña Budget en Settings); comando `/budget` |
30
-
31
- ## Qué obtienes
32
-
33
- `dsh-budget` convierte el flujo de eventos de sesión en un ciclo de gobernanza de costos cuatro en uno:
34
-
35
- - **Medición agregada** tokens (entrada sin caché / salida / lectura de caché / escritura de caché), costo USD estimado y huella de carbono por modelo, sesión y día, con una tabla integrada de USD por 1M tokens fusionada con tu `config.prices`.
36
- - **Gobernanza de presupuesto** — límites de sesión/diarios/mensuales; alerta de umbral `warnRatio` (webhook POST + indicador de notificación de escritorio) y tres políticas al superar el límite: `alert` (solo notificar), `block` (cortocircuitar nuevas solicitudes de modelo hasta que el usuario levante el bloqueo), `degrade` (bloqueo con guía correctiva que nombra el modelo más barato de tu mapa `degradation`).
37
- - **Carbono y latencia** — puente token→carbono (tokens × kWh/token × PUE × intensidad de la red regional, portado de AI-Carbon-Footprint-Calculator) y percentiles de latencia por modelo.
38
- - **Superficies** — pestaña Budget en Settings (barras de uso, curva de uso por día, desglose por modelo, alertas, editores de límites, botones de desbloqueo) y el comando `/budget` (`/budget`, `/budget models`, `/budget unblock <scope>`).
39
-
40
- ## Inicio rápido
41
-
42
- ```sh
43
- # 1. instala el bundle en tu perfil
44
- dsh plugin --profile web add "github:PerryLink/dsh-budget#main"
45
-
46
- # o desde npm (versiones publicadas)
47
- dsh plugin --profile web add dsh-budget
48
-
49
- # 2. reinicia y verifica la fila
50
- dsh --profile web --dump-config | grep -A2 'id: budget'
51
- ```
52
-
53
- Luego pide al agente: `/budget` — y observa cómo se llena la pestaña de Settings.
54
-
55
- ## Instalación y desinstalación
56
-
57
- - **Canal git** (último `main`): `dsh plugin --profile web add "github:PerryLink/dsh-budget#main"` — el script `prepare` compila solo con dependencias de producción.
58
- - **Canal npm** (versiones publicadas): `dsh plugin --profile web add dsh-budget`.
59
- - **Canal tarball**: `pnpm pack` en este repositorio y luego `dsh plugin --profile web add ./dsh-budget-<version>.tgz`.
60
- - **Desinstalar**: `dsh plugin --profile web remove dsh-budget`.
61
-
62
- > Si pnpm informa `ERR_PNPM_IGNORED_BUILDS` para este paquete (la validación inofensiva del binario de plataforma de esbuild), añade `allowBuilds: { esbuild: true }` a tu `pnpm-workspace.yaml` — el CLI `dsh` imprime el fragmento exacto.
63
-
64
- ## Configuración
65
-
66
- Todos los ajustes son campos `Config` de Schemastery (modificables desde cordis.yml). `cordis.patch.yml` documenta cada clave en línea.
67
-
68
- | Clave | Por defecto | Significado |
69
- |---|---|---|
70
- | `prices` | `{}` | Precios USD por 1M tokens por modelo, fusionados sobre la tabla integrada |
71
- | `defaultPrice` | `{input: 1.0, output: 3.0}` | Respaldo para modelos ausentes de ambas tablas |
72
- | `budgets.session` / `daily` / `monthly` | `10` / `50` / `500` | Límites de presupuesto USD por ámbito; omitir para ilimitado |
73
- | `warnRatio` | `0.8` | Alertar cuando el uso alcance esta fracción del límite (0..1) |
74
- | `overLimit` | `alert` | `alert` / `block` / `degrade` tras cruzar un límite |
75
- | `degradation` | `{}` | Id de modelo id de modelo más barato del mismo proveedor |
76
- | `webhookUrl` | *(ninguna)* | URL opcional de webhook para alertas de umbral (POST JSON) |
77
- | `webhookTimeoutMs` | `5000` | Tiempo de espera de la solicitud webhook |
78
- | `alertsEnabled` | `true` | Interruptor maestro de alertas de umbral |
79
- | `alertCooldownMs` | `3600000` | Mínimo ms entre dos alertas del mismo ámbito |
80
- | `desktopNotifications` | `false` | Notificaciones de escritorio del navegador con la pestaña abierta |
81
- | `refreshIntervalMs` | `5000` | Intervalo de sondeo de la pestaña |
82
- | `carbon.enabled` / `region` / `pue` / `energyKwhPerToken` | `true` / `global` / `1.58` / `0.000007` | Puente de carbono (regiones: global, us, eu, china, india, uk, france, iceland) |
83
- | `latency.enabled` / `windowSize` | `true` / `200` | Percentiles de latencia por modelo y su ventana |
84
- | `currency` | `{code: USD, rate: 1.0, decimals: 2}` | Moneda de visualización (los costos se calculan en USD) |
85
- | `outputLanguage` | `en` | Idioma de salida de `/budget`: `en` / `zh` |
86
- | `historyDays` | `30` | Días de historial de uso diario en la instantánea |
87
- | `persistence.enabled` / `intervalMs` | `true` / `10000` | Persistencia duradera diaria/mensual entre reinicios (dominio de almacenamiento); degrada a en-memoria si falta el dominio |
88
-
89
- ## Herramientas y superficies
90
-
91
- | Superficie | Tipo | Notas |
92
- |---|---|---|
93
- | `/budget` | Comando | Resumen por ámbito (uso, ratio, carbono, estado bloqueado) |
94
- | `/budget models` | Comando | Desglose por modelo con percentiles de latencia |
95
- | `/budget unblock <scope>` | Comando | Levantar un ámbito bloqueado (`session` / `daily` / `monthly`) |
96
- | Settings Plugins → Budget | Pestaña de Settings | Barras de uso, curva de uso por día, desglose, alertas, editores de límites, desbloqueo |
97
- | `budget/status`, `budget/setSettings`, `budget/unblock` | Typert Remote | Canal del cliente (consumido por la pestaña) |
98
-
99
- ## Permisos y datos
100
-
101
- - **Permisos**: `network:outbound` (solo el webhook de alerta opcional), `session:append` (eventos de auditoría), `native-code:none`.
102
- - **Datos**: todo lo mostrado proviene del flujo de eventos de sesión; la única llamada de red es el webhook configurado, validado al cargar y sin credenciales en los registros. Ningún prompt o payload sale del host.
103
- - **Registro de sesión**: `budget/alert` y `budget/block` son eventos de auditoría solo-registro con nombres de ámbito e importes USD (diferidos por microtarea ante el guard de reentrada de append).
104
-
105
- ## Límites de seguridad
106
-
107
- - **Sin fabricación**: un bloqueo de presupuesto produce un final de error correctivo en el waterfall `llm/stream` — el plugin nunca inventa salida de modelo.
108
- - **Sin reescritura de solicitudes**: las solicitudes del loop están congeladas; `degrade` nombra el modelo objetivo en el mensaje correctivo en lugar de reemplazar la solicitud.
109
- - **Fallo ruidoso**: precios, URLs, ratios, regiones o límites inválidos fallan el montaje.
110
- - **Alcance honesto**: las ediciones en tiempo de ejecución del panel son por sesión; una recarga restaura los valores de cordis.yml.
111
-
112
- ## Limitaciones conocidas
113
-
114
- - La agregación es local al proceso: el uso se reinicia al reiniciar el harness (los cubos diarios/mensuales se reconstruyen desde la vista actual del registro).
115
- - `block`/`degrade` dependen del waterfall `llm/stream`; los builds sin ese seam no pueden bloquear solicitudes (las alertas siguen funcionando).
116
- - Los precios integrados se desactualizan; sobrescríbelos con `config.prices`.
117
-
118
- ## Desarrollo
119
-
120
- ```sh
121
- pnpm install # node ^22.19 || >=24
122
- pnpm run typecheck # tsc: src + tests contra el checkout local del harness
123
- pnpm run typecheck:ci # tsc contra los tipos publicados 0.1.1-rc.2 (sin paths)
124
- pnpm test # vitest
125
- pnpm run build # declaraciones tsc + bundles tsdown (lib/)
126
- pnpm run verify:self-contained # las especificaciones de dependencias resuelven desde el registry
127
- pnpm run verify:artifacts # cara ESM + manifiesto typert + bundle de cliente
128
- pnpm pack # el tarball publicado
129
- ```
130
-
131
- ## Topics
132
-
133
- `dsh`, `dsh-plugin`, `deepseek-harness`, `deepseek`, `cordis`, `budget`, `cost-tracking`, `carbon-footprint`, `latency-benchmark`, `token-usage`
134
-
135
- ## Contributors
136
-
137
- - [@PerryLink](https://github.com/PerryLink) — creador y mantenedor: agregación, gobernanza de presupuesto, portes de carbono y latencia, la pestaña de Settings y la documentación en cinco idiomas.
138
-
1
+ <div align="center">
2
+
3
+ # 💰 dsh-budget
4
+ - **Canal 1024 store**: `npm i -g dsh1024` una vez, luego `dsh1024 plugin --profile web add dsh-budget` (cuenta para el ranking de instalaciones de [deepseek1024.com](https://deepseek1024.com)).
5
+
6
+ **Gobernanza de costos para DeepSeek Harness: presupuestos, carbono y latencia en un solo panel.**
7
+
8
+ *Conoce cuánto cuesta cada sesión — antes de que te cueste a ti.*
9
+
10
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
11
+ [![DSH plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
12
+ [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
13
+ [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-budget/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-budget/actions)
14
+ [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-budget?label=version)](https://github.com/PerryLink/dsh-budget/releases)
15
+ [![npm version](https://img.shields.io/npm/v/dsh-budget)](https://www.npmjs.com/package/dsh-budget)
16
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-budget)](https://www.npmjs.com/package/dsh-budget)
17
+
18
+ [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
19
+
20
+ </div>
21
+
22
+ ---
23
+
24
+ ## Compatibilidad
25
+
26
+ | Superficie | Estado |
27
+ |---|---|
28
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
29
+
30
+ | Eventos de auditoría | Se escriben en harness anteriores a `0.1.2-alpha.1`; se suprimen con una razón de degradación registrada en `0.1.2-alpha.1` y posteriores (vocabulario de eventos de sesión fail-closed, sin superficie de registro externa) || Node | `^22.19.0 \|\| >=24.0.0` |
31
+ | Superficies | Host + cliente Web (pestaña Budget en Settings); comando `/budget` |
32
+
33
+ ## Qué obtienes
34
+
35
+ `dsh-budget` convierte el flujo de eventos de sesión en un ciclo de gobernanza de costos cuatro en uno:
36
+
37
+ - **Medición agregada** — tokens (entrada sin caché / salida / lectura de caché / escritura de caché), costo USD estimado y huella de carbono por modelo, sesión y día, con una tabla integrada de USD por 1M tokens fusionada con tu `config.prices`.
38
+ - **Gobernanza de presupuesto** — límites de sesión/diarios/mensuales; alerta de umbral `warnRatio` (webhook POST + indicador de notificación de escritorio) y tres políticas al superar el límite: `alert` (solo notificar), `block` (cortocircuitar nuevas solicitudes de modelo hasta que el usuario levante el bloqueo), `degrade` (bloqueo con guía correctiva que nombra el modelo más barato de tu mapa `degradation`).
39
+ - **Carbono y latencia** — puente token→carbono (tokens × kWh/token × PUE × intensidad de la red regional, portado de AI-Carbon-Footprint-Calculator) y percentiles de latencia por modelo.
40
+ - **Superficies** — pestaña Budget en Settings (barras de uso, curva de uso por día, desglose por modelo, alertas, editores de límites, botones de desbloqueo) y el comando `/budget` (`/budget`, `/budget models`, `/budget unblock <scope>`).
41
+
42
+ ## Inicio rápido
43
+
44
+ ```sh
45
+ # 1. instala el bundle en tu perfil
46
+ dsh plugin --profile web add "github:PerryLink/dsh-budget#main"
47
+
48
+ # o desde npm (versiones publicadas)
49
+ dsh plugin --profile web add dsh-budget
50
+
51
+ # 2. reinicia y verifica la fila
52
+ dsh --profile web --dump-config | grep -A2 'id: budget'
53
+ ```
54
+
55
+ Luego pide al agente: `/budget` — y observa cómo se llena la pestaña de Settings.
56
+
57
+ ## Instalación y desinstalación
58
+
59
+ - **Canal git** (último `main`): `dsh plugin --profile web add "github:PerryLink/dsh-budget#main"` — el script `prepare` compila solo con dependencias de producción.
60
+ - **Canal npm** (versiones publicadas): `dsh plugin --profile web add dsh-budget`.
61
+ - **Canal tarball**: `pnpm pack` en este repositorio y luego `dsh plugin --profile web add ./dsh-budget-<version>.tgz`.
62
+ - **Desinstalar**: `dsh plugin --profile web remove dsh-budget`.
63
+
64
+ > Si pnpm informa `ERR_PNPM_IGNORED_BUILDS` para este paquete (la validación inofensiva del binario de plataforma de esbuild), añade `allowBuilds: { esbuild: true }` a tu `pnpm-workspace.yaml` — el CLI `dsh` imprime el fragmento exacto.
65
+
66
+ ## Configuración
67
+
68
+ Todos los ajustes son campos `Config` de Schemastery (modificables desde cordis.yml). `cordis.patch.yml` documenta cada clave en línea.
69
+
70
+ | Clave | Por defecto | Significado |
71
+ |---|---|---|
72
+ | `prices` | `{}` | Precios USD por 1M tokens por modelo, fusionados sobre la tabla integrada |
73
+ | `defaultPrice` | `{input: 1.0, output: 3.0}` | Respaldo para modelos ausentes de ambas tablas |
74
+ | `budgets.session` / `daily` / `monthly` | `10` / `50` / `500` | Límites de presupuesto USD por ámbito; omitir para ilimitado |
75
+ | `warnRatio` | `0.8` | Alertar cuando el uso alcance esta fracción del límite (0..1) |
76
+ | `overLimit` | `alert` | `alert` / `block` / `degrade` tras cruzar un límite |
77
+ | `degradation` | `{}` | Id de modelo → id de modelo más barato del mismo proveedor |
78
+ | `webhookUrl` | *(ninguna)* | URL opcional de webhook para alertas de umbral (POST JSON) |
79
+ | `webhookTimeoutMs` | `5000` | Tiempo de espera de la solicitud webhook |
80
+ | `alertsEnabled` | `true` | Interruptor maestro de alertas de umbral |
81
+ | `alertCooldownMs` | `3600000` | Mínimo ms entre dos alertas del mismo ámbito |
82
+ | `desktopNotifications` | `false` | Notificaciones de escritorio del navegador con la pestaña abierta |
83
+ | `refreshIntervalMs` | `5000` | Intervalo de sondeo de la pestaña |
84
+ | `carbon.enabled` / `region` / `pue` / `energyKwhPerToken` | `true` / `global` / `1.58` / `0.000007` | Puente de carbono (regiones: global, us, eu, china, india, uk, france, iceland) |
85
+ | `latency.enabled` / `windowSize` | `true` / `200` | Percentiles de latencia por modelo y su ventana |
86
+ | `currency` | `{code: USD, rate: 1.0, decimals: 2}` | Moneda de visualización (los costos se calculan en USD) |
87
+ | `outputLanguage` | `en` | Idioma de salida de `/budget`: `en` / `zh` |
88
+ | `historyDays` | `30` | Días de historial de uso diario en la instantánea |
89
+ | `persistence.enabled` / `intervalMs` | `true` / `10000` | Persistencia duradera diaria/mensual entre reinicios (dominio de almacenamiento); degrada a en-memoria si falta el dominio |
90
+
91
+ ## Herramientas y superficies
92
+
93
+ | Superficie | Tipo | Notas |
94
+ |---|---|---|
95
+ | `/budget` | Comando | Resumen por ámbito (uso, ratio, carbono, estado bloqueado) |
96
+ | `/budget models` | Comando | Desglose por modelo con percentiles de latencia |
97
+ | `/budget unblock <scope>` | Comando | Levantar un ámbito bloqueado (`session` / `daily` / `monthly`) |
98
+ | Settings → Plugins → Budget | Pestaña de Settings | Barras de uso, curva de uso por día, desglose, alertas, editores de límites, desbloqueo |
99
+ | `budget/status`, `budget/setSettings`, `budget/unblock` | Typert Remote | Canal del cliente (consumido por la pestaña) |
100
+
101
+ ## Permisos y datos
102
+
103
+ - **Permisos**: `network:outbound` (solo el webhook de alerta opcional), `session:append` (eventos de auditoría), `native-code:none`.
104
+ - **Datos**: todo lo mostrado proviene del flujo de eventos de sesión; la única llamada de red es el webhook configurado, validado al cargar y sin credenciales en los registros. Ningún prompt o payload sale del host.
105
+ - **Registro de sesión**: `budget/alert` y `budget/block` son eventos de auditoría solo-registro con nombres de ámbito e importes USD (diferidos por microtarea ante el guard de reentrada de append). En harness `0.1.2-alpha.1` y posteriores no se escriben — el vocabulario de eventos fail-closed rechaza logs con tipos de evento no registrados y no ofrece superficie de registro externa — así que el rastro de auditoría se degrada al logger de presupuesto y al webhook únicamente.
106
+
107
+ ## Límites de seguridad
108
+
109
+ - **Sin fabricación**: un bloqueo de presupuesto produce un final de error correctivo en el waterfall `llm/stream` — el plugin nunca inventa salida de modelo.
110
+ - **Sin reescritura de solicitudes**: las solicitudes del loop están congeladas; `degrade` nombra el modelo objetivo en el mensaje correctivo en lugar de reemplazar la solicitud.
111
+ - **Fallo ruidoso**: precios, URLs, ratios, regiones o límites inválidos fallan el montaje.
112
+ - **Alcance honesto**: las ediciones en tiempo de ejecución del panel son por sesión; una recarga restaura los valores de cordis.yml.
113
+
114
+ ## Limitaciones conocidas
115
+
116
+ - La agregación es local al proceso: el uso se reinicia al reiniciar el harness (los cubos diarios/mensuales se reconstruyen desde la vista actual del registro).
117
+ - `block`/`degrade` dependen del waterfall `llm/stream`; los builds sin ese seam no pueden bloquear solicitudes (las alertas siguen funcionando).
118
+ - Los precios integrados se desactualizan; sobrescríbelos con `config.prices`.
119
+
120
+ ## Desarrollo
121
+
122
+ ```sh
123
+ pnpm install # node ^22.19 || >=24
124
+ pnpm run typecheck # tsc: src + tests contra el checkout local del harness
125
+ pnpm run typecheck:ci # tsc contra los tipos publicados 0.1.1-rc.2 (sin paths)
126
+ pnpm test # vitest
127
+ pnpm run build # declaraciones tsc + bundles tsdown (lib/)
128
+ pnpm run verify:self-contained # las especificaciones de dependencias resuelven desde el registry
129
+ pnpm run verify:artifacts # cara ESM + manifiesto typert + bundle de cliente
130
+ pnpm pack # el tarball publicado
131
+ ```
132
+
133
+ ## Topics
134
+
135
+ `dsh`, `dsh-plugin`, `deepseek-harness`, `deepseek`, `cordis`, `budget`, `cost-tracking`, `carbon-footprint`, `latency-benchmark`, `token-usage`
136
+
137
+ ## Contributors
138
+
139
+ - [@PerryLink](https://github.com/PerryLink) — creador y mantenedor: agregación, gobernanza de presupuesto, portes de carbono y latencia, la pestaña de Settings y la documentación en cinco idiomas.
140
+
139
141
  ## PerryLink DSH Plugin Family
140
142
 
141
- Este proyecto es uno de los [29 complementos de DeepSeek Harness](https://github.com/PerryLink) mantenidos por [PerryLink](https://github.com/PerryLink). Si este te ayuda, los demás probablemente también:
143
+ Este proyecto es uno de los [33 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:
142
144
 
143
145
  | Plugin | One-liner |
144
146
  |---|---|
145
- | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Auto-revisión con segundo modelo en la cadena de aprobación, cerrado ante fallo por defecto |
146
- | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Agentes secundarios en segundo plano y duraderos con barra lateral Web, mensajería e interrupción |
147
- | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | Gobernanza de costes para DeepSeek Harness: presupuestos, carbono y latencia en un panel. |
148
- | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Equivalente a /rewind de Claude Code: instantáneas, bifurcaciones y restauración de una vez |
149
- | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migra sesiones, memoria, skills y CLAUDE.md de Claude Code a DSH |
150
- | [dsh-click](https://github.com/PerryLink/dsh-click) | Control de escritorio nativo multiplataforma para DeepSeek Harness Windows primero. |
151
- | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Historial de entrada estilo terminal para el compositor web: flechas, búsqueda Ctrl+R |
152
- | [dsh-defend](https://github.com/PerryLink/dsh-defend) | Defensa contra inyección de prompts, jailbreak y fuga de secretos para DeepSeek Harness. |
153
- | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Guardia de disciplina de ingeniería: interrogatorio de requisitos, puertas de test, revisión adversaria |
154
- | [dsh-draw](https://github.com/PerryLink/dsh-draw) | Enrutamiento unificado de generación de imágenes estáticas para DeepSeek Harness. |
155
- | [dsh-fast](https://github.com/PerryLink/dsh-fast) | Diagnóstico de rendimiento de solo lectura para DeepSeek Harness. |
156
- | [dsh-github](https://github.com/PerryLink/dsh-github) | Integración de PR/issues de GitHub para DSH, cada escritura con aprobación |
157
- | [dsh-library](https://github.com/PerryLink/dsh-library) | Base de conocimiento documental local para DeepSeek Harness. |
158
- | [dsh-local-ai](https://github.com/PerryLink/dsh-local-ai) | Integración de modelos locales (Ollama) para DeepSeek Harness. |
159
- | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | Diagnóstico, formato, completado, acciones y renombrado LSP vía servidores de lenguaje |
160
- | [dsh-mask](https://github.com/PerryLink/dsh-mask) | Middleware de enmascarado PII para DeepSeek Harness — anonimiza antes del modelo y restaura en la capa de visualización. |
161
- | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Panel MCP de solo lectura: comando /mcp + pestaña de ajustes con estado, herramientas y errores |
162
- | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Memoria entre sesiones con puerta de aprobación: seam ctx.memory + SQLite + herramienta memory |
163
- | [dsh-observe](https://github.com/PerryLink/dsh-observe) | Exportador de observabilidad OpenTelemetry y Langfuse para DeepSeek Harness. |
164
- | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Cambio de estilos en tiempo de ejecución equivalente a outputStyles de Claude Code |
165
- | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Reglas declarativas allow/deny/ask estilo Claude Code con auditoría |
166
- | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Base de conocimiento de desarrollo de complementos como skill de agente bajo demanda |
167
- | [dsh-score](https://github.com/PerryLink/dsh-score) | Puntuación de calidad multidimensional para complementos de DeepSeek Harness. |
168
- | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Fija sesiones en la barra lateral Web con orden durable |
169
- | [dsh-session-sync](https://github.com/PerryLink/dsh-session-sync) | Sincronización de sesiones entre dispositivos para DeepSeek Harness un espejo git dedicado de tu almacén de sesiones. |
170
- | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Paquete de skills de auditoría de seguridad: escaneo de secretos, revisión de dependencias y cadena de suministro |
171
- | [dsh-talk](https://github.com/PerryLink/dsh-talk) | Bucle de sesión con voz para DeepSeek Harness: háblale y escucha su respuesta. |
172
- | [dsh-test-drive](https://github.com/PerryLink/dsh-test-drive) | Pruebas de instalación y arranque aisladas para complementos de DeepSeek Harness. |
173
- | [dsh-translate](https://github.com/PerryLink/dsh-translate) | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. |
174
-
175
- ## License
176
-
177
- [Apache License 2.0](LICENSE) © 2026 dsh-budget contributors
147
+ | **[dsh-dsh-auto-review](https://github.com/PerryLink/dsh-dsh-auto-review)** | Auto-revisión de segundo modelo en la cadena de aprobación, con cierre en fallo por defecto | |
148
+ | **[dsh-dsh-background-agents](https://github.com/PerryLink/dsh-dsh-background-agents)** | Agentes hijos en segundo plano durables con barra lateral de UI web, mensajería e interrupción | |
149
+ | **[dsh-dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-dsh-checkpoint-rewind)** | Equivalente a /rewind de Claude Code: instantáneas, bifurcaciones de sesión, restauración de un solo uso | |
150
+ | **[dsh-dsh-claude-move](https://github.com/PerryLink/dsh-dsh-claude-move)** | Migra sesiones, memoria, habilidades y CLAUDE.md de Claude Code a DSH | |
151
+ | **[dsh-dsh-click](https://github.com/PerryLink/dsh-dsh-click)** | Control de escritorio nativo multiplataforma para DeepSeek Harness Windows primero. | |
152
+ | **[dsh-dsh-composer-history](https://github.com/PerryLink/dsh-dsh-composer-history)** | Historial de entrada estilo terminal para el compositor web: flechas, búsqueda Ctrl+R | |
153
+ | **[dsh-dsh-data-quality](https://github.com/PerryLink/dsh-dsh-data-quality)** | Comprobaciones de calidad de datasets y verificación de citas (el puente numérico opcional consumido aquí) | |
154
+ | **[dsh-dsh-defend](https://github.com/PerryLink/dsh-dsh-defend)** | Defensa contra inyección de prompts, jailbreak y fuga de secretos para DeepSeek Harness. | |
155
+ | **[dsh-dsh-doublecheck](https://github.com/PerryLink/dsh-dsh-doublecheck)** | Guardián de disciplina de ingeniería: interrogatorio de requisitos, puertas de pruebas, revisión adversaria | |
156
+ | **[dsh-dsh-draw](https://github.com/PerryLink/dsh-dsh-draw)** | Enrutamiento unificado de generación de imágenes estáticas para DeepSeek Harness. | |
157
+ | **[dsh-dsh-fast](https://github.com/PerryLink/dsh-dsh-fast)** | Diagnóstico de rendimiento de solo lectura para DeepSeek Harness. | |
158
+ | **[dsh-dsh-fund-research](https://github.com/PerryLink/dsh-dsh-fund-research)** | Informes de investigación deterministas para fondos mutuos públicos chinos | |
159
+ | **[dsh-dsh-github](https://github.com/PerryLink/dsh-dsh-github)** | Integración de PR/issues de GitHub para DSH, cada escritura controlada por aprobación | |
160
+ | **[dsh-dsh-industry-research](https://github.com/PerryLink/dsh-dsh-industry-research)** | Orquestación de investigación sectorial que sella sus entregables mediante el `ctx.researchReport.assemble` de este plugin | |
161
+ | **[dsh-dsh-library](https://github.com/PerryLink/dsh-dsh-library)** | Base de conocimiento documental local para DeepSeek Harness. | |
162
+ | **[dsh-dsh-local-ai](https://github.com/PerryLink/dsh-dsh-local-ai)** | Integración de modelos locales (Ollama) para DeepSeek Harness. | |
163
+ | **[dsh-dsh-lsp-actions](https://github.com/PerryLink/dsh-dsh-lsp-actions)** | Diagnósticos, formato, autocompletado, acciones de código y renombrado LSP sobre servidores de lenguaje | |
164
+ | **[dsh-dsh-mask](https://github.com/PerryLink/dsh-dsh-mask)** | Middleware de enmascaramiento de PII: anonimiza en el límite del modelo, restaura en la capa de visualización | |
165
+ | **[dsh-dsh-mcp-panel](https://github.com/PerryLink/dsh-dsh-mcp-panel)** | Panel de tiempo de ejecución MCP de solo lectura: comando /mcp + pestaña Settings con estado, herramientas y errores | |
166
+ | **[dsh-dsh-memento](https://github.com/PerryLink/dsh-dsh-memento)** | Memoria entre sesiones controlada por aprobación: costura ctx.memory + SQLite + herramienta de memoria | |
167
+ | **[dsh-dsh-observe](https://github.com/PerryLink/dsh-dsh-observe)** | Exportador de observabilidad OpenTelemetry y Langfuse para DeepSeek Harness. | |
168
+ | **[dsh-dsh-output-styles](https://github.com/PerryLink/dsh-dsh-output-styles)** | Cambio de estilo en tiempo de ejecución equivalente a outputStyles de Claude Code | |
169
+ | **[dsh-dsh-permission-rules](https://github.com/PerryLink/dsh-dsh-permission-rules)** | Reglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría | |
170
+ | **[dsh-dsh-plugin-guide](https://github.com/PerryLink/dsh-dsh-plugin-guide)** | Base de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda | |
171
+ | **[dsh-dsh-research-report](https://github.com/PerryLink/dsh-dsh-research-report)** | Motor de informes de investigación verificables con evidencia direccionada por contenido | |
172
+ | **[dsh-dsh-score](https://github.com/PerryLink/dsh-dsh-score)** | Puntuación de calidad multidimensional para plugins de DeepSeek Harness. | |
173
+ | **[dsh-dsh-session-pin](https://github.com/PerryLink/dsh-dsh-session-pin)** | Fija sesiones en la barra lateral web con orden durable | |
174
+ | **[dsh-dsh-session-sync](https://github.com/PerryLink/dsh-dsh-session-sync)** | Sincronización de sesiones entre dispositivos para DeepSeek Harness — un espejo git dedicado de tu almacén de sesiones. | |
175
+ | **[dsh-dsh-skill-pack-security](https://github.com/PerryLink/dsh-dsh-skill-pack-security)** | Paquete de habilidades de auditoría de seguridad: escaneo de secretos, revisión de dependencias y cadena de suministro | |
176
+ | **[dsh-dsh-talk](https://github.com/PerryLink/dsh-dsh-talk)** | Bucle de sesión con voz para DeepSeek Harness: háblale y escucha su respuesta. | |
177
+ | **[dsh-dsh-test-drive](https://github.com/PerryLink/dsh-dsh-test-drive)** | Pruebas de instalación y humo aisladas para plugins de DeepSeek Harness. | |
178
+ | **[dsh-dsh-translate](https://github.com/PerryLink/dsh-dsh-translate)** | Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness. | |
179
+
180
+ ## License
181
+
182
+ [Apache License 2.0](LICENSE) © 2026 dsh-budget contributors