dsh-codex-style-computer-use 1.3.1 → 2.1.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.
Files changed (46) hide show
  1. package/README.ar.md +234 -0
  2. package/README.de.md +234 -0
  3. package/README.es.md +264 -0
  4. package/README.fa.md +234 -0
  5. package/README.fr.md +243 -0
  6. package/README.md +72 -17
  7. package/README.pt.md +234 -0
  8. package/README.ru.md +259 -0
  9. package/README.zh.md +66 -16
  10. package/icon.svg +20 -4
  11. package/lib/audit.js +7 -0
  12. package/lib/batch.js +14 -19
  13. package/lib/bin/attention-worker.exe +0 -0
  14. package/lib/bin/attention-worker.exe.json +1 -1
  15. package/lib/compact-feedback.js +175 -0
  16. package/lib/continuation.js +1 -1
  17. package/lib/core/bin/dsh-computer-use-worker.exe +0 -0
  18. package/lib/core/bin/dsh-computer-use-worker.exe.json +2 -2
  19. package/lib/core/index.js +403 -136
  20. package/lib/core/native-runtime.js +17 -0
  21. package/lib/core/worker.cs +2160 -229
  22. package/lib/feedback-routes.json +11 -0
  23. package/lib/feedback.js +49 -16
  24. package/lib/image-output.js +87 -17
  25. package/lib/index.js +25 -7
  26. package/lib/key-command.js +37 -0
  27. package/lib/launch.js +67 -0
  28. package/lib/media-contract.js +43 -0
  29. package/lib/observations.js +267 -13
  30. package/lib/policy.js +29 -9
  31. package/lib/tool-contract.js +56 -0
  32. package/lib/tools.js +203 -52
  33. package/lib/verification-region.js +17 -0
  34. package/mcp/package.json +2 -1
  35. package/mcp/src/execution.js +8 -5
  36. package/mcp/src/index.js +16 -267
  37. package/mcp/src/tools.js +271 -0
  38. package/package.json +6 -1
  39. package/scripts/check-behavior.mjs +83 -0
  40. package/scripts/measure-tool-tokens.mjs +21 -0
  41. package/scripts/verify-package.mjs +9 -0
  42. package/skills/computer-use/SKILL.md +55 -43
  43. package/skills/computer-use/references/lifecycle.md +11 -7
  44. package/skills/computer-use/references/maintenance.md +9 -5
  45. package/skills/computer-use/references/precision.md +39 -14
  46. package/skills/computer-use/references/progressive-control.md +10 -4
