dsh-codex-style-computer-use 2.0.0 → 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.
package/README.fr.md ADDED
@@ -0,0 +1,243 @@
1
+ # Computer Use à la manière de Codex
2
+
3
+ **La façon la plus précise de piloter Windows depuis DeepSeek Harness — et la moins coûteuse par tâche.**
4
+
5
+ Décrivez l'objectif. Votre agent lit l'identité exacte des contrôles, agit par les contrôles eux-mêmes, vérifie le résultat — et exécute une séquence connue en un seul aller-retour de modèle au lieu de dix.
6
+
7
+ [English](README.md) | [中文](README.zh.md) | **Français** | [Deutsch](README.de.md) | [Español](README.es.md) | [Português](README.pt.md) | [العربية](README.ar.md) | [Русский](README.ru.md) | [فارسی](README.fa.md) · [Installer](#install-and-update-in-dsh-market) · [Journal des modifications](CHANGELOG.md) · [Nouveautés 2.0.0](docs/RELEASE-2.0.0.md)
8
+
9
+ ![Contrôle du bureau Windows à la manière de Codex : observer, agir, vérifier](docs/images/01-codex-style.png)
10
+
11
+ ## Pourquoi c'est le plus précis
12
+
13
+ - **L'identité, pas les devinettes.** UI Automation expose l'arborescence réelle des contrôles avec des `AutomationId` exacts, et les actions peuvent piloter un contrôle via ses propres modèles UI Automation au lieu de cliquer sur des coordonnées.
14
+ - **Les repères sont vérifiés, jamais présumés.** Par défaut, un repère numéroté est validé par rapport à l'identité de la fenêtre et aux pixels échantillonnés avant l'envoi de toute entrée, si bien qu'un repère périmé est refusé plutôt que cliqué au mauvais endroit. Lorsqu'un voisin animé invalide sans cesse la signature de pixels, `uiaOnly` ancre l'identité sur le handle de fenêtre et la géométrie, tandis que la vérification d'occlusion au moment de l'envoi reste appliquée.
15
+ - **Les requêtes restent bornées.** Les requêtes UIA sont par défaut limitées à une profondeur de 6, 120 nœuds et un budget souple de 1200 ms ; une requête plus profonde que 6 ou portant sur plus de 300 nœuds exige un `anchor` mesuré, afin qu'aucune requête ne puisse balayer discrètement la mauvaise région.
16
+ - **Quand l'application le cache, lisez l'écran.** `computer_ocr` renvoie des lignes et des zones par mot en pixels d'écran absolus, ce qui permet de localiser par leur nom les applications dépourvues d'UIA.
17
+
18
+ ## Pourquoi il coûte moins cher
19
+
20
+ - **Un seul aller-retour pour une séquence connue.** Un appel `computer_batch` exécute une liste d'actions en série, s'arrête à la première erreur et ne coûte qu'un aller-retour de modèle au lieu d'un par action.
21
+ - **Seul le delta est renvoyé.** Indiquez l'ID d'observation précédent comme `since` et recevez les ajouts, modifications, suppressions et l'ordre — et non l'arborescence entière à nouveau.
22
+ - **Des reçus compacts par défaut dans la 2.0.0.** Le texte post-action ajoute normalement au plus 6 KiB au reçu d'action ; `feedback: full` reste disponible lorsque le détail compte davantage.
23
+ - **Les preuves restent hors de la conversation.** Les preuves ponctuelles complètes peuvent résider dans un cache local borné (4 MiB de mémoire, 32 MiB de disque, 64 enregistrements, expiration après 24 heures) et être récupérées à la demande.
24
+ - **Le travail local reste local.** UI Automation, l'OCR d'écran et les vérifications de pixels s'exécutent dans le worker natif précompilé — aucune facture de vision supplémentaire par étape.
25
+
26
+ ## Conçu pour un bureau que vous utilisez toujours
27
+
28
+ - **Il vous attend.** Un préavis de 1 seconde avant toute entrée (0,1 seconde dans une fenêtre glissante de 3 minutes) rend immédiatement la main sur le bureau ; une fois que vous avez terminé, l'agent observe à nouveau et poursuit la tâche d'origine.
29
+ - **Le frein atteint le modèle.** `Ctrl+Esc` met en pause, `Ctrl+Alt+R` reprend, `Ctrl+Alt+Q` quitte, et un arrêt est poussé dans la session en cours. Les approbations restent activées par défaut et les champs de mot de passe sont refusés par défaut.
30
+ - **Il signale ce qu'il ne peut pas faire.** Le bureau sécurisé de Windows (invite UAC ou écran de verrouillage) est détecté et signalé, puis l'exécution reprend — sans nouvelle tentative à l'aveugle.
31
+
32
+ ![Passation à l'humain : préparer, prendre la main, continuer](docs/images/02-handoff.png)
33
+
34
+ ![Efficacité des tokens : observations ciblées, actions groupées et relecture des résultats](docs/images/03-token-efficiency.png)
35
+
36
+ Les illustrations ci-dessus présentent le modèle d'interaction introduit dans la 1.3.0 ; le pointeur en forme de cerf-volant, les requêtes bornées et les reçus compacts de la 2.0.0 sont décrits plus haut. L'usage réel des tokens dépend de la tâche, du modèle et de la stratégie d'observation. Les approbations restent activées par défaut ; la pause, l'annulation et la sortie explicites font toujours autorité.
37
+
38
+ **Prêt à installer.** 19 outils de bureau, avec les composants natifs inclus. Aucun SDK ni compilation lors de l'installation. Nécessite Windows, Node.js ≥ 22 et le .NET Framework 4.x inclus avec Windows. Un plugin communautaire indépendant ; Codex décrit le style d'interaction.
39
+
40
+ ## Nouveautés de la 2.0.0
41
+
42
+ - **Des reçus compacts par défaut** — le texte post-action ajoute normalement au plus 6 KiB au reçu d'action ; `feedback: full` et `feedback: none` sont des alternatives explicites.
43
+ - **Des requêtes UIA bornées et ancrées** — profondeur 6, 120 nœuds et budget souple de 1200 ms par défaut ; les requêtes plus profondes que 6 ou portant sur plus de 300 nœuds nécessitent un `anchor` mesuré.
44
+ - **Des preuves à la demande** — 4 MiB de mémoire + 32 MiB de disque, 64 enregistrements, expiration après 24 heures ; une défaillance de disque se replie sur la mémoire bornée.
45
+ - **Préavis de préparation adaptatif** — 1 seconde au départ, 0,1 seconde dans une fenêtre glissante de 3 minutes ; le cerf-volant incliné marque le point de clic de l'agent.
46
+ - **Chemin d'entrée renforcé** — raccourcis de gestion des fenêtres protégés, contre-pression et récupération du worker, contrôles de cibles périmées et nettoyage des annulations.
47
+
48
+ <details>
49
+ <summary>Version actuelle et compatibilité</summary>
50
+
51
+ **2.0.0** est la nouvelle version majeure, d'abord distribuée sur npm `next` pendant que s'exécute le contrôle de publication de 24 heures. Voir [changements et migration de la 2.0.0](docs/RELEASE-2.0.0.md). Consultez les tags du registre pour la disponibilité stable actuelle.
52
+
53
+ La version 1.3.1 lit le texte à l'écran pour retrouver les éléments par leur nom, détecte le bureau sécurisé de Windows et reprend d'elle-même, et maintient chaque couleur sur le même rail de bord dérivé du DPI avec un plancher de respiration visible. La version 1.3.0 libère le contrôle du bureau lorsque le travail se termine tandis que la conversation continue.
54
+
55
+ Correctifs antérieurs : [attribution des approbations 1.2.3](docs/RELEASE-1.2.3.md) · [attention native 1.2.1](docs/RELEASE-1.2.1.md) · [correctif d'hôte autonome](docs/RELEASE-1.2.2.md).
56
+
57
+ </details>
58
+
59
+ ## Ce qu'il fait
60
+
61
+ La version 2.0.0 utilise également un pointeur compact bleu en forme de cerf-volant pendant le fonctionnement de l'IA et le maintien de scène. Sa pointe inclinée marque le point de clic, avec de petits symboles de texte et de redimensionnement à l'intérieur du cerf-volant. Un cerf-volant qui respire signifie que la page et la position du pointeur doivent rester en place ; le mode libre restaure le curseur normal de l'application. Le thème de curseur Windows de l'utilisateur est préservé.
62
+
63
+ La version 2.0.0 borne le parcours UIA et opte par défaut pour un texte post-action compact. Le retour d'image existant reste disponible ; `feedback: compact|full|none` contrôle le niveau de détail, et le paramètre de clic `verificationRegion: "x,y,w,h"` désigne la zone d'effet attendue indépendamment du point d'entrée. Le texte compact ajoute normalement au plus 6 KiB au reçu d'action d'origine. Les preuves ponctuelles complètes peuvent être conservées dans un cache local borné et à expiration, puis récupérées à la demande. Une défaillance de disque se replie sur la mémoire bornée ; si aucun instantané récupérable ne peut être conservé, les preuves courantes sont renvoyées intégralement dans la réponse, hors de ce budget compact, sans nouvelle observation ni nouvelle entrée.
64
+
65
+ Les requêtes UIA filtrées exigent `hwnd`. Les valeurs par défaut sont une profondeur de 6, 120 nœuds et un budget souple de 1200 ms. Une requête plus profonde que 6 ou portant sur plus de 300 nœuds exige un `anchor:"x,y"` mesuré dans cette fenêtre ; un `id` exact ne contourne pas cette règle. Un appel au fournisseur peut dépasser le budget souple, et des résultats partiels ne peuvent établir ni l'absence ni l'unicité. Après un raccourci de gestion des fenêtres, inspectez `computer_state {windows:true}`, activez la fenêtre visée avec succès, puis observez-la avant toute nouvelle entrée au clavier.
66
+
67
+ - **Observer** — liste des fenêtres, captures d'écran (région / JPEG / PNG / réduites), une carte Set-of-Marks des
68
+ éléments cliquables et l'arborescence UI Automation avec des `AutomationId` exacts.
69
+ - **Agir** — cliquer, déplacer, glisser, faire défiler, sélectionner une plage de texte, taper, appuyer sur des touches et piloter des contrôles
70
+ via leurs propres modèles UI Automation au lieu de coordonnées à l'aveugle.
71
+ - **Traiter par lots** — un appel `computer_batch` exécute une liste d'actions en série et s'arrête à la première
72
+ erreur ; une séquence connue ne coûte donc qu'un aller-retour de modèle au lieu de dix.
73
+ - **Demander** — `computer_ask` pose une question sur la même carte de conversation que DSH utilise pour `ask_user_question`,
74
+ sans compte à rebours.
75
+ - **Un frein humain qui atteint le modèle** — un arrêt est poussé dans la session en cours, si bien que l'agent
76
+ apprend qu'il a été interrompu au lieu de le découvrir au tour suivant.
77
+
78
+ Les outils observent le bureau plutôt que de parcourir les documents de l'utilisateur. Le plugin gère les composants natifs dans
79
+ `%LOCALAPPDATA%\dsh-computer-use\worker\`, ainsi que les journaux d'audit, les captures d'écran et son propre cache borné
80
+ `observation-cache` sous `$DSH_HOME/data/computer-use/`. `computer_ctrl {action:"clear_cache"}` vide
81
+ le cache d'observation de cet Agent ; il ne supprime ni les captures d'écran, ni les pièces jointes, ni les documents de l'utilisateur.
82
+
83
+ <a id="install-and-update-in-dsh-market"></a>
84
+
85
+ ## Installer et mettre à jour dans dsh-market
86
+
87
+ Recherchez **computer-use** ou **Codex-style** dans le market. Repérez le dépôt **ltmroberthk915/dsh-computer-use** et le paquet npm **dsh-codex-style-computer-use** (mainteneur : **ltmroberthk**), puis cliquez sur **Installer**. Utilisez **Mettre à jour** ou **Tout mettre à jour** pour les mises à jour du canal stable. Les deux composants natifs sont inclus ; ni PowerShell 7 ni une autorisation de compilation ne sont nécessaires.
88
+
89
+ Sinon, saisissez **`dsh-codex-style-computer-use`** dans **Paramètres → Plugins → Ajouter un plugin** pour le canal stable actuel, ou **`dsh-codex-style-computer-use@2.0.0`** pour la version décrite ici. Saisissez directement la spécification du paquet npm. Votre hôte peut appliquer une période d'attente aux nouvelles versions ; suivez son indication. Un bundle nouvellement ajouté peut se charger à chaud sur les hôtes compatibles ; vérifiez que ses outils et sa compétence apparaissent. Redémarrez depuis la zone de notification lors du remplacement d'une version chargée, lorsque le client reste obsolète ou lorsque DSH signale **restart-required**.
90
+
91
+ ### Versions publiées depuis moins de 24 heures
92
+
93
+ La configuration pnpm 11.7.0 non stricte par défaut enregistre automatiquement une exception de version unique et procède à l'installation. La réussite d'une installation sur une machine ne prouve pas qu'une autre machine autorise les versions récentes.
94
+
95
+ Avec `minimumReleaseAgeStrict: true` (ou une politique d'hôte qui active des contrôles stricts de l'âge de publication), et sans exception applicable, une version qui n'a pas encore atteint l'âge configuré est rejetée avant l'exécution du code du plugin. Nous avons vérifié que le nom seul, un épinglage exact `@1.2.0` et l'URL du tarball npm échouent tous avec `ERR_PNPM_NO_MATURE_MATCHING_VERSION` sous cette politique. Définir explicitement `minimumReleaseAge: 1440` active aussi le comportement strict dans pnpm 11.7.0, sauf si `minimumReleaseAgeStrict` est défini séparément à false. Redémarrer DSH, installer PowerShell ou réessayer la même commande ne corrige pas un refus dû à une politique stricte. Le pont de bureau officiel n'accepte pas d'options pnpm supplémentaires.
96
+
97
+ Si une politique stricte bloque l'installation, attendez que la version atteigne l'âge configuré pour l'installer sans changer de politique. La version 1.2.0 a été publiée le `2026-10-03T03:50:11.586Z` ; elle satisfait au seuil de 24 heures après **2026-10-04 03:50:12 UTC** (11:50:12 en Chine). Un seuil personnalisé plus long ou un miroir de registre en retard peut retarder encore la disponibilité. Les utilisateurs du mode non strict par défaut n'ont pas besoin d'attendre ni de modifier la configuration pour ce paquet.
98
+
99
+ Si vous choisissez explicitement d'installer plus tôt, fusionnez cette exception de version unique dans le fichier `pnpm-workspace.yaml` existant du profil cible, puis relancez l'installation depuis le market. Préservez les autres entrées ; ne désactivez pas la politique d'âge globale :
100
+
101
+ ```yaml
102
+ minimumReleaseAgeExclude:
103
+ - dsh-codex-style-computer-use@1.2.0
104
+ ```
105
+
106
+ Le chemin par défaut du profil desktop est `%USERPROFILE%\.dsh\profiles\desktop\pnpm-workspace.yaml` ; utilisez le répertoire réel si `DSH_HOME` est personnalisé. Supprimez cette exception après la maturation de la version si vous le souhaitez.
107
+
108
+ Les corrections antérieures de la documentation et du contrôle de l'éditeur n'ont pas modifié le runtime de la 1.2.0 et n'ont nécessité aucune réinstallation. Le correctif d'attention native de la **1.2.1** nécessite bien une mise à jour. Réajouter la même source peut produire une erreur d'hôte `ambiguous-install` sur certains chemins d'installation ; réinstaller la 1.2.0 n'appliquera pas le correctif de la 1.2.1.
109
+
110
+ **Migration d'une ancienne installation Git/tarball de ce dépôt :** supprimez l'ancienne entrée **dsh-computer-use** dans le market, puis installez **dsh-codex-style-computer-use**. Le nom npm non scoped `dsh-computer-use` appartient à un autre dépôt ; ne l'installez pas comme mise à jour de ce plugin. Une installation Git ne peut pas changer d'identité de dépendance en récupérant simplement un nouveau commit. Après cette migration d'interface ponctuelle, utilisez les mises à jour normales du market. Les noms d'outils `computer_*` existants et l'espace de noms de paramètres `computer-use` sont conservés.
111
+
112
+ **Préservez aussi votre configuration enregistrée :** sauvegardez le fichier `cordis.patch.yml` du profil, puis remplacez uniquement `name: dsh-computer-use` par `name: dsh-codex-style-computer-use` sur une surcharge ayant `id: computer-use`. Conservez l'intégralité de ses champs `config` et `disabled`. Conserver le seul espace de noms de paramètres ne suffit pas : une inadéquation de nom amène DSH à ignorer même les surcharges `read-only`, `dryRun` et celles à l'état désactivé. Ne remplacez pas globalement d'autres plugins ni un patch partagé du home. Le script `scripts/migrate-profile.mjs` du dépôt affiche un aperçu par défaut ; `--apply` crée une sauvegarde et remplace le fichier de manière atomique, en refusant les modifications concurrentes.
113
+
114
+ Sinon, téléchargez l'[utilitaire de migration de configuration](https://github.com/ltmroberthk915/dsh-computer-use/releases/download/v1.2.0/computer-use-profile-migration.zip), extrayez-le et double-cliquez sur `migrate-profile.cmd`. Il localise l'application Desktop officielle installée et utilise Windows PowerShell 5.1 ainsi que le Node fourni avec DSH pour réparer le profil desktop par défaut. Il s'arrête si le nouveau bundle est absent ou si l'ancien bundle est toujours sélectionné. Il ne modifie pas la politique d'âge de publication. Pour un autre profil, exécutez `migrate-profile.ps1 -ProfileDirectory <absolute-directory>` pour un aperçu, puis ajoutez `-Apply` lorsque vous êtes prêt.
115
+
116
+ La GitHub Release inclut aussi `dsh-computer-use.tgz` pour une installation hors ligne/manuelle ; l'installation via le registre est la méthode par défaut pour les mises à jour du market.
117
+
118
+ Utilisateurs de la CLI (profil web) :
119
+
120
+ ```sh
121
+ dsh plugin --profile web add dsh-codex-style-computer-use
122
+ ```
123
+
124
+ Les diagnostics du profil desktop doivent utiliser la **CLI fournie avec l'application Desktop officielle** :
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
+ Pour une installation personnalisée, définissez `$CuDshInstall` sur le répertoire indiqué dans la cible du raccourci Desktop. Un `dsh` npm global plus ancien peut rejeter le profil desktop. N'ajoutez pas `resources/runtime/bin` au PATH global et n'installez pas un pnpm séparé pour cette tâche. Privilégiez l'interface du plugin pour l'installation.
132
+
133
+ ## La compétence intégrée
134
+
135
+ Les outils de pilotage restent verrouillés tant que la session n'a pas produit une phrase de reçu qui n'existe qu'à l'intérieur de
136
+ `skills/computer-use/SKILL.md`. C'est délibéré — c'est la version honnête la plus forte de « lisez le manuel avant de piloter », car aucune couche d'outils ne peut voir si un modèle a lu un document.
137
+
138
+ Le plugin enregistre la compétence intégrée via `ctx.skills.register()` lorsque ce service est disponible. Si ce service est absent, `computer_use_activate` renvoie le même manuel, son chemin source absolu et la liste d'outils limitée au périmètre. Le reçu et tous les contrôles d'approbation et de frein existants s'appliquent toujours.
139
+
140
+ ## Entrée partagée dans la 1.2.0-rc.2
141
+
142
+ Cette préversion introduit la prise de main immédiate par l'humain, l'attente automatique après 2 secondes d'entrée continue et la reprise après 3 secondes de calme. L'attente se produit localement, sans interrogation répétée du modèle. Les écritures interrompues exigent une nouvelle relecture et ne sont jamais rejouées à l'aveugle. L'annulation par l'hôte libère l'entrée acceptée et détenue par l'automatisation sans créer de nouvelle pause persistante. La gestion existante de DSH Pet et de la fenêtre principale, ainsi que celle du maintien au premier plan d'origine, est conservée.
143
+
144
+ Les routes configurées GLM 5.3 Max, GLM 5.3 Flash et DeepSeek Flash ont réussi un test contrôlé du protocole de reprise. L'entrée native et les raccourcis physiques ont été vérifiés séparément ; il ne s'agit pas d'un benchmark général du bureau ou de la vision. Voir [la vérification de publication](docs/RELEASE-1.2.0-rc.2.md) pour le périmètre.
145
+
146
+ ## Contrôles à la demande dans la 1.1
147
+
148
+ - **Outils par Agent :** les Agents inactifs voient `computer_use_activate`, `computer_ctrl` et `computer_ask`. Un chargement réussi de la compétence computer-use, un reçu ou une activation expose les 19 outils de bureau ainsi que l'entrée d'activation à cet Agent. Les autres Agents et les agents enfants s'activent indépendamment. Les appels natifs et `run_code` de Node sont pris en charge. L'activation ne démarre pas le contrôle et ne libère pas un frein humain.
149
+ - **Cibles UIA observées :** une requête de nom ou d'identifiant limitée à un périmètre renvoie un handle de cible opaque. Utilisez-le pour les actions par modèle ; l'option `rebind:true` permet une récupération par identité unique ou par sémantique après remplacement dans la même fenêtre. Un contexte modifié, une ambiguïté ou un balayage incomplet entraîne un refus. Les requêtes larges ignorent les handles de récupération sauf si `targets:true` ; créer des témoins pour une longue liste coûte un travail natif supplémentaire.
150
+ - **Observations incrémentales :** indiquez l'ID d'observation précédent comme `since` avec la même requête. Les deltas préservent les ajouts, modifications, suppressions et l'ordre. Les instantanés sont isolés par Agent, avec au plus 64 observations indexées et 4 MiB de JSON conservé par stockage. `snapshot` récupère un résultat historique conservé ; `offset` et `limit` paginent ses tableaux. Une base manquante, un périmètre modifié, des preuves incomplètes ou un delta plus volumineux se replient sur la sortie complète.
151
+
152
+ Voir [le protocole détaillé](skills/computer-use/references/progressive-control.md) pour les limites de cache et les frontières de récupération. Les instantanés UIA préservent les champs renvoyés par le fournisseur dans les limites existantes du fournisseur ; la récupération historique ne constitue pas une vérification fraîche du résultat.
153
+
154
+ ## Outils
155
+
156
+ | Groupe | Outils |
157
+ |---|---|
158
+ | Activer | `computer_use_activate` |
159
+ | Observer | `computer_state` `computer_shot` `computer_ocr` `computer_marks` `computer_uia` |
160
+ | Agir | `computer_click` `computer_move` `computer_drag` `computer_scroll` `computer_select` `computer_key` `computer_type` `computer_uia_act` `computer_window` `computer_clip` |
161
+ | Flux | `computer_wait` `computer_batch` |
162
+ | Méta | `computer_ask` `computer_ctrl` |
163
+
164
+ `computer_marks` renvoie des repères numérotés pour les éléments qu'il a trouvés à l'écran ; `computer_marks {shot:true}` enregistre aussi une image annotée. `computer_shot` renvoie une capture d'écran simple et, sur les routes compatibles avec les images, une pièce jointe d'image native. Un repère est un ID d'instantané : il est validé par rapport à l'identité de la fenêtre et aux pixels échantillonnés avant l'envoi de toute entrée, si bien qu'un repère périmé est refusé plutôt que cliqué au mauvais endroit.
165
+
166
+ ## Modes d'approbation
167
+
168
+ Pour un hôte qui signale un refus automatique (invites désactivées) comme « l'utilisateur a rejeté l'outil », voir le [patch d'attribution des approbations DSH et son test de non-régression](docs/APPROVAL-ATTRIBUTION.md).
169
+
170
+ `automationMode` se définit dans les paramètres du plugin et vaut `standard` par défaut :
171
+
172
+ | Mode | Observation | Actionnement |
173
+ |---|---|---|
174
+ | `read-only` | autorisée | refusé |
175
+ | `standard` | autorisée | chaque action demande confirmation via la carte d'approbation de l'hôte |
176
+ | `autonomous` | autorisée | autorisé, les opérations à haut risque demandent toujours confirmation |
177
+ | `unrestricted` | autorisée | autorisé (le dispositif de sécurité du worker et la limite de débit s'appliquent toujours) |
178
+
179
+ Les opérations à haut risque (fermer une fenêtre, `alt+f4`, `win+r` et similaires) demandent confirmation dans tous les modes. Les champs de mot de passe sont détectés via `IsPassword` d'UI Automation et refusés par défaut.
180
+
181
+ ## Modèle de sécurité
182
+
183
+ - **Entrée partagée** — l'activité ordinaire de l'utilisateur est autorisée pendant que l'agent réfléchit, observe ou se prépare. Pendant l'actionnement proprement dit, la saisie, le défilement et les boutons cèdent immédiatement ; le déplacement du pointeur dispose d'une tolérance de 16 pixels. Une entrée continue, ou une touche ou un bouton maintenu pendant 2 secondes, déclenche une attente automatique. Après le relâchement et 3 secondes de calme, l'agent doit inspecter la cible actuelle et poursuivre la tâche d'origine, sans rejouer à l'aveugle des écritures partielles. Un dégradé doux jaune pâle sur le bord indique que l'humain a la main.
184
+ - **Pause manuelle** — seul le raccourci physique `Ctrl+Esc` déclenche un frein d'entrée persistant ; `Ctrl+Alt+R` reprend. La touche Échap ordinaire, la saisie, le défilement, la distance ou la fréquence du pointeur et le coin de l'écran ne créent pas cette pause. Les maintiens explicites de question ou de diagnostic restent distincts.
185
+ - **Sortie** — `Ctrl+Alt+Q` met fin à la session : la surcouche disparaît, ses écouteurs sont démontés et tout actionnement ultérieur est refusé jusqu'à ce qu'un tour ultérieur en ouvre une nouvelle.
186
+ - **Le frein est un fait de la machine, pas d'un seul processus** — l'état activé est persisté et chaque worker l'adopte, y compris un worker démarré plus tard depuis un shell.
187
+ - **Audit** — chaque actionnement est ajouté à `$DSH_HOME/data/computer-use/audit.jsonl` avec assainissement des arguments.
188
+ - **Interrupteur d'arrêt du plugin lui-même** — `DSH_COMPUTER_USE_KILL=1` empêche le plugin de démarrer ; `dryRun: true` simule les actionnements et se contente de les journaliser.
189
+
190
+ ## Configuration
191
+
192
+ | Clé | Défaut | Signification |
193
+ |---|---:|---|
194
+ | `automationMode` | `standard` | mode d'approbation (ci-dessus) |
195
+ | `progressiveTools` | `true` | activation par Agent ; `false` expose les 19 outils de bureau globalement |
196
+ | `actionFeedback` | `true` | observer automatiquement après les actions directes et les lots |
197
+ | `actionFeedbackDetail` | `compact` | `compact`, `full` ou `none` ; le `feedback` d'un appel remplace ce défaut ; les preuves non mises en cache se replient sur une sortie complète directement dans la réponse |
198
+ | `dryRun` | `false` | simuler les actionnements, journalisation uniquement |
199
+ | `maxActionsPerMinute` | `60` | limite de débit d'actionnement au niveau du cœur |
200
+ | `annotateMarks` | `true` | dessiner les cadres Set-of-Marks sur les captures d'écran |
201
+ | `workerExe` | `""` | chemin explicite du worker ; vide = découverte automatique ou compilation |
202
+ | `snapshotDir` | `""` | répertoire des captures d'écran ; vide = `$DSH_HOME/data/computer-use/shots` |
203
+
204
+ ## Serveur MCP
205
+
206
+ `mcp/` est un serveur MCP stdio sans dépendances reposant sur le même cœur, destiné aux clients qui parlent MCP plutôt que Cordis :
207
+
208
+ ```sh
209
+ # published package (2.0.1 and later) — no checkout needed
210
+ npx -y dsh-codex-style-computer-use
211
+
212
+ # from a checkout
213
+ node mcp/src/index.js
214
+ ```
215
+
216
+ Le serveur embarqué indique la version de ce paquet racine. Il démarre en observation seule. L'hôte de lancement peut définir `DSH_CU_ALLOW_INPUT=1` lorsqu'il détient l'autorisation des actions sur le bureau ; les appels d'outils MCP ne peuvent pas activer l'entrée. L'outil de compatibilité `cu_approve` se contente de signaler cette règle et n'accorde jamais de consentement. La politique `automationMode` de DSH appartient à l'adaptateur Cordis et n'est pas un service d'approbation MCP. `DSH_CU_DRY_RUN=1` simule une entrée que l'hôte a déjà activée.
217
+
218
+ Les deux adaptateurs utilisent la même grammaire des commandes clavier, les mêmes règles d'échec et de reprise des lots, et la même correspondance des coordonnées d'image. MCP renvoie des métadonnées de capture structurées et une seule image PNG/JPEG la plus récente, sans sérialiser les octets d'image dans du texte JSON. `cu_hold` / `cu_free` réservent ou libèrent la scène entre les actions ; `cu_release` met fin au cycle de bureau. `cu_drag` accepte les contrôles `expectCursor` et `hwnd`. MCP expose une surface d'outils plus réduite ; l'intégration des questions humaines et du cycle de vie de l'hôte, propre à DSH, est assurée par l'adaptateur Cordis.
219
+
220
+ ## Développement
221
+
222
+ Les contrôles de publication de l'éditeur utilisent par défaut le registre officiel de npm. Si cette origine est inaccessible sur votre réseau, `CU_REGISTRY` sélectionne un miroir explicite pour la commande `check` en lecture seule ; le résultat JSON inclut `registry` et `authoritative`. Exemple en PowerShell (cela ne modifie que le shell courant) :
223
+
224
+ ```powershell
225
+ $env:CU_REGISTRY = 'https://registry.npmmirror.com'
226
+ node scripts/release-channel.mjs check 1.2.0
227
+ Remove-Item Env:CU_REGISTRY
228
+ ```
229
+
230
+ Le code de sortie `0` signifie que la version a passé le contrôle de publication de 24 heures, `2` qu'elle est encore en refroidissement et `1` que le contrôle a échoué. Une défaillance réseau ne prouve pas qu'un paquet n'est pas publié, et les miroirs peuvent être en retard. `promote` revérifie toujours et écrit `https://registry.npmjs.org`, en ignorant `CU_REGISTRY` ; il nécessite l'accès à cette origine, en utilisant la configuration proxy de npm si nécessaire. Cet outil d'éditeur ne fait pas partie de l'installation destinée aux utilisateurs finaux. Voir [la procédure de publication](docs/RELEASE-1.2.0.md).
231
+
232
+ Le dépôt fournit la suite de garde-fous qui protège les invariants ci-dessus — la durée de vie du cycle, le protocole question/frein, la classification des opérations, le verrou de compétence et le câblage de la compétence intégrée :
233
+
234
+ ```sh
235
+ pwsh -NoProfile -ExecutionPolicy Bypass -File build/run-guards.ps1 # all guards
236
+ node build/verify-tools-schema.mjs # tool-schema load guard
237
+ ```
238
+
239
+ Les définitions d'outils sont compilées via le véritable DSL `@deepseek-ai/dsh-tools`, de sorte qu'une erreur de schéma échoue ici au lieu de faire tomber l'arborescence de plugins de l'hôte au redémarrage. Certains garde-fous compilent le worker natif et sont réservés à Windows.
240
+
241
+ ## Licence
242
+
243
+ MIT — voir [LICENSE](LICENSE).
package/README.md CHANGED
@@ -1,25 +1,50 @@
1
1
  # Codex-style Computer Use
2
2
 
3
- **Bring a Codex-style desktop workflow to DeepSeek Harness.**
3
+ **The most precise way to drive Windows from DeepSeek Harness — and the cheapest per task.**
4
4
 
5
- Describe the goal. Your agent observes the screen, locates controls, clicks and types, then checks the result. Work with native Windows apps from the conversation.
5
+ Describe the goal. Your agent reads exact control identities, acts through the controls themselves, verifies the result — and finishes a known sequence in one model round trip instead of ten.
6
6
 
7
- English | [中文](README.zh.md) · [Install](#install-and-update-in-dsh-market) · [Changelog](CHANGELOG.md)
7
+ English | [中文](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) | [فارسی](README.fa.md) · [Install](#install-and-update-in-dsh-market) · [Changelog](CHANGELOG.md) · [2.0.0 changes](docs/RELEASE-2.0.0.md)
8
8
 
9
9
  ![Codex-style Windows desktop control: observe, act, verify](docs/images/01-codex-style.png)
10
10
 
11
- - **See the target. Take the action.** Combine screenshots, UI Automation and numbered targets with mouse, keyboard, drag, scroll and window tools.
12
- - **Take over. Let the agent wait. Hand back and continue.** Version 2.0.0 shows a 1-second notice before input, or 0.1 second when the previous notice was less than 3 minutes ago. After handback, the agent re-observes and resumes the original task.
13
- - **Fewer round trips. More efficient token use.** Incremental control observations, cropped or downsampled screenshots and batches of known actions reduce repeated context and model calls.
11
+ ## Why it is the precise one
12
+
13
+ - **Identity, not guesswork.** UI Automation exposes the real control tree with exact `AutomationId`s, and actions can drive a control through its own UI Automation patterns instead of clicking coordinates.
14
+ - **Marks are checked, not trusted.** By default, a numbered mark is validated against window identity and sampled pixels before any input is dispatched, so a stale mark is refused rather than clicked at the wrong place. When an animated neighbour keeps invalidating the pixel signature, `uiaOnly` pins identity to the window handle and geometry while the dispatch-time occlusion check still applies.
15
+ - **Queries stay bounded.** UIA queries default to depth 6, 120 nodes and a 1200 ms soft budget; a query deeper than 6 or larger than 300 nodes requires a measured `anchor`, so a query cannot quietly sweep the wrong region.
16
+ - **When the app hides it, read it.** `computer_ocr` returns lines and per-word boxes in absolute screen pixels, so zero-UIA applications can be located by name.
17
+
18
+ ## Why it costs less
19
+
20
+ - **One round trip for a known sequence.** One `computer_batch` call runs a list of actions serially, stops at the first failure, and costs one model round trip instead of one per action.
21
+ - **Only the delta comes back.** Pass the previous observation ID as `since` and receive additions, changes, removals and ordering — not the whole tree again.
22
+ - **Compact receipts by default in 2.0.0.** Post-action text normally adds at most 6 KiB to the action receipt; `feedback: full` is still there when detail matters more.
23
+ - **Evidence stays out of the conversation.** Complete point evidence can live in a bounded local cache (4 MiB memory, 32 MiB disk, 64 records, 24-hour expiry) and be pulled on demand.
24
+ - **Local work stays local.** UI Automation, screen OCR and pixel checks run in the prebuilt native worker — no extra vision bill per step.
25
+
26
+ ## Built for a desktop you still use
27
+
28
+ - **It waits for you.** A 1-second notice before input (0.1 second within a rolling 3-minute window) hands the desktop back immediately; after you finish, the agent re-observes and continues the original task.
29
+ - **The brake reaches the model.** `Ctrl+Esc` pauses, `Ctrl+Alt+R` resumes, `Ctrl+Alt+Q` exits, and a stop is pushed into the running session. Approvals stay on by default and password fields are refused by default.
30
+ - **It reports what it cannot do.** The Windows secure desktop (UAC prompt or lock screen) is detected, reported and resumed after — not blind-retried.
14
31
 
15
32
  ![Human handoff: prepare, take over, continue](docs/images/02-handoff.png)
16
33
 
17
34
  ![Token efficiency: focused observations, batched actions and result readback](docs/images/03-token-efficiency.png)
18
35
 
19
- These are **1.3.0 feature illustrations**. Actual token use depends on the task, model and observation strategy. Approvals remain enabled by default; explicit pause, cancellation and exit remain authoritative.
36
+ The illustrations above show the interaction model introduced in 1.3.0; the 2.0.0 kite pointer, bounded queries and compact receipts are described above. Actual token use depends on the task, model and observation strategy. Approvals remain enabled by default; explicit pause, cancellation and exit remain authoritative.
20
37
 
21
38
  **Ready to install.** 19 desktop tools, with native helpers included. No SDK or install-time compilation. Requires Windows, Node.js ≥ 22 and the .NET Framework 4.x included with Windows. An independent community plugin; Codex describes the interaction style.
22
39
 
40
+ ## New in 2.0.0
41
+
42
+ - **Compact receipts by default** — post-action text normally adds at most 6 KiB to the action receipt; `feedback: full` and `feedback: none` are explicit alternatives.
43
+ - **Bounded, anchored UIA queries** — depth 6, 120 nodes and a 1200 ms soft budget by default; queries deeper than 6 or larger than 300 nodes need a measured `anchor`.
44
+ - **Evidence on demand** — 4 MiB memory + 32 MiB disk, 64 records, 24-hour expiry; a disk failure falls back to bounded memory.
45
+ - **Adaptive preparation notice** — 1 second initially, 0.1 second within a rolling 3-minute window; the tilted kite marks the agent's click point.
46
+ - **Hardened input path** — guarded window-management chords, worker backpressure/recovery, stale-target checks and cancellation cleanup.
47
+
23
48
  <details>
24
49
  <summary>Current release and compatibility</summary>
25
50
 
@@ -59,7 +84,7 @@ this Agent's observation cache; it does not delete screenshots, attachments or u
59
84
 
60
85
  Search **computer-use** or **Codex-style** in the market. Look for repository **ltmroberthk915/dsh-computer-use** and npm package **dsh-codex-style-computer-use** (maintainer: **ltmroberthk**), then click **Install**. Use **Update** or **Update all** for stable-channel updates. Both native helpers are included; no PowerShell 7 or build permission is needed.
61
86
 
62
- Alternatively, enter **`dsh-codex-style-computer-use`** in **Settings → Plugins → Add plugin** for the current stable channel, or **`dsh-codex-style-computer-use@1.3.0`** for the version illustrated here. Enter the npm package spec directly. Your host may apply a waiting period to fresh versions; follow its indication. A newly added bundle can load live on supported hosts; check that its tools and skill appear. Restart from the tray when replacing a loaded version, when the client remains stale, or when DSH reports **restart-required**.
87
+ Alternatively, enter **`dsh-codex-style-computer-use`** in **Settings → Plugins → Add plugin** for the current stable channel, or **`dsh-codex-style-computer-use@2.0.0`** for the version described here. Enter the npm package spec directly. Your host may apply a waiting period to fresh versions; follow its indication. A newly added bundle can load live on supported hosts; check that its tools and skill appear. Restart from the tray when replacing a loaded version, when the client remains stale, or when DSH reports **restart-required**.
63
88
 
64
89
  ### Releases less than 24 hours old
65
90
 
@@ -188,6 +213,10 @@ fields are detected through UI Automation's `IsPassword` and refused by default.
188
213
  than Cordis:
189
214
 
190
215
  ```sh
216
+ # published package (2.0.1 and later) — no checkout needed
217
+ npx -y dsh-codex-style-computer-use
218
+
219
+ # from a checkout
191
220
  node mcp/src/index.js
192
221
  ```
193
222
 
@@ -228,6 +257,10 @@ The tool definitions are compiled through the real `@deepseek-ai/dsh-tools` DSL,
228
257
  fails here instead of taking the host's plugin tree down on restart. Some guards compile the native
229
258
  worker and are Windows-only.
230
259
 
260
+ Publishing runs `npm run verify:package` first: it checks the packed identity, the prebuilt helper
261
+ hashes and every `bin` entry (target present, node shebang). It is deliberately not a publish hook —
262
+ the package ships no lifecycle scripts — so run it yourself immediately before `npm publish`.
263
+
231
264
  ## License
232
265
 
233
266
  MIT — see [LICENSE](LICENSE).
package/README.pt.md ADDED
@@ -0,0 +1,234 @@
1
+ # Computer Use no estilo Codex
2
+
3
+ **A forma mais precisa de controlar o Windows a partir do DeepSeek Harness — e a de menor custo por tarefa.**
4
+
5
+ Descreva o objetivo. Seu agente lê as identidades exatas dos controles, age por meio dos próprios controles, verifica o resultado — e conclui uma sequência conhecida em uma única rodada do modelo, em vez de dez.
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.ar.md) | [Русский](README.ru.md) | [فارسی](README.fa.md) · [Instalar](#install-and-update-in-dsh-market) · [Registro de alterações](CHANGELOG.md) · [Novidades da 2.0.0](docs/RELEASE-2.0.0.md)
8
+
9
+ ![Controle de desktop do Windows no estilo Codex: observar, agir, verificar](docs/images/01-codex-style.png)
10
+
11
+ ## Por que ele é o mais preciso
12
+
13
+ - **Identidade, não adivinhação.** O UI Automation expõe a árvore real de controles com `AutomationId`s exatos, e as ações podem acionar um controle por meio de seus próprios padrões de UI Automation, em vez de clicar em coordenadas.
14
+ - **Marcas são verificadas, não presumidas.** Por padrão, uma marca numerada é validada com base na identidade da janela e em pixels amostrados antes de qualquer entrada ser enviada, de modo que uma marca obsoleta é recusada em vez de clicada no lugar errado. Quando um vizinho animado continua invalidando a assinatura de pixels, `uiaOnly` fixa a identidade ao handle da janela e à geometria, enquanto a verificação de oclusão no momento do envio continua se aplicando.
15
+ - **As consultas permanecem limitadas.** As consultas UIA usam por padrão profundidade 6, 120 nós e um orçamento flexível de 1200 ms; uma consulta com profundidade maior que 6 ou mais de 300 nós exige um `anchor` medido, para que uma consulta não varra a região errada silenciosamente.
16
+ - **Quando o app esconde, leia.** `computer_ocr` retorna linhas e caixas por palavra em pixels absolutos da tela, de modo que aplicativos sem UIA podem ser localizados pelo nome.
17
+
18
+ ## Por que ele custa menos
19
+
20
+ - **Uma rodada para uma sequência conhecida.** Uma chamada `computer_batch` executa uma lista de ações em série, para na primeira falha e custa uma única rodada do modelo em vez de uma por ação.
21
+ - **Só o delta retorna.** Informe o ID da observação anterior como `since` e receba adições, alterações, remoções e ordenação — não a árvore inteira de novo.
22
+ - **Recibos compactos por padrão na 2.0.0.** O texto pós-ação normalmente acrescenta no máximo 6 KiB ao recibo da ação; `feedback: full` continua disponível quando o detalhe importa mais.
23
+ - **As evidências ficam fora da conversa.** A evidência completa do ponto pode residir em um cache local limitado (4 MiB de memória, 32 MiB de disco, 64 registros, expiração em 24 horas) e ser obtida sob demanda.
24
+ - **O trabalho local permanece local.** UI Automation, OCR de tela e verificações de pixels são executados no worker nativo pré-compilado — sem custo extra de visão por etapa.
25
+
26
+ ## Feito para um desktop que você ainda usa
27
+
28
+ - **Ele espera por você.** Um aviso de 1 segundo antes da entrada (0,1 segundo dentro de uma janela móvel de 3 minutos) devolve o desktop imediatamente; depois que você termina, o agente observa novamente e continua a tarefa original.
29
+ - **O freio chega ao modelo.** `Ctrl+Esc` pausa, `Ctrl+Alt+R` retoma, `Ctrl+Alt+Q` encerra, e uma parada é injetada na sessão em execução. As aprovações permanecem ativadas por padrão e campos de senha são recusados por padrão.
30
+ - **Ele relata o que não consegue fazer.** O desktop seguro do Windows (prompt do UAC ou tela de bloqueio) é detectado e relatado, e a tarefa é retomada em seguida — sem novas tentativas às cegas.
31
+
32
+ ![Passagem ao humano: preparar, assumir, continuar](docs/images/02-handoff.png)
33
+
34
+ ![Eficiência de tokens: observações focadas, ações em lote e leitura dos resultados](docs/images/03-token-efficiency.png)
35
+
36
+ As ilustrações acima mostram o modelo de interação introduzido na 1.3.0; o ponteiro de pipa da 2.0.0, as consultas limitadas e os recibos compactos estão descritos acima. O uso real de tokens depende da tarefa, do modelo e da estratégia de observação. As aprovações continuam ativadas por padrão; pausa, cancelamento e saída explícitos continuam prevalecendo.
37
+
38
+ **Pronto para instalar.** 19 ferramentas de desktop, com helpers nativos incluídos. Sem SDK nem compilação no momento da instalação. Requer Windows, Node.js ≥ 22 e o .NET Framework 4.x incluído no Windows. Um plugin independente da comunidade; Codex descreve o estilo de interação.
39
+
40
+ ## Novidades da 2.0.0
41
+
42
+ - **Recibos compactos por padrão** — o texto pós-ação normalmente acrescenta no máximo 6 KiB ao recibo da ação; `feedback: full` e `feedback: none` são alternativas explícitas.
43
+ - **Consultas UIA limitadas e ancoradas** — profundidade 6, 120 nós e um orçamento flexível de 1200 ms por padrão; consultas com profundidade maior que 6 ou mais de 300 nós precisam de um `anchor` medido.
44
+ - **Evidências sob demanda** — 4 MiB de memória + 32 MiB de disco, 64 registros, expiração em 24 horas; uma falha de disco recorre à memória limitada.
45
+ - **Aviso de preparação adaptativo** — 1 segundo inicialmente, 0,1 segundo dentro de uma janela móvel de 3 minutos; a pipa inclinada marca o ponto de clique do agente.
46
+ - **Caminho de entrada reforçado** — combinações de teclas de gerenciamento de janelas protegidas, contrapressão/recuperação do worker, verificações de alvos obsoletos e limpeza ao cancelar.
47
+
48
+ <details>
49
+ <summary>Versão atual e compatibilidade</summary>
50
+
51
+ **2.0.0** é a nova versão principal, distribuída inicialmente no canal `next` do npm enquanto decorre a janela de liberação de 24 horas. Veja [mudanças e migração da 2.0.0](docs/RELEASE-2.0.0.md). Consulte as tags do registry para a disponibilidade estável atual.
52
+
53
+ A versão 1.3.1 lê texto da tela pelo nome, detecta o desktop seguro do Windows e retoma sozinha, e mantém todas as cores no mesmo trilho de borda derivado do DPI, com um nível mínimo de respiração visível. A versão 1.3.0 libera o controle do desktop quando o trabalho termina enquanto o chat continua.
54
+
55
+ Correções anteriores: [1.2.3 atribuição de aprovação](docs/RELEASE-1.2.3.md) · [1.2.1 atenção nativa](docs/RELEASE-1.2.1.md) · [patch de host autônomo](docs/RELEASE-1.2.2.md).
56
+
57
+ </details>
58
+
59
+ ## O que ele faz
60
+
61
+ A versão 2.0.0 também usa um ponteiro de pipa azul compacto durante a operação da IA e a retenção de cena. Sua ponta inclinada marca o ponto de clique, com pequenos símbolos de texto/redimensionamento dentro da pipa. Uma pipa que respira significa que a página e a posição do ponteiro devem permanecer no lugar; o modo livre restaura o cursor normal do aplicativo. O tema de cursor do Windows do usuário é preservado.
62
+
63
+ A versão 2.0.0 limita a travessia do UIA e usa texto pós-ação compacto por padrão. O feedback de imagem existente continua disponível; `feedback: compact|full|none` controla o nível de detalhe, e `verificationRegion: "x,y,w,h"` no clique nomeia a área de efeito esperada independentemente do ponto de entrada. O texto compacto normalmente acrescenta no máximo 6 KiB ao recibo original da ação. A evidência completa do ponto pode ser retida em um cache local limitado, com expiração, e recuperada sob demanda. Falha de disco recorre à memória limitada; se nenhum snapshot recuperável puder ser retido, a evidência atual é retornada embutida na íntegra, fora desse orçamento compacto, sem outra observação ou entrada.
64
+
65
+ Consultas UIA filtradas exigem `hwnd`. Os padrões são profundidade 6, 120 nós e um orçamento flexível de 1200 ms. Uma consulta com profundidade maior que 6 ou mais de 300 nós exige um `anchor:"x,y"` medido naquela janela; um `id` exato não contorna essa regra. Uma chamada ao provedor pode ultrapassar o orçamento flexível, e resultados parciais não podem estabelecer ausência ou unicidade. Após um atalho de gerenciamento de janelas, inspecione `computer_state {windows:true}`, ative a janela pretendida com sucesso e só então a observe antes de qualquer outra entrada de teclado.
66
+
67
+ - **Observar** — lista de janelas, capturas de tela (região / JPEG / PNG / reduzidas), um mapa Set-of-Marks dos elementos clicáveis e a árvore do UI Automation com `AutomationId`s exatos.
68
+ - **Agir** — clicar, mover, arrastar, rolar, selecionar um intervalo de texto, digitar, pressionar teclas e acionar controles por meio de seus próprios padrões de UI Automation, em vez de coordenadas às cegas.
69
+ - **Em lote** — uma chamada `computer_batch` executa uma lista de ações em série e para na primeira falha, de modo que uma sequência conhecida custa uma única rodada do modelo em vez de dez.
70
+ - **Perguntar** — `computer_ask` levanta uma pergunta no mesmo card de chat que o DSH usa para `ask_user_question`, sem contagem regressiva.
71
+ - **Um freio humano que chega ao modelo** — uma parada é injetada na sessão em execução, para que o agente saiba que foi interrompido em vez de descobrir isso no turno seguinte.
72
+
73
+ As ferramentas observam o desktop em vez de rastrear documentos do usuário. O plugin gerencia helpers nativos em `%LOCALAPPDATA%\dsh-computer-use\worker\`, além dos registros de auditoria, das capturas de tela e de seu próprio `observation-cache` limitado em `$DSH_HOME/data/computer-use/`. `computer_ctrl {action:"clear_cache"}` limpa o cache de observações deste Agente; não apaga capturas de tela, anexos ou documentos do usuário.
74
+
75
+ <a id="install-and-update-in-dsh-market"></a>
76
+
77
+ ## Instalar e atualizar no dsh-market
78
+
79
+ Pesquise por **computer-use** ou **Codex-style** no mercado. Procure o repositório **ltmroberthk915/dsh-computer-use** e o pacote npm **dsh-codex-style-computer-use** (mantenedor: **ltmroberthk**) e clique em **Instalar**. Use **Atualizar** ou **Atualizar tudo** para atualizações do canal estável. Ambos os helpers nativos estão incluídos; não é necessário PowerShell 7 nem permissão de build.
80
+
81
+ Como alternativa, digite **`dsh-codex-style-computer-use`** em **Configurações → Plugins → Adicionar plugin** para o canal estável atual, ou **`dsh-codex-style-computer-use@2.0.0`** para a versão descrita aqui. Informe a especificação do pacote npm diretamente. Seu host pode aplicar um período de espera a versões novas; siga a indicação exibida. Um bundle recém-adicionado pode carregar a quente em hosts compatíveis; verifique se as ferramentas e a skill aparecem. Reinicie a partir da bandeja do sistema ao substituir uma versão já carregada, quando o cliente permanecer desatualizado ou quando o DSH reportar **restart-required**.
82
+
83
+ ### Versões com menos de 24 horas
84
+
85
+ A configuração padrão não estrita do pnpm 11.7.0 registra automaticamente uma exceção de versão única e conclui a instalação. Uma instalação bem-sucedida em uma máquina não garante que outra máquina permita versões novas.
86
+
87
+ Com `minimumReleaseAgeStrict: true` (ou uma política de host que habilite verificações estritas de idade de release) e sem exceção aplicável, uma versão abaixo da idade configurada é rejeitada antes de o código do plugin ser executado. Verificou-se que o nome sem versão, um pin exato `@1.2.0` e a URL do tarball do npm falham com `ERR_PNPM_NO_MATURE_MATCHING_VERSION` sob essa política. Definir explicitamente `minimumReleaseAge: 1440` também habilita o comportamento estrito no pnpm 11.7.0, a menos que `minimumReleaseAgeStrict` seja definido separadamente como false. Reiniciar o DSH, instalar o PowerShell ou repetir o mesmo comando não resolve uma recusa por política estrita. A ponte oficial do desktop não aceita flags extras do pnpm.
88
+
89
+ Se uma política estrita bloquear a instalação, aguarde até que a versão atenda à idade configurada para instalar sem alterar a política. A versão 1.2.0 foi publicada em `2026-10-03T03:50:11.586Z`; ela atende ao corte de 24 horas após **2026-10-04 03:50:12 UTC** (11:50:12 na China). Um corte personalizado mais longo ou um mirror de registry atrasado pode adiar ainda mais a disponibilidade. Usuários padrão não estritos não precisam esperar nem editar a configuração para este pacote.
90
+
91
+ Se você optar explicitamente por instalar antes, mescle esta exceção de versão única no `pnpm-workspace.yaml` existente do perfil de destino e tente novamente a instalação pelo mercado. Preserve as outras entradas; não desative a política global de idade:
92
+
93
+ ```yaml
94
+ minimumReleaseAgeExclude:
95
+ - dsh-codex-style-computer-use@1.2.0
96
+ ```
97
+
98
+ O caminho padrão no desktop é `%USERPROFILE%\.dsh\profiles\desktop\pnpm-workspace.yaml`; use o diretório real se `DSH_HOME` for personalizado. Remova esta exceção depois que a versão amadurecer, se desejar.
99
+
100
+ As correções anteriores de documentação e de verificação do publicador não alteraram o runtime da 1.2.0 e não exigiram reinstalação. A correção de atenção nativa na **1.2.1** exige sim uma atualização. Adicionar a mesma origem novamente pode produzir um erro de host `ambiguous-install` em alguns caminhos de instalação; reinstalar a 1.2.0 não aplicará a correção da 1.2.1.
101
+
102
+ **Migrando uma instalação antiga via Git/tarball deste repositório:** remova a entrada antiga **dsh-computer-use** no mercado e instale **dsh-codex-style-computer-use**. O nome npm sem escopo `dsh-computer-use` pertence a outro repositório; não o instale como atualização deste plugin. Uma instalação via Git não pode trocar sua identidade de dependência apenas buscando um novo commit. Depois dessa migração única pela UI, use as atualizações normais do mercado. Os nomes de ferramenta `computer_*` existentes e o namespace de configurações `computer-use` são mantidos.
103
+
104
+ **Preserve também sua configuração salva:** faça uma cópia de segurança do `cordis.patch.yml` do perfil e altere apenas `name: dsh-computer-use` em um override com `id: computer-use` para `name: dsh-codex-style-computer-use`. Mantenha todos os seus campos `config` e `disabled`. Reter apenas o namespace de configurações não basta: um nome divergente faz o DSH ignorar até overrides `read-only`, `dryRun` e de estado desabilitado. Não substitua outros plugins nem um patch de home compartilhado globalmente. O `scripts/migrate-profile.mjs` do repositório faz pré-visualização por padrão; `--apply` cria um backup e substitui o arquivo atomicamente, recusando edições concorrentes.
105
+
106
+ Como alternativa, baixe o [utilitário de migração de configuração](https://github.com/ltmroberthk915/dsh-computer-use/releases/download/v1.2.0/computer-use-profile-migration.zip), extraia-o e dê dois cliques em `migrate-profile.cmd`. Ele localiza o aplicativo Desktop oficial instalado e usa o Windows PowerShell 5.1 e o Node incluído no DSH para reparar o perfil desktop padrão. Ele para se o novo bundle estiver ausente ou se o bundle antigo ainda estiver selecionado. Não altera a política de idade de release. Para outro perfil, execute `migrate-profile.ps1 -ProfileDirectory <absolute-directory>` para pré-visualizar e depois adicione `-Apply` quando estiver pronto.
107
+
108
+ O Release do GitHub também inclui `dsh-computer-use.tgz` para instalação offline/manual; a instalação pelo registry é o padrão para atualizações do mercado.
109
+
110
+ Usuários de CLI (perfil web):
111
+
112
+ ```sh
113
+ dsh plugin --profile web add dsh-codex-style-computer-use
114
+ ```
115
+
116
+ Os diagnósticos do desktop devem usar a **CLI incluída no aplicativo Desktop oficial**:
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
+ Para uma instalação personalizada, defina `$CuDshInstall` como o diretório no destino do atalho do Desktop. Um `dsh` global mais antigo do npm pode rejeitar o perfil desktop. Não adicione `resources/runtime/bin` ao PATH global nem instale um pnpm separado para esta tarefa. Prefira a interface do plugin para instalar.
124
+
125
+ ## A skill incluída
126
+
127
+ As ferramentas de condução permanecem bloqueadas até que a sessão produza a frase de recibo que existe apenas dentro de `skills/computer-use/SKILL.md`. Isso é intencional — é a versão honesta mais forte de "leia o manual antes de conduzir", porque nenhuma camada de ferramentas consegue ver se um modelo leu um documento.
128
+
129
+ O plugin registra a skill incluída por meio de `ctx.skills.register()` quando disponível. Se esse serviço estiver ausente, `computer_use_activate` retorna o mesmo manual, seu caminho absoluto de origem e a lista de ferramentas no escopo. O recibo e todas as verificações existentes de aprovação/freio continuam se aplicando.
130
+
131
+ ## Entrada compartilhada na 1.2.0-rc.2
132
+
133
+ Esta pré-versão introduz a tomada de controle imediata pelo humano, a espera automática após 2 segundos de entrada contínua e a continuação após 3 segundos de silêncio. A espera ocorre localmente, sem polling do modelo. Escritas interrompidas exigem uma nova leitura de verificação e nunca são repetidas às cegas. O cancelamento pelo host libera a entrada aceita de propriedade da automação sem criar uma nova pausa persistente. O tratamento existente do DSH Pet/janela principal e de topo original é mantido.
134
+
135
+ As rotas configuradas GLM 5.3 Max, GLM 5.3 Flash e DeepSeek Flash passaram em um teste controlado do protocolo de continuação. Entrada nativa e atalhos físicos foram verificados separadamente; este não é um benchmark geral de desktop ou de visão. Veja [a verificação do release](docs/RELEASE-1.2.0-rc.2.md) para o escopo.
136
+
137
+ ## Controles sob demanda na 1.1
138
+
139
+ - **Ferramentas por Agente:** Agentes ociosos veem `computer_use_activate`, `computer_ctrl` e `computer_ask`. Um carregamento bem-sucedido da skill computer-use, um recibo ou uma ativação expõe as 19 ferramentas de desktop mais a entrada de ativação àquele Agente. Outros Agentes e filhos ativam de forma independente. Chamadas nativas e `run_code` do Node são suportadas. A ativação não inicia o controle nem libera um freio humano.
140
+ - **Alvos UIA observados:** uma consulta de nome/id no escopo retorna um handle de alvo opaco. Use-o em ações baseadas em padrões; a opção `rebind:true` permite recuperação de identidade única ou semântica após substituição na mesma janela. Contexto alterado, ambiguidade e varreduras incompletas são recusados. Consultas amplas ignoram handles de recuperação a menos que `targets:true`; criar testemunhas para uma lista grande custa trabalho nativo extra.
141
+ - **Observações incrementais:** informe o ID da observação anterior como `since` com a mesma consulta. Os deltas preservam adições, alterações, remoções e ordenação. Os snapshots são isolados por Agente, com no máximo 64 observações indexadas e 4 MiB de JSON retido por armazenamento. `snapshot` recupera um resultado histórico retido; `offset` e `limit` paginam seus arrays. Bases ausentes, escopo alterado, evidência incompleta ou um delta maior recorrem à saída completa.
142
+
143
+ Veja [o protocolo detalhado](skills/computer-use/references/progressive-control.md) para limites de cache e fronteiras de recuperação. Os snapshots UIA preservam os campos retornados pelo provedor dentro dos limites existentes do provedor; a recuperação histórica não é uma verificação atual do resultado.
144
+
145
+ ## Ferramentas
146
+
147
+ | Grupo | Ferramentas |
148
+ |---|---|
149
+ | Ativar | `computer_use_activate` |
150
+ | Observar | `computer_state` `computer_shot` `computer_ocr` `computer_marks` `computer_uia` |
151
+ | Agir | `computer_click` `computer_move` `computer_drag` `computer_scroll` `computer_select` `computer_key` `computer_type` `computer_uia_act` `computer_window` `computer_clip` |
152
+ | Fluxo | `computer_wait` `computer_batch` |
153
+ | Meta | `computer_ask` `computer_ctrl` |
154
+
155
+ `computer_marks` retorna marcas numeradas para os elementos que encontrou na tela; `computer_marks {shot:true}` também salva uma imagem anotada. `computer_shot` retorna uma captura de tela simples e, em rotas com suporte a imagem, um anexo de imagem nativo. Uma marca é um ID de snapshot: ela é validada com base na identidade da janela e em pixels amostrados antes de qualquer entrada ser enviada, de modo que uma marca obsoleta é recusada em vez de clicada no lugar errado.
156
+
157
+ ## Modos de aprovação
158
+
159
+ Para um host que relata uma recusa automática por prompt desabilitado como "o usuário rejeitou a ferramenta", veja o [patch de atribuição de aprovação do DSH e teste de regressão](docs/APPROVAL-ATTRIBUTION.md).
160
+
161
+ `automationMode` é definido nas configurações do plugin e tem `standard` como padrão:
162
+
163
+ | Modo | Observação | Atuação |
164
+ |---|---|---|
165
+ | `read-only` | permitida | negada |
166
+ | `standard` | permitida | toda ação pergunta pelo card de aprovação do host |
167
+ | `autonomous` | permitida | permitida, operações de alto risco ainda perguntam |
168
+ | `unrestricted` | permitida | permitida (proteção contra falhas e limite de taxa do worker ainda se aplicam) |
169
+
170
+ Operações de alto risco (fechar uma janela, `alt+f4`, `win+r` e similares) perguntam em todos os modos. Campos de senha são detectados pelo `IsPassword` do UI Automation e recusados por padrão.
171
+
172
+ ## Modelo de segurança
173
+
174
+ - **Entrada compartilhada** — a atividade normal do usuário é permitida enquanto o agente pensa, observa ou se prepara. Durante a atuação propriamente dita, digitação, rolagem e botões cedem imediatamente; o movimento do ponteiro tem tolerância de deslocamento de 16 pixels. Entrada contínua ou uma tecla/botão mantido por 2 segundos entra em espera automática. Após a liberação e 3 segundos de silêncio, o agente deve inspecionar o alvo atual e continuar a tarefa original, sem repetir às cegas escritas parciais. Um gradiente de borda amarelo-claro suave indica a posse humana.
175
+ - **Pausa manual** — somente o `Ctrl+Esc` físico aciona um freio de entrada persistente; `Ctrl+Alt+R` retoma. Esc comum, digitação, rolagem, distância/frequência do ponteiro e o canto da tela não criam essa pausa. Retenções explícitas de pergunta/diagnóstico permanecem separadas.
176
+ - **Saída** — `Ctrl+Alt+Q` encerra a sessão: o overlay desaparece, seus listeners são desmontados e qualquer atuação adicional é recusada até que um turno posterior abra um novo.
177
+ - **O freio é um fato da máquina, não de um processo** — o estado acionado é persistido, e todo worker o adota, inclusive um iniciado depois a partir de um shell.
178
+ - **Auditoria** — toda atuação é acrescentada a `$DSH_HOME/data/computer-use/audit.jsonl` com sanitização dos argumentos.
179
+ - **Interruptor de emergência do próprio plugin** — `DSH_COMPUTER_USE_KILL=1` faz o plugin se recusar a iniciar; `dryRun: true` simula atuações e apenas as registra.
180
+
181
+ ## Configuração
182
+
183
+ | Chave | Padrão | Significado |
184
+ |---|---:|---|
185
+ | `automationMode` | `standard` | modo de aprovação (acima) |
186
+ | `progressiveTools` | `true` | ativação por Agente; `false` expõe as 19 ferramentas de desktop globalmente |
187
+ | `actionFeedback` | `true` | observa automaticamente após ações diretas e lotes |
188
+ | `actionFeedbackDetail` | `compact` | `compact`, `full` ou `none`; o `feedback` de uma chamada substitui este padrão; evidências não armazenadas em cache recorrem à saída completa embutida |
189
+ | `dryRun` | `false` | simula atuações, apenas registra |
190
+ | `maxActionsPerMinute` | `60` | limite de taxa de atuação no nível do núcleo |
191
+ | `annotateMarks` | `true` | desenha caixas Set-of-Marks nas capturas de tela |
192
+ | `workerExe` | `""` | caminho explícito do worker; vazio = descoberta automática ou compilação |
193
+ | `snapshotDir` | `""` | diretório de capturas de tela; vazio = `$DSH_HOME/data/computer-use/shots` |
194
+
195
+ ## Servidor MCP
196
+
197
+ `mcp/` é um servidor MCP stdio sem dependências sobre o mesmo núcleo, para clientes que falam MCP em vez de Cordis:
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
+ O servidor embutido reporta a versão deste pacote raiz. Ele inicia apenas com observação. O host que o inicia pode definir `DSH_CU_ALLOW_INPUT=1` quando detém a autorização para ações de desktop; chamadas de ferramentas MCP não podem habilitar entrada. A ferramenta de compatibilidade `cu_approve` apenas reporta esta regra e nunca concede consentimento. A política `automationMode` do DSH pertence ao adaptador Cordis e não é um serviço de aprovação MCP. `DSH_CU_DRY_RUN=1` simula entrada que o host já habilitou.
208
+
209
+ Ambos os adaptadores usam a mesma gramática de comandos de tecla, as mesmas regras de falha e continuação de lote e o mesmo mapeamento de coordenadas de imagem. O MCP retorna metadados de captura estruturados e uma imagem PNG/JPEG mais recente, sem serializar bytes de imagem em texto JSON. `cu_hold` / `cu_free` reservam ou liberam a cena entre ações; `cu_release` encerra o ciclo do desktop. `cu_drag` aceita verificações `expectCursor` e `hwnd`. O MCP expõe uma superfície de ferramentas menor; a integração específica do DSH com perguntas ao humano e com o ciclo de vida do host é fornecida pelo adaptador Cordis.
210
+
211
+ ## Desenvolvimento
212
+
213
+ As verificações de release do publicador usam o registry oficial do npm por padrão. Se essa origem estiver inacessível na sua rede, `CU_REGISTRY` seleciona um mirror explícito para o comando `check` somente leitura; o resultado JSON inclui `registry` e `authoritative`. Exemplo no PowerShell (isto altera apenas o shell atual):
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
+ O código de saída `0` significa que a versão passou na verificação de 24 horas do publicador, `2` significa que ela ainda está em resfriamento e `1` significa que a verificação falhou. Uma falha de rede não estabelece que um pacote não foi publicado, e mirrors podem ficar desatualizados. `promote` sempre verifica novamente e grava em `https://registry.npmjs.org`, ignorando `CU_REGISTRY`; ele precisa de acesso a essa origem, usando a configuração de proxy do npm quando necessário. Esta ferramenta de publicação não faz parte da instalação do usuário final. Veja [o procedimento de release](docs/RELEASE-1.2.0.md).
222
+
223
+ O repositório inclui a suíte de guardas que protege as invariantes acima — o tempo de vida do ciclo, o protocolo de pergunta/freio, a classificação de operações, o portão da skill e a ligação da skill incluída:
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
+ As definições de ferramentas são compiladas pela DSL real `@deepseek-ai/dsh-tools`, de modo que um erro de schema falha aqui em vez de derrubar a árvore de plugins do host na reinicialização. Algumas guardas compilam o worker nativo e são exclusivas do Windows.
231
+
232
+ ## Licença
233
+
234
+ MIT — veja [LICENSE](LICENSE).