Funcionalidades
Usar o computador
Como o Ploy encontra e abre aplicações, o que faz quando uma não existe, como vê e usa as janelas, que permissões do macOS precisa e o que pede sempre autorização.
O Ploy usa as aplicações do teu Mac como tu as usarias: lê a janela, carrega em botões, escreve em campos, escolhe comandos nos menus e carrega em atalhos. Faz isto pela Acessibilidade do macOS, que lhe dá a lista real dos elementos de cada janela, e não por coordenadas adivinhadas numa imagem.
Um pedido como «abre o Editor de Texto e escreve a lista das compras» ou «clica no botão Guardar no ecrã» entra no modo Computador. Quem trabalha é o Saturn, ou o Veta quando a poupança de energia, o calor ou a pressão de memória apertam (ver Automático). Se disseres «no Safari» ou «no Chrome», o Ploy usa o teu navegador desta forma, com as tuas sessões; para pesquisar sem o teu navegador, ver A web.
Como encontra as aplicações
O Ploy não tem uma lista de nomes de aplicações. Lê as que estão registadas no sistema:
- as pastas habituais (
/Applications,/Applications/Utilities,/System/Applications,~/Applicationse as aplicações dos serviços do sistema), que ganham em caso de duplicado; - o índice do Spotlight, para as aplicações que estão noutros sítios. Se o Spotlight estiver ocupado a indexar, o Ploy desiste dele ao fim de quatro segundos e fica pelas pastas.
De cada aplicação lê a própria declaração (o Info.plist): o identificador, o nome em todas as línguas em que vem traduzida e os ficheiros e endereços que diz abrir. Por isso o nome funciona em qualquer língua: «Editor de Texto» encontra o TextEdit mesmo que o Ploy esteja em inglês, e ao contrário. Maiúsculas, acentos e a terminação .app não contam.
O catálogo é lido de novo, no máximo, de dois em dois minutos. Uma aplicação que acabaste de instalar aparece a partir daí.
Para veres o que o Ploy faria com um nome, sem abrir nada, há ploy apps "Bloco de Notas" na linha de comandos.
Quando a aplicação não existe
O Ploy nunca abre outra aplicação no lugar da que pediste por iniciativa própria. Procura até três alternativas instaladas, cada uma com a razão, por esta ordem:
- a que escolheste da última vez que pediste esse nome, se ainda estiver instalada e a aprendizagem estiver ligada;
- a que o Mac usa por omissão para esse trabalho (navegador, e-mail, texto simples, PDF, imagens, música e vídeo);
- aplicações com um nome parecido, como «Word» e «Microsoft Word», ou um erro de escrita;
- outras aplicações que declaram fazer o mesmo trabalho, as do sistema primeiro.
O trabalho de uma aplicação vem do que ela declara abrir (tipos de documento, endereços como mailto: ou https:) e não do nome. Entre as aplicações que fazem o mesmo trabalho, os terminais e as aplicações de scripts nunca são oferecidos; uma com um nome parecido ao que pediste pode aparecer, e só abre se a escolheres.
Depois pergunta-te. O cartão chama-se «Preciso que escolhas», diz que não encontrou a aplicação neste computador e lista as alternativas com a razão de cada uma, por exemplo «que também edita texto, e é a que o computador usa por omissão para isso». Há um botão «Usar» seguido do nome de cada alternativa, e «Não». Nada abre antes de escolheres, e nenhum modo de execução nem permissão permanente responde por ti.
| O que acontece | Resultado |
|---|---|
| Escolhes uma alternativa | O Ploy abre-a e, com a aprendizagem ligada, regista que a escolheste para aquele nome. |
| Carregas em «Não» | Nada abre; o modelo tem a instrução de te perguntar como queres continuar. |
| Não há ninguém para responder (linha de comandos) | Nada abre. |
| Não há nenhuma alternativa | O Ploy diz-te que não existe a aplicação nem nenhuma que faça esse trabalho. |
Num Mac de teste, pedir o «Bloco de Notas», que não existe no macOS, ofereceu o Editor de Texto (o predefinido), as Notas e o Numbers.
Ao abrir qualquer aplicação, o Ploy confirma que ela ficou mesmo a correr e se está à frente, e diz-te quando não está.
O que o Ploy vê
Antes de agir, o Ploy observa a janela: a Acessibilidade dá-lhe uma lista numerada dos botões, campos, menus, caixas, separadores, células e textos, com o papel, o rótulo, o valor e o estado de cada um. Diálogos e folhas abertos vêm primeiro, porque são o que tens de resolver. Cada observação mostra até 220 elementos; se houver mais, o modelo é avisado de que a lista continua.
Os campos de palavra-passe aparecem na lista sem o valor. Os botões da própria janela aparecem com nome («Fechar a janela», «Minimizar a janela», «Ecrã inteiro»), e as marcas invisíveis que algumas aplicações põem à volta de números e nomes são tiradas, para o modelo ler o que tu lês.
Nem todas as aplicações se descrevem da mesma forma, e o Ploy trata cada tipo pelo que é:
| Tipo | Exemplos | O que acontece |
|---|---|---|
| Nativas | Calculadora, Editor de Texto, Notas, Definições do Sistema | Descrevem os botões e campos; o Ploy usa-os diretamente. |
| Electron | Visual Studio Code, Slack, Discord, Obsidian | Só se descrevem quando um assistente pede. O Ploy pede na primeira observação e espera que a lista apareça. |
| Browsers Chromium | Chrome, Edge, Brave | Quando é o Ploy a abri-los, abre-os já com as páginas descritas. Um que já estava aberto mostra só os botões dele, nunca a página: o Ploy diz isso ao modelo, que usa o browser do próprio Ploy para páginas web ou te pede para fechar o browser, para o Ploy o abrir de novo. |
| Sem acessibilidade | Blender, jogos, algumas ferramentas de desenho | Desenham a interface por conta própria. O Ploy diz que não consegue carregar nos botões pelo número e usa só a barra de menus, os atalhos e, com a Gravação do ecrã, a captura. |
Com a permissão Gravação do ecrã, o Ploy tira também uma captura da janela com os números dos elementos desenhados por cima, e o modelo recebe-a junto com a lista: no modo Computador, o Saturn e o Veta são carregados com a parte de visão. Sem a permissão, o modelo trabalha só com a lista.
As ferramentas
| Ferramenta | O que faz |
|---|---|
observe_screen |
Observa a aplicação da frente, ou a que for indicada. É sempre o primeiro passo, e os números mudam depois de cada ação. |
click |
Carrega num elemento pelo número. Usa a ação da Acessibilidade e, se o elemento não a tiver, um clique real do rato no centro dele, só depois de confirmar que nenhuma janela de outra aplicação está por cima. O duplo clique é sempre feito com o rato. |
type_text |
Escreve num campo: troca o valor pela Acessibilidade ou, se o campo recusar, foca-o e escreve tecla a tecla. Pode manter o texto que já lá está. Sem número, escreve onde está o foco. Nos campos nativos o texto entra de uma vez, como se fosse colado; nas páginas web e nas aplicações Electron entra tecla a tecla, devagar, e cada mudança de linha é Shift+Return, que numa conversa faz uma linha nova em vez de enviar. |
press_keys |
Carrega numa tecla ou combinação, como return, tab, escape ou cmd+s. |
scroll |
Desloca a janela, por cima de um elemento se for indicado, ou no meio da janela da aplicação, nunca onde o cursor estiver por acaso. |
open_app |
Abre uma aplicação, ou trá-la para a frente se já estiver aberta. |
choose_menu |
Escolhe um comando da barra de menus pelo caminho, como Ficheiro › Novo. Maiúsculas, acentos e reticências não contam. |
O teclado e o rato simulados vão sempre para a aplicação da frente, por isso o Ploy traz a aplicação em que está a trabalhar para a frente antes de os usar. Se o macOS não a deixar vir para a frente, o Ploy não escreve nem clica, e diz porquê. Se outra aplicação vier para a frente a meio da escrita, ou se parares a tarefa, a escrita para logo e o resto não vai parar a lado nenhum.
Os números dos elementos seguem a ordem em que a aplicação descreve a janela, e mudam quando chega uma mensagem nova ou o foco muda. O número que o modelo dá quer sempre dizer o elemento que ele viu: o mesmo papel e o mesmo rótulo na janela como está agora. Se esse elemento já não existir, o Ploy diz qual era, e nunca carrega noutro que tenha ficado com o número.
O Ploy também recusa escrever onde o texto não pertence, e diz o que fazer:
- numa janela «Abrir» de uma aplicação de documentos (o Editor de Texto e o Pré-visualização abrem assim), porque ainda não há documento: o modelo carrega em «Novo documento» ou ⌘N; o campo do nome numa janela «Guardar» aceita texto;
- quando o foco está num botão, numa ligação ou numa página sem nenhum campo escolhido, onde as teclas carregariam em coisas;
- com mudanças de linha num campo de uma só linha (a barra de endereço, uma pesquisa, um campo de formulário), onde a mudança de linha submeteria;
- quando outra aplicação ligou a entrada segura do teclado (um campo de palavra-passe aberto, a entrada segura do Terminal), porque o macOS deita fora as teclas simuladas.
Como cada ação é verificada
Depois de cada ação, o Ploy observa de novo, até dois segundos se a aplicação for lenta a mostrar o efeito, e diz ao modelo o que mudou: outra aplicação à frente, outra janela, um campo com um valor novo, o foco noutro elemento, textos que apareceram, elementos que apareceram ou desapareceram. Na linha de progresso vês a mudança principal, como «O foco passou para «Assunto»», ou «Sem alterações visíveis».
Quando nada mudou, o modelo é avisado de que a ação pode não ter resultado e de que deve observar e tentar de outra forma. Se a janela fechou ou a aplicação deixou de responder, é isso que o modelo lê, com a indicação de não repetir a ação. Numa aplicação que não se descreve, o Ploy diz que não consegue ver o que mudou.
O texto escrito é lido de volta, linha a linha, depois de a aplicação o mostrar. Se faltar alguma linha, a ação falha com as linhas em falta, e o modelo não te pode dizer que o texto está completo. Uma caixa de conversa que ficou vazia depois de uma mudança de linha enviou a mensagem, e isso não conta como falha.
O resultado final no ecrã não tem uma verificação automática. Uma tarefa no computador termina sempre «Por verificar», com a nota «O resultado no ecrã não tem verificação automática: confirma o que o Ploy descreve.»
As permissões do macOS
| Permissão | Para quê | Obrigatória |
|---|---|---|
| Acessibilidade | Ver as janelas, carregar, escrever, carregar em teclas, deslocar e usar menus. | Sim, para tudo menos abrir aplicações. |
| Gravação do ecrã | Tirar a captura da janela descrita acima. | Não. |
Podes concedê-las em Definições › Execução e permissões › Permissões do sistema, com «Conceder…». A Gravação do ecrã só passa a funcionar depois de o Ploy abrir de novo: as Definições dizem-no e têm «Reabrir o Ploy», que só funciona sem nenhuma tarefa a decorrer.
Se a Acessibilidade faltar a meio de uma tarefa, a tarefa não falha. Aparece um cartão «O Ploy precisa da permissão Acessibilidade», com a razão («Para ver os botões, campos e menus das outras aplicações e carregar neles por ti.»), e os botões «Abrir Definições do Sistema», que abre a página certa de Privacidade e segurança, e «Parar a tarefa». Enquanto esperas, o cartão mostra «À espera» e o cabeçalho diz «À espera da permissão Acessibilidade nas Definições do Sistema».
O macOS guarda uma autorização por aplicação. Se outra cópia do Ploy neste Mac tiver sido assinada de outra forma (uma versão de desenvolvimento, por exemplo), o interruptor pode aparecer ligado nas Definições do Sistema e a autorização ser dessa outra cópia. Quando há uma cópia assim, o cartão diz logo onde está; sem ela, diz o mesmo ao fim de 20 segundos de espera. Em ambos os casos oferece «Repor a autorização», que apaga a autorização guardada só para o Ploy e volta a perguntar. Se o macOS não deixar, o cartão explica como remover o Ploy da lista e voltar a ligá-lo.
O Ploy verifica a permissão duas vezes por segundo. Assim que ligas o Ploy na lista, o cartão passa a «Acessibilidade ligada: a tarefa continua» e a ação segue sozinha, sem repetires o pedido. A espera dura até 15 minutos; depois disso, a ação falha e o modelo diz-te que a permissão é precisa. «Parar» acaba a espera de imediato: o cartão desaparece, a ação em curso fica «Parado a meio» e a conversa diz que a tarefa acabou sem a permissão ligada.
O painel flutuante e como parar
Enquanto o Ploy usa outra aplicação, aparece um painel pequeno no topo do ecrã, por cima de todas as aplicações e em todas as secretárias: «O Ploy está a usar o computador», a ação em curso e o botão «Parar». O painel fica até a tarefa acabar. Quando o Ploy precisa de clicar ou deslocar por baixo dele, o painel passa para o fundo do ecrã.
Há três formas de parar:
- «Parar» no painel flutuante, que para todas as tarefas em curso;
- Esc duas vezes seguidas, em menos de meio segundo, em qualquer aplicação, que faz o mesmo (o Esc que o próprio Ploy carrega não conta). Uma tarefa que só está à tua espera, de uma permissão ou de uma autorização, não para assim, porque essas teclas são de quem está nas Definições do Sistema; essa tarefa tem o seu próprio «Parar a tarefa». Quando uma tarefa para com Esc, a conversa diz que foi assim;
- «Parar» no campo do pedido, ou ⌘., na janela do Ploy.
O que pede autorização
Ver o ecrã, abrir aplicações, carregar e escrever pertencem à permissão «Abrir e usar aplicações». Em «Confirmar ações», cada ação pergunta, a menos que escolhas «Nesta tarefa (aplicações)» ou «Sempre (aplicações)». Em «Execução autónoma», correm sem perguntar. Os modos estão em Definições.
As ações abaixo são sensíveis. O cartão só tem «Não» e «Permitir», e o Enter nunca aprova. Em «Confirmar ações» e «Execução personalizada» pedem sempre autorização, uma a uma. Em «Execução autónoma», as que se podem desfazer correm sem perguntar quando foste tu a pedi-las nas tuas palavras: apagar (para o Lixo, ou dentro de uma aplicação), fechar ou sair, com os botões, os menus ou ⌘W, ⌘Q e ⌘⌫. As outras, e qualquer uma que não pediste, perguntam sempre:
- carregar num controlo cujo rótulo envia, apaga, compra, paga, encomenda, subscreve, publica, partilha, instala ou desinstala, transfere, confirma, aceita, permite, autoriza, inicia ou termina sessão, repõe, formata, esvazia ou apaga para sempre (em português e em inglês);
- escolher um menu com um desses títulos em qualquer ponto do caminho, ou que feche, saia, reinicie, desligue ou bloqueie;
- atalhos que saem, fecham, terminam sessão, bloqueiam, forçam a saída ou apagam, como ⌘Q, ⌘W ou ⌘⌫, lidos da forma como o Ploy os carrega: «⌘Q», «command+q» e «cmd+q» são a mesma combinação;
- ⌘ ou Ctrl com Return, em qualquer aplicação, porque enviam no correio, nas conversas e no webmail, e também ⌘⇧D, que envia no Mail;
- Return ou Espaço quando o foco está num botão com um desses rótulos, e ⌘D num diálogo com «Não guardar» ou «Apagar»;
- nas aplicações de mensagens e de correio (Mensagens, Mail, WhatsApp, Telegram, Signal, Slack, Discord, Teams, Outlook e outras), Return sozinho e qualquer texto com uma mudança de linha, porque enviam;
- nos terminais e aplicações de scripts (Terminal, iTerm, Warp, Ghostty, Editor de Scripts, Automator, Atalhos e outros), qualquer clique, texto, tecla ou menu, e abri-los: o que se escreve ali corre comandos fora das regras do Ploy;
- nas Definições do Sistema, nos diálogos de segurança, no Acesso a porta-chaves, no Utilitário de Disco, no Monitor de Atividade, no Instalador, em Palavras-passe, no 1Password e no Bitwarden, qualquer clique, texto, tecla ou menu.
A ferramenta de escrita recusa escrever em campos de palavra-passe, mas carregar em teclas uma a uma não é verificado: as palavras-passe são para escreveres tu. O modelo tem ainda a instrução de nunca escrever dados de pagamento e de parar e dizer-te que passo é teu quando aparece uma sessão para iniciar, um CAPTCHA ou um pagamento.
O texto que aparece no ecrã é tratado como informação, nunca como ordens. Mais sobre isto em Segurança.
Limites
- Uma janela noutra secretária, em ecrã inteiro ou minimizada não aparece. O Ploy diz ao modelo que a janela existe mas está fora da secretária atual, e o modelo pede-te que a tragas. Com uma aplicação em ecrã inteiro à frente, uma janela aberta por trás vai para outra secretária.
- Uma aplicação sem nenhuma janela aberta é dita como tal, para o modelo abrir uma ou te perguntar.
- Aplicações que desenham o conteúdo como imagem dão poucos elementos à lista; nesse caso o modelo depende da captura, que precisa da permissão Gravação do ecrã, e da barra de menus e dos atalhos.
- Um browser Chromium que já estava aberto antes de o Ploy o usar esconde as páginas da Acessibilidade até voltar a abrir pelo Ploy. O Ploy nunca o fecha por iniciativa própria.
- Quando a janela do Ploy vem para a frente, por exemplo para responderes a uma autorização, o Ploy continua a agir na aplicação em que estava a trabalhar, e não na sua própria janela.
- A app corre uma tarefa de cada vez: enquanto uma conversa trabalha, as outras esperam.
- Uma tarefa tem no máximo 120 ações e uma hora.
- O retomar da tarefa depois de dares a permissão está provado por testes automáticos e na app instalada: numa tarefa real no Editor de Texto, a tarefa continuou sozinha 16 segundos depois de a permissão ser ligada.