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.
- package/README.ar.md +234 -0
- package/README.de.md +234 -0
- package/README.es.md +264 -0
- package/README.fa.md +234 -0
- package/README.fr.md +243 -0
- package/README.md +72 -17
- package/README.pt.md +234 -0
- package/README.ru.md +259 -0
- package/README.zh.md +66 -16
- package/icon.svg +20 -4
- package/lib/audit.js +7 -0
- package/lib/batch.js +14 -19
- package/lib/bin/attention-worker.exe +0 -0
- package/lib/bin/attention-worker.exe.json +1 -1
- package/lib/compact-feedback.js +175 -0
- package/lib/continuation.js +1 -1
- package/lib/core/bin/dsh-computer-use-worker.exe +0 -0
- package/lib/core/bin/dsh-computer-use-worker.exe.json +2 -2
- package/lib/core/index.js +403 -136
- package/lib/core/native-runtime.js +17 -0
- package/lib/core/worker.cs +2160 -229
- package/lib/feedback-routes.json +11 -0
- package/lib/feedback.js +49 -16
- package/lib/image-output.js +87 -17
- package/lib/index.js +25 -7
- package/lib/key-command.js +37 -0
- package/lib/launch.js +67 -0
- package/lib/media-contract.js +43 -0
- package/lib/observations.js +267 -13
- package/lib/policy.js +29 -9
- package/lib/tool-contract.js +56 -0
- package/lib/tools.js +203 -52
- package/lib/verification-region.js +17 -0
- package/mcp/package.json +2 -1
- package/mcp/src/execution.js +8 -5
- package/mcp/src/index.js +16 -267
- package/mcp/src/tools.js +271 -0
- package/package.json +6 -1
- package/scripts/check-behavior.mjs +83 -0
- package/scripts/measure-tool-tokens.mjs +21 -0
- package/scripts/verify-package.mjs +9 -0
- package/skills/computer-use/SKILL.md +55 -43
- package/skills/computer-use/references/lifecycle.md +11 -7
- package/skills/computer-use/references/maintenance.md +9 -5
- package/skills/computer-use/references/precision.md +39 -14
- package/skills/computer-use/references/progressive-control.md +10 -4
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
|
+

|
|
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
|
+

|
|
33
|
+
|
|
34
|
+

|
|
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,29 +1,54 @@
|
|
|
1
1
|
# Codex-style Computer Use
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**The most precise way to drive Windows from DeepSeek Harness — and the cheapest per task.**
|
|
4
4
|
|
|
5
|
-
Describe the goal. Your agent
|
|
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
|

|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **
|
|
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
|

|
|
16
33
|
|
|
17
34
|

