dsh-codex-style-computer-use 1.3.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.ar.md +234 -0
  2. package/README.de.md +234 -0
  3. package/README.es.md +264 -0
  4. package/README.fa.md +234 -0
  5. package/README.fr.md +243 -0
  6. package/README.md +72 -17
  7. package/README.pt.md +234 -0
  8. package/README.ru.md +259 -0
  9. package/README.zh.md +66 -16
  10. package/icon.svg +20 -4
  11. package/lib/audit.js +7 -0
  12. package/lib/batch.js +14 -19
  13. package/lib/bin/attention-worker.exe +0 -0
  14. package/lib/bin/attention-worker.exe.json +1 -1
  15. package/lib/compact-feedback.js +175 -0
  16. package/lib/continuation.js +1 -1
  17. package/lib/core/bin/dsh-computer-use-worker.exe +0 -0
  18. package/lib/core/bin/dsh-computer-use-worker.exe.json +2 -2
  19. package/lib/core/index.js +403 -136
  20. package/lib/core/native-runtime.js +17 -0
  21. package/lib/core/worker.cs +2160 -229
  22. package/lib/feedback-routes.json +11 -0
  23. package/lib/feedback.js +49 -16
  24. package/lib/image-output.js +87 -17
  25. package/lib/index.js +25 -7
  26. package/lib/key-command.js +37 -0
  27. package/lib/launch.js +67 -0
  28. package/lib/media-contract.js +43 -0
  29. package/lib/observations.js +267 -13
  30. package/lib/policy.js +29 -9
  31. package/lib/tool-contract.js +56 -0
  32. package/lib/tools.js +203 -52
  33. package/lib/verification-region.js +17 -0
  34. package/mcp/package.json +2 -1
  35. package/mcp/src/execution.js +8 -5
  36. package/mcp/src/index.js +16 -267
  37. package/mcp/src/tools.js +271 -0
  38. package/package.json +6 -1
  39. package/scripts/check-behavior.mjs +83 -0
  40. package/scripts/measure-tool-tokens.mjs +21 -0
  41. package/scripts/verify-package.mjs +9 -0
  42. package/skills/computer-use/SKILL.md +55 -43
  43. package/skills/computer-use/references/lifecycle.md +11 -7
  44. package/skills/computer-use/references/maintenance.md +9 -5
  45. package/skills/computer-use/references/precision.md +39 -14
  46. package/skills/computer-use/references/progressive-control.md +10 -4