package/README.es.md ADDED
@@ -0,0 +1,264 @@
1
+ # Computer Use al estilo Codex
2
+
3
+ **La forma más precisa de controlar Windows desde DeepSeek Harness — y la más económica por tarea.**
4
+
5
+ Describa el objetivo. Su agente lee identidades exactas de controles, actúa a través de los propios controles, verifica el resultado y completa una secuencia conocida en una sola ronda de ida y vuelta del modelo en lugar de diez.
6
+
7
+ [English](README.md) | [中文](README.zh.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | **Español** | [Português](README.pt.md) | [العربية](README.ar.md) | [Русский](README.ru.md) | [فارسی](README.fa.md) · [Instalar](#install-and-update-in-dsh-market) · [Registro de cambios](CHANGELOG.md) · [Novedades de 2.0.0](docs/RELEASE-2.0.0.md)
8
+
9
+ ![Control de escritorio Windows al estilo Codex: observar, actuar, verificar](docs/images/01-codex-style.png)
10
+
11
+ ## Por qué es la opción precisa
12
+
13
+ - **Identidad, no conjeturas.** UI Automation expone el árbol de controles real con `AutomationId` exactos, y las acciones pueden manejar un control mediante sus propios patrones de UI Automation en lugar de hacer clic en coordenadas.
14
+ - **Las marcas se verifican, no se dan por buenas.** De forma predeterminada, una marca numerada se valida contra la identidad de la ventana y los píxeles muestreados antes de enviar cualquier entrada, por lo que una marca obsoleta se rechaza en lugar de hacer clic con ella en el lugar equivocado. Cuando un vecino animado invalida continuamente la firma de píxeles, `uiaOnly` fija la identidad al identificador de ventana y a la geometría, mientras que la comprobación de oclusión en el momento del envío sigue aplicándose.
15
+ - **Las consultas se mantienen acotadas.** Las consultas UIA tienen como valores predeterminados profundidad 6, 120 nodos y un presupuesto flexible de 1200 ms; una consulta de más de 6 niveles de profundidad o de más de 300 nodos requiere un `anchor` medido, de modo que una consulta no pueda barrer silenciosamente la región equivocada.
16
+ - **Cuando la aplicación lo oculta, léalo.** `computer_ocr` devuelve líneas y cajas por palabra en píxeles absolutos de pantalla, por lo que las aplicaciones sin UIA se pueden localizar por nombre.
17
+
18
+ ## Por qué cuesta menos
19
+
20
+ - **Una sola ronda de ida y vuelta para una secuencia conocida.** Una llamada a `computer_batch` ejecuta una lista de acciones en serie, se detiene en el primer fallo y cuesta una sola ronda de ida y vuelta del modelo en lugar de una por acción.
21
+ - **Solo vuelve el delta.** Pase el ID de observación anterior como `since` y reciba adiciones, cambios, eliminaciones y el orden, no el árbol completo otra vez.
22
+ - **Recibos compactos de forma predeterminada en 2.0.0.** El texto posterior a la acción normalmente añade como máximo 6 KiB al recibo de la acción; `feedback: full` sigue disponible cuando el detalle importa más.
23
+ - **La evidencia no entra en la conversación.** La evidencia completa de un punto puede residir en una caché local acotada (4 MiB de memoria, 32 MiB de disco, 64 registros, caducidad de 24 horas) y recuperarse cuando sea necesario.
24
+ - **El trabajo local se queda local.** UI Automation, el OCR de pantalla y las comprobaciones de píxeles se ejecutan en el worker nativo precompilado, sin coste adicional de visión por paso.
25
+
26
+ ## Diseñado para un escritorio que usted sigue usando
27
+
28
+ - **Espera por usted.** Un aviso de 1 segundo antes de la entrada (0,1 segundos dentro de una ventana deslizante de 3 minutos) devuelve el escritorio de inmediato; cuando usted termina, el agente vuelve a observar y continúa la tarea original.
29
+ - **El freno llega al modelo.** `Ctrl+Esc` pausa, `Ctrl+Alt+R` reanuda, `Ctrl+Alt+Q` sale, y una detención se inyecta en la sesión en ejecución. Las aprobaciones se mantienen activadas de forma predeterminada y los campos de contraseña se rechazan de forma predeterminada.
30
+ - **Informa de lo que no puede hacer.** El escritorio seguro de Windows (aviso de UAC o pantalla de bloqueo) se detecta, se informa y se reanuda después; no se reintenta a ciegas.
31
+
32
+ ![Traspaso a la persona: preparar, tomar el control, continuar](docs/images/02-handoff.png)
33
+
34
+ ![Eficiencia de tokens: observaciones focalizadas, acciones por lotes y relectura de resultados](docs/images/03-token-efficiency.png)
35
+
36
+ Las ilustraciones anteriores muestran el modelo de interacción introducido en 1.3.0; el puntero en forma de cometa de 2.0.0, las consultas acotadas y los recibos compactos se describen arriba. El uso real de tokens depende de la tarea, el modelo y la estrategia de observación. Las aprobaciones permanecen activadas de forma predeterminada; la pausa, la cancelación y la salida explícitas siguen teniendo la última palabra.
37
+
38
+ **Listo para instalar.** 19 herramientas de escritorio, con los componentes nativos incluidos. Sin SDK ni compilación durante la instalación. Requiere Windows, Node.js ≥ 22 y .NET Framework 4.x, que se incluye con Windows. Un complemento comunitario independiente; Codex describe el estilo de interacción.
39
+
40
+ ## Novedades de 2.0.0
41
+
42
+ - **Recibos compactos de forma predeterminada**: el texto posterior a la acción normalmente añade como máximo 6 KiB al recibo de la acción; `feedback: full` y `feedback: none` son alternativas explícitas.
43
+ - **Consultas UIA acotadas y ancladas**: profundidad 6, 120 nodos y un presupuesto flexible de 1200 ms de forma predeterminada; las consultas de más de 6 niveles de profundidad o de más de 300 nodos necesitan un `anchor` medido.
44
+ - **Evidencia bajo demanda**: 4 MiB de memoria + 32 MiB de disco, 64 registros, caducidad de 24 horas; un fallo de disco recurre a la memoria acotada.
45
+ - **Aviso de preparación adaptativo**: 1 segundo inicialmente, 0,1 segundos dentro de una ventana deslizante de 3 minutos; la cometa inclinada marca el punto de clic del agente.
46
+ - **Ruta de entrada reforzada**: combinaciones de teclas protegidas para la gestión de ventanas, contrapresión y recuperación del worker, comprobaciones de destinos obsoletos y limpieza tras cancelación.
47
+
48
+ <details>
49
+ <summary>Versión actual y compatibilidad</summary>
50
+
51
+ **2.0.0** es la nueva versión principal, distribuida inicialmente en npm `next` mientras transcurre el período de espera de publicación de 24 horas. Consulte [cambios y migración de 2.0.0](docs/RELEASE-2.0.0.md). Compruebe las etiquetas del registro para conocer la disponibilidad estable actual.
52
+
53
+ La versión 1.3.1 lee texto de la pantalla por nombre, detecta el escritorio seguro de Windows y se reanuda por sí sola, y mantiene todos los colores en el mismo riel de borde derivado del DPI, con un nivel mínimo de respiración visible. La versión 1.3.0 libera el control del escritorio cuando el trabajo termina mientras el chat continúa.
54
+
55
+ Correcciones anteriores: [atribución de aprobaciones 1.2.3](docs/RELEASE-1.2.3.md) · [atención nativa 1.2.1](docs/RELEASE-1.2.1.md) · [parche de host independiente](docs/RELEASE-1.2.2.md).
56
+
57
+ </details>
58
+
59
+ ## Qué hace
60
+
61
+ La versión 2.0.0 también utiliza un puntero de cometa azul y compacto durante la operación de la IA y la retención de escena. Su punta inclinada marca el punto de clic, con pequeños símbolos de texto y de cambio de tamaño dentro de la cometa. Una cometa que respira indica que la página y la posición del puntero deben permanecer en su sitio; el modo libre restaura el cursor normal de la aplicación. Se conserva el tema de cursor de Windows del usuario.
62
+
63
+ La versión 2.0.0 acota el recorrido de UIA y usa de forma predeterminada texto compacto posterior a la acción. La retroalimentación de imágenes existente sigue disponible; `feedback: compact|full|none` controla el detalle, y `verificationRegion: "x,y,w,h"` designa, en el clic, el área de efecto esperada con independencia del punto de entrada. El texto compacto normalmente añade como máximo 6 KiB al recibo de acción original. La evidencia completa del punto se puede conservar en una caché local acotada y con caducidad, y recuperarse bajo demanda. Un fallo de disco recurre a la memoria acotada; si no se puede conservar ninguna instantánea recuperable, la evidencia actual se devuelve en línea y completa, fuera de ese presupuesto compacto, sin otra observación ni entrada.
64
+
65
+ Las consultas UIA filtradas requieren `hwnd`. Los valores predeterminados son profundidad 6, 120 nodos y un presupuesto flexible de 1200 ms. Una consulta de más de 6 niveles de profundidad o de más de 300 nodos requiere un `anchor:"x,y"` medido en esa ventana; un `id` exacto no elude esta regla. Una llamada al proveedor puede superar el presupuesto flexible, y los resultados parciales no pueden demostrar ausencia ni unicidad. Tras un atajo de gestión de ventanas, inspeccione `computer_state {windows:true}`, active correctamente la ventana deseada y, después, obsérvela antes de introducir más entrada de teclado.
66
+
67
+ - **Observar**: lista de ventanas, capturas de pantalla (región / JPEG / PNG / reducidas), un mapa Set-of-Marks de
68
+ elementos en los que se puede hacer clic y el árbol de UI Automation con `AutomationId` exactos.
69
+ - **Actuar**: hacer clic, mover, arrastrar, desplazar, seleccionar un rango de texto, escribir, pulsar teclas y accionar controles
70
+ mediante sus propios patrones de UI Automation en lugar de coordenadas a ciegas.
71
+ - **Lote**: una llamada a `computer_batch` ejecuta una lista de acciones en serie y se detiene en el primer
72
+ fallo, de modo que una secuencia conocida cuesta una ronda de ida y vuelta del modelo en lugar de diez.
73
+ - **Preguntar**: `computer_ask` plantea una pregunta en la misma tarjeta de chat que DSH usa para `ask_user_question`,
74
+ sin cuenta atrás.
75
+ - **Un freno humano que llega al modelo**: una detención se inyecta en la sesión en ejecución, de modo que el agente
76
+ se entera de que fue interrumpido en lugar de descubrirlo en el siguiente turno.
77
+
78
+ Las herramientas observan el escritorio en lugar de rastrear los documentos del usuario. El complemento gestiona los componentes nativos en
79
+ `%LOCALAPPDATA%\dsh-computer-use\worker\`, y los registros de auditoría, las capturas de pantalla y su propia caché acotada
80
+ `observation-cache` en `$DSH_HOME/data/computer-use/`. `computer_ctrl {action:"clear_cache"}` borra
81
+ la caché de observaciones de este Agente; no elimina capturas de pantalla, archivos adjuntos ni documentos del usuario.
82
+
83
+ <a id="install-and-update-in-dsh-market"></a>
84
+
85
+ ## Instalación y actualización en dsh-market
86
+
87
+ Busque **computer-use** o **Codex-style** en el mercado. Localice el repositorio **ltmroberthk915/dsh-computer-use** y el paquete npm **dsh-codex-style-computer-use** (mantenedor: **ltmroberthk**) y, después, haga clic en **Instalar**. Use **Actualizar** o **Actualizar todo** para las actualizaciones del canal estable. Ambos componentes nativos están incluidos; no se necesita PowerShell 7 ni permiso de compilación.
88
+
89
+ Como alternativa, introduzca **`dsh-codex-style-computer-use`** en **Ajustes → Complementos → Añadir complemento** para el canal estable actual, o **`dsh-codex-style-computer-use@2.0.0`** para la versión que se describe aquí. Introduzca la especificación del paquete npm directamente. Es posible que su host aplique un período de espera a las versiones nuevas; siga sus indicaciones. Un bundle recién añadido puede cargarse en vivo en los hosts compatibles; compruebe que aparecen sus herramientas y su skill. Reinicie desde la bandeja del sistema cuando reemplace una versión ya cargada, cuando el cliente siga desactualizado o cuando DSH indique **restart-required**.
90
+
91
+ ### Versiones publicadas hace menos de 24 horas
92
+
93
+ La configuración predeterminada no estricta de pnpm 11.7.0 registra automáticamente una excepción de una sola versión e instala. Una instalación correcta en una máquina no demuestra que otra máquina permita versiones nuevas.
94
+
95
+ Con `minimumReleaseAgeStrict: true` (o una política del host que active comprobaciones estrictas de antigüedad de versiones), y sin una excepción aplicable, una versión por debajo de la antigüedad configurada se rechaza antes de que se ejecute el código del complemento. Se verificó que el nombre simple, una fijación exacta `@1.2.0` y la URL del tarball de npm fallan con `ERR_PNPM_NO_MATURE_MATCHING_VERSION` bajo esa política. Establecer explícitamente `minimumReleaseAge: 1440` también activa el comportamiento estricto en pnpm 11.7.0, a menos que `minimumReleaseAgeStrict` se establezca por separado en false. Reiniciar DSH, instalar PowerShell o reintentar el mismo comando no corrige un rechazo por política estricta. El puente de escritorio oficial no acepta opciones adicionales de pnpm.
96
+
97
+ Si una política estricta bloquea la instalación, espere a que la versión cumpla la antigüedad configurada para instalar sin cambiar la política. La versión 1.2.0 se publicó en `2026-10-03T03:50:11.586Z`; cumple el umbral de 24 horas a partir de **2026-10-04 03:50:12 UTC** (11:50:12 en China). Un umbral personalizado más largo o un espejo de registro con retraso pueden demorar aún más la disponibilidad. Los usuarios de la configuración predeterminada no estricta no necesitan esperar ni editar la configuración para este paquete.
98
+
99
+ Si elige explícitamente instalar antes, combine esta excepción de una sola versión en el `pnpm-workspace.yaml` existente del perfil de destino y, después, reintente la instalación desde el mercado. Conserve las demás entradas; no desactive la política global de antigüedad:
100
+
101
+ ```yaml
102
+ minimumReleaseAgeExclude:
103
+ - dsh-codex-style-computer-use@1.2.0
104
+ ```
105
+
106
+ La ruta de escritorio predeterminada es `%USERPROFILE%\.dsh\profiles\desktop\pnpm-workspace.yaml`; use el directorio real si `DSH_HOME` está personalizado. Elimine esta única excepción cuando la versión madure, si lo desea.
107
+
108
+ Las correcciones anteriores de documentación y de comprobación del publicador no cambiaron el runtime de 1.2.0 y no requirieron reinstalación. La corrección de atención nativa de **1.2.1** sí requiere una actualización. Volver a añadir la misma fuente puede producir un error `ambiguous-install` del host en algunas rutas de instalación; reinstalar 1.2.0 no aplicará la corrección de 1.2.1.
109
+
110
+ **Migración de una instalación anterior por Git/tarball desde este repositorio:** elimine la entrada antigua **dsh-computer-use** del mercado y, después, instale **dsh-codex-style-computer-use**. El nombre npm sin ámbito `dsh-computer-use` pertenece a otro repositorio; no lo instale como actualización de este complemento. Una instalación por Git no puede cambiar la identidad de su dependencia solo con obtener un nuevo commit. Después de esta migración única en la interfaz, use las actualizaciones normales del mercado. Se conservan los nombres de herramientas `computer_*` existentes y el espacio de nombres de ajustes `computer-use`.
111
+
112
+ **Conserve también su configuración guardada:** haga una copia de seguridad del `cordis.patch.yml` del perfil y, después, cambie solo `name: dsh-computer-use` por `name: dsh-codex-style-computer-use` en una anulación con `id: computer-use`. Mantenga todos sus campos `config` y `disabled`. Conservar solo el espacio de nombres de ajustes no basta: una discrepancia de nombre hace que DSH omita incluso las anulaciones `read-only`, `dryRun` y de estado deshabilitado. No reemplace otros complementos ni un parche compartido del home de forma global. El script `scripts/migrate-profile.mjs` del repositorio hace una vista previa de forma predeterminada; `--apply` crea una copia de seguridad y reemplaza el archivo de forma atómica, y rechaza ediciones simultáneas.
113
+
114
+ Como alternativa, descargue la [utilidad de migración de configuración](https://github.com/ltmroberthk915/dsh-computer-use/releases/download/v1.2.0/computer-use-profile-migration.zip), extráigala y haga doble clic en `migrate-profile.cmd`. Localiza la aplicación oficial de escritorio instalada y usa Windows PowerShell 5.1 y el Node incluido en DSH para reparar el perfil de escritorio predeterminado. Se detiene si el bundle nuevo no está presente o si el bundle antiguo sigue seleccionado. No cambia la política de antigüedad de versiones. Para otro perfil, ejecute `migrate-profile.ps1 -ProfileDirectory <absolute-directory>` para ver una vista previa y, cuando esté listo, añada `-Apply`.
115
+
116
+ La versión publicada en GitHub también incluye `dsh-computer-use.tgz` para instalación sin conexión o manual; la instalación desde el registro es la opción predeterminada para las actualizaciones del mercado.
117
+
118
+ Usuarios de la CLI (perfil web):
119
+
120
+ ```sh
121
+ dsh plugin --profile web add dsh-codex-style-computer-use
122
+ ```
123
+
124
+ Los diagnósticos de escritorio deben usar la **CLI incluida con la aplicación oficial de escritorio**:
125
+
126
+ ```powershell
127
+ $CuDshInstall = Join-Path $env:LOCALAPPDATA 'Programs\DeepSeek Harness'
128
+ & "$CuDshInstall\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop why dsh-codex-style-computer-use
129
+ ```
130
+
131
+ Para una instalación personalizada, establezca `$CuDshInstall` en el directorio del destino del acceso directo de escritorio. Un `dsh` global de npm más antiguo puede rechazar el perfil de escritorio. No añada `resources/runtime/bin` al PATH global ni instale un pnpm independiente para esta tarea. Para la instalación, prefiera la interfaz del complemento.
132
+
133
+ ## El skill incluido
134
+
135
+ Las herramientas de control permanecen bloqueadas hasta que la sesión produce una frase de recibo que existe solo dentro de
136
+ `skills/computer-use/SKILL.md`. Eso es deliberado: es la versión honesta más sólida de «leer el
137
+ manual antes de controlar», porque ninguna capa de herramientas puede ver si un modelo leyó un documento.
138
+
139
+ El complemento registra el skill incluido mediante `ctx.skills.register()` cuando está disponible. Si ese servicio no está disponible, `computer_use_activate` devuelve el mismo manual, su ruta de origen absoluta y la lista de herramientas con ámbito. El recibo y todas las comprobaciones de aprobación y freno existentes siguen aplicándose.
140
+
141
+ ## Entrada compartida en 1.2.0-rc.2
142
+
143
+ Esta versión preliminar introduce la toma de control humana inmediata, la espera automática tras 2 segundos de entrada continua y la continuación tras 3 segundos de inactividad. La espera ocurre localmente, sin sondeo del modelo. Las escrituras interrumpidas requieren una nueva lectura de verificación y nunca se reproducen a ciegas. La cancelación del host libera la entrada aceptada propiedad de la automatización sin crear una nueva pausa persistente. Se conserva el manejo existente de DSH Pet y la ventana principal, así como del topmost original.
144
+
145
+ Las rutas configuradas GLM 5.3 Max, GLM 5.3 Flash y DeepSeek Flash superaron una prueba controlada del protocolo de continuación. La entrada nativa y las teclas de acceso rápido físicas se verificaron por separado; esto no es una evaluación general de escritorio ni de visión. Consulte la [verificación de la versión](docs/RELEASE-1.2.0-rc.2.md) para conocer el alcance.
146
+
147
+ ## Controles bajo demanda en 1.1
148
+
149
+ - **Herramientas por Agente:** los Agentes inactivos ven `computer_use_activate`, `computer_ctrl` y `computer_ask`. Una carga correcta del skill computer-use, un recibo o una activación exponen a ese Agente las 19 herramientas de escritorio más la entrada de activación. Otros Agentes y los agentes hijos se activan de forma independiente. Se admiten llamadas nativas y `run_code` de Node. La activación no inicia el control ni libera un freno humano.
150
+ - **Destinos UIA observados:** una consulta de nombre/id con ámbito devuelve un identificador de destino opaco. Úselo para acciones de patrón; `rebind:true`, opcional, permite la recuperación por identidad única o semántica después de un reemplazo en la misma ventana. Un contexto cambiado, la ambigüedad y los escaneos incompletos provocan un rechazo. Las consultas amplias omiten los identificadores de recuperación a menos que `targets:true`; crear testigos para una lista grande cuesta trabajo nativo adicional.
151
+ - **Observaciones incrementales:** pase el ID de observación anterior como `since` con la misma consulta. Los deltas conservan adiciones, cambios, eliminaciones y el orden. Las instantáneas están aisladas por Agente, con un máximo de 64 observaciones indexadas y 4 MiB de JSON retenido por almacén. `snapshot` recupera un resultado histórico retenido; `offset` y `limit` paginan sus matrices. Las bases ausentes, el ámbito cambiado, la evidencia incompleta o un delta mayor recurren a la salida completa.
152
+
153
+ Consulte [el protocolo detallado](skills/computer-use/references/progressive-control.md) para conocer los límites de la caché y los límites de recuperación. Las instantáneas UIA conservan los campos devueltos por el proveedor dentro de los límites existentes del proveedor; la recuperación histórica no es una verificación reciente del resultado.
154
+
155
+ ## Herramientas
156
+
157
+ | Grupo | Herramientas |
158
+ |---|---|
159
+ | Activar | `computer_use_activate` |
160
+ | Observar | `computer_state` `computer_shot` `computer_ocr` `computer_marks` `computer_uia` |
161
+ | Actuar | `computer_click` `computer_move` `computer_drag` `computer_scroll` `computer_select` `computer_key` `computer_type` `computer_uia_act` `computer_window` `computer_clip` |
162
+ | Flujo | `computer_wait` `computer_batch` |
163
+ | Meta | `computer_ask` `computer_ctrl` |
164
+
165
+ `computer_marks` devuelve marcas numeradas para los elementos que encontró en pantalla; `computer_marks {shot:true}` también guarda una imagen anotada. `computer_shot` devuelve una captura de pantalla simple y, en rutas compatibles con imágenes, un adjunto de imagen nativo. Una marca es un ID de instantánea: se valida contra la identidad de la ventana
166
+ y los píxeles muestreados antes de enviar cualquier entrada, por lo que una marca obsoleta se rechaza en lugar de
167
+ hacer clic con ella en el lugar equivocado.
168
+
169
+ ## Modos de aprobación
170
+
171
+ Para un host que informa un rechazo automático por avisos deshabilitados como «el usuario rechazó la herramienta», consulte el [parche de atribución de aprobaciones de DSH y la prueba de regresión](docs/APPROVAL-ATTRIBUTION.md).
172
+
173
+ `automationMode` se establece en los ajustes del complemento y su valor predeterminado es `standard`:
174
+
175
+ | Modo | Observación | Actuación |
176
+ |---|---|---|
177
+ | `read-only` | permitida | denegada |
178
+ | `standard` | permitida | cada acción se solicita mediante la tarjeta de aprobación del host |
179
+ | `autonomous` | permitida | permitida, las operaciones de alto riesgo siguen solicitando aprobación |
180
+ | `unrestricted` | permitida | permitida (el mecanismo de seguridad y el límite de frecuencia del worker siguen aplicándose) |
181
+
182
+ Las operaciones de alto riesgo (cerrar una ventana, `alt+f4`, `win+r` y similares) solicitan aprobación en todos los modos. Los campos
183
+ de contraseña se detectan mediante `IsPassword` de UI Automation y se rechazan de forma predeterminada.
184
+
185
+ ## Modelo de seguridad
186
+
187
+ - **Entrada compartida**: la actividad normal del usuario está permitida mientras el agente piensa, observa o se prepara. Durante la actuación real, la escritura, el desplazamiento y los botones ceden de inmediato; el movimiento del puntero tiene una tolerancia de desplazamiento de 16 píxeles. La entrada continua o mantener una tecla o un botón durante 2 segundos activa la espera automática. Tras soltar y 3 segundos de inactividad, el agente debe inspeccionar el destino actual y continuar la tarea original, sin reproducir a ciegas escrituras parciales. Un suave degradado de borde en amarillo pálido indica que el control es humano.
188
+ - **Pausa manual**: solo la combinación física `Ctrl+Esc` activa un freno de entrada persistente; `Ctrl+Alt+R` lo reanuda. La tecla Esc normal, la escritura, el desplazamiento, la distancia y la frecuencia del puntero y la esquina de la pantalla no crean esta pausa. Las retenciones explícitas por pregunta o diagnóstico siguen siendo independientes.
189
+ - **Salida**: `Ctrl+Alt+Q` finaliza la sesión: la superposición desaparece, sus listeners se desmontan y
190
+ se rechaza cualquier actuación posterior hasta que un turno posterior abra una nueva.
191
+ - **El freno es un hecho de la máquina, no de un solo proceso**: el estado activado se conserva y
192
+ cada worker lo adopta, incluido uno iniciado más tarde desde un shell.
193
+ - **Auditoría**: cada actuación se anexa a `$DSH_HOME/data/computer-use/audit.jsonl` con saneamiento de
194
+ argumentos.
195
+ - **Interruptor de emergencia del propio complemento**: `DSH_COMPUTER_USE_KILL=1` hace que el complemento se niegue a iniciarse;
196
+ `dryRun: true` simula las actuaciones y solo las registra.
197
+
198
+ ## Configuración
199
+
200
+ | Clave | Valor predeterminado | Significado |
201
+ |---|---:|---|
202
+ | `automationMode` | `standard` | modo de aprobación (arriba) |
203
+ | `progressiveTools` | `true` | activación por Agente; `false` expone las 19 herramientas de escritorio de forma global |
204
+ | `actionFeedback` | `true` | observar automáticamente después de acciones directas y lotes |
205
+ | `actionFeedbackDetail` | `compact` | `compact`, `full` o `none`; el `feedback` de una llamada anula este valor predeterminado; la evidencia no almacenada en caché recurre a la salida completa en línea |
206
+ | `dryRun` | `false` | simular actuaciones, solo registrar |
207
+ | `maxActionsPerMinute` | `60` | límite de frecuencia de actuación a nivel del núcleo |
208
+ | `annotateMarks` | `true` | dibujar cajas Set-of-Marks en las capturas de pantalla |
209
+ | `workerExe` | `""` | ruta explícita del worker; vacío = autodescubrir o compilar |
210
+ | `snapshotDir` | `""` | directorio de capturas de pantalla; vacío = `$DSH_HOME/data/computer-use/shots` |
211
+
212
+ ## Servidor MCP
213
+
214
+ `mcp/` es un servidor MCP stdio sin dependencias sobre el mismo núcleo, para clientes que hablan MCP en lugar
215
+ de Cordis:
216
+
217
+ ```sh
218
+ # published package (2.0.1 and later) — no checkout needed
219
+ npx -y dsh-codex-style-computer-use
220
+
221
+ # from a checkout
222
+ node mcp/src/index.js
223
+ ```
224
+
225
+ El servidor integrado informa de la versión de este paquete raíz. Se inicia solo con observación.
226
+ El host que lo lanza puede establecer `DSH_CU_ALLOW_INPUT=1` cuando posee la autorización para las acciones de escritorio;
227
+ las llamadas a herramientas MCP no pueden habilitar la entrada. La herramienta de compatibilidad `cu_approve` solo informa de esta regla y
228
+ nunca concede consentimiento. La política `automationMode` de DSH pertenece al adaptador de Cordis y no es un
229
+ servicio de aprobación MCP. `DSH_CU_DRY_RUN=1` simula la entrada que el host ya ha habilitado.
230
+
231
+ Ambos adaptadores usan la misma gramática de comandos de teclas, las mismas reglas de fallo y continuación de lotes, y la misma asignación
232
+ de coordenadas de imagen. MCP devuelve metadatos de captura estructurados y una única imagen PNG/JPEG más reciente, sin
233
+ serializar los bytes de la imagen en texto JSON. `cu_hold` / `cu_free` reservan o liberan la escena entre
234
+ acciones; `cu_release` finaliza el ciclo de escritorio. `cu_drag` acepta comprobaciones `expectCursor` y `hwnd`.
235
+ MCP expone una superficie de herramientas más pequeña; el adaptador de Cordis proporciona la integración específica de DSH
236
+ para preguntas humanas y el ciclo de vida del host.
237
+
238
+ ## Desarrollo
239
+
240
+ Las comprobaciones de publicación del publicador usan el registro oficial de npm de forma predeterminada. Si ese origen no es accesible en su red, `CU_REGISTRY` selecciona un espejo explícito para el comando `check` de solo lectura; el resultado JSON incluye `registry` y `authoritative`. Ejemplo en PowerShell (esto solo cambia el shell actual):
241
+
242
+ ```powershell
243
+ $env:CU_REGISTRY = 'https://registry.npmmirror.com'
244
+ node scripts/release-channel.mjs check 1.2.0
245
+ Remove-Item Env:CU_REGISTRY
246
+ ```
247
+
248
+ El código de salida `0` significa que la versión ha superado la comprobación de publicación de 24 horas, `2` significa que aún está en período de enfriamiento y `1` significa que la comprobación falló. Un fallo de red no demuestra que un paquete no esté publicado, y los espejos pueden ir con retraso. `promote` siempre vuelve a comprobar y escribe en `https://registry.npmjs.org`, ignorando `CU_REGISTRY`; necesita acceso a ese origen y usa la configuración de proxy de npm cuando es necesario. Esta herramienta del publicador no forma parte de la instalación para el usuario final. Consulte [el procedimiento de publicación](docs/RELEASE-1.2.0.md).
249
+
250
+ El repositorio incluye la suite de guardas que protege las invariantes anteriores: la vida útil del ciclo, el
251
+ protocolo de pregunta y freno, la clasificación de operaciones, la puerta del skill y el cableado del skill incluido:
252
+
253
+ ```sh
254
+ pwsh -NoProfile -ExecutionPolicy Bypass -File build/run-guards.ps1 # all guards
255
+ node build/verify-tools-schema.mjs # tool-schema load guard
256
+ ```
257
+
258
+ Las definiciones de herramientas se compilan mediante el DSL real `@deepseek-ai/dsh-tools`, de modo que un error de esquema
259
+ falla aquí en lugar de derribar el árbol de complementos del host al reiniciar. Algunas guardas compilan el
260
+ worker nativo y son exclusivas de Windows.
261
+
262
+ ## Licencia
263
+
264
+ MIT — consulte [LICENSE](LICENSE).
package/README.fa.md ADDED
@@ -0,0 +1,234 @@
1
+ # استفاده از کامپیوتر به سبک Codex
2
+
3
+ **دقیق‌ترین راه برای کنترل Windows از DeepSeek Harness — و کم‌هزینه‌ترین در هر وظیفه.**
4
+
5
+ هدف را توصیف کنید. عامل شما هویت دقیق کنترل‌ها را می‌خواند، از طریق خودِ کنترل‌ها عمل می‌کند، نتیجه را بررسی می‌کند — و یک توالی شناخته‌شده را در یک رفت‌وبرگشت مدل، به‌جای ده رفت‌وبرگشت، کامل می‌کند.
6
+
7
+ [English](README.md) | [中文](README.zh.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Português](README.pt.md) | [العربية](README.ar.md) | [Русский](README.ru.md) | **فارسی** · [نصب](#install-and-update-in-dsh-market) · [تاریخچه تغییرات](CHANGELOG.md) · [تغییرات 2.0.0](docs/RELEASE-2.0.0.md)
8
+
9
+ ![کنترل دسکتاپ Windows به سبک Codex: مشاهده، اقدام، بررسی](docs/images/01-codex-style.png)
10
+
11
+ ## چرا این یکی دقیق‌ترین است
12
+
13
+ - **هویت، نه حدس و گمان.** UI Automation درخت واقعی کنترل‌ها را با `AutomationId`های دقیق آشکار می‌کند، و اقدام‌ها می‌توانند یک کنترل را از طریق الگوهای UI Automation خودش به کار بگیرند، نه با کلیک روی مختصات.
14
+ - **نشانه‌ها بررسی می‌شوند، نه اینکه به آن‌ها اعتماد شود.** به‌طور پیش‌فرض، یک نشانه شماره‌دار پیش از ارسال هر ورودی با هویت پنجره و پیکسل‌های نمونه‌برداری‌شده اعتبارسنجی می‌شود؛ بنابراین نشانه کهنه رد می‌شود، نه اینکه در جای اشتباه کلیک شود. وقتی یک همسایه متحرک مدام امضای پیکسلی را باطل می‌کند، `uiaOnly` هویت را به هندل پنجره و هندسه آن سنجاق می‌کند، در حالی که بررسی انسداد در زمان ارسال همچنان اعمال می‌شود.
15
+ - **پرس‌وجوها محدود می‌مانند.** پرس‌وجوهای UIA به‌طور پیش‌فرض عمق 6، 120 گره و بودجه نرم 1200 میلی‌ثانیه دارند؛ پرس‌وجویی عمیق‌تر از 6 یا بزرگ‌تر از 300 گره به یک `anchor` اندازه‌گیری‌شده نیاز دارد، تا یک پرس‌وجو نتواند بی‌سروصدا ناحیه اشتباه را جاروب کند.
16
+ - **وقتی برنامه آن را پنهان می‌کند، آن را بخوانید.** `computer_ocr` خطوط و کادر هر واژه را در پیکسل‌های مطلق صفحه برمی‌گرداند، پس برنامه‌های بدون UIA هم می‌توانند بر اساس نام مکان‌یابی شوند.
17
+
18
+ ## چرا هزینه کمتری دارد
19
+
20
+ - **یک رفت‌وبرگشت برای یک توالی شناخته‌شده.** یک فراخوانی `computer_batch` فهرستی از اقدام‌ها را به‌صورت سری اجرا می‌کند، در نخستین خطا متوقف می‌شود، و هزینه‌اش یک رفت‌وبرگشت مدل است، نه یکی برای هر اقدام.
21
+ - **فقط تغییرات برمی‌گردد.** شناسه مشاهده قبلی را به‌عنوان `since` بدهید و افزوده‌ها، تغییرها، حذف‌ها و ترتیب را دریافت کنید — نه کل درخت را دوباره.
22
+ - **رسیدهای فشرده به‌طور پیش‌فرض در 2.0.0.** متن پس از اقدام معمولاً حداکثر 6 KiB به رسید اقدام اضافه می‌کند؛ وقتی جزئیات مهم‌تر است، `feedback: full` هنوز در دسترس است.
23
+ - **شواهد بیرون از گفتگو می‌مانند.** شواهد کامل نقطه می‌توانند در یک حافظه پنهان محلی محدود (4 MiB حافظه، 32 MiB دیسک، 64 رکورد، انقضای 24 ساعته) بمانند و در صورت نیاز بیرون کشیده شوند.
24
+ - **کار محلی محلی می‌ماند.** UI Automation، OCR صفحه و بررسی‌های پیکسلی در worker بومی از پیش ساخته‌شده اجرا می‌شوند — بدون هزینه اضافی بینایی برای هر گام.
25
+
26
+ ## ساخته‌شده برای دسکتاپی که همچنان از آن استفاده می‌کنید
27
+
28
+ - **منتظر شما می‌ماند.** یک اعلان 1 ثانیه‌ای پیش از ورودی (0.1 ثانیه در یک بازه غلتان 3 دقیقه‌ای) دسکتاپ را بی‌درنگ به شما برمی‌گرداند؛ پس از پایان کار شما، عامل دوباره مشاهده می‌کند و وظیفه اصلی را ادامه می‌دهد.
29
+ - **ترمز به مدل می‌رسد.** `Ctrl+Esc` موقتاً متوقف می‌کند، `Ctrl+Alt+R` ادامه می‌دهد، `Ctrl+Alt+Q` خارج می‌شود، و یک توقف به نشست در حال اجرا فرستاده می‌شود. تأییدها به‌طور پیش‌فرض روشن می‌مانند و فیلدهای گذرواژه به‌طور پیش‌فرض رد می‌شوند.
30
+ - **آنچه نمی‌تواند انجام دهد را گزارش می‌کند.** دسکتاپ امن Windows (اعلان UAC یا صفحه قفل) تشخیص داده می‌شود، گزارش می‌شود و پس از پایان آن، کار ادامه می‌یابد — نه اینکه کورکورانه دوباره تلاش شود.
31
+
32
+ ![واگذاری به انسان: آماده‌سازی، تصاحب، ادامه](docs/images/02-handoff.png)
33
+
34
+ ![کارایی توکن: مشاهدات متمرکز، اقدام‌های دسته‌ای و بازخوانی نتیجه](docs/images/03-token-efficiency.png)
35
+
36
+ تصاویر بالا مدل تعامل معرفی‌شده در 1.3.0 را نشان می‌دهند؛ نشانگر بادبادکی، پرس‌وجوهای محدود و رسیدهای فشرده در 2.0.0 در بالا توضیح داده شده‌اند. مصرف واقعی توکن به وظیفه، مدل و راهبرد مشاهده بستگی دارد. تأییدها به‌طور پیش‌فرض فعال می‌مانند؛ توقف صریح، لغو و خروج همچنان مرجع نهایی هستند.
37
+
38
+ **آماده نصب.** 19 ابزار دسکتاپ، همراه با کمک‌کننده‌های بومی. بدون SDK و بدون کامپایل در زمان نصب. به Windows، Node.js ≥ 22 و .NET Framework 4.x که همراه Windows است نیاز دارد. یک افزونه مستقل و جامعه‌محور؛ Codex تنها سبک تعامل را توصیف می‌کند.
39
+
40
+ ## تازه‌های 2.0.0
41
+
42
+ - **رسیدهای فشرده به‌طور پیش‌فرض** — متن پس از اقدام معمولاً حداکثر 6 KiB به رسید اقدام اضافه می‌کند؛ `feedback: full` و `feedback: none` جایگزین‌های صریح هستند.
43
+ - **پرس‌وجوهای UIA محدود و لنگرانداخته** — به‌طور پیش‌فرض عمق 6، 120 گره و بودجه نرم 1200 میلی‌ثانیه؛ پرس‌وجوهای عمیق‌تر از 6 یا بزرگ‌تر از 300 گره به یک `anchor` اندازه‌گیری‌شده نیاز دارند.
44
+ - **شواهد در صورت درخواست** — 4 MiB حافظه + 32 MiB دیسک، 64 رکورد، انقضای 24 ساعته؛ خرابی دیسک به حافظه محدود بازمی‌گردد.
45
+ - **اعلان آماده‌سازی انطباقی** — در ابتدا 1 ثانیه، و در یک بازه غلتان 3 دقیقه‌ای 0.1 ثانیه؛ بادبادک کج‌شده نقطه کلیک عامل را نشان می‌دهد.
46
+ - **مسیر ورودی سخت‌شده** — ترکیب‌کلیدهای محافظت‌شده مدیریت پنجره، فشار معکوس و بازیابی worker، بررسی هدف کهنه و پاک‌سازی هنگام لغو.
47
+
48
+ <details>
49
+ <summary>نسخه فعلی و سازگاری</summary>
50
+
51
+ **2.0.0** نسخه اصلی جدید است و در ابتدا، تا زمانی که دروازه 24 ساعته انتشار در جریان است، روی تگ `next` در npm توزیع می‌شود. [تغییرات و مهاجرت 2.0.0](docs/RELEASE-2.0.0.md) را ببینید. برای دسترسی پایدار فعلی، تگ‌های رجیستری را بررسی کنید.
52
+
53
+ نسخه 1.3.1 متن را با نام از صفحه می‌خواند، دسکتاپ امن Windows را تشخیص می‌دهد و خودش ادامه می‌دهد، و همه رنگ‌ها را روی همان ریل لبه‌ای که از DPI مشتق می‌شود، با یک حد پایین نفس‌کش قابل مشاهده نگه می‌دارد. نسخه 1.3.0 وقتی کار تمام شود و گفتگو ادامه یابد، کنترل دسکتاپ را آزاد می‌کند.
54
+
55
+ اصلاح‌های پیشین: [انتساب تأیید در 1.2.3](docs/RELEASE-1.2.3.md) · [توجه بومی در 1.2.1](docs/RELEASE-1.2.1.md) · [وصله میزبان مستقل](docs/RELEASE-1.2.2.md).
56
+
57
+ </details>
58
+
59
+ ## چه کاری انجام می‌دهد
60
+
61
+ نسخه 2.0.0 در هنگام عملیات هوش مصنوعی و نگه‌داشت صحنه نیز از یک نشانگر بادبادکی آبی فشرده استفاده می‌کند. نوک کج آن نقطه کلیک را نشان می‌دهد، و نمادهای کوچک متن/تغییر اندازه درون بادبادک قرار دارند. بادبادکِ نفس‌کش یعنی صفحه و موقعیت نشانگر باید سر جای خود بمانند؛ حالت آزاد نشانگر عادی برنامه را بازمی‌گرداند. تم نشانگر Windows کاربر حفظ می‌شود.
62
+
63
+ نسخه 2.0.0 پیمایش UIA را محدود می‌کند و به‌طور پیش‌فرض از متن فشرده پس از اقدام استفاده می‌کند. بازخورد تصویری موجود همچنان در دسترس است؛ `feedback: compact|full|none` میزان جزئیات را کنترل می‌کند، و `verificationRegion: "x,y,w,h"` در کلیک، ناحیه اثر مورد انتظار را مستقل از نقطه ورودی نام‌گذاری می‌کند. متن فشرده معمولاً حداکثر 6 KiB به رسید اقدام اصلی اضافه می‌کند. شواهد کامل نقطه را می‌توان در یک حافظه پنهان محلی محدود و منقضی‌شونده نگه داشت و در صورت نیاز بازیابی کرد. خرابی دیسک به حافظه محدود بازمی‌گردد؛ اگر هیچ عکس فوری قابل بازیابی نگه داشته نشود، شواهد فعلی به‌صورت کامل و درون‌خطی، بیرون از آن بودجه فشرده و بدون مشاهده یا ورودی دیگر، بازگردانده می‌شود.
64
+
65
+ پرس‌وجوهای فیلترشده UIA به `hwnd` نیاز دارند. پیش‌فرض‌ها عمق 6، 120 گره و بودجه نرم 1200 میلی‌ثانیه است. پرس‌وجویی عمیق‌تر از 6 یا بزرگ‌تر از 300 گره به یک `anchor:"x,y"` اندازه‌گیری‌شده در همان پنجره نیاز دارد؛ یک `id` دقیق این قاعده را دور نمی‌زند. یک فراخوانی ارائه‌دهنده می‌تواند از بودجه نرم فراتر رود، و نتایج ناقص نمی‌توانند نبود یا یگانگی را اثبات کنند. پس از یک میان‌بر مدیریت پنجره، `computer_state {windows:true}` را بررسی کنید، پنجره مورد نظر را با موفقیت فعال کنید، سپس پیش از هر ورودی صفحه‌کلید بیشتر آن را مشاهده کنید.
66
+
67
+ - **مشاهده** — فهرست پنجره‌ها، عکس‌های صفحه (ناحیه / JPEG / PNG / کوچک‌شده)، یک نقشه Set-of-Marks از عناصر قابل کلیک، و درخت UI Automation با `AutomationId`های دقیق.
68
+ - **اقدام** — کلیک، جابه‌جایی، کشیدن، پیمایش، انتخاب یک بازه متن، تایپ، فشردن کلیدها، و به کار گرفتن کنترل‌ها از طریق الگوهای UI Automation خودشان به‌جای مختصات کور.
69
+ - **دسته‌ای** — یک فراخوانی `computer_batch` فهرستی از اقدام‌ها را به‌صورت سری اجرا می‌کند و در نخستین خطا متوقف می‌شود، پس یک توالی شناخته‌شده یک رفت‌وبرگشت مدل هزینه دارد، نه ده تا.
70
+ - **پرسش** — `computer_ask` پرسشی را روی همان کارت گفتگویی مطرح می‌کند که DSH برای `ask_user_question` استفاده می‌کند، بدون شمارش معکوس.
71
+ - **ترمزی انسانی که به مدل می‌رسد** — یک توقف به نشست در حال اجرا فرستاده می‌شود، بنابراین عامل می‌فهمد که وقفه خورده است، نه اینکه آن را در نوبت بعد کشف کند.
72
+
73
+ این ابزارها دسکتاپ را مشاهده می‌کنند، نه اینکه اسناد کاربر را بخزند. افزونه کمک‌کننده‌های بومی را در `%LOCALAPPDATA%\dsh-computer-use\worker\` و گزارش‌های حسابرسی، عکس‌های صفحه و `observation-cache` محدود خودش را در `$DSH_HOME/data/computer-use/` مدیریت می‌کند. `computer_ctrl {action:"clear_cache"}` حافظه پنهان مشاهده این عامل را پاک می‌کند؛ عکس‌های صفحه، پیوست‌ها یا اسناد کاربر را حذف نمی‌کند.
74
+
75
+ <a id="install-and-update-in-dsh-market"></a>
76
+
77
+ ## نصب و به‌روزرسانی در dsh-market
78
+
79
+ در بازار عبارت **computer-use** یا **Codex-style** را جستجو کنید. به مخزن **ltmroberthk915/dsh-computer-use** و بسته npm با نام **dsh-codex-style-computer-use** (نگه‌دارنده: **ltmroberthk**) دقت کنید و سپس **نصب** را کلیک کنید. برای به‌روزرسانی‌های کانال پایدار از **به‌روزرسانی** یا **به‌روزرسانی همه** استفاده کنید. هر دو کمک‌کننده بومی همراه هستند؛ به PowerShell 7 یا مجوز ساخت نیازی نیست.
80
+
81
+ در غیر این صورت، برای کانال پایدار فعلی **`dsh-codex-style-computer-use`** را در **تنظیمات ← افزونه‌ها ← افزودن افزونه** وارد کنید، یا برای نسخه‌ای که اینجا توضیح داده شده **`dsh-codex-style-computer-use@2.0.0`** را. مشخصات بسته npm را مستقیم وارد کنید. میزبان شما ممکن است برای نسخه‌های تازه دوره انتظار اعمال کند؛ نشانه‌های آن را دنبال کنید. یک بسته تازه‌افزوده‌شده می‌تواند روی میزبان‌های پشتیبانی‌شده به‌صورت زنده بارگذاری شود؛ بررسی کنید که ابزارها و مهارت آن ظاهر شوند. هنگام جایگزینی یک نسخه بارگذاری‌شده، وقتی کلاینت کهنه می‌ماند، یا وقتی DSH گزارش **restart-required** می‌دهد، از سینی سیستم دوباره راه‌اندازی کنید.
82
+
83
+ ### نسخه‌های کمتر از 24 ساعت
84
+
85
+ پیکربندی پیش‌فرض غیرسخت‌گیرانه pnpm 11.7.0 به‌طور خودکار یک استثنای تک‌نسخه ثبت می‌کند و نصب را انجام می‌دهد. نصب موفق روی یک ماشین ثابت نمی‌کند که ماشین دیگری نسخه‌های تازه را مجاز می‌داند.
86
+
87
+ با `minimumReleaseAgeStrict: true` (یا یک سیاست میزبان که بررسی‌های سخت‌گیرانه سن انتشار را فعال می‌کند)، و بدون استثنای قابل اعمال، نسخه‌ای که از سن پیکربندی‌شده کمتر باشد پیش از اجرای کد افزونه رد می‌شود. نام بدون نسخه، سنجاق دقیق `@1.2.0` و نشانی tarball در npm همگی تأیید شدند که زیر آن سیاست با `ERR_PNPM_NO_MATURE_MATCHING_VERSION` شکست می‌خورند. تنظیم صریح `minimumReleaseAge: 1440` نیز در pnpm 11.7.0 رفتار سخت‌گیرانه را فعال می‌کند، مگر اینکه `minimumReleaseAgeStrict` جداگانه روی false تنظیم شود. راه‌اندازی دوباره DSH، نصب PowerShell، یا تکرار همان فرمان، رد شدن سیاست سخت‌گیرانه را برطرف نمی‌کند. پل رسمی دسکتاپ پرچم‌های اضافی pnpm را نمی‌پذیرد.
88
+
89
+ اگر یک سیاست سخت‌گیرانه نصب را مسدود کند، صبر کنید تا نسخه به سن پیکربندی‌شده برسد و بدون تغییر سیاست نصب کنید. نسخه 1.2.0 در `2026-10-03T03:50:11.586Z` منتشر شد؛ پس از **2026-10-04 03:50:12 UTC** (11:50:12 به وقت چین) شرط 24 ساعته را برآورده می‌کند. یک مهلت سفارشی طولانی‌تر یا یک آینه رجیستری با تأخیر می‌تواند دسترسی را بیشتر به تعویق بیندازد. کاربران پیش‌فرض غیرسخت‌گیرانه برای این بسته نیازی به انتظار یا ویرایش پیکربندی ندارند.
90
+
91
+ اگر صریحاً انتخاب می‌کنید که زودتر نصب کنید، این استثنای تک‌نسخه را در `pnpm-workspace.yaml` موجود پروفایل هدف ادغام کنید، سپس نصب از بازار را دوباره امتحان کنید. دیگر مدخل‌ها را حفظ کنید؛ سیاست کلی سن را غیرفعال نکنید:
92
+
93
+ ```yaml
94
+ minimumReleaseAgeExclude:
95
+ - dsh-codex-style-computer-use@1.2.0
96
+ ```
97
+
98
+ مسیر پیش‌فرض دسکتاپ `%USERPROFILE%\.dsh\profiles\desktop\pnpm-workspace.yaml` است؛ اگر `DSH_HOME` سفارشی شده، از پوشه واقعی استفاده کنید. در صورت تمایل، پس از بالغ شدن نسخه این یک استثنا را حذف کنید.
99
+
100
+ اصلاح‌های پیشین مستندات و بررسی ناشر، زمان اجرای 1.2.0 را تغییر نداد و به نصب دوباره نیاز نداشت. اصلاح توجه بومی در **1.2.1** به یک به‌روزرسانی نیاز دارد. افزودن دوباره همان منبع می‌تواند در برخی مسیرهای نصب خطای `ambiguous-install` میزبان را تولید کند؛ نصب دوباره 1.2.0 اصلاح 1.2.1 را اعمال نمی‌کند.
101
+
102
+ **مهاجرت از یک نصب قدیمی Git/tarball این مخزن:** مدخل قدیمی **dsh-computer-use** را در بازار حذف کنید، سپس **dsh-codex-style-computer-use** را نصب کنید. نام npm بدون اسکوپ یعنی `dsh-computer-use` به مخزن دیگری تعلق دارد؛ آن را به‌عنوان ارتقای این افزونه نصب نکنید. یک نصب Git نمی‌تواند فقط با واکشی یک commit جدید، هویت وابستگی خود را عوض کند. پس از این مهاجرت یک‌باره در رابط کاربری، از به‌روزرسانی‌های عادی بازار استفاده کنید. نام‌های ابزار موجود `computer_*` و فضای نام تنظیمات `computer-use` حفظ می‌شوند.
103
+
104
+ **پیکربندی ذخیره‌شده خود را هم حفظ کنید:** از `cordis.patch.yml` پروفایل پشتیبان بگیرید، سپس فقط `name: dsh-computer-use` را در یک override با `id: computer-use` به `name: dsh-codex-style-computer-use` تغییر دهید. تمام فیلدهای `config` و `disabled` آن را نگه دارید. نگه داشتن فضای نام تنظیمات به‌تنهایی کافی نیست: ناسازگاری نام باعث می‌شود DSH حتی overrideهای `read-only`، `dryRun` و حالت غیرفعال را رد کند. دیگر افزونه‌ها یا یک وصله مشترک home را به‌صورت کلی جایگزین نکنید. `scripts/migrate-profile.mjs` در این مخزن به‌طور پیش‌فرض پیش‌نمایش می‌دهد؛ `--apply` یک پشتیبان می‌سازد و فایل را به‌صورت اتمیک جایگزین می‌کند و ویرایش‌های هم‌زمان را رد می‌کند.
105
+
106
+ در غیر این صورت، [ابزار مهاجرت پیکربندی](https://github.com/ltmroberthk915/dsh-computer-use/releases/download/v1.2.0/computer-use-profile-migration.zip) را دانلود کنید، آن را استخراج کنید و روی `migrate-profile.cmd` دوبار کلیک کنید. این ابزار برنامه رسمی Desktop نصب‌شده را پیدا می‌کند و با Windows PowerShell 5.1 به‌همراه Node همراه DSH، پروفایل پیش‌فرض دسکتاپ را تعمیر می‌کند. اگر بسته جدید موجود نباشد یا بسته قدیمی هنوز انتخاب شده باشد، متوقف می‌شود. سیاست سن انتشار را تغییر نمی‌دهد. برای پروفایل دیگر، `migrate-profile.ps1 -ProfileDirectory <absolute-directory>` را برای پیش‌نمایش اجرا کنید، سپس هر وقت آماده بودید `-Apply` را اضافه کنید.
107
+
108
+ انتشار GitHub همچنین `dsh-computer-use.tgz` را برای نصب آفلاین/دستی شامل می‌شود؛ نصب از رجیستری، مسیر پیش‌فرض به‌روزرسانی‌های بازار است.
109
+
110
+ کاربران CLI (پروفایل web):
111
+
112
+ ```sh
113
+ dsh plugin --profile web add dsh-codex-style-computer-use
114
+ ```
115
+
116
+ عیب‌یابی‌های دسکتاپ باید از **CLI همراه برنامه رسمی Desktop** استفاده کنند:
117
+
118
+ ```powershell
119
+ $CuDshInstall = Join-Path $env:LOCALAPPDATA 'Programs\DeepSeek Harness'
120
+ & "$CuDshInstall\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop why dsh-codex-style-computer-use
121
+ ```
122
+
123
+ برای یک نصب سفارشی، `$CuDshInstall` را روی پوشه‌ای که در مقصد میان‌بر Desktop آمده تنظیم کنید. یک `dsh` سراسری قدیمی npm می‌تواند پروفایل دسکتاپ را رد کند. `resources/runtime/bin` را به PATH سراسری اضافه نکنید و برای این کار pnpm جداگانه نصب نکنید. برای نصب، رابط کاربری افزونه را ترجیح دهید.
124
+
125
+ ## مهارت همراه
126
+
127
+ ابزارهای رانندگی قفل می‌مانند تا زمانی که نشست یک عبارت رسید تولید کند که فقط درون `skills/computer-use/SKILL.md` وجود دارد. این کار عمدی است — قوی‌ترین نسخه صادقانه «پیش از رانندگی، دفترچه راهنما را بخوانید» است، زیرا هیچ لایه ابزاری نمی‌تواند ببیند آیا مدل یک سند را خوانده است یا نه.
128
+
129
+ افزونه مهارت همراه را در صورت موجود بودن از طریق `ctx.skills.register()` ثبت می‌کند. اگر آن سرویس موجود نباشد، `computer_use_activate` همان دفترچه راهنما، مسیر مطلق منبع آن و فهرست ابزارهای محدوده‌دار را برمی‌گرداند. رسید و همه بررسی‌های موجود تأیید/ترمز همچنان اعمال می‌شوند.
130
+
131
+ ## ورودی مشترک در 1.2.0-rc.2
132
+
133
+ این پیش‌انتشار تصاحب فوری انسانی، انتظار خودکار پس از 2 ثانیه ورودی مداوم، و ادامه پس از 3 ثانیه سکوت را معرفی می‌کند. انتظار به‌صورت محلی و بدون پُلینگ مدل رخ می‌دهد. نوشتن‌های قطع‌شده به یک بازخوانی تازه نیاز دارند و هرگز کورکورانه تکرار نمی‌شوند. لغو از سوی میزبان، ورودی‌های پذیرفته‌شده متعلق به اتوماسیون را آزاد می‌کند بدون اینکه وقفه پایدار جدیدی ایجاد شود. رفتار موجود DSH Pet/پنجره اصلی و topmost اصلی حفظ می‌شود.
134
+
135
+ مسیرهای پیکربندی‌شده GLM 5.3 Max، GLM 5.3 Flash و DeepSeek Flash یک آزمون کنترل‌شده پروتکل ادامه را پاس کردند. ورودی بومی و کلیدهای میان‌بر فیزیکی جداگانه بررسی شدند؛ این یک بنچمارک عمومی دسکتاپ یا بینایی نیست. برای دامنه، [راستی‌آزمایی انتشار](docs/RELEASE-1.2.0-rc.2.md) را ببینید.
136
+
137
+ ## کنترل‌های درخواستی در 1.1
138
+
139
+ - **ابزارهای هر عامل:** عامل‌های بی‌کار `computer_use_activate`، `computer_ctrl` و `computer_ask` را می‌بینند. بارگذاری موفق مهارت computer-use، رسید یا فعال‌سازی، 19 ابزار دسکتاپ به‌همراه مدخل فعال‌سازی را برای آن عامل آشکار می‌کند. دیگر عامل‌ها و فرزندان مستقل فعال می‌شوند. فراخوانی‌های بومی و `run_code` در Node پشتیبانی می‌شوند. فعال‌سازی کنترل را شروع نمی‌کند و ترمز انسانی را آزاد نمی‌کند.
140
+ - **اهداف UIA مشاهده‌شده:** یک پرس‌وجوی محدوده‌دار نام/id یک هندل هدف مات برمی‌گرداند. از آن برای اقدام‌های الگومحور استفاده کنید؛ `rebind:true` اختیاری امکان بازیابی هویت یگانه یا معنایی را پس از جایگزینی در همان پنجره می‌دهد. زمینه تغییرکرده، ابهام و پویش‌های ناقص رد می‌شوند. پرس‌وجوهای گسترده هندل‌های بازیابی را نادیده می‌گیرند مگر با `targets:true`؛ ساختن شاهد برای یک فهرست بزرگ کار بومی اضافی هزینه دارد.
141
+ - **مشاهدات افزایشی:** شناسه مشاهده قبلی را به‌عنوان `since` همراه با همان پرس‌وجو بدهید. دلتاها افزوده‌ها، تغییرها، حذف‌ها و ترتیب را حفظ می‌کنند. عکس‌های فوری بر اساس عامل جدا می‌شوند، با حداکثر 64 مشاهده ایندکس‌شده و 4 MiB JSON نگه‌داری‌شده در هر انبار. `snapshot` یک نتیجه تاریخی نگه‌داری‌شده را بازیابی می‌کند؛ `offset` و `limit` آرایه‌های آن را صفحه‌بندی می‌کنند. پایه‌های غایب، دامنه تغییرکرده، شواهد ناقص یا دلتای بزرگ‌تر به خروجی کامل برمی‌گردند.
142
+
143
+ برای محدودیت‌های حافظه پنهان و مرزهای بازیابی، [پروتکل تفصیلی](skills/computer-use/references/progressive-control.md) را ببینید. عکس‌های فوری UIA فیلدهای بازگردانده‌شده توسط ارائه‌دهنده را در محدوده‌های موجود ارائه‌دهنده حفظ می‌کنند؛ بازیابی تاریخی، راستی‌آزمایی تازه نتیجه نیست.
144
+
145
+ ## ابزارها
146
+
147
+ | گروه | ابزارها |
148
+ |---|---|
149
+ | فعال‌سازی | `computer_use_activate` |
150
+ | مشاهده | `computer_state` `computer_shot` `computer_ocr` `computer_marks` `computer_uia` |
151
+ | اقدام | `computer_click` `computer_move` `computer_drag` `computer_scroll` `computer_select` `computer_key` `computer_type` `computer_uia_act` `computer_window` `computer_clip` |
152
+ | جریان | `computer_wait` `computer_batch` |
153
+ | متا | `computer_ask` `computer_ctrl` |
154
+
155
+ `computer_marks` نشانه‌های شماره‌دار را برای عناصری که روی صفحه یافته است برمی‌گرداند؛ `computer_marks {shot:true}` یک تصویر حاشیه‌نویسی‌شده هم ذخیره می‌کند. `computer_shot` یک عکس صفحه ساده و، روی مسیرهای دارای قابلیت تصویر، یک پیوست تصویر بومی برمی‌گرداند. یک نشانه، شناسه یک عکس فوری است: پیش از ارسال هر ورودی با هویت پنجره و پیکسل‌های نمونه‌برداری‌شده اعتبارسنجی می‌شود، بنابراین نشانه کهنه رد می‌شود، نه اینکه در جای اشتباه کلیک شود.
156
+
157
+ ## حالت‌های تأیید
158
+
159
+ برای میزبانی که رد خودکار ناشی از غیرفعال بودن درخواست تأیید را «کاربر ابزار را رد کرد» گزارش می‌کند، [وصله انتساب تأیید DSH و آزمون رگرسیون](docs/APPROVAL-ATTRIBUTION.md) را ببینید.
160
+
161
+ `automationMode` در تنظیمات افزونه تعیین می‌شود و پیش‌فرض آن `standard` است:
162
+
163
+ | حالت | مشاهده | اجرا |
164
+ |---|---|---|
165
+ | `read-only` | مجاز | رد می‌شود |
166
+ | `standard` | مجاز | هر اقدام از طریق کارت تأیید میزبان اجازه می‌خواهد |
167
+ | `autonomous` | مجاز | مجاز؛ عملیات پرخطر همچنان اجازه می‌خواهند |
168
+ | `unrestricted` | مجاز | مجاز (محافظ خطا و محدودیت نرخ worker همچنان اعمال می‌شوند) |
169
+
170
+ عملیات پرخطر (بستن یک پنجره، `alt+f4`، `win+r` و موارد مشابه) در همه حالت‌ها اجازه می‌خواهند. فیلدهای گذرواژه از طریق `IsPassword` در UI Automation تشخیص داده می‌شوند و به‌طور پیش‌فرض رد می‌شوند.
171
+
172
+ ## مدل ایمنی
173
+
174
+ - **ورودی مشترک** — فعالیت عادی کاربر در حالی که عامل در حال فکر کردن، مشاهده یا آماده‌سازی است مجاز است. در هنگام اقدام واقعی، تایپ، پیمایش و دکمه‌ها بی‌درنگ عقب می‌نشینند؛ حرکت نشانگر تلورانس جابه‌جایی 16 پیکسلی دارد. ورودی مداوم یا نگه‌داشتن یک کلید/دکمه به‌مدت 2 ثانیه، انتظار خودکار را آغاز می‌کند. پس از رها شدن و 3 ثانیه سکوت، عامل باید هدف فعلی را بررسی کند و وظیفه اصلی را ادامه دهد، بدون تکرار کورکورانه نوشتن‌های ناقص. یک شیب لبه‌ای زرد کم‌رنگ و ملایم مالکیت انسانی را نشان می‌دهد.
175
+ - **توقف دستی** — فقط `Ctrl+Esc` فیزیکی یک ترمز ورودی پایدار ایجاد می‌کند؛ `Ctrl+Alt+R` ادامه می‌دهد. Esc عادی، تایپ، پیمایش، فاصله/فراوانی نشانگر و گوشه صفحه این توقف را ایجاد نمی‌کنند. نگه‌داشتن‌های صریح پرسش/عیب‌یابی جدا می‌مانند.
176
+ - **خروج** — `Ctrl+Alt+Q` نشست را پایان می‌دهد: پوشش از میان می‌رود، شنونده‌های آن برچیده می‌شوند، و اقدام‌های بعدی تا زمانی که یک نوبت بعدی نشست جدیدی باز کند رد می‌شوند.
177
+ - **ترمز واقعیتی درباره ماشین است، نه یک فرایند** — وضعیت فعال‌شده پایدار می‌ماند و هر worker آن را می‌پذیرد، از جمله یکی که بعداً از یک پوسته راه‌اندازی شود.
178
+ - **حسابرسی** — هر اقدام همراه با پاک‌سازی آرگومان‌ها به `$DSH_HOME/data/computer-use/audit.jsonl` افزوده می‌شود.
179
+ - **کلید قطع برای خود افزونه** — `DSH_COMPUTER_USE_KILL=1` باعث می‌شود افزونه از راه‌اندازی خودداری کند؛ `dryRun: true` اقدام‌ها را شبیه‌سازی می‌کند و فقط آن‌ها را ثبت می‌کند.
180
+
181
+ ## پیکربندی
182
+
183
+ | کلید | پیش‌فرض | معنا |
184
+ |---|---:|---|
185
+ | `automationMode` | `standard` | حالت تأیید (بالا) |
186
+ | `progressiveTools` | `true` | فعال‌سازی برای هر عامل؛ `false` 19 ابزار دسکتاپ را به‌صورت سراسری آشکار می‌کند |
187
+ | `actionFeedback` | `true` | مشاهده خودکار پس از اقدام‌های مستقیم و دسته‌ها |
188
+ | `actionFeedbackDetail` | `compact` | `compact`، `full` یا `none`؛ `feedback` یک فراخوانی این پیش‌فرض را بازنویسی می‌کند؛ شواهد بدون حافظه پنهان به خروجی کامل درون‌خطی برمی‌گردند |
189
+ | `dryRun` | `false` | شبیه‌سازی اقدام‌ها، فقط ثبت |
190
+ | `maxActionsPerMinute` | `60` | محدودیت نرخ اقدام در سطح هسته |
191
+ | `annotateMarks` | `true` | رسم کادرهای Set-of-Marks روی عکس‌های صفحه |
192
+ | `workerExe` | `""` | مسیر صریح worker؛ خالی = کشف خودکار یا کامپایل |
193
+ | `snapshotDir` | `""` | پوشه عکس‌های صفحه؛ خالی = `$DSH_HOME/data/computer-use/shots` |
194
+
195
+ ## سرور MCP
196
+
197
+ `mcp/` یک سرور MCP stdio بدون وابستگی روی همان هسته است، برای کلاینت‌هایی که به‌جای Cordis با MCP صحبت می‌کنند:
198
+
199
+ ```sh
200
+ # published package (2.0.1 and later) — no checkout needed
201
+ npx -y dsh-codex-style-computer-use
202
+
203
+ # from a checkout
204
+ node mcp/src/index.js
205
+ ```
206
+
207
+ سرور تعبیه‌شده نسخه همین بسته ریشه را گزارش می‌کند. با مشاهده تنها شروع می‌شود. میزبان راه‌انداز می‌تواند وقتی مجوز اقدام‌های دسکتاپ را دارد `DSH_CU_ALLOW_INPUT=1` را تنظیم کند؛ فراخوانی‌های ابزار MCP نمی‌توانند ورودی را فعال کنند. ابزار سازگاری `cu_approve` فقط این قاعده را گزارش می‌کند و هرگز رضایت نمی‌دهد. سیاست `automationMode` در DSH متعلق به آداپتر Cordis است و سرویس تأیید MCP نیست. `DSH_CU_DRY_RUN=1` ورودی‌ای را شبیه‌سازی می‌کند که میزبان از قبل فعال کرده است.
208
+
209
+ هر دو آداپتر از همان دستور زبان فرمان‌های کلید، قواعد شکست و ادامه دسته‌ای، و نقشه‌برداری مختصات تصویر استفاده می‌کنند. MCP فراداده ساخت‌یافته ضبط و یک تصویر آخرین PNG/JPEG را برمی‌گرداند، بدون تبدیل بایت‌های تصویر به متن JSON. `cu_hold` / `cu_free` صحنه را بین اقدام‌ها رزرو یا آزاد می‌کنند؛ `cu_release` چرخه دسکتاپ را پایان می‌دهد. `cu_drag` بررسی‌های `expectCursor` و `hwnd` را می‌پذیرد. MCP سطح ابزار کوچک‌تری ارائه می‌دهد؛ یکپارچه‌سازی پرسش انسانی و چرخه عمر میزبان مخصوص DSH توسط آداپتر Cordis فراهم می‌شود.
210
+
211
+ ## توسعه
212
+
213
+ بررسی‌های انتشار ناشر به‌طور پیش‌فرض از رجیستری رسمی npm استفاده می‌کنند. اگر آن مبدأ در شبکه شما قابل دسترسی نباشد، `CU_REGISTRY` یک آینه صریح را برای فرمان فقط‌خواندنی `check` انتخاب می‌کند؛ نتیجه JSON شامل `registry` و `authoritative` است. نمونه در PowerShell (این تنها پوسته فعلی را تغییر می‌دهد):
214
+
215
+ ```powershell
216
+ $env:CU_REGISTRY = 'https://registry.npmmirror.com'
217
+ node scripts/release-channel.mjs check 1.2.0
218
+ Remove-Item Env:CU_REGISTRY
219
+ ```
220
+
221
+ کد خروج `0` یعنی نسخه بررسی 24 ساعته ناشر را پاس کرده است، `2` یعنی همچنان در دوره خنک‌سازی است، و `1` یعنی بررسی شکست خورده است. یک خطای شبکه ثابت نمی‌کند که بسته‌ای منتشر نشده است، و آینه‌ها می‌توانند عقب بمانند. `promote` همیشه دوباره بررسی می‌کند و `https://registry.npmjs.org` را می‌نویسد و `CU_REGISTRY` را نادیده می‌گیرد؛ به دسترسی به آن مبدأ نیاز دارد و در صورت نیاز از پیکربندی پراکسی npm استفاده می‌کند. این ابزار ناشر بخشی از نصب کاربر نهایی نیست. [رویه انتشار](docs/RELEASE-1.2.0.md) را ببینید.
222
+
223
+ این مخزن مجموعه نگهبان را عرضه می‌کند که ناورداهای بالا را محافظت می‌کند — طول عمر چرخه، پروتکل پرسش/ترمز، طبقه‌بندی عملیات، دروازه مهارت، و سیم‌کشی مهارت همراه:
224
+
225
+ ```sh
226
+ pwsh -NoProfile -ExecutionPolicy Bypass -File build/run-guards.ps1 # all guards
227
+ node build/verify-tools-schema.mjs # tool-schema load guard
228
+ ```
229
+
230
+ تعریف‌های ابزار از طریق DSL واقعی `@deepseek-ai/dsh-tools` کامپایل می‌شوند، بنابراین یک خطای طرح‌واره اینجا شکست می‌خورد، نه اینکه درخت افزونه میزبان را هنگام راه‌اندازی دوباره از کار بیندازد. برخی نگهبان‌ها worker بومی را کامپایل می‌کنند و فقط مخصوص Windows هستند.
231
+
232
+ ## مجوز
233
+
234
+ MIT — [LICENSE](LICENSE) را ببینید.