|
|
18
35
|
|
|
19
|
-
|
|
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.
|
|
37
|
+
|
|
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.
|
|
39
|
+
|
|
40
|
+
## New in 2.0.0
|
|
20
41
|
|
|
21
|
-
**
|
|
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.
|
|
22
47
|
|
|
23
48
|
<details>
|
|
24
49
|
<summary>Current release and compatibility</summary>
|
|
25
50
|
|
|
26
|
-
**
|
|
51
|
+
**2.0.0** is the new major release, initially distributed on npm `next` while the 24-hour release gate runs. See [2.0.0 changes and migration](docs/RELEASE-2.0.0.md). Check registry tags for current stable availability.
|
|
27
52
|
|
|
28
53
|
Version 1.3.1 reads text from the screen by name, notices the Windows secure desktop and resumes on its own, and keeps every colour on the same DPI-derived edge rail with a visible breathing floor. Version 1.3.0 releases desktop control when work ends while the chat continues.
|
|
29
54
|
|
|
@@ -33,6 +58,12 @@ Earlier fixes: [1.2.3 approval attribution](docs/RELEASE-1.2.3.md) · [1.2.1 nat
|
|
|
33
58
|
|
|
34
59
|
## What it does
|
|
35
60
|
|
|
61
|
+
Version 2.0.0 also uses a compact blue kite pointer during AI operation and scene hold. Its tilted tip marks the click point, with small text/resize symbols inside the kite. A breathing kite means the page and pointer position should stay in place; free mode restores the application's normal cursor. The user's Windows cursor theme is preserved.
|
|
62
|
+
|
|
63
|
+
Version 2.0.0 bounds UIA traversal and defaults to compact post-action text. Existing image feedback remains available; `feedback: compact|full|none` controls detail, and click `verificationRegion: "x,y,w,h"` names the expected effect area independently of the input point. Compact text normally adds at most 6 KiB to the original action receipt. Complete point evidence can be retained in a bounded, expiring local cache and retrieved on demand. Disk failure falls back to bounded memory; if no retrievable snapshot can be retained, the current evidence is returned inline in full, outside that compact budget, without another observation or input.
|
|
64
|
+
|
|
65
|
+
Filtered UIA queries require `hwnd`. Defaults are depth 6, 120 nodes and a 1200 ms soft budget. A query deeper than 6 or larger than 300 nodes requires a measured `anchor:"x,y"` in that window; an exact `id` does not bypass this rule. A provider call can exceed the soft budget, and partial results cannot establish absence or uniqueness. After a window-management shortcut, inspect `computer_state {windows:true}`, activate the intended window successfully, then observe it before more keyboard input.
|
|
66
|
+
|
|
36
67
|
- **Observe** — window list, screenshots (region / JPEG / PNG / downscaled), a Set-of-Marks map of
|
|
37
68
|
clickable elements, and the UI Automation tree with exact `AutomationId`s.
|
|
38
69
|
- **Act** — click, move, drag, scroll, select a text range, type, press keys, and drive controls
|
|
@@ -44,15 +75,16 @@ Earlier fixes: [1.2.3 approval attribution](docs/RELEASE-1.2.3.md) · [1.2.1 nat
|
|
|
44
75
|
- **A human brake that reaches the model** — a stop is pushed into the running session, so the agent
|
|
45
76
|
learns it was interrupted instead of discovering it on the next turn.
|
|
46
77
|
|
|
47
|
-
The tools
|
|
48
|
-
|
|
49
|
-
under `$DSH_HOME/data/computer-use/`.
|
|
78
|
+
The tools observe the desktop rather than crawl user documents. The plugin manages native helpers in
|
|
79
|
+
`%LOCALAPPDATA%\dsh-computer-use\worker\`, and audit logs, screenshots and its own bounded
|
|
80
|
+
`observation-cache` under `$DSH_HOME/data/computer-use/`. `computer_ctrl {action:"clear_cache"}` clears
|
|
81
|
+
this Agent's observation cache; it does not delete screenshots, attachments or user documents.
|
|
50
82
|
|
|
51
83
|
## Install and update in dsh-market
|
|
52
84
|
|
|
53
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.
|
|
54
86
|
|
|
55
|
-
Alternatively, enter **`dsh-codex-style-computer-use`** in **Settings → Plugins → Add plugin** for the current stable channel, or **`dsh-codex-style-computer-use@
|
|
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**.
|
|
56
88
|
|
|
57
89
|
### Releases less than 24 hours old
|
|
58
90
|
|
|
@@ -112,9 +144,9 @@ The configured GLM 5.3 Max, GLM 5.3 Flash and DeepSeek Flash routes passed a con
|
|
|
112
144
|
|
|
113
145
|
## On-demand controls in 1.1
|
|
114
146
|
|
|
115
|
-
- **Per-Agent tools:** idle Agents see `computer_use_activate`, `computer_ctrl` and `computer_ask`. A successful computer-use skill load, receipt or activation exposes the
|
|
147
|
+
- **Per-Agent tools:** idle Agents see `computer_use_activate`, `computer_ctrl` and `computer_ask`. A successful computer-use skill load, receipt or activation exposes the 19 desktop tools plus the activation entry to that Agent. Other Agents and children activate independently. Native calls and Node `run_code` are supported. Activation does not start control or release a human brake.
|
|
116
148
|
- **Observed UIA targets:** a scoped name/id query returns an opaque target handle. Use it for pattern actions; opt-in `rebind:true` allows unique identity or semantic recovery after replacement in the same window. Changed context, ambiguity and incomplete scans refuse. Broad queries skip recovery handles unless `targets:true`; creating witnesses for a large list costs extra native work.
|
|
117
|
-
- **Incremental observations:** pass the previous observation ID as `since` with the same query. Deltas preserve additions, changes, removals and ordering.
|
|
149
|
+
- **Incremental observations:** pass the previous observation ID as `since` with the same query. Deltas preserve additions, changes, removals and ordering. Snapshots are isolated by Agent, with at most 64 indexed observations and 4 MiB of retained JSON per store. `snapshot` retrieves a retained historical result; `offset` and `limit` page its arrays. Missing bases, changed scope, incomplete evidence or a larger delta fall back to full output.
|
|
118
150
|
|
|
119
151
|
See [the detailed protocol](skills/computer-use/references/progressive-control.md) for cache limits and recovery boundaries. UIA snapshots preserve provider-returned fields within existing provider limits; historical retrieval is not fresh outcome verification.
|
|
120
152
|
|
|
@@ -123,7 +155,7 @@ See [the detailed protocol](skills/computer-use/references/progressive-control.m
|
|
|
123
155
|
| Group | Tools |
|
|
124
156
|
|---|---|
|
|
125
157
|
| Activate | `computer_use_activate` |
|
|
126
|
-
| Observe | `computer_state` `computer_shot` `computer_marks` `computer_uia` |
|
|
158
|
+
| Observe | `computer_state` `computer_shot` `computer_ocr` `computer_marks` `computer_uia` |
|
|
127
159
|
| Act | `computer_click` `computer_move` `computer_drag` `computer_scroll` `computer_select` `computer_key` `computer_type` `computer_uia_act` `computer_window` `computer_clip` |
|
|
128
160
|
| Flow | `computer_wait` `computer_batch` |
|
|
129
161
|
| Meta | `computer_ask` `computer_ctrl` |
|
|
@@ -166,7 +198,9 @@ fields are detected through UI Automation's `IsPassword` and refused by default.
|
|
|
166
198
|
| Key | Default | Meaning |
|
|
167
199
|
|---|---:|---|
|
|
168
200
|
| `automationMode` | `standard` | approval mode (above) |
|
|
169
|
-
| `progressiveTools` | `true` | per-Agent activation; `false`
|
|
201
|
+
| `progressiveTools` | `true` | per-Agent activation; `false` exposes the 19 desktop tools globally |
|
|
202
|
+
| `actionFeedback` | `true` | automatically observe after direct actions and batches |
|
|
203
|
+
| `actionFeedbackDetail` | `compact` | `compact`, `full` or `none`; a call's `feedback` overrides this default; uncached evidence falls back to full inline output |
|
|
170
204
|
| `dryRun` | `false` | simulate actuations, log only |
|
|
171
205
|
| `maxActionsPerMinute` | `60` | core-level actuation rate limit |
|
|
172
206
|
| `annotateMarks` | `true` | draw Set-of-Marks boxes on screenshots |
|
|
@@ -179,9 +213,26 @@ fields are detected through UI Automation's `IsPassword` and refused by default.
|
|
|
179
213
|
than Cordis:
|
|
180
214
|
|
|
181
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
|
|
182
220
|
node mcp/src/index.js
|
|
183
221
|
```
|
|
184
222
|
|
|
223
|
+
The embedded server reports the version of this root package. It starts with observation only.
|
|
224
|
+
The launching host may set `DSH_CU_ALLOW_INPUT=1` when it owns authorization for desktop actions;
|
|
225
|
+
MCP tool calls cannot enable input. The compatibility tool `cu_approve` only reports this rule and
|
|
226
|
+
never grants consent. DSH's `automationMode` policy belongs to the Cordis adapter and is not an
|
|
227
|
+
MCP approval service. `DSH_CU_DRY_RUN=1` simulates input that the host has already enabled.
|
|
228
|
+
|
|
229
|
+
Both adapters use the same key-command grammar, batch failure and continuation rules, and image
|
|
230
|
+
coordinate mapping. MCP returns structured capture metadata and one latest PNG/JPEG image, without
|
|
231
|
+
serializing image bytes into JSON text. `cu_hold` / `cu_free` reserve or release the scene between
|
|
232
|
+
actions; `cu_release` ends the desktop cycle. `cu_drag` accepts `expectCursor` and `hwnd` checks.
|
|
233
|
+
MCP exposes a smaller tool surface; DSH-specific human-question and host-lifecycle integration are
|
|
234
|
+
provided by the Cordis adapter.
|
|
235
|
+
|
|
185
236
|
## Development
|
|
186
237
|
|
|
187
238
|
Publisher release checks use npm's official registry by default. If that origin is unreachable on your network, `CU_REGISTRY` selects an explicit mirror for the read-only `check` command; the JSON result includes `registry` and `authoritative`. Example in PowerShell (this changes only the current shell):
|
|
@@ -206,6 +257,10 @@ The tool definitions are compiled through the real `@deepseek-ai/dsh-tools` DSL,
|
|
|
206
257
|
fails here instead of taking the host's plugin tree down on restart. Some guards compile the native
|
|
207
258
|
worker and are Windows-only.
|
|
208
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
|
+
|
|
209
264
|
## License
|
|
210
265
|
|
|
211
266
|
MIT — see [LICENSE](LICENSE).
|