package/README.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).
package/README.ru.md ADDED
@@ -0,0 +1,259 @@
1
+ # Computer Use в стиле Codex
2
+
3
+ **Самый точный способ управлять Windows из DeepSeek Harness — и самый дешёвый в расчёте на задачу.**
4
+
5
+ Опишите цель. Агент считывает точные идентификаторы элементов управления, действует через сами элементы, проверяет результат — и выполняет известную последовательность за один цикл обращения к модели вместо десяти.
6
+
7
+ [English](README.md) | [中文](README.zh.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Português](README.pt.md) | [العربية](README.ar.md) | **Русский** | [فارسی](README.fa.md) · [Установка](#install-and-update-in-dsh-market) · [Журнал изменений](CHANGELOG.md) · [Изменения 2.0.0](docs/RELEASE-2.0.0.md)
8
+
9
+ ![Управление рабочим столом Windows в стиле Codex: наблюдение, действие, проверка](docs/images/01-codex-style.png)
10
+
11
+ ## Почему он самый точный
12
+
13
+ - **Идентификаторы, а не догадки.** UI Automation предоставляет реальное дерево элементов управления с точными `AutomationId`, а действия могут управлять элементом через его собственные шаблоны UI Automation вместо кликов по координатам.
14
+ - **Метки проверяются, а не принимаются на веру.** По умолчанию нумерованная метка сверяется с идентичностью окна и выборочно проверенными пикселями до отправки любого ввода, поэтому устаревшая метка отклоняется, а не приводит к клику в неверном месте. Когда анимированный соседний элемент постоянно нарушает пиксельную подпись, `uiaOnly` привязывает идентичность к дескриптору окна и геометрии, при этом проверка перекрытия в момент отправки по-прежнему выполняется.
15
+ - **Запросы остаются ограниченными.** Запросы UIA по умолчанию используют глубину 6, 120 узлов и мягкий бюджет 1200 мс; запрос глубже 6 или содержащий больше 300 узлов требует измеренного `anchor`, поэтому запрос не может незаметно обойти неверную область.
16
+ - **Если не видно — прочитайте.** `computer_ocr` возвращает строки и рамки каждого слова в абсолютных пикселях экрана, поэтому приложения без поддержки UIA можно находить по названию.
17
+
18
+ ## Почему это дешевле
19
+
20
+ - **Один цикл для известной последовательности.** Один вызов `computer_batch` последовательно выполняет список действий, останавливается на первой ошибке и стоит один цикл обращения к модели вместо одного на каждое действие.
21
+ - **Возвращается только разница.** Передайте идентификатор предыдущего наблюдения в `since` и получите добавления, изменения, удаления и порядок — а не всё дерево заново.
22
+ - **Компактные отчёты по умолчанию в 2.0.0.** Текст после действия обычно добавляет не более 6 КиБ к отчёту о действии; `feedback: full` по-прежнему доступен, когда важнее подробность.
23
+ - **Доказательства не попадают в диалог.** Полные доказательства по точке могут храниться в ограниченном локальном кэше (4 МиБ памяти, 32 МиБ на диске, 64 записи, срок 24 часа) и извлекаться по запросу.
24
+ - **Локальная работа остаётся локальной.** UI Automation, OCR экрана и проверки пикселей выполняются в готовом нативном воркере — без дополнительных расходов на компьютерное зрение на каждом шаге.
25
+
26
+ ## Создан для рабочего стола, которым вы продолжаете пользоваться
27
+
28
+ - **Он ждёт вас.** Уведомление за 1 секунду до ввода (0,1 секунды в пределах скользящего 3-минутного окна) сразу возвращает вам рабочий стол; когда вы закончите, агент повторно наблюдает состояние и продолжает исходную задачу.
29
+ - **Тормоз доходит до модели.** `Ctrl+Esc` приостанавливает, `Ctrl+Alt+R` возобновляет, `Ctrl+Alt+Q` завершает работу, а остановка передаётся в текущую сессию. Подтверждения по умолчанию включены, а ввод в поля паролей по умолчанию отклоняется.
30
+ - **Он сообщает о том, чего не может.** Защищённый рабочий стол Windows (запрос UAC или экран блокировки) обнаруживается, о нём сообщается, а после него работа возобновляется — без слепых повторных попыток.
31
+
32
+ ![Передача управления человеку: подготовка, перехват, продолжение](docs/images/02-handoff.png)
33
+
34
+ ![Эффективность токенов: сфокусированные наблюдения, пакетные действия и чтение результата](docs/images/03-token-efficiency.png)
35
+
36
+ Иллюстрации выше показывают модель взаимодействия, появившуюся в 1.3.0; указатель-«воздушный змей» версии 2.0.0, ограниченные запросы и компактные отчёты описаны выше. Фактический расход токенов зависит от задачи, модели и стратегии наблюдения. Подтверждения по умолчанию остаются включёнными; явные пауза, отмена и выход сохраняют приоритет.
37
+
38
+ **Готово к установке.** 19 инструментов рабочего стола вместе с нативными помощниками. Без SDK и без компиляции при установке. Требуются Windows, Node.js ≥ 22 и .NET Framework 4.x, входящий в состав Windows. Независимый плагин сообщества; Codex описывает стиль взаимодействия.
39
+
40
+ ## Новое в 2.0.0
41
+
42
+ - **Компактные отчёты по умолчанию** — текст после действия обычно добавляет не более 6 КиБ к отчёту о действии; `feedback: full` и `feedback: none` — явные альтернативы.
43
+ - **Ограниченные запросы UIA с привязкой** — по умолчанию глубина 6, 120 узлов и мягкий бюджет 1200 мс; запросы глубже 6 или содержащие больше 300 узлов требуют измеренного `anchor`.
44
+ - **Доказательства по запросу** — 4 МиБ памяти + 32 МиБ диска, 64 записи, срок 24 часа; при сбое диска используется ограниченная память.
45
+ - **Адаптивное уведомление о подготовке** — 1 секунда вначале, 0,1 секунды в пределах скользящего 3-минутного окна; наклонённый «воздушный змей» отмечает точку клика агента.
46
+ - **Укреплённый путь ввода** — защищённые сочетания клавиш для управления окнами, противодавление и восстановление воркера, проверки устаревших целей и очистка при отмене.
47
+
48
+ <details>
49
+ <summary>Текущий выпуск и совместимость</summary>
50
+
51
+ **2.0.0** — новый мажорный выпуск, который сначала распространяется в npm под тегом `next`, пока действует 24-часовой период ожидания перед выпуском. См. [изменения и миграцию 2.0.0](docs/RELEASE-2.0.0.md). Актуальную доступность стабильной версии проверяйте по тегам реестра.
52
+
53
+ Версия 1.3.1 читает текст с экрана и находит элементы по названию, замечает защищённый рабочий стол Windows и самостоятельно возобновляет работу, а также удерживает все цвета на одной вычисляемой из DPI полосе по краю с видимым «дышащим» минимумом. Версия 1.3.0 освобождает управление рабочим столом, когда работа завершается, а чат продолжается.
54
+
55
+ Более ранние исправления: [атрибуция подтверждений в 1.2.3](docs/RELEASE-1.2.3.md) · [нативное внимание в 1.2.1](docs/RELEASE-1.2.1.md) · [патч автономного хоста](docs/RELEASE-1.2.2.md).
56
+
57
+ </details>
58
+
59
+ ## Что он делает
60
+
61
+ Версия 2.0.0 также использует компактный синий указатель-«воздушный змей» во время работы ИИ и удержания сцены. Его наклонённый кончик отмечает точку клика, а внутри змея размещены маленькие символы текста и изменения размера. «Дышащий» змей означает, что страница и положение указателя должны оставаться на месте; свободный режим возвращает приложению обычный курсор. Тема курсора Windows пользователя сохраняется.
62
+
63
+ Версия 2.0.0 ограничивает обход UIA и по умолчанию использует компактный текст после действия. Существующая обратная связь в виде изображений остаётся доступной; `feedback: compact|full|none` управляет степенью подробности, а параметр клика `verificationRegion: "x,y,w,h"` задаёт ожидаемую область эффекта независимо от точки ввода. Компактный текст обычно добавляет не более 6 КиБ к исходному отчёту о действии. Полные доказательства по точке можно сохранять в ограниченном локальном кэше с истекающим сроком и извлекать по запросу. При сбое диска происходит возврат к ограниченной памяти; если не удаётся сохранить ни одного извлекаемого снимка, текущие доказательства возвращаются полностью прямо в ответе, вне рамок компактного бюджета, без дополнительного наблюдения или ввода.
64
+
65
+ Отфильтрованные запросы UIA требуют `hwnd`. По умолчанию используются глубина 6, 120 узлов и мягкий бюджет 1200 мс. Запрос глубже 6 или содержащий больше 300 узлов требует измеренного `anchor:"x,y"` в этом окне; точный `id` не обходит это правило. Вызов провайдера может превысить мягкий бюджет, а частичные результаты не позволяют доказать отсутствие или уникальность. После сочетания клавиш управления окнами проверьте `computer_state {windows:true}`, успешно активируйте нужное окно и получите его наблюдение, прежде чем продолжать ввод с клавиатуры.
66
+
67
+ - **Наблюдение** — список окон, снимки экрана (область / JPEG / PNG / с уменьшением), карта Set-of-Marks
68
+ кликабельных элементов и дерево UI Automation с точными `AutomationId`.
69
+ - **Действие** — клик, перемещение, перетаскивание, прокрутка, выделение диапазона текста, ввод, нажатия клавиш
70
+ и управление элементами через их собственные шаблоны UI Automation вместо слепых координат.
71
+ - **Пакет** — один вызов `computer_batch` последовательно выполняет список действий и останавливается
72
+ на первой ошибке, поэтому известная последовательность стоит один цикл обращения к модели вместо десяти.
73
+ - **Вопрос** — `computer_ask` задаёт вопрос на той же карточке чата, которую DSH использует для
74
+ `ask_user_question`, без обратного отсчёта.
75
+ - **Человеческий тормоз, который доходит до модели** — остановка передаётся в текущую сессию, поэтому агент
76
+ узнаёт о прерывании, а не обнаруживает его на следующем шаге.
77
+
78
+ Инструменты наблюдают за рабочим столом, а не сканируют документы пользователя. Плагин управляет нативными помощниками в
79
+ `%LOCALAPPDATA%\dsh-computer-use\worker\`, а также журналами аудита, снимками экрана и собственным ограниченным
80
+ `observation-cache` в `$DSH_HOME/data/computer-use/`. `computer_ctrl {action:"clear_cache"}` очищает
81
+ кэш наблюдений этого Агента; он не удаляет снимки экрана, вложения или документы пользователя.
82
+
83
+ <a id="install-and-update-in-dsh-market"></a>
84
+ ## Установка и обновление в dsh-market
85
+
86
+ Найдите в маркетплейсе **computer-use** или **Codex-style**. Выберите репозиторий **ltmroberthk915/dsh-computer-use** и npm-пакет **dsh-codex-style-computer-use** (сопровождающий: **ltmroberthk**), затем нажмите **Установить**. Для обновлений по стабильному каналу используйте **Обновить** или **Обновить все**. Оба нативных помощника включены; PowerShell 7 или разрешение на сборку не требуются.
87
+
88
+ Либо введите **`dsh-codex-style-computer-use`** в **Настройки → Плагины → Добавить плагин** для текущего стабильного канала или **`dsh-codex-style-computer-use@2.0.0`** для версии, описанной на этой странице. Указывайте спецификацию npm-пакета напрямую. Ваш хост может применять период ожидания к новым версиям; следуйте его указаниям. Вновь добавленный бандл может загрузиться на лету на поддерживаемых хостах; проверьте, что его инструменты и skill появились. Перезапустите DSH из трея при замене уже загруженной версии, если клиент остаётся устаревшим или если DSH сообщает **restart-required**.
89
+
90
+ ### Выпуски, опубликованные менее 24 часов назад
91
+
92
+ Конфигурация pnpm 11.7.0 по умолчанию (нестрогая) автоматически записывает исключение для одной версии и выполняет установку. Успешная установка на одной машине не означает, что другая машина разрешает свежие версии.
93
+
94
+ При `minimumReleaseAgeStrict: true` (или политике хоста, включающей строгие проверки возраста выпуска) и при отсутствии подходящего исключения версия, не достигшая заданного возраста, отклоняется до запуска кода плагина. Для голого имени, точного закрепления `@1.2.0` и URL npm-архива проверено, что при такой политике все они завершаются ошибкой `ERR_PNPM_NO_MATURE_MATCHING_VERSION`. Явное указание `minimumReleaseAge: 1440` также включает строгое поведение в pnpm 11.7.0, если только `minimumReleaseAgeStrict` отдельно не установлен в false. Перезапуск DSH, установка PowerShell или повтор той же команды не устраняют отказ по строгой политике. Официальный мост приложения Desktop не принимает дополнительные флаги pnpm.
95
+
96
+ Если строгая политика блокирует установку, дождитесь, пока версия достигнет заданного возраста, и устанавливайте, не меняя политику. Версия 1.2.0 опубликована в `2026-10-03T03:50:11.586Z`; 24-часовой порог она проходит после **2026-10-04 03:50:12 UTC** (11:50:12 по времени Китая). Более длинный настроенный порог или отстающее зеркало реестра могут дополнительно отложить доступность. Пользователям с конфигурацией по умолчанию (нестрогой) не нужно ждать или менять конфигурацию для этого пакета.
97
+
98
+ Если вы явно решаете установить раньше, добавьте это исключение для одной версии в существующий `pnpm-workspace.yaml` целевого профиля, а затем повторите установку из маркетплейса. Сохраните остальные записи; не отключайте глобальную политику возраста:
99
+
100
+ ```yaml
101
+ minimumReleaseAgeExclude:
102
+ - dsh-codex-style-computer-use@1.2.0
103
+ ```
104
+
105
+ Путь по умолчанию для профиля desktop — `%USERPROFILE%\.dsh\profiles\desktop\pnpm-workspace.yaml`; используйте фактический каталог, если `DSH_HOME` изменён. После того как версия «созреет», это единственное исключение можно удалить.
106
+
107
+ Прежние исправления документации и проверки публикатора не изменили среду выполнения 1.2.0 и не требовали переустановки. Исправление нативного внимания в **1.2.1** действительно требует обновления. Повторное добавление того же источника на некоторых путях установки может вызвать ошибку хоста `ambiguous-install`; переустановка 1.2.0 не применит исправление 1.2.1.
108
+
109
+ **Миграция более старой установки Git/tarball из этого репозитория:** удалите в маркетплейсе старую запись **dsh-computer-use**, затем установите **dsh-codex-style-computer-use**. Имя npm без скоупа `dsh-computer-use` принадлежит другому репозиторию; не устанавливайте его как обновление этого плагина. Установка из Git не может сменить идентичность зависимости, просто получив новый коммит. После этой однократной миграции в интерфейсе используйте обычные обновления из маркетплейса. Существующие имена инструментов `computer_*` и пространство настроек `computer-use` сохраняются.
110
+
111
+ **Сохраните и свою конфигурацию:** сделайте резервную копию `cordis.patch.yml` профиля, затем измените только `name: dsh-computer-use` в переопределении с `id: computer-use` на `name: dsh-codex-style-computer-use`. Сохраните целиком поля `config` и `disabled`. Одного лишь сохранения пространства настроек недостаточно: при несовпадении имени DSH пропустит даже переопределения `read-only`, `dryRun` и отключённого состояния. Не заменяйте глобально другие плагины или общий патч уровня home. Скрипт репозитория `scripts/migrate-profile.mjs` по умолчанию показывает предварительный просмотр; `--apply` создаёт резервную копию и атомарно заменяет файл, отказываясь от параллельных изменений.
112
+
113
+ Либо скачайте [утилиту миграции конфигурации](https://github.com/ltmroberthk915/dsh-computer-use/releases/download/v1.2.0/computer-use-profile-migration.zip), распакуйте её и дважды щёлкните `migrate-profile.cmd`. Она находит установленное официальное приложение Desktop и использует Windows PowerShell 5.1 вместе со встроенным в DSH Node, чтобы исправить профиль desktop по умолчанию. Она останавливается, если новый бандл отсутствует или всё ещё выбран старый бандл. Она не меняет политику возраста выпуска. Для другого профиля запустите `migrate-profile.ps1 -ProfileDirectory <absolute-directory>` для предварительного просмотра, затем добавьте `-Apply`, когда будете готовы.
114
+
115
+ В GitHub Release также включён `dsh-computer-use.tgz` для офлайн- или ручной установки; для обновлений через маркетплейс по умолчанию используется установка из реестра.
116
+
117
+ Для пользователей CLI (профиль web):
118
+
119
+ ```sh
120
+ dsh plugin --profile web add dsh-codex-style-computer-use
121
+ ```
122
+
123
+ Для диагностики Desktop необходимо использовать **CLI, встроенный в официальное приложение Desktop**:
124
+
125
+ ```powershell
126
+ $CuDshInstall = Join-Path $env:LOCALAPPDATA 'Programs\DeepSeek Harness'
127
+ & "$CuDshInstall\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop why dsh-codex-style-computer-use
128
+ ```
129
+
130
+ При нестандартной установке задайте в `$CuDshInstall` каталог, на который указывает ярлык Desktop. Более старый глобальный `dsh` из npm может отвергнуть профиль desktop. Не добавляйте `resources/runtime/bin` в глобальный PATH и не устанавливайте отдельный pnpm для этой задачи. Для установки по-прежнему предпочтителен интерфейс плагина.
131
+
132
+ ## Встроенный skill
133
+
134
+ Инструменты управления остаются заблокированными, пока сессия не выдаст фразу-подтверждение, которая есть только в `skills/computer-use/SKILL.md`. Это сделано намеренно — такова самая честная и строгая реализация принципа «сначала прочитайте руководство, потом управляйте», потому что ни один слой инструментов не может увидеть, прочитала ли модель документ.
135
+
136
+ Плагин регистрирует встроенный skill через `ctx.skills.register()`, когда этот сервис доступен. Если сервиса нет, `computer_use_activate` возвращает то же руководство, абсолютный путь к его исходному файлу и список инструментов в области действия. Требование фразы-подтверждения и все существующие проверки подтверждений и тормоза по-прежнему действуют.
137
+
138
+ ## Совместный ввод в 1.2.0-rc.2
139
+
140
+ Этот предварительный выпуск вводит немедленный перехват управления человеком, автоматическое ожидание после 2 секунд продолжающегося ввода и возобновление после 3 секунд тишины. Ожидание происходит локально, без опроса модели. Прерванные записи требуют нового чтения фактического результата и никогда не воспроизводятся слепо. Отмена на стороне хоста освобождает принятый автоматизацией ввод, не создавая новой постоянной паузы. Существующая обработка главного окна DSH Pet и восстановления исходного положения поверх остальных окон сохраняется.
141
+
142
+ Настроенные маршруты GLM 5.3 Max, GLM 5.3 Flash и DeepSeek Flash прошли контролируемый тест протокола продолжения. Нативный ввод и физические горячие клавиши проверялись отдельно; это не общий бенчмарк рабочего стола или компьютерного зрения. Область проверки описана в [проверке выпуска](docs/RELEASE-1.2.0-rc.2.md).
143
+
144
+ ## Управление по требованию в 1.1
145
+
146
+ - **Инструменты для каждого Агента:** бездействующие Агенты видят `computer_use_activate`, `computer_ctrl` и `computer_ask`. Успешная загрузка skill computer-use, получение фразы-подтверждения или активация открывают этому Агенту 19 инструментов рабочего стола вместе с точкой входа активации. Другие Агенты и дочерние Агенты активируются независимо. Поддерживаются нативные вызовы и Node `run_code`. Активация не запускает управление и не снимает человеческий тормоз.
147
+ - **Наблюдаемые цели UIA:** запрос по имени/id в ограниченной области возвращает непрозрачный дескриптор цели. Используйте его для действий по шаблонам; явно включаемый `rebind:true` разрешает восстановление по уникальной идентичности или семантике после замены в том же окне. Изменённый контекст, неоднозначность и неполное сканирование приводят к отказу. Широкие запросы пропускают дескрипторы восстановления, если не указан `targets:true`; создание вспомогательных «свидетелей» для большого списка стоит дополнительной нативной работы.
148
+ - **Инкрементальные наблюдения:** передайте идентификатор предыдущего наблюдения как `since` вместе с тем же запросом. Дельты сохраняют добавления, изменения, удаления и порядок. Снимки изолированы по Агентам: не более 64 проиндексированных наблюдений и 4 МиБ сохранённого JSON на хранилище. `snapshot` извлекает сохранённый исторический результат; `offset` и `limit` постранично читают его массивы. Отсутствие базового снимка, изменение области, неполные доказательства или слишком большая дельта приводят к возврату полного вывода.
149
+
150
+ Пределы кэша и границы восстановления описаны в [подробном протоколе](skills/computer-use/references/progressive-control.md). Снимки UIA сохраняют поля, возвращённые провайдером, в пределах существующих ограничений провайдера; извлечение истории не заменяет свежую проверку результата.
151
+
152
+ ## Инструменты
153
+
154
+ | Группа | Инструменты |
155
+ |---|---|
156
+ | Активация | `computer_use_activate` |
157
+ | Наблюдение | `computer_state` `computer_shot` `computer_ocr` `computer_marks` `computer_uia` |
158
+ | Действие | `computer_click` `computer_move` `computer_drag` `computer_scroll` `computer_select` `computer_key` `computer_type` `computer_uia_act` `computer_window` `computer_clip` |
159
+ | Поток | `computer_wait` `computer_batch` |
160
+ | Мета | `computer_ask` `computer_ctrl` |
161
+
162
+ `computer_marks` возвращает нумерованные метки для элементов, найденных на экране; `computer_marks {shot:true}` дополнительно сохраняет аннотированное изображение. `computer_shot` возвращает обычный снимок экрана, а на маршрутах с поддержкой изображений — нативное вложение-изображение. Метка — это идентификатор снимка: он сверяется с идентичностью окна
163
+ и выборочно проверенными пикселями до отправки любого ввода, поэтому устаревшая метка отклоняется, а не приводит к клику в неверном месте.
164
+
165
+ ## Режимы подтверждения
166
+
167
+ Если хост сообщает об автоматическом отказе при отключённых запросах как «пользователь отклонил инструмент», см. [патч атрибуции подтверждений DSH и регрессионный тест](docs/APPROVAL-ATTRIBUTION.md).
168
+
169
+ `automationMode` задаётся в настройках плагина, значение по умолчанию — `standard`:
170
+
171
+ | Режим | Наблюдение | Действие |
172
+ |---|---|---|
173
+ | `read-only` | разрешено | запрещено |
174
+ | `standard` | разрешено | каждое действие запрашивается через карточку подтверждения хоста |
175
+ | `autonomous` | разрешено | разрешено, высокорисковые операции всё равно требуют подтверждения |
176
+ | `unrestricted` | разрешено | разрешено (отказоустойчивость воркера и ограничение частоты по-прежнему действуют) |
177
+
178
+ Высокорисковые операции (закрытие окна, `alt+f4`, `win+r` и подобные) требуют подтверждения в любом режиме. Поля паролей
179
+ определяются через `IsPassword` в UI Automation и по умолчанию отклоняются.
180
+
181
+ ## Модель безопасности
182
+
183
+ - **Совместный ввод** — обычная активность пользователя разрешена, пока агент думает, наблюдает или готовится. Во время фактического воздействия набор текста, прокрутка и нажатия кнопок немедленно уступают управление; для перемещения указателя допускается смещение до 16 пикселей. Продолжающийся ввод или удержание клавиши/кнопки в течение 2 секунд включает автоматическое ожидание. После отпускания и 3 секунд тишины агент должен проверить текущую цель и продолжить исходную задачу, не воспроизводя слепо частичные записи. Мягкий бледно-жёлтый градиент по краю обозначает, что управление у человека.
184
+ - **Ручная пауза** — только физическая комбинация `Ctrl+Esc` включает постоянный тормоз ввода; `Ctrl+Alt+R` возобновляет работу. Обычный Esc, набор текста, прокрутка, расстояние и частота перемещения указателя и угол экрана такую паузу не создают. Явные остановки для вопроса и диагностики остаются отдельными.
185
+ - **Выход** — `Ctrl+Alt+Q` завершает сессию: оверлей исчезает, его обработчики снимаются, а дальнейшее
186
+ воздействие отклоняется до тех пор, пока в одном из следующих шагов не будет открыто новое.
187
+ - **Тормоз — это факт о машине, а не об одном процессе** — включённое состояние сохраняется,
188
+ и каждый воркер его принимает, включая запущенный позже из оболочки.
189
+ - **Аудит** — каждое воздействие добавляется в `$DSH_HOME/data/computer-use/audit.jsonl` с
190
+ очисткой аргументов.
191
+ - **Аварийный выключатель самого плагина** — при `DSH_COMPUTER_USE_KILL=1` плагин отказывается запускаться;
192
+ `dryRun: true` только имитирует воздействия и записывает их в журнал.
193
+
194
+ ## Конфигурация
195
+
196
+ | Ключ | По умолчанию | Значение |
197
+ |---|---:|---|
198
+ | `automationMode` | `standard` | режим подтверждения (см. выше) |
199
+ | `progressiveTools` | `true` | активация по Агентам; `false` — 19 инструментов рабочего стола доступны глобально |
200
+ | `actionFeedback` | `true` | автоматически наблюдать после прямых действий и пакетов |
201
+ | `actionFeedbackDetail` | `compact` | `compact`, `full` или `none`; `feedback` в вызове переопределяет это значение; незакэшированные доказательства возвращаются полностью прямо в ответе |
202
+ | `dryRun` | `false` | имитировать воздействия, только записывать в журнал |
203
+ | `maxActionsPerMinute` | `60` | ограничение частоты воздействий на уровне ядра |
204
+ | `annotateMarks` | `true` | рисовать рамки Set-of-Marks на снимках экрана |
205
+ | `workerExe` | `""` | явный путь к воркеру; пусто = автопоиск или компиляция |
206
+ | `snapshotDir` | `""` | каталог снимков экрана; пусто = `$DSH_HOME/data/computer-use/shots` |
207
+
208
+ ## MCP-сервер
209
+
210
+ `mcp/` — MCP-сервер stdio без зависимостей поверх того же ядра, для клиентов, которые говорят на MCP, а не на Cordis:
211
+
212
+ ```sh
213
+ # published package (2.0.1 and later) — no checkout needed
214
+ npx -y dsh-codex-style-computer-use
215
+
216
+ # from a checkout
217
+ node mcp/src/index.js
218
+ ```
219
+
220
+ Встроенный сервер сообщает версию этого корневого пакета. Он запускается в режиме только наблюдения.
221
+ Запускающий его хост может установить `DSH_CU_ALLOW_INPUT=1`, когда он владеет авторизацией на действия с рабочим столом;
222
+ вызовы инструментов MCP не могут включить ввод. Инструмент совместимости `cu_approve` лишь сообщает это правило и
223
+ никогда не даёт согласия. Политика `automationMode` в DSH принадлежит адаптеру Cordis и не является
224
+ службой подтверждений MCP. `DSH_CU_DRY_RUN=1` имитирует ввод, который хост уже разрешил.
225
+
226
+ Оба адаптера используют одну и ту же грамматику клавишных команд, правила отказа пакета и продолжения,
227
+ а также отображение координат изображения. MCP возвращает структурированные метаданные захвата и одно последнее изображение PNG/JPEG, без
228
+ сериализации байтов изображения в текст JSON. `cu_hold` / `cu_free` резервируют или освобождают сцену между
229
+ действиями; `cu_release` завершает цикл работы с рабочим столом. `cu_drag` принимает проверки `expectCursor` и `hwnd`.
230
+ MCP предоставляет меньший набор инструментов; интеграция человеческих вопросов и жизненного цикла хоста,
231
+ специфичная для DSH, обеспечивается адаптером Cordis.
232
+
233
+ ## Разработка
234
+
235
+ Проверки выпуска публикатора по умолчанию используют официальный реестр npm. Если этот источник недоступен в вашей сети, `CU_REGISTRY` выбирает явное зеркало для команды `check`, работающей только на чтение; результат в JSON содержит `registry` и `authoritative`. Пример в PowerShell (влияет только на текущую оболочку):
236
+
237
+ ```powershell
238
+ $env:CU_REGISTRY = 'https://registry.npmmirror.com'
239
+ node scripts/release-channel.mjs check 1.2.0
240
+ Remove-Item Env:CU_REGISTRY
241
+ ```
242
+
243
+ Код выхода `0` означает, что версия прошла 24-часовую проверку публикатора, `2` — что она всё ещё «остывает», а `1` — что проверка не удалась. Сетевая ошибка не доказывает, что пакет не опубликован, а зеркала могут отставать. `promote` всегда перепроверяет и записывает `https://registry.npmjs.org`, игнорируя `CU_REGISTRY`; для этого нужен доступ к этому источнику, при необходимости через прокси-конфигурацию npm. Этот инструмент публикатора не входит в установку для конечных пользователей. См. [процедуру выпуска](docs/RELEASE-1.2.0.md).
244
+
245
+ Репозиторий поставляет набор защитных проверок, которые охраняют перечисленные инварианты — время жизни цикла,
246
+ протокол «вопрос/тормоз», классификацию операций, шлюз skill и подключение встроенного skill:
247
+
248
+ ```sh
249
+ pwsh -NoProfile -ExecutionPolicy Bypass -File build/run-guards.ps1 # all guards
250
+ node build/verify-tools-schema.mjs # tool-schema load guard
251
+ ```
252
+
253
+ Определения инструментов компилируются через настоящий DSL `@deepseek-ai/dsh-tools`, поэтому ошибка в схеме обнаруживается
254
+ здесь, а не роняет дерево плагинов хоста при перезапуске. Некоторые проверки компилируют нативный
255
+ воркер и работают только в Windows.
256
+
257
+ ## Лицензия
258
+
259
+ MIT — см. [LICENSE](LICENSE).