Workflows
Um workflow é um gatilho mais uma árvore de passos que roda no seu dispositivo, sobre um contexto compartilhado. Esta página cobre cada tela do módulo, os 25 gatilhos, as 15 ações, os sete tipos de passo, expressões, agendamento, segredos, compartilhamento e o que Free e Pro oferecem.
O que é e como abrir
Workflows é uma janela em tela cheia que abre por cima do app, não uma das cinco páginas do pager. Um workflow é salvo no seu dispositivo e roda nele: um gatilho principal (mais até cinco) e uma árvore de passos de sete tipos. As execuções agendadas passam pelo WorkManager do Android; enquanto houver alguma execução viva, o PocketCode mantém uma notificação com um botão Parar.
Formas de abrir
| Onde você está | O que você toca | O que abre |
|---|---|---|
| A folha Tools da barra de navegação | Workflows, na segunda fileira de células | O módulo, na tela de boas-vindas |
| O menu lateral | Workflows, na categoria de ferramentas | O módulo |
| Home | Qualquer linha do widget Execuções de workflows (o widget só aparece quando há execuções) | O módulo |
| Uma notificação de execução, ou o aviso de um workflow agendado que não conseguiu iniciar | Tocar nela | O detalhe dessa execução, ou o editor desse workflow |
| O painel de atividade do chat de IA | Uma linha de uma execução de workflow | O módulo |
| Fora do app | Um link: pocketcode://workflows, pocketcode://workflows/run/<runId>, pocketcode://workflows/<workflowId> ou pocketcode://workflows/import?url=<https address> | O módulo, essa execução, esse workflow ou a folha de importação. Um link só abre uma tela: nunca executa, apaga nem baixa nada sozinho |
Como a janela se comporta
- O módulo é uma janela própria, então você não vê o resto do app enquanto ele está aberto. Voltar sobe um nível: do editor para a lista, do detalhe da execução para o histórico ou as abas, dos segredos para as abas, das abas para a tela de boas-vindas, e a tela de boas-vindas fecha o módulo.
- Numa janela larga (840 dp de largura e 480 dp de altura ou mais, como num tablet) a lista fica à esquerda e o editor, o histórico ou o detalhe da execução abrem à direita. O painel de configurações do passo (360 dp de largura) só é usado quando o editor mantém pelo menos 400 dp ao lado; caso contrário, as configurações do passo abrem como uma folha.
- Um workflow também pode ser iniciado sem abrir o módulo: por um atalho na tela inicial, um botão das Configurações rápidas ou o menu Compartilhar do sistema (veja Executar e acompanhar).

Você não pode, e por quê
- Abri-lo pela paleta de comandos: a paleta não tem um comando Workflows, e Workflows também não é uma página do pager.De propósito
Mapa de telas
Uma linha por tela, folha e diálogo do módulo, e de onde ela vem.
| Tela | Como chegar | O que você pode fazer |
|---|---|---|
| Tela de boas-vindas | Abrir o módulo; Voltar a partir das abas | Abrir Meus Workflows, Gerar por prompt (só na vertical), Modelos ou CI / CD (ambos abrem a aba Modelos). |
| Cabeçalho e abas | Sempre no topo | Alternar entre Meus Workflows, Modelos e Atividade. Só na primeira aba: Importar um workflow de um ficheiro, Gerir segredos e o botão + (Novo fluxo de trabalho). O aviso Os workflows agendados precisam de atenção aparece acima das abas quando algo impediria as execuções agendadas. |
| Aba Meus Workflows | Primeira aba | Buscar, ordenar e filtrar por etiqueta; ligar ou desligar um workflow; executar, parar, agendar, abrir o histórico, apagar; abrir o menu do toque longo. |
| Diálogo Etiquetas | Etiquetas no menu de um cartão | Adicionar ou remover até 8 etiquetas num workflow. |
| Aba Modelos | Segunda aba; os cartões Modelos e CI / CD da tela de boas-vindas | Buscar entre os 17 modelos, filtrar por família, abrir uma prévia, Ativar ou Adicionar outra cópia. |
| Prévia do modelo | Tocar num cartão de modelo | Ler Arranca quando, os passos e Do que precisa, e fazer uma simulação (Testar agora) que não toca em nada. |
| Aba Atividade | Terceira aba | Ver as últimas execuções de todos os workflows; buscar nos erros; filtrar por estado, data e workflow; parar uma execução ao vivo; abrir uma execução; copiar as execuções filtradas como JSON; Apagar histórico. |
| Editor | Tocar num cartão, Editar no menu dele, o botão +, o aviso de um workflow agendado, Abrir no editor | Dar nome; declarar Entradas; definir Definições do workflow e Permissões; escolher gatilhos e filtros; montar a árvore de passos; testar; salvar. |
| Configurações do passo (sete folhas) | O lápis de um passo, ou Adicionar passo | Configurar uma ação, Se / Senão, Ciclo, Em paralelo, Tentar / se falhar, Subfluxo ou Espera. Numa ação, também Fiabilidade e Condicional. |
| Paleta Adicionar passo | O botão + do editor, ou o + de um ramo | Buscar as 15 ações e os seis blocos de controle de fluxo por nome, descrição ou saída; usar favoritos e recentes. |
| Seletor Inserir um dado | O botão de mesmo nome num parâmetro | Escolher uma entrada, um campo do gatilho, a saída ou o estado de um passo anterior, ou o item ou o erro do bloco em que você está. |
| Painel Problemas | Dentro do editor, acima dos passos | Ler erros, avisos e dicas e ir ao passo com Ir para o passo. |
| Diálogo de converter em subfluxo | Converter em subfluxo no menu de um passo | Dar nome ao novo workflow e mover o passo e o seu conteúdo para ele. |
| Diálogo Executar (entradas da execução) | Executar agora num workflow com entradas obrigatórias; Executar com estas entradas numa execução | Preencher as entradas declaradas (os valores padrão já vêm preenchidos) e apertar Executar. |
| Histórico de execuções | Histórico de execuções num cartão ou no menu dele | Ver as execuções de um workflow; Parar esta execução; abrir uma execução. |
| Detalhe da execução | Uma execução no histórico ou em Atividade; uma notificação; um deep link | Ler cada passo (resultado, duração, tentativas, erro, saída JSON), acompanhar o log do shell ao vivo, Voltar a executar, Repetir a partir do passo falhado, Executar com estas entradas, Analisar com IA, Copiar como JSON. |
| Diálogo Repetir esta execução | Voltar a executar ou Repetir a partir do passo falhado | Ler o que mudou desde aquela execução antes de confirmar. |
| Folha de agendamento (Agendamentos de …) | Agendar num cartão ou no menu dele | Listar e remover agendamentos; adicionar predefinições ou Cron personalizado; definir Condições do dispositivo e Se uma execução se perder. |
| Segredos | Gerir segredos (ícone de chave) | Adicionar, mudar o valor ou apagar segredos criptografados; ver quais workflows usam um antes de apagá-lo. |
| Folha Compartilhar este workflow | Partilhar como ficheiro no menu de um cartão | Conferir quais campos de segredo são esvaziados e compartilhar o arquivo .pcwf.json. |
| Folha Importar workflow | Importar um workflow de um ficheiro | Pré-visualizar um arquivo (gatilho, passos, segredos que faltam, resultado do linter) e salvá-lo desligado. |
| Um link quer importar um workflow | Um link pocketcode://workflows/import?url=… | Ver o endereço de onde vem e escolher Baixar ou Não, obrigado. |
| Gerar fluxo por prompt e Alterar «…» com IA | Gerar por prompt na tela de boas-vindas; Alterar com IA no menu de um cartão | Descrever uma automação ou uma alteração, revisar o resultado, Guardar e ativar ou Abrir no editor. |
| Diálogos de passos irreversíveis | Ligar um workflow com passos irreversíveis; salvar um que esteja Disponível para o agente de IA | Ler os passos e decidir: Ativar mesmo assim ou Permitir à IA. |
| Atalho, botão e Enviar para um workflow | A tela inicial, as Configurações rápidas e o menu Compartilhar do Android | Iniciar um workflow sem abrir o módulo. |
| Notificação de execução | A barra de notificações enquanto uma execução está viva | Acompanhar Passo n de m e apertar Parar. |
A lista, as etiquetas e os modelos
O módulo tem três abas, Meus Workflows, Modelos e Atividade (a última é tratada em Executar e acompanhar). Acima das abas, só em Meus Workflows, ficam Importar um workflow de um ficheiro, Gerir segredos e o botão + (Novo fluxo de trabalho), que abre o editor com um workflow vazio, desligado e com o gatilho Manual ou agendado.
Tela de boas-vindas
O módulo sempre abre aqui. Voltar a partir das abas leva de volta para cá; Voltar daqui fecha o módulo.
Você pode
- Toque em Meus Workflows (Gerencie suas automações ativas) para abrir a lista.
- Toque em Gerar por prompt para descrever uma automação numa frase (veja IA: gerar, alterar e o chat). O cartão só existe na vertical.
- Em Explorar, toque em Modelos ou CI / CD. Ambos abrem a mesma aba Modelos: CI / CD não filtra nada.
Você não pode, e por quê
- Criar um workflow em branco daqui: use o botão + de Meus Workflows.De propósito
- Ver Gerar por prompt na horizontal (um celular deitado, um tablet na horizontal): a tela de boas-vindas na horizontal só tem Meus Workflows, Modelos e CI / CD. Alterar com IA no menu de um cartão continua funcionando.Ainda não
Aba Meus Workflows
Um cartão por workflow, com o estado, quando rodou pela última vez, os pontos de saúde e, se estiver agendado, a próxima execução.

Você pode
- Procurar nos teus workflows: busca no nome, na descrição e nas etiquetas, ignorando acentos.
- Ordenar por Editados há pouco, Por nome, Última execução ou Os que falham primeiro.
- Filtrar por etiqueta com os chips (Todas mais as suas etiquetas, as mais usadas primeiro).
- Ligar ou desligar um workflow com o interruptor do cartão. Ligar um que tenha passos irreversíveis pergunta uma vez (veja Executar e acompanhar).
- Tocar no ícone ▶ para executar um workflow cujo gatilho principal é Manual ou agendado; enquanto roda, o ícone vira um ■ Parar com um anel de progresso, para qualquer workflow, seja o que for que tenha iniciado a execução.
- Usar o ícone de relógio (Agendar), o ícone de histórico (Histórico de execuções) e a lixeira vermelha (apagar).
- Apagar um workflow com a lixeira vermelha ou com Excluir no menu do cartão. Um diálogo pergunta Excluir “<nome>”? (“O workflow e as suas programações são removidos. Não é possível desfazer.”) e só o remove quando você toca em Eliminar; Cancelar deixa tudo como estava.
- Tocar e segurar num cartão, ou usar o clique secundário, para abrir o menu dele.
Você não pode, e por quê
- Ter um ▶ no cartão de um workflow que começa por um evento ou um atalho: para esses, Executar agora fica no menu do cartão.De propósito
- Manter a busca, a ordenação ou o filtro de etiqueta ao sair da tela: um filtro esconde coisas, então ele é pedido de novo toda vez.De propósito

O que um cartão mostra
| Parte | O que ela diz |
|---|---|
| Estado | Parado, Em execução, Concluído, Falhou ou Cancelado, e Última execução: (ou Nunca executado). |
| Saúde | Pontos das últimas 5 execuções e a taxa de sucesso (por exemplo 100% de sucesso); Ainda nenhuma execução terminada quando não há nenhuma. |
| Gatilho | O rótulo do gatilho principal, como Ao fazer push ou Manual ou agendado. |
| Seguinte: | A próxima execução agendada, se o workflow tiver agendamento. |
| Progresso ao vivo | Passo n de m enquanto roda. |
O menu do cartão
| Item | O que faz |
|---|---|
| Editar | Abre o editor. |
| Alterar com IA | Abre a folha de alteração (veja IA: gerar, alterar e o chat). |
| Ativar / Desativar | O mesmo que o interruptor. |
| Executar agora / Parar | Inicia uma execução de qualquer workflow, seja qual for o gatilho; com entradas obrigatórias, pede-as antes. Enquanto uma execução está em andamento, o item é Parar. |
| Agendar | Abre a folha de agendamento. |
| Histórico de execuções | Abre as execuções desse workflow. |
| Duplicar | Faz uma cópia desligada, com ids de passo novos e copy depois do nome. |
| Partilhar como ficheiro | Abre a folha que exporta um .pcwf.json. |
| Etiquetas | Abre o diálogo de etiquetas. |
| Excluir | Pergunta Excluir “<nome>”? e, quando você confirma, exclui o workflow e os agendamentos dele. |
Etiquetas
As etiquetas agrupam a lista sem mover nada. Elas vivem nas configurações do workflow, então viajam no arquivo exportado.
Você pode
- Abra Etiquetas no menu de um cartão, digite em Nova etiqueta e adicione; remova uma etiqueta no mesmo diálogo.
- Filtre Meus Workflows por etiqueta; os chips são ordenados por quantos workflows os usam.
Você não pode, e por quê
- Pôr mais de 8 etiquetas num workflow (O limite são 8 etiquetas.): vinte etiquetas não organizam nada.De propósito
Aba Modelos
17 workflows prontos, agrupados pelo que os inicia. Cada cartão mostra o nome, uma descrição, o gatilho, os tipos de ação que usa e Do que precisa: passos irreversíveis, comandos de terminal, um provedor de deploy conectado, um provedor de IA com chave, a rede, gravar arquivos, um projeto aberto.
Você pode
- Procurar modelos por nome, descrição, gatilho ou ação; filtrar por família com os chips (Todos e as seis famílias abaixo).
- Tocar em Ativar para obter uma cópia editável, com id novo, ligada e que aparece em Meus Workflows; toque em Adicionar outra cópia se você já a tem. A cópia não compartilha nada com o modelo.
- Abrir a prévia, fazer uma simulação e editar a cópia depois no editor.
Você não pode, e por quê
- Editar um modelo na galeria: você edita a sua cópia. O catálogo é fixo, com 17 modelos.De propósito
- Ser perguntado sobre passos irreversíveis ao apertar Ativar: a pergunta só aparece quando você mexe depois no interruptor de um workflow. Leia Do que precisa antes de ativar.Ainda não

As seis famílias
| Família | O que contém |
|---|---|
| Ao editar | 3 modelos, todos começando por Ao salvar arquivo. A família também reúne tudo o que começa quando um arquivo é criado, apagado ou renomeado, ou alterado pela IA. |
| Ao usar git | 5 modelos: três começam por Ao fazer push e dois por Ao fazer commit. |
| Em torno de um deploy | 1 modelo, que começa por Deploy concluído. A família também cobre Deploy falhou. |
| Quando algo falha | 1 modelo, que começa por Foi detetado um erro. A família também cobre o fim de uma compilação ou de uma execução. |
| A partir do telemóvel | 1 modelo, que começa por Texto partilhado para o PocketCode. A família também cobre o atalho na tela inicial, o botão das Configurações rápidas e os arquivos compartilhados. |
| Quando quiseres, ou por horário | 6 modelos que começam por Manual ou agendado: você os executa, ou adiciona um agendamento pelo botão de relógio. |
Os 17 modelos
| Modelo | Começa quando | O que faz e do que precisa |
|---|---|---|
| Prettier ao guardar | Ao salvar arquivo, para arquivos .js | Roda prettier --write no arquivo que você acabou de salvar, não no projeto inteiro. |
| Commit automático ao guardar Kotlin | Ao salvar arquivo, para arquivos .kt | Faz commit só do arquivo salvo, no branch em checkout, e não faz push. Salvar sem mudança real não é falha. |
| Lint do ficheiro que acabou de guardar | Ao salvar arquivo, para arquivos .ts | Espera dois segundos, roda eslint nesse arquivo e só notifica se encontrar algo. Salvar de novo durante a espera cancela a execução pendente. |
| Testes e, se passarem, deploy | Ao fazer push | Roda o comando de testes e só pede um deploy quando ele sai com 0; caso contrário notifica e não faz deploy de nada. Precisa de um provedor de deploy conectado no Backend Manager. |
| Deploy automático ao push para main | Ao fazer push, filtro main | Faz deploy depois de um push para main e notifica com o estado e a URL. |
| Testes depois do push para main | Ao fazer push, filtro main | Roda a suíte de testes depois de um push para main e notifica com o código de saída (não pode bloquear o push). |
| Testes em cada commit | Ao fazer commit | Roda os testes depois de um commit e notifica com o código de saída e a mensagem. Só dispara para commits feitos em Projects. |
| Testar cada módulo que mexeu | Ao fazer commit | Um loop sobre os diretórios do commit (até 20) que roda o comando de testes uma vez por diretório; um módulo que falha não interrompe os outros. Mesmo limite de cima: só commits feitos em Projects. |
| Cópia da base de dados depois do deploy | Deploy concluído | Roda um pg_dump e informa o arquivo; edite o comando para o seu próprio banco de dados. |
| Análise com IA de um workflow falhado | Foi detetado um erro | Envia o erro à IA e notifica com a resposta. Precisa de um provedor de IA com chave. O cartão diz que só vê falhas de workflow; hoje o gatilho também ouve erros de compilação e de execução do editor e comandos de terminal que falham executados pela IA. |
| Cópia de segurança noturna | Manual ou agendado | Despeja o seu banco de dados numa pasta do projeto e só avisa quando falha. Anexe um agendamento (por exemplo Diariamente às 9:00) pelo botão de relógio: um agendamento não é um gatilho. |
| Testar o ramo que escolher | Manual ou agendado | Pergunta um branch (padrão main), faz checkout dele no projeto aberto e roda os testes. Isso muda a sua árvore de trabalho: faça commit ou stash antes. |
| Notas de versão dos últimos commits | Manual ou agendado | Lê os últimos 20 commits, pede notas de versão à IA e grava RELEASE_NOTES.md, sobrescrevendo-o. Precisa de um provedor de IA. |
| Verificar um endpoint | Manual ou agendado | Uma requisição GET e uma notificação com o código de status e o tempo. A URL tem um valor padrão, então pode rodar sem supervisão depois que você definir a sua. |
| Verificar três endpoints ao mesmo tempo | Manual ou agendado | Pede três URLs e as chama em paralelo, esperando pelas três. Abra a execução para ver cada código de status. |
| Fazer deploy e avisar mesmo que falhe | Manual ou agendado | Um Tentar / se falhar em volta de um deploy que notifica nos dois casos. Precisa de um provedor de deploy conectado. |
| Guardar um link partilhado em links.md | Texto partilhado para o PocketCode | Acrescenta uma página compartilhada de qualquer app a links.md no projeto aberto, sem nunca sobrescrevê-lo. |
Os ids dos modelos nunca mudam, então um workflow criado a partir de um mantém o vínculo com o seu modelo.
Prévia do modelo
Toque num cartão de modelo para ver o que ele faria antes de ativá-lo.
Você pode
- Ler Arranca quando, a árvore de passos com os seus ramos (Se corresponder, Caso contrário, Tenta isto, Se falhar) e Do que precisa.
- Fazer uma simulação com Testar agora. Se o modelo tem entradas obrigatórias, os valores padrão são preenchidos. A prévia diz quais passos são pulados porque não podem ser simulados, ou o que falta, e termina com n etapas · n ms · não é salvo.
Você não pode, e por quê
- Simular um modelo que declara uma entrada obrigatória sem valor padrão: a prévia diz Não se pode testar sem: e nomeia a entrada. Hoje nenhum dos 17 modelos é assim, e a falta de um provedor de deploy ou de uma chave de IA não bloqueia o teste.De propósito
O editor
Abra o editor tocando num cartão, em Editar no menu dele, ou no botão + para um workflow novo. De cima para baixo ele reúne o nome e a descrição, Entradas, Definições do workflow (recolhido), Permissões (um cartão recolhido próprio), os interruptores Ativado e Disponível para o agente de IA, Acionador e Passos com a árvore de passos e o botão + (Adicionar passo). A barra superior tem fechar, Desfazer, Refazer, Testar agora e Guardar. Desfazer guarda os últimos 100 estados e junta edições consecutivas do mesmo tipo feitas em até 800 ms. Fechar (o x ou Voltar) salva quando o workflow pode ser salvo; se tem conteúdo que ainda não pode ser salvo, pergunta Descartar alterações? (Continuar editando ou Descartar); sem nada escrito, apenas fecha. Guardar fica desativado enquanto houver um erro: nome vazio, nenhum passo, um parâmetro obrigatório vazio ou uma entrada inválida.

Nome, interruptores e exposição à IA
Nome e Descrição ficam no topo. Ativado (desligado, o workflow continua salvo mas não roda) e Disponível para o agente de IA (ligado, o agente do chat pode invocá-lo como ferramenta) vêm depois das configurações, com Descrição que a IA vê: se você a deixar vazia, usa-se a descrição do workflow.
Você pode
- Alternar Ativado: é o mesmo interruptor do cartão.
- Alternar Disponível para o agente de IA e escrever Descrição que a IA vê. Salvar com o interruptor ligado e passos irreversíveis no workflow pergunta uma vez Deixar a IA executar este workflow? (Permitir à IA).
- Ler o Aviso de segurança quando um passo de shell contém um binding
{{…}}num workflow exposto à IA: o agente do chat poderia injetar texto no comando pelas entradas.
Você não pode, e por quê
- Fazer o agente chamar um workflow que está desligado: um workflow só é anunciado ao chat quando está Disponível para o agente de IA e também Ativado.De propósito

Entradas
Valores que o workflow pede quando roda. Você os lê em qualquer lugar como {{var.<name>}}.
Você pode
- Adicionar entrada com um Nome (letras, dígitos e
_, sem começar por dígito, único), um Tipo (Texto, Texto longo, Número, Sim / não, Escolha, JSON), Obrigatória, um Valor por omissão, Opções (separadas por vírgula, para Escolha), uma Etiqueta e uma Descrição (mostrada quando ele pergunta, e à IA). Mova as entradas para cima ou para baixo, ou remova-as. - Executá-lo com Executar agora: um workflow com entradas obrigatórias abre o diálogo Executar com os valores padrão preenchidos, então você só muda o que precisa.
Você não pode, e por quê
- Salvar com uma entrada inválida: um nome em branco, inválido ou repetido, uma Escolha sem opções, ou um valor padrão que não está entre as opções ou não é um número bloqueia Guardar.De propósito
- Iniciar sozinho um workflow cuja entrada obrigatória não tem valor padrão: uma execução agendada, um evento, um atalho ou um botão não têm a quem perguntar. O editor avisa com Obrigatórias sem valor por omissão e o agendador registra uma execução com falha.De propósito
Definições do workflow
Um cartão recolhível (Mostrar / Ocultar) com as configurações da execução inteira.
Você pode
- Limite de toda a execução (segundos): vazio significa sem limite. Quando o tempo acaba, a execução é cancelada como se você a tivesse parado.
- Quando um passo falha: Parar ou Continuar. É o padrão que cada passo herda. Um passo que diz Continuar mantém a sua escolha; mas com o workflow em Continuar, nenhum passo pode pedir Parar de novo.
- Quando já há uma execução a decorrer: Ignorar o novo (o padrão), Por em fila (até 10 esperando por workflow) ou Cancelar o que está a decorrer. Vale para gatilhos de evento e execuções agendadas; execuções manuais e iniciadas pela IA não são limitadas por isso.
- Histórico que fica: Execuções que ficam e Dias que ficam. Vazio significa o padrão (100 execuções, 30 dias); você pode definir de 1 a 1000 execuções e de 1 a 365 dias. As execuções mais antigas são podadas na próxima execução do workflow, não quando você salva.
Você não pode, e por quê
- Manter um registro dos eventos descartados por Ignorar o novo: com a política padrão, um evento que chega enquanto o workflow roda é descartado sem entrada no histórico, de propósito: uma rajada de gravações escreveria uma linha por evento. (Uma execução recusada pela fila ou pelo limite do app inteiro é registrada como cancelada, com o motivo.)De propósito
Permissões
Um cartão recolhível próprio sob Definições do workflow, para que a única decisão capaz de fazer um passo parar de rodar nunca fique escondida num menu suspenso. A frase-resumo fica visível mesmo com o cartão recolhido. Tudo é permitido por padrão.
Você pode
- Alternar Sair para a rede (requisições HTTP, passos de IA, deploys e git push ou pull), Escrever ficheiros (gravar, fazer checkout e backups; ler nunca é afetado) e Executar comandos (também o comando de um passo de backup de banco de dados).
- Adicionar Domínios que pode alcançar: vazio significa qualquer domínio,
github.comtambém cobreapi.github.com, e o que você cola é limpo (esquema, caminho e porta são removidos). - Contar com uma regra para subfluxos: um subfluxo roda com a interseção das suas permissões com as do pai e, se as listas de domínios não têm nada em comum, a rede fica fechada.
Você não pode, e por quê
- Usar as permissões como fronteira de segurança: o resumo termina com “Isto não é uma caixa de areia: quem puder editar o workflow pode mudar estas permissões.” Elas protegem você do descuido, não de um autor hostil.De propósito
- Fazer a lista de domínios restringir um passo de IA, deploy ou git: a lista só cobre passos Pedido HTTP, e o resumo diz isso.De propósito
- Obter proteção contra SSRF pela lista de domínios: compara-se o nome do host, não o endereço para o qual ele resolve, e um passo HTTP pode alcançar
127.0.0.1ou10.x.De propósito

Gatilhos
Um workflow tem um gatilho PRINCIPAL e até seis no total (Adicionar gatilho, Tornar principal). Quando dois deles casam com o mesmo evento, começa uma execução só e o principal vence. Escolha o tipo no menu: são 25. Muitos trazem dados que você lê como {{trigger.<field>}}; os campos estão listados nas tabelas.
Você pode
- Escolher qualquer um dos 25 tipos, adicionar até 6 gatilhos e promover um a principal.
- Montar um filtro tipado (abaixo) para o workflow começar só pelos eventos que lhe interessam.
- Apertar Capturar em Capturar o próximo evento: o editor escuta por 60 segundos, mostra os dados reais do próximo evento desse tipo e os guarda como dados de exemplo para Inserir um dado.
- Filtrar Ao fazer push por branch (por exemplo
main): os quatro lugares que emitem um push (Projects, duas vezes, o painel Git do editor e o chat de IA) mandam o branch que estava ativo, então Deploy automático ao push para main e Testes depois do push para main disparam.
Você não pode, e por quê
- Usar Projeto fechado e A IA terminou o seu turno: estão no menu, mas nada no app os emite, então um workflow que começa por eles nunca dispara. O linter avisa (“Hoje ninguém emite PROJECT_CLOSED na aplicação, por isso este workflow não vai disparar.”) e Capturar diz “Nada na app emite ainda este gatilho, por isso esperar mais não vai adiantar.”Ainda não
- Começar por um commit feito no painel Controle de código do editor ou pelo chat de IA: Ao fazer commit só dispara para um commit feito em Projects.Ainda não
- Filtrar os quatro gatilhos de sistema (Atalho no ecrã inicial, Botão das definições rápidas, Texto partilhado para o PocketCode, Ficheiro partilhado para o PocketCode): o Android os inicia e o launcher só escolhe workflows pelo tipo, então um filtro é ignorado.Ainda não
- Ler um código de saída real de Comando terminado quando o comando foi digitado no terminal interativo: esse evento vem com
exitCodeKnownem false.Ainda não - Adicionar um sétimo gatilho ou uma nona condição (6 gatilhos é o máximo. e 8 condições é o máximo.).De propósito

.js), com Converter em condição.
Os 25 gatilhos
Git (2)
| Ao fazer push | Depois de um push feito em Projects, no painel Git do editor ou no chat de IA. Campos: projectId, projectName, branch (o branch que foi enviado, por exemplo main). |
| Ao fazer commit | Depois de um commit feito em Projects. Campos: projectId, projectName, message, branch. |
Arquivos (4)
| Ao salvar arquivo | Campos: filePath, language, linesChanged. |
| Ficheiro criado | Campos: filePath, fileName. |
| Ficheiro apagado | Campos: filePath, fileName. |
| Ficheiro renomeado | Campos: filePath, previousPath. |
Projetos e compilações (5)
| Projeto aberto | Quando você seleciona um projeto. Campos: projectId, projectName. |
| Projeto fechado | Está na lista, mas nada o emite: nunca dispara. |
| Compilação terminada | Campos: status, exitCode, durationMs, output. |
| Execução terminada | Campos: filePath, runtime, exitCode, output. |
| Comando terminado | Campos: command, exitCode, output, exitCodeKnown. |
Deploys, dados e ferramentas (5)
| Deploy concluído | Campos: provider, projectName, status, url. |
| Deploy falhou | Campos: provider, projectName, error. |
| Query executada | Campos: data, format, rowCount, columns. |
| Resposta do testador de API | Campos: url, method, status, durationMs. |
| Design exportado | Campos: designId, designName, format. |
Erros e a IA (3)
| Foi detetado um erro | Ouve a falha de outro workflow, erros de compilação e de execução do editor e comandos de terminal executados pela IA que saem com um código diferente de 0. Um workflow nunca dispara a si mesmo. Campos: source, message, filePath, exitCode, workflowId, workflowName, error. |
| A IA alterou um ficheiro | Um arquivo gravado pelo agente de IA. É separado de Ao salvar arquivo de propósito: uma gravação automática não deve disparar as automações que você montou para o seu próprio trabalho. Campos: filePath, fileName. |
| A IA terminou o seu turno | Está na lista, mas nada o emite: nunca dispara. |
O app e manual (2)
| App aberto | Quando o app volta ao primeiro plano. Campo: sessionId. |
| Manual ou agendado | Sem dados. É o que você inicia com ▶ ou Executar agora, o que um agendamento inicia e o que o chat de IA executa. |
Do Android (4)
| Atalho no ecrã inicial | Sem dados. Veja Executar e acompanhar. |
| Botão das definições rápidas | Sem dados. |
| Texto partilhado para o PocketCode | Campos: text, subject. |
| Ficheiro partilhado para o PocketCode | Campos: uri, fileName, mimeType. |
O filtro tipado
Sob um gatilho, Adicionar condição (até 8) dá um Campo (os campos desse gatilho), uma Comparação e um Valor. Una-as com Todas ou Alguma, e ponha Não em qualquer uma. Sem condição, o editor diz “Sem condições: este gatilho dispara com cada evento do seu tipo.” Mudar o tipo descarta as condições cujo campo não existe no novo tipo e avisa você. Um workflow salvo com o antigo filtro de texto livre o mantém como Filtro de texto, ainda funcionando, com Converter em condição.
| Comparação | O que faz |
|---|---|
| é igual a | O campo é igual ao valor. |
| contém | O campo contém o valor. |
| começa por / termina em | O campo começa ou termina com o valor. |
| corresponde ao caminho | Um glob para campos de caminho: um * fica dentro de uma pasta, dois atravessam pastas, e um ponto no início casa com a extensão. |
| é um de | O campo é um de vários valores separados por vírgulas. |
| está vazio | O campo não tem valor. |
| é maior que / é menor que | Comparação numérica. Se um dos lados não é um número, a condição não casa. |
Passos: a árvore, o cartão e a paleta
A lista Passos é uma árvore: blocos aninham-se dentro de blocos. Os passos são numerados 2, 2.1; um ramo else fica 2.e1, um ramo catch 2.c1 e um ramo paralelo 2.<n>. Os blocos podem ser recolhidos (Recolher / Expandir), e um passo aninhado muito fundo recebe um aviso como 5 níveis de aninhamento, dizendo que ele roda igual mas deixa de caber na tela do celular.
Você pode
- Tocar no botão + (Adicionar passo) para abrir a paleta: buscar por nome, descrição ou saída (“Nome, descrição ou saída (stdout, url…)”), escolher um chip de categoria (Shell, Git, Deploy, IA, Dados, HTTP, Ficheiros, Controlo, Aviso, Outros) e usar favoritos e os últimos 5 recentes. Cada entrada mostra o que dá (Dá: …) e marca irreversível, executa comandos, usa a rede, escreve ficheiros ou Não pode ser simulado. O novo passo cai no fim do espaço que você escolheu e as configurações dele abrem.
- Em cada cartão: a alça de reordenar, o número, o título e um resumo de uma linha, um interruptor Ativo / Desativado (um passo Desativado é pulado e não conta como falha), o chip Se este passo falhar, Testar este passo, o lápis (abre as configurações e seleciona o passo) e o menu ⋮.
- No menu: Subir, Descer, Copiar passo, Colar abaixo (só ativo quando a área de transferência tem passos do PocketCode, então dá para colar em outro workflow), Duplicar, Nota (só aparece no editor), Converter em subfluxo e Excluir.
- Reconhecer dados fixados: o cartão de um passo com saída fixada mostra dado de exemplo.
Você não pode, e por quê
- Arrastar um passo para outro bloco: a alça move um passo uma posição a cada 48 dp de arrasto dentro da própria lista; use Subir e Descer no menu.De propósito
- Desenhar o fluxo como um grafo, ou usar um switch de N vias ou uma junção livre: o fluxo é uma árvore aninhada, Se / Senão tem exatamente dois ramos e Em paralelo junta os seus ramos com uma de três políticas.De propósito
- Editar um passo que o app não conhece (Passo desconhecido, escrito por uma versão mais nova): ele é mantido como está e só pode ser movido ou excluído.De propósito


2.1 e 2.2 sob Se corresponder, 2.e1 sob Caso contrário. O Deploy oferece Executar este passo a sério porque não pode ser simulado.Os sete tipos de passo
| Tipo | O que faz | O que você define |
|---|---|---|
| Ação | Executa uma das 15 ações. | Os parâmetros da ação. Só numa ação: Fiabilidade (nova tentativa, tempo limite) e Condicional (Quando). |
| Se / Senão | Executa Se corresponder quando a condição é verdadeira e Caso contrário quando não é. | Uma árvore de condições com E, OU e NÃO. |
| Ciclo | Repete os seus passos Para cada item de uma lista. | Lista a percorrer, Nome de cada item (leia-o como {{item.<name>}}), Voltas no máximo (padrão 100, nunca mais de 10 000) e Voltas ao mesmo tempo (1 as executa uma após a outra, até 16). |
| Em paralelo | Executa vários ramos ao mesmo tempo. | Ramos (adicione um, ou remova um que esteja vazio) e Quando se avanca: Quando todas acabarem, Com o primeiro que terminar ou Com o primeiro que corra bem. As duas últimas cancelam os ramos que perdem, no meio do caminho e com os seus efeitos colaterais. |
| Tentar / se falhar | Executa Tenta isto; se algo ali falhar, executa Se falhar. | Nome do erro (padrão error, lido como {{var.error}}, até 4 096 caracteres). |
| Subfluxo | Executa outro workflow com os valores que você dá e usa o último resultado dele. | Workflow a executar e Valores para o subfluxo. Até 5 níveis de profundidade, sem recursão, e as permissões são a interseção com as do pai. |
| Espera | Pausa o workflow por um tempo, ou até algo acontecer. | Um tempo em milissegundos, ou Esperar que aconteça algo com Evento a esperar, um filtro opcional (mesma regra de um gatilho) e Limite em milissegundos (5 minutos se você não definir nenhum). |
Ações
Quinze ações, em oito categorias da paleta. Cada uma lista as saídas que você pode ler como {{step.<id>.output.<key>}}; os nomes abaixo são as keys. Os rótulos são os em inglês que a paleta mostra.
Shell (1)
| Comando de terminal | Executa um comando no shell do terminal. Parâmetros: command, cwd, env, failOnNonZero (ligado por padrão), timeoutMs. Saídas: command, exitCode (-1 se o limite o matou), stdout, stderr (cada um limitado a 64 KB, começo e fim), durationMs, timedOut. |
Git (1)
| Operação git | Sete operações: status, commit, push, pull, checkout, log, diff. Parâmetros: operation, message, branch (letras, dígitos, ., _, /, -), n (padrão 20), path, projectPath. Saídas: sha, branch, changedFiles, ahead, behind, text. Só push (ou uma operação que vem de um binding) conta como irreversível; commit, pull e checkout gravam arquivos; status, log e diff não tocam em nada. diff é por arquivo. |
Deploy (1)
| Disparar deploy | Dispara um deploy em render, netlify, digitalocean ou railway e espera o veredicto do provedor (15 minutos por padrão, de 1 a 60). Parâmetros: provider, project, timeoutMs; branch e env são registrados mas não respeitados. Saídas: status, url, provider, projectName, logsTail, durationMs, timedOut. Não pode ser simulado: Testar agora o pula e o teste do passo oferece Executar este passo a sério. No Free ele falha com “Faça upgrade para disparar outro deploy ativo” quando já há um deploy desse projeto em andamento (na fila, compilando ou implantando), e aparece um aviso de que a ação precisa do PocketCode Pro. |
IA (2)
| Pedir análise à IA | Envia um prompt, com contexto opcional, ao seu provedor de IA ativo. Parâmetros: prompt, context, outputFormat (TEXT ou JSON), schema. Saídas: text, json (só no modo JSON) e tokensEst, uma estimativa local dos tokens, não a contagem do provedor. |
| Pedir geração à IA | O mesmo, formulado como geração de código. Parâmetros: prompt, context, language. Saídas: text, tokensEst. Não grava arquivos; use Escrever ficheiro com o text dele. |
Dados (4)
| Consultar base de dados | Executa SQL numa conexão nomeada: neon, supabase, turso, upstash ou cloudflare (D1), ou numa das suas conexões PostgreSQL guardadas (pelo nome ou id). Parâmetros: connection, sql, maxRows (200 por padrão, no máximo 5 000), allowWrites. Saídas: rows, rowCount, columns, truncated, durationMs, message, writes. Uma consulta com verbos de escrita (DROP, DELETE, TRUNCATE, UPDATE, INSERT, ALTER, CREATE, GRANT), ou SQL que vem de um binding, conta como irreversível e falha a menos que allowWrites esteja ligado. A dica da paleta a chama de só leitura; não é. |
| Backup de banco de dados | Executa o seu próprio comando de backup (por exemplo pg_dump); sem comando, só consegue copiar o banco de dados interno do PocketCode. Parâmetros: connection, command, outputDir, timeoutMs (10 minutos). Saídas: filePath, sizeBytes, tables, exitCode, stdout, stderr, timedOut, durationMs. |
| Definir variável | Parâmetros: name, value. Saídas: name, value. Ela grava {{var.<name>}} para os passos seguintes (o valor também pode ser lido como {{step.<id>.output.value}}). Uma simulação (Testar agora) não grava a variável. |
| Transformar valor | Avalia uma expression com os filtros e devolve value. Sem efeitos colaterais, e uma simulação faz o mesmo que uma execução real. |
HTTP (1)
| Pedido HTTP | Parâmetros: method, url, headers (JSON), authorization (um segredo), body, contentType, timeoutMs (1 000 a 120 000, 30 000 por padrão), followRedirects. Saídas: status, headers, body (até 128 KiB), json, durationMs, bodyTruncated, finalUrl, redirects. Só http e https; até 5 redirecionamentos, e as credenciais nunca passam para outra origem. |
Arquivos (4)
| Ler ficheiro | Parâmetro: path. Saídas: content (até 128 KiB), sizeBytes, exists, contentTruncated, filePath. |
| Escrever ficheiro | Parâmetros: path, content, append. Saídas: filePath, sizeBytes, bytesWritten, overwritten. Nunca conta como irreversível, nem quando sobrescreve. |
| Verificar se existe | Parâmetro: path. Saídas: exists, isDirectory, sizeBytes, filePath. |
| Abrir arquivo no editor | Parâmetros: file, line. Saídas: opened (true só se o editor confirmar em até 1,5 segundo, então é false com o app em segundo plano), file, line. |
Aviso (1)
| Mostrar notificação | Parâmetros: title, message, deepLink (só pocketcode://workflows/…), importance (LOW, DEFAULT, HIGH). Só HIGH usa o canal Workflows · avisos; os demais vão para o canal silencioso Workflows. Saídas: notificationId, delivered (significa que o evento saiu para o sistema de notificações, não que você a viu; false numa simulação), deepLink, importance. |
- As três ações de arquivo que leem ou gravam (Ler ficheiro, Escrever ficheiro, Verificar se existe) ficam confinadas à raiz do projeto; Comando de terminal e Operação git não.
- Na paleta, irreversível marca o pior caso do tipo; o diálogo de confirmação, o teste do passo e o painel Problemas olham os valores que você realmente digitou.
Você não pode, e por quê
- Fazer deploy em qualquer provedor: só
render,netlify,digitaloceanerailwaytêm uma chamada que dispara um deploy, e o branch e o ambiente não são respeitados.Terceiros - Consultar uma conexão guardada que não seja um PostgreSQL remoto (a base local embutida, MySQL e as restantes): a partir de um workflow só se chega a
neon,supabase,turso,upstash,cloudflare(D1) e às suas conexões PostgreSQL guardadas.Terceiros - Fazer backup de qualquer banco de dados sem um comando: sem
command, o passo só consegue copiar o banco de dados interno do PocketCode.Ainda não
Condições: Se / Senão e Quando
Um passo Se / Senão contém uma árvore de condições e dois ramos. Um passo do tipo Ação também pode levar Quando (expressão), sob Condicional: o passo é pulado quando a expressão resulta em vazio, false, 0 ou null. Quando existe só em passos de ação.
Você pode
- Montar a condição com Adicionar condição e Adicionar grupo, combinar com E, OU e NÃO, e usar Agrupar e Remover. Um grupo vazio sempre casa.
- Ver Cumpre-se ou Não se cumpre, avaliado com os seus dados de exemplo fixados, não com a próxima execução.
Você não pode, e por quê
- Pôr Quando num ciclo, num paralelo, num try, num subfluxo, numa espera ou num Se / Senão: só um passo de ação o tem.De propósito
| Operador | Verdadeiro quando |
|---|---|
| é igual a / não é igual a | Os dois valores são iguais, ou não. |
| maior que / menor que | Comparação numérica. |
| maior ou igual / menor ou igual | Comparação numérica, inclusiva. |
| contém / começa por / acaba em | Comparação de texto. |
| corresponde a | Uma expressão regular (mantenha-a curta). |
| e um de | O valor é um de vários separados por vírgulas. |
| e nulo / está vazio / e verdadeiro | Verifica o próprio valor. |
| sempre | Sempre verdadeiro. |
Variáveis e expressões
Qualquer parâmetro aceita um literal ou uma expressão entre chaves duplas: {{ root.field[0] | filter:"arg" | filter }}. Inserir um dado abre um seletor (Entradas, Gatilho, Passos anteriores, Estado do passo, e o item ou o erro do bloco em que você está), então você nunca digita um id de passo à mão; ele avisa Dentro de um ramo: pode não ter sido executado. e “Dentro de um ciclo: fica a última iteração.” Uma referência que não resolve dá uma string vazia. \{{ escreve um {{ literal. Os argumentos de um filtro sempre vão entre aspas duplas: replace:a:b é um erro de sintaxe, replace:"a":"b" funciona.
Você pode
- Encadear filtros com
|depois de qualquer referência. - Fixar uma saída como dado de exemplo, para que Inserir um dado e Se / Senão possam fazer a prévia com ela.
Você não pode, e por quê
- Acrescentar as suas próprias funções ou rodar código numa expressão: a lista de 13 filtros é fechada, sem funções de usuário e sem
eval; caminhos muito longos, cadeias de filtros ou texto entre chaves são rejeitados no parse.De propósito
| Expressão | Resolve para |
|---|---|
{{var.<name>}} | Uma entrada declarada (incluindo os valores de Executar com estas entradas e os padrões de um agendamento ou atalho), o nome do erro de um Tentar / se falhar, os valores que um Subfluxo passa ao filho, e o valor que um passo Definir variável grava (uma simulação não o grava). |
{{step.<id>.status}} | SUCCESS, FAILURE, SKIPPED, TIMED_OUT, ou RUNNING para um passo ainda em andamento. |
{{step.<id>.output}} | O mapa de saída do passo, ou um campo dele: {{step.<id>.output.json.items[0].name}} entra no JSON com [n]. |
{{step.<id>.error}} | A mensagem de erro de um passo que falhou. |
{{item.<alias>}} | O item atual de um Ciclo (o alias sozinho também funciona). |
{{trigger.<field>}} | Os dados do evento que iniciou a execução; {{trigger.type}} diz qual dos gatilhos do workflow foi (MANUAL quando não houve evento). |
{{secret.<NAME>}} | Um segredo salvo. É terminal: você não consegue entrar nele. |
Os 13 filtros
| Filtro | O que faz |
|---|---|
lines | Divide o texto em linhas; uma quebra de linha final é descartada. |
first / last | O primeiro ou o último item de uma lista, ou o primeiro ou o último caractere de um texto. Falha se estiver vazio. |
trim / upper / lower | Tira espaços, passa para maiúsculas, passa para minúsculas. |
length | O número de itens de uma lista ou de caracteres de um texto. |
json | Mostra o valor como JSON. |
default:"x" | Um valor de reserva quando o valor falta ou está vazio. |
split:"," | Divide o texto num separador e devolve uma lista. |
join:"," | Junta uma lista com um separador. |
date:"HH:mm" | Formata uma data a partir de milissegundos epoch ou de uma data ISO, no fuso horário do dispositivo. |
replace:"a":"b" | Substitui texto; o texto a substituir não pode ser vazio. |
Exemplos
{{step.<id>.output.stdout | lines | first | trim}} | A primeira linha da saída de um comando, sem espaços nas pontas. |
{{step.<id>.output.json.items[0].name | default:"none"}} | Um campo dentro de uma resposta JSON, com valor de reserva. |
{{trigger.filePath | replace:"src/":""}} | O caminho do arquivo salvo sem um prefixo. |
Ciclos, paralelo, tentar / se falhar e subfluxos
Os blocos da árvore, com os limites que importam na prática.
Você pode
- Ciclo: até 10 000 voltas (padrão 100) e até 16 ao mesmo tempo; com Voltas ao mesmo tempo acima de 1 elas rodam em lotes.
- Em paralelo: Quando todas acabarem espera todos os ramos e falha se um falhar; Com o primeiro que terminar e Com o primeiro que corra bem cancelam os outros.
- Tentar / se falhar: o ramo de falha lê a mensagem em
{{var.<name>}}; a falha continua aparecendo no histórico. - Subfluxo: monte a parte uma vez e chame-a de vários workflows; Converter em subfluxo extrai um passo e tudo o que há dentro dele para um workflow novo, desligado, e deixa no lugar um passo de subfluxo, listando as referências que vão quebrar (Vao resolver para nada, em silencio.).
Você não pode, e por quê
- Aninhar subfluxos além de 5 níveis ou deixar um workflow chamar a si mesmo: um subfluxo recursivo é pulado e o linter avisa.De propósito
- Repetir um ciclo mais de 10 000 vezes ou rodar mais de 16 voltas ao mesmo tempo, diga o que disser o campo.De propósito
Nova tentativa, tempo limite e falha
Abra as configurações de um passo de ação e expanda Fiabilidade. Estes campos existem só em passos de ação.
Você pode
- Definir Tentativas máximas (1 significa sem nova tentativa), Espera progressiva (um campo de texto:
EXPONENTIAL,LINEARouFIXED), Atraso inicial (ms), Atraso máximo (ms) e Tempo limite (ms) (vazio significa sem limite). - Contar com o fato de os tempos limite serem repetidos: um passo que estoura o tempo é marcado
TIMED_OUTe, se restarem tentativas, roda de novo como qualquer outra falha. - Escolher Se este passo falhar: Parar (a execução termina aqui), Continuar (segue em frente e a falha fica no histórico) ou Usar a definição do workflow. Com Continuar o passo continua vermelho e a execução ainda pode terminar verde.
- Ler o resultado no detalhe da execução: acertou a tentativa n, ou n tentativas se nunca acertou.
Você não pode, e por quê
- Definir nova tentativa ou tempo limite num ciclo, num paralelo ou em qualquer outro bloco de controle: os campos existem só em passos de ação. O limite do workflow inteiro fica em Definições do workflow.De propósito
Testar um passo, fixar dados, testar o workflow
Você pode experimentar sem rodar o workflow inteiro.
Você pode
- Tocar em Testar este passo: ele simula o passo com os seus dados fixados como contexto e diz Simulado em n ms: nada foi tocado. Avisa Sem saída fixada de: … quando uma referência aponta para um passo sem nada fixado.
- Quando a ação não pode ser simulada (hoje só Disparar deploy), ou os valores que você digitou seriam irreversíveis, o botão é Executar este passo a sério. Ele pergunta antes: só esse passo roda, o resto do workflow fica intacto e a execução não é salva no histórico.
- Fixar a saída de um passo (e Soltar) como dado de exemplo para o seletor e as prévias. As saídas fixadas ficam no dispositivo, até 50 passos por workflow, e são descartadas depois de 14 dias.
- Tocar em Testar agora (ou apertar
Ctrl+Enter) para simular o workflow inteiro como está na tela, não como foi salvo por último. Ele mostra Teste passou ou Teste falhou e n etapas · n ms · não é salvo. Uma simulação não salva execução e não dispara eventos.
Você não pode, e por quê
- Testar um bloco de controle de fluxo sozinho: “Só os passos de ação se podem testar sozinhos: testar um ramo ou um ciclo é executar o que está lá dentro.”De propósito
- Usar segredos numa simulação: eles não são resolvidos, e o passo é pulado dizendo quais usa.De propósito
- Exportar ou sincronizar saídas fixadas: elas ficam no dispositivo.De propósito
Problemas
O linter roda enquanto você edita e lista Erros, Avisos e Sugestões com uma contagem para cada. Cada linha nomeia a regra, o passo (Passo: … ou Todo o workflow) e tem Ir para o passo. Quando não há nada, diz Nada a corrigir. O mesmo linter confere o que a IA gera e o que você importa.
Você pode
- Corrigir o que um aviso aponta, ou deixar: só as três regras que são erros bloqueiam Guardar.
- Ir direto ao passo com Ir para o passo.
Você não pode, e por quê
- Salvar com um erro (um nome vazio, nenhum passo, um parâmetro obrigatório vazio): as três regras de erro são as que deixariam o workflow ilegível ou impossível de salvar. Todo o resto, regras de permissão incluídas, avisa e não bloqueia, porque quem fecha a rede costuma fazê-lo antes de remover o passo que a usava.De propósito

As 34 regras
| Grupo | Regras |
|---|---|
| Estrutura (6) | Erro: o workflow não tem nome; não tem passos. Aviso: um ramo vazio; um passo que nunca pode rodar. Sugestão: um paralelo com um só ramo; aninhamento fundo demais. |
| Parâmetros (3) | Erro: um parâmetro obrigatório está vazio. Aviso: um parâmetro que a ação não tem; um tipo de ação que nenhum host instalado atende. |
| Referências (7) | Todos avisos: uma referência que nunca vai resolver; uma que lê um passo que roda depois; uma saída que o passo não devolve; um campo de gatilho que o gatilho não traz; uma variável não declarada; uma referência a um passo desligado; uma referência que entra num comando de shell sem aspas. |
| Gatilhos (3) | Aviso: um gatilho que nada emite; um filtro sobre um campo que o gatilho não traz. Sugestão: o mesmo gatilho duas vezes com o mesmo filtro. |
| Ciclos (3) | Todos avisos: sem lista a percorrer; um alias já usado; sem alias. |
| Fiabilidade (2) | Avisos: um tempo limite absurdo; uma nova tentativa absurda. |
| Segurança (2) | Avisos: um segredo digitado em texto puro; um passo irreversível num workflow que só roda sozinho. |
| Permissões (4) | Avisos: um passo que vai à rede, grava arquivos ou roda um comando com essa permissão desligada; um passo que vai a um domínio fora da lista. |
| Coerência (4) | Avisos: exposto à IA sem descrição; uma entrada obrigatória sem valor padrão num gatilho de evento; um subfluxo recursivo; um subfluxo que aponta para nada. |
Executar e acompanhar
Toda execução é gravada no histórico quando termina: o resultado de cada passo, quanto tempo levou, quantas tentativas precisou e o seu erro. Quanto fica guardado é definido por workflow em Definições do workflow: de 1 a 1 000 execuções e de 1 a 365 dias (os padrões são 100 execuções e 30 dias). Tudo o que inicia uma execução também pode pará-la.
Iniciar e parar uma execução
Uma execução começa por um gatilho, por ▶ ou Executar agora, por um agendamento, pelo chat de IA, ou por um atalho, o botão ou o menu Compartilhar. Entre todos os workflows, o app roda até 8 execuções por vez e mantém até 16 esperando por até 120 segundos; além disso a execução é registrada como cancelada com o motivo “a app já estava a executar demasiados workflows ao mesmo tempo”.
Você pode
- Tocar em ▶ no cartão de um workflow cujo gatilho principal é Manual ou agendado, ou em Executar agora no menu de qualquer workflow. Se ele declara entradas obrigatórias, o diálogo Executar abre primeiro (“Este workflow precisa destes valores antes de arrancar.”) com os valores padrão preenchidos.
- Pará-la pelo cartão, pelo menu, pelo histórico, por Atividade, pelo detalhe da execução ou pela notificação. A execução termina como Cancelado.
- Ligar um workflow que tem passos irreversíveis: um diálogo intitulado “Este workflow faz algo que não se pode desfazer” os lista (Passo n · …) e você escolhe Ativar mesmo assim. É perguntado uma vez por workflow e lembrado no dispositivo, sem sincronizar nem exportar.
- Salvar um workflow com Disponível para o agente de IA ligado e passos irreversíveis: Deixar a IA executar este workflow? (Permitir à IA), também uma vez. Sem essa permissão, a ferramenta do agente se recusa a executá-lo e diz ao modelo a quem perguntar.
Você não pode, e por quê
- Ser perguntado sobre passos irreversíveis ao apertar Ativar num modelo, usar Guardar e ativar no gerador ou importar um arquivo (uma importação chega desligada, e a pergunta vem quando você a liga).Ainda não
- Ser avisado de que vai sobrescrever um arquivo: Escrever ficheiro nunca conta como irreversível, nem quando sobrescreve; a saída
overwrittenavisa depois. Só umpushdo Git (ou uma operação do Git que vem de um binding) e SQL com verbos de escrita (ou SQL que vem de um binding) contam.De propósito
Aba Atividade
As últimas execuções de todos os workflows, as ao vivo primeiro, 50 de cada vez.
Você pode
- Procurar nos erros: busca na mensagem da execução e na mensagem de cada passo.
- Filtrar por estado (Concluído, Falhou, Cancelado), por data (Qualquer data, Hoje, Últimos 7 dias, Últimos 30 dias) e por workflow (Todos os workflows, incluindo workflows que você já apagou); Limpar remove os filtros.
- Carregar mais acrescenta mais 50, parar uma execução ao vivo e tocar numa execução para abrir o detalhe dela.
- Copiar as execuções filtradas como JSON com Exportar como JSON: coloca o texto na área de transferência.
- Apagar histórico depois de uma confirmação (“As execuções desaparecem. Os workflows ficam como estão.”), para todos os workflows ou só para o filtrado.
Você não pode, e por quê
- Voltar além das 500 execuções mais recentes: “Até aqui chega este ecrã. Afine o filtro para encontrar algo mais antigo.”De propósito
- Exportar o histórico para um arquivo: Exportar como JSON só copia o texto.Ainda não
Histórico de execuções de um workflow
Histórico de execuções num cartão lista as execuções desse workflow, as mais novas primeiro.
Você pode
- Ver o estado e a hora de cada execução, o número de passos, Acionado por … e, numa cancelada, Cancelado por …; uma execução ainda em andamento traz Em curso.
- Parar esta execução, ou abrir uma execução para ver o detalhe.
- Sem nada ainda, diz “Sem execuções ainda — acione este fluxo para começar um histórico.”
Você não pode, e por quê
- Ler todos os motivos de cancelamento em palavras: o app traduz a execução anterior ainda decorria, a fila estava cheia e “a app já estava a executar demasiados workflows ao mesmo tempo”; os outros motivos (
user,timeout,superseded,scope) aparecem como a palavra crua.Ainda não
Detalhe da execução
Abra uma execução pelo histórico, por Atividade, por uma notificação de execução ou por um deep link.
Você pode
- Ler o cabeçalho (estado, duração, gatilho, quem a interrompeu) e cada passo: resultado, duração, acertou a tentativa n ou n tentativas, o erro e a saída como uma árvore JSON que você pode expandir e copiar. Um passo que ainda estava rodando quando a execução terminou diz Interrompido; um passo removido do workflow desde então diz Este passo já não está no workflow.
- Acompanhar a Saída ao vivo do shell enquanto a execução roda, pesquisá-la (Procurar no log) e copiá-la (Copiar o log). Só as últimas 500 linhas de cada passo são mantidas, e a tela avisa quando linhas mais antigas foram descartadas.
- Analisar a execução com IA, ou Analisar com IA num passo: abre o chat com um prompt já escrito.
- Copiar como JSON copia a execução.
Você não pode, e por quê
- Ler o log do shell de uma execução que terminou: “O log da shell não fica no histórico: só se vê enquanto a execução decorre.”De propósito
- Achar uma execução que estava em andamento quando o sistema matou o app: uma execução é gravada uma vez, quando termina, e nada é recuperado na inicialização, então uma execução interrompida não deixa linha.De propósito
- Ver um segredo guardado: os valores são mascarados como
•••quando a execução é gravada, então também não estão no banco de dados. Valores com menos de 4 caracteres não podem ser mascarados.De propósito
Voltar a executar, repetir a partir do passo falhado, executar com entradas
Três botões no fim do detalhe, todos terminando no diálogo Repetir esta execução.
Você pode
- Voltar a executar roda o workflow desde o início.
- Repetir a partir do passo falhado roda de novo a partir do primeiro passo que falhou, reaproveitando os resultados dos passos anteriores (Reutilizam-se n resultados anteriores.). Só aparece quando a execução terminou e tem um passo falhado.
- Executar com estas entradas pede as entradas de novo antes de rodar.
- Leia o diálogo antes de confirmar: ele diz “Executa o workflow tal como está agora, não como estava quando esta execução aconteceu.”, se o workflow foi editado desde então, quais passos já não existem, quais foram acrescentados e de onde retoma.
Você não pode, e por quê
- Reaproveitar as entradas da execução antiga: “As entradas dessa execução não ficam guardadas, por isso usam-se os valores por omissão declarados.” Elas poderiam ser tokens.De propósito
- Retomar a partir de um passo aninhado dentro de um bloco: só um passo de primeiro nível pode ser o ponto de reinício.De propósito
- Repetir uma execução cujo workflow você apagou: “O workflow já não existe: esta execução não pode ser repetida.”De propósito
Notificações de execução
Uma execução viva mostra uma notificação persistente com Passo n de m e um botão Parar. Enquanto há execuções rodando, o PocketCode mantém um serviço em primeiro plano do tipo de uso especial, para o Android não parar o app no meio.
Você pode
- Acompanhar uma execução pela barra de notificações e pará-la dali; o botão de parar só alcança execuções vivas deste app.
- Enviar a sua própria notificação com um passo Mostrar notificação. A importance dela decide o canal:
HIGHvai para Workflows · avisos, qualquer outra para o canal silencioso Workflows. Os dois seguem as configurações de notificação do app: o interruptor global, os interruptores de alertas e avisos, a permissão de notificação do Android e o horário de silêncio. - Tocar numa notificação: um link para
pocketcode://workflows/…abre a execução ou o workflow; qualquer outro link é descartado e a notificação só abre o app.
Você não pode, e por quê
- Receber uma notificação automática quando uma execução falha: o PocketCode não envia nenhuma. Se quiser uma, adicione um passo Mostrar notificação num ramo Tentar / se falhar, ou monte um workflow que começa por Foi detetado um erro. (O chat de IA pode mostrar um aviso Workflow '…' failed com um botão Experimentar, mas só dentro do chat.)Ainda não
- Ter uma notificação de progresso para toda execução: só as 5 primeiras execuções simultâneas recebem uma; as demais rodam sem ela.Dispositivo
- Contar com o serviço em primeiro plano quando o app está em segundo plano: a partir do Android 12 o sistema pode recusá-lo (por exemplo numa execução agendada com o celular no bolso). A execução continua, sem essa proteção, e o PocketCode pede de novo a cada 30 segundos.Google Play
Atalho, botão das Configurações rápidas e Compartilhar
Três formas de iniciar um workflow sem abrir o módulo. Cada uma precisa do gatilho correspondente no workflow (Atalho no ecrã inicial, Botão das definições rápidas, Texto partilhado para o PocketCode ou Ficheiro partilhado para o PocketCode), e do workflow ligado.
Você pode
- Atalho: todo workflow ligado com o gatilho de atalho aparece como um atalho dinâmico do ícone do app (o rótulo é cortado em 30 caracteres). Tocar nele roda o workflow sem abrir nada e mostra Workflow iniciado. Um atalho fixado de um workflow que foi apagado ou desligado diz isso.
- Botão: arraste Executar um workflow para as Configurações rápidas. Sem nenhum workflow usando-o, ele diz Nenhum workflow usa este mosaico; com um, o executa; com vários, mostra um seletor.
- Compartilhar: compartilhe texto, uma imagem, JSON, XML, um zip, um PDF ou um arquivo binário genérico com Executar um workflow a partir de outro app. Uma folha intitulada Enviar para um workflow sempre mostra o que foi recebido (“O que foi partilhado e um dado, não uma ordem. Escolhe o workflow que o recebe.”) e qual workflow o recebe; com vários, você escolhe um. Os dados chegam como
{{trigger.text}},{{trigger.subject}},{{trigger.uri}},{{trigger.fileName}},{{trigger.mimeType}}, e uma entrada declarada com o mesmo nome vence. - Se nada escuta, você lê “Nenhum workflow ativo está a escutar isto. Adiciona o gatilho no editor de workflows.”
Você não pode, e por quê
- Iniciar por estes três um workflow cuja entrada obrigatória não tem valor padrão: ele diz … precisa antes de um valor em vez de rodar às cegas.De propósito
- Compartilhar vários itens de uma vez, texto com mais de 32 768 caracteres (ele é cortado e você é avisado), ou um arquivo com mais de 25 MB. Um arquivo compartilhado é copiado para o PocketCode e apagado depois de 24 horas; a lista de tipos aceitos é fixa, não é qualquer tipo.De propósito
- Contar com o número de atalhos: o Android decide quantos um launcher mostra (pelo menos 5, em geral 4 ou 5), e o botão é opcional, você mesmo precisa arrastá-lo.Dispositivo
- Abrir um
.pcwf.jsondiretamente de outro app: o menu Compartilhar envia o arquivo ao gatilho Ficheiro partilhado para o PocketCode, não ao importador. Importe com Importar um workflow de um ficheiro.De propósito
Agendamento
Qualquer workflow pode ter vários agendamentos, definidos pelo ícone de relógio ou por Agendar no menu dele (Agendamentos de …). Eles rodam pelo WorkManager do Android, com a folga que isso implica, e são armados de novo quando o app inicia.
Você pode
- Ler os agendamentos existentes (Cada n min ou Cron: …, Próx.: …, as condições deles, um aviso se o intervalo é aumentado, Recupera uma execução perdida) e Remover qualquer um.
- Adicionar um com uma predefinição ou com Cron personalizado: cinco campos,
min hour day month weekday, por exemplo0 9 * * 1. A folha mostra Próxima execução: … ou Expressão cron inválida, e Adicionar cron o salva. O cron aceita*, números, listas, intervalos,*/n, nomes (SUN–SAT,JAN–DEC), e intervalos que dão a volta no fim só em mês e dia da semana; o dia da semana vai de 0 a 6, com 7 significando domingo. - Escolher Condições do dispositivo antes de criá-lo: Sem requisito, Qualquer ligação ou Só Wi-Fi, mais Só enquanto carrega, Não com a bateria fraca e Só com o dispositivo inativo. Uma condição atrasa a execução, não a cancela: quando a condição enfim é cumprida, a execução pendente segue, mesmo horas depois.
- Ligar Executá-la uma vez ao voltar em Se uma execução se perder: uma execução que caiu enquanto o dispositivo estava desligado roda uma vez na próxima inicialização do app (com tolerância de 15 minutos), não importa quantas se perderam. Vem desligado por padrão, então a execução perdida é pulada.
- Contar com a mudança de horário: a hora que não existe na primavera dispara no salto, e a hora que acontece duas vezes no outono dispara uma vez (um cron fino perde a segunda passagem dessa hora).
- Contar com novas tentativas: uma execução agendada que falha é tentada no total até 4 vezes (a primeira mais 3 novas tentativas) com o back-off exponencial do WorkManager. Se uma execução ainda está rodando quando a próxima vence, a política de concorrência decide; com Ignorar o novo a execução é registrada como cancelada, a execução anterior ainda decorria.
- Ler o aviso Os workflows agendados precisam de atenção acima das abas: ele aparece quando as notificações do PocketCode estão desligadas, quando o canal Workflows · avisos está bloqueado, ou quando o app está sujeito à otimização de bateria (“O PocketCode está sujeito à otimização de bateria: o Android pode atrasar as execuções agendadas. Não as cancela, saem mais tarde.”). Tem Abrir definições e nenhum botão de dispensar; some quando a causa some.
Você não pode, e por quê
- Ter uma garantia abaixo de 15 minutos: o Android não roda trabalho agendado com mais frequência que a cada 15 minutos. Um intervalo menor é elevado a 15 e a folha avisa (“Pede cada n min, mas corre cada 15 min: é o mínimo que o Android permite.”); um cron abaixo disso recebe “abaixo de 15 minutos o Android não garante esse ritmo em segundo plano”. O PocketCode não pede nem a permissão de alarme exato nem uma isenção da otimização de bateria.Google Play
- Digitar um intervalo seu: só três intervalos são oferecidos como predefinições (a cada 15 minutos, a cada hora, a cada 6 horas); qualquer outro ritmo é uma expressão cron. Um intervalo não pode passar de cerca de 30 dias.De propósito
- Escolher um fuso horário: não há seletor, e um agendamento novo lê o cron no fuso do dispositivo (cada agendamento guarda um fuso, mas a tela não o expõe).Ainda não
- Editar um agendamento ou as condições dele: remova-o e adicione outro.De propósito
- Usar
?,L,#, um passo sobre um intervalo (1-9/2) ou um campo de ano numa expressão cron. Um cron que nunca dispara (por exemplo 31 de fevereiro) desliga o agendamento.De propósito - Ser avisado pelo banner sobre os matadores de bateria dos fabricantes: ele só diz o que o Android responde (notificações desligadas, canal bloqueado, otimização de bateria).Dispositivo
As predefinições
| Predefinição | O que adiciona |
|---|---|
| A cada 15 minutos | Um intervalo de 15 minutos, o mínimo do Android. |
| A cada hora | Um intervalo de 60 minutos. |
| A cada 6 horas | Um intervalo de 6 horas. |
| Diariamente às 9:00 | O cron 0 9 * * *. |
| Às segundas às 9:00 | O cron 0 9 * * 1. |
Segredos
Gerir segredos (o ícone de chave da lista) é uma lista de nomes sem valores. Você referencia um como {{secret.NAME}} em qualquer parâmetro, então um token nunca precisa ser digitado num workflow, onde seria salvo como está, viajaria quando você exporta e apareceria no histórico de execuções.
Você pode
- Adicionar um segredo: um Nome em letras maiúsculas, dígitos e sublinhado (se o nome não pode ser usado numa expressão, a tela sugere um, Usar …), e um Valor. É o nome que os passos usam, então mudá-lo depois os quebra.
- Mudar o valor: os workflows que o usam pegam o novo valor na próxima execução.
- Excluir: um diálogo lista os workflows que o referenciam e avisa que o valor não pode ser recuperado e que um workflow que perde o segredo não falha ao ser salvo, falha na próxima execução enviando um valor vazio.
- Ler “Guardados cifrados neste dispositivo, um conjunto por conta. Os valores não voltam a ser mostrados, nem aqui.”
Você não pode, e por quê
- Ver um valor de novo depois de salvá-lo, ou salvar um vazio (“Um valor vazio não é guardado. Para remover um segredo, apaga-o.”).De propósito
- Ter um valor mascarado no histórico de execuções quando ele tem menos de 4 caracteres: ele é salvo, mas a tela avisa “Atenção: este valor tem menos de 4 caracteres, por isso NÃO será tapado …”, e um passo que o imprime o deixa legível ali.De propósito
- Abrir o armazenamento depois de restaurar o celular ou mudar o bloqueio de tela: “Não foi possível abrir o armazenamento cifrado neste dispositivo … Nada foi apagado. Costuma acontecer depois de restaurar o telemóvel ou mudar o bloqueio de ecrã.”Dispositivo
- Sincronizar segredos entre dispositivos: eles são removidos do que é enviado, e também não viajam num arquivo exportado.De propósito
Exportar, importar e links
Um workflow viaja como um arquivo .pcwf.json. Exportar e importar são gratuitos de propósito, e o código diz por quê: são a única forma de tirar o seu trabalho do app, e uma forma de retirar os seus dados trancada atrás de uma assinatura transformaria um plano numa tranca.
Você pode
- Partilhar como ficheiro (no menu de um cartão) abre Compartilhar este workflow: o nome do arquivo, quais campos de segredo são esvaziados (Os seus segredos ficam neste dispositivo), e o lembrete de que o histórico, as saídas fixadas e o interruptor ligado/desligado não viajam. Compartilhar abre o seletor de apps do Android.
- Importar um workflow de um ficheiro (o botão do topo da lista) abre o seletor de arquivos do sistema. A folha Importar workflow mostra o nome, Dispara quando, até 40 passos, Você terá de preencher isto para os segredos, e o resultado do linter; Guardar fica bloqueado se há um erro. “Será salvo desligado. Leia-o antes de ligar: um workflow pode executar comandos no seu dispositivo.”
- Abrir um link
pocketcode://workflows/import?url=https://…de outro app: Um link quer importar um workflow mostra o endereço (De: …) e um aviso, e nada é baixado até você apertar Baixar (ou Não, obrigado).
Você não pode, e por quê
- Abrir um
.pcwf.jsondireto de um gerenciador de arquivos ou de outro app: o app não tem filtro de arquivo para ele. Use Importar um workflow de um ficheiro ou o link.De propósito - Importar um arquivo maior que 512 KB, um arquivo que não é um workflow do PocketCode, um danificado ou um escrito por uma versão mais nova do PocketCode: cada um recebe a sua própria mensagem.De propósito
- Usar um link que não é
https, tem mais de 2 048 caracteres, traz credenciais no endereço ou aponta para o próprio dispositivo; um redirecionamento é mostrado e não seguido.De propósito - Compartilhar um arquivo sem conferir: só os parâmetros declarados como segredo são esvaziados; cabeçalhos HTTP e comandos viajam exatamente como você os digitou, então confira o arquivo antes de compartilhar se um campo guarda uma chave ou um token.De propósito
O que há no arquivo
| Vai | O nome, a descrição, os gatilhos, os passos, as entradas e as configurações de execução (permissões e etiquetas incluídas). |
| Não vai | O id, as datas, o estado da última execução, o modelo de onde veio, o interruptor ligado/desligado, Disponível para o agente de IA, as saídas fixadas, o histórico e os agendamentos. |
| Segredos | Os parâmetros declarados como segredo são esvaziados e listados. Uma referência {{secret.NAME}} viaja: é um nome, não o segredo. |
| Chega | Desligado e com um id novo, depois de o linter rodar. Uma ação nova de uma versão mais nova é descartada sozinha; um arquivo com um formato mais novo é rejeitado inteiro. |
IA: gerar, alterar e o chat
A IA toca em workflows em três lugares: o gerador e a folha de alteração deste módulo (gratuitos), o agente do chat, que pode lê-los, executá-los e, com o Pro, escrevê-los, e os botões Analisar com IA de uma execução.
Gerar por prompt e Alterar com IA
Os dois ficam no módulo e nenhum tem verificação de plano. O modelo é o provedor de IA que você configurou em Configurações, com a sua própria chave.
Você pode
- Tocar em Gerar por prompt na tela de boas-vindas (vertical) para abrir Gerar fluxo por prompt: escreva o Prompt, mencionando o gatilho (push, salvar, commit, erro, deploy) e as ações (deploy, notificar, backup, testar, formatar), e aperte Gerar.
- Tocar em Alterar com IA no menu de um cartão para abrir Alterar «…» com IA: diga o que quer mudar; o resto do workflow fica como está e você vê o que mudou antes de salvar.
- Revisar o resultado: a prévia, Revisão (problemas do linter), O teste a seco passou em n ms, O teste a seco falhou: … ou “Sem testar: … Pode testá-lo você mesmo no editor.”, Corrigido automaticamente para o que o app reparou e, ao alterar, o diff (adicionado, removido, alterado, n passos sem alteração).
- Escolher Guardar e ativar (só ao criar), Abrir no editor (a saída quando as verificações bloqueiam o salvamento) ou Descartar. Um workflow criado assim é salvo ligado; uma alteração mantém o id do workflow, o estado ligado/desligado e a data de criação.
Você não pode, e por quê
- Contar com uma simulação para tudo o que a IA faz: ela só roda quando o app a julga segura, porque uma simulação executa passos. Quando um passo não pode ser simulado, as esperas somam mais de 10 segundos, uma espera é por um evento ou um subfluxo não pode ser inspecionado, ele diz Sem testar e dá o motivo.De propósito
- Obter um workflow escrito por um modelo sem um provedor de IA: sem chave definida o app recorre à correspondência de palavras-chave e diz “Feito sem modelo: não há chave de IA configurada, então isto veio de palavras-chave.”Precisa de rede
- Salvar um workflow gerado que o linter rejeita: “Corrija isto antes de guardar: este workflow não está pronto.”De propósito
O agente do chat e os workflows
Duas coisas diferentes. Um workflow que você marca como Disponível para o agente de IA e mantém ligado é anunciado ao chat como uma ferramenta própria, workflow__<name>__<últimos 6 caracteres do id>, com uma descrição montada a partir dos passos (ela avisa dos irreversíveis) e um schema de entradas montado a partir das entradas declaradas. E seis ferramentas de gestão estão sempre lá, com ou sem workflows expostos.
| Ferramenta | O que faz | Plano |
|---|---|---|
workflow__list | Lista os seus workflows (até 25) com gatilhos, se estão ativados e como foi a última execução; pode filtrar. | Free |
workflow__get | Devolve um workflow completo. Parâmetros secretos aparecem como [secret, not shown]. Um workflow com mais de 20 000 caracteres é recusado, não cortado. | Free |
workflow__runs | O histórico de um workflow, o mais novo primeiro (5 por padrão, até 20), com o último erro e até 5 passos falhados. | Free |
workflow__run | Executa um workflow agora. Recusa um que está desligado, valida as entradas e respeita a permissão de passos irreversíveis. | Free |
workflow__create | Cria um workflow a partir de um documento. Ele é validado antes e nasce desligado mesmo que o modelo o peça ligado. | Pro |
workflow__update | Altera campos de um workflow existente. | Pro |
Você pode
- Perguntar ao agente quais workflows rodam quando você faz push, ou por que o backup da noite passada falhou: ele lê com
workflow__list,workflow__geteworkflow__runs, que são gratuitos. - Pedir que ele rode um com
workflow__run: ele valida as entradas contra as que o workflow declara e respeita a permissão de passos irreversíveis que você deu (Permitir à IA). - Com o Pro, pedir que ele crie ou altere um:
workflow__createeworkflow__update. As três ferramentas que escrevem passam pela folha de confirmação do agente.
Você não pode, e por quê
- Criar ou alterar workflows pelo chat no Free: o modelo recebe uma recusa que diz para avisar você, e você vê um aviso (“… precisa do PocketCode Pro, por isso essa ação não foi executada.”) com um botão Melhorar. O recurso do plano se chama Workflows pelo chat.Pro
- Deixar o agente mudar a nova tentativa, os tempos limite, a condição Quando ou a retenção de um workflow: a IA não consegue defini-los, e uma atualização mantém os ids dos passos, as permissões, as etiquetas e a retenção.De propósito
- Usar Disponível para o agente de IA como controle de acesso: ele só decide se um workflow é anunciado como ferramenta própria.
workflow__runpode rodar qualquer workflow ligado, pelo nome.De propósito
Marketplace
O Marketplace tem um tipo de recurso Workflows, mas hoje um workflow não pode ser instalado por ele, e o app não tem como publicar um. Para compartilhar um workflow, use um arquivo ou um link (veja Exportar, importar e links).
Você pode
- Filtrar o Marketplace pelo tipo Workflows e ler a página de um recurso desse tipo.
- Compartilhar o seu com Partilhar como ficheiro, ou hospedar um
.pcwf.jsonnum endereço https e enviar um linkpocketcode://workflows/import?url=….
Você não pode, e por quê
- Instalar um workflow do Marketplace: na página de um recurso de workflow o botão de instalar fica desativado (Requer runtime WASM), igual a um plugin, embora o motor já saiba verificar e instalar um.Ainda não
- Publicar um workflow no Marketplace: não há botão e o app não consegue enviar nada. O catálogo é publicado pela equipe por um pull request que o CI valida e assina.De propósito
Free e Pro
O motor é gratuito. O que custa dinheiro é restrito, e cada item é um limite que você pode alcançar de fora deste módulo. Os preços estão em Planos e preços.
| Recurso | Free | Pro |
|---|---|---|
| 25 gatilhos, 15 ações, sete tipos de passo, modelos, o editor, o linter e testes de passo | Sim | Sim |
| Agendamento (WorkManager, cron, condições do dispositivo, recuperação de execução perdida) | Sim | Sim |
Segredos criptografados, permissões por workflow, histórico e Atividade, exportar e importar .pcwf.json | Sim | Sim |
Disponível para o agente de IA, e o chat executando os seus workflows (workflow__run, workflow__list, workflow__get, workflow__runs) | Sim | Sim |
| Gerar por prompt e Alterar com IA neste módulo | Sim, com o seu próprio provedor de IA | Sim, com o seu próprio provedor de IA |
O chat de IA criando ou alterando workflows (workflow__create, workflow__update) | Não: o modelo recebe uma recusa e você vê um aviso com Melhorar | Sim (Workflows pelo chat) |
| O passo Disparar deploy enquanto um deploy do mesmo projeto está em andamento (na fila, compilando ou implantando) | Não: 1 em andamento por projeto (“Faça upgrade para disparar outro deploy ativo”) | Sim, sem limite |
| Sincronização de definições de workflow entre os seus dispositivos (Cloud Sync, o grupo Workflows) | Não | Sim |
Atalhos de teclado
Funcionam só enquanto o editor está aberto e num teclado físico. Podem ser alterados em Configurações.
| Tecla | O que faz |
|---|---|
Ctrl+S | Salvar. |
Ctrl+Z / Ctrl+Shift+Z | Desfazer / Refazer. |
Ctrl+Enter | Testar agora: simula o workflow. |
Ctrl+D | Duplicar o passo selecionado (Ctrl+Shift+D na predefinição do IntelliJ). |
Delete | Excluir o passo selecionado. |
Ctrl+↑ / Ctrl+↓ | Mover o passo selecionado para cima ou para baixo (Ctrl+Alt+↑ / Ctrl+Alt+↓ na predefinição do Atom). |
Os quatro últimos agem sobre o passo selecionado: toque no lápis de um cartão para selecioná-lo.
Privacidade e segurança
Os workflows rodam no seu dispositivo; o que sai dele é aquilo para o que você aponta um passo.
- Onde fica guardado. As definições ficam num banco de dados local no dispositivo, um arquivo por conta. Com o Pro, o Cloud Sync pode copiar as definições entre os seus dispositivos (o grupo Workflows); execuções, agendamentos, saídas fixadas e segredos nunca são sincronizados.
- Segredos. Ficam criptografados no dispositivo, um conjunto por conta (chave do Android Keystore, AES-256-GCM), nunca são mostrados de novo, não são resolvidos numa simulação, não viajam num arquivo exportado e são mascarados como
•••quando uma execução é gravada no histórico (um valor com menos de 4 caracteres não pode ser mascarado). - Permissão de passos irreversíveis. A resposta a Ativar mesmo assim e Permitir à IA é lembrada só no dispositivo, uma vez por workflow.
- O que um workflow pode fazer. Um workflow pode executar comandos e gravar arquivos com as permissões que você deixou abertas; as permissões não são um sandbox, e a lista de domínios não impede um passo de IA, deploy ou git.
- O que sai do dispositivo. Pedido HTTP, Disparar deploy, Operação git (push e pull) e os passos de IA vão para os serviços que você configurou ou os endereços que escreveu. Um passo de IA envia o prompt e o contexto ao seu provedor com a sua própria chave.
- Importações. Um arquivo ou um link sempre chega desligado, com uma prévia e o resultado do linter; um link precisa ser
https, não pode trazer credenciais nem apontar para o dispositivo, não segue redirecionamentos e não baixa nada até você apertar Baixar. - O que outros apps enviam a você. Texto e arquivos compartilhados chegam como dados, nunca como instruções, e o app sempre mostra o que foi recebido e qual workflow o recebe.
- Exportações. Só os parâmetros declarados como segredo são esvaziados; cabeçalhos HTTP e comandos viajam como você os digitou. Confira o arquivo antes de compartilhar.
Limitações
Os limites mais importantes, cada um com o seu motivo. Os limites específicos de uma tela estão na seção dessa tela.
- O chat não pode criar nem alterar workflows no Free, e o passo Disparar deploy falha no Free enquanto um deploy desse projeto já está em andamento.Pro
- As definições só sincronizam entre dispositivos com o Pro (Cloud Sync).Pro
- As execuções agendadas passam pelo WorkManager: não mais que a cada 15 minutos, sem alarmes exatos, e o Doze ou a economia de bateria podem atrasá-las (nunca cancelá-las).Google Play
- As execuções em segundo plano dependem de um serviço em primeiro plano; a partir do Android 12 o sistema pode recusá-lo quando o app está em segundo plano, e a execução segue sem essa proteção.Google Play
- Só as 5 primeiras execuções simultâneas recebem uma notificação de progresso; o botão rápido é opcional e o Android decide quantos atalhos um launcher mostra.Dispositivo
- O armazenamento de segredos pode não abrir depois de você restaurar o celular ou mudar o bloqueio de tela; nada é apagado.Dispositivo
- Projeto fechado e A IA terminou o seu turno nunca disparam: nada no app os emite.Ainda não
- Ao fazer commit só dispara para commits feitos em Projects, não para os do painel Controle de código do editor nem para os do chat de IA.Ainda não
- Os agendamentos não têm seletor de fuso horário, e não há notificação automática quando uma execução falha.Ainda não
- Workflows não podem ser instalados do Marketplace, e o app não consegue publicar um.Ainda não
- Uma execução que estava em andamento quando o sistema matou o app não deixa linha no histórico, e o log do shell de uma execução terminada não é guardado.De propósito
- Sem canvas de grafo, switch de N vias nem junção livre, sem edição de um agendamento, sem
?,L,#no cron, e só três intervalos como predefinições.De propósito - Até 6 gatilhos por workflow, 8 condições por filtro, 8 etiquetas por workflow, 40 passos listados numa prévia de importação e um arquivo de 512 KB.De propósito
- Limites do motor: 8 execuções por vez em todo o app, 16 esperando por até 120 segundos, 10 execuções de evento na fila por workflow, ciclos de até 10 000 voltas e 16 ao mesmo tempo, subfluxos de 5 níveis, uma Espera por um evento de 5 minutos por padrão, e uma mensagem de erro de um Tentar / se falhar limitada a 4 096 caracteres.De propósito
- Saídas dos passos: um corpo de resposta HTTP de até 128 KiB, a saída do shell de até 64 KB, uma leitura de arquivo de até 128 KiB, e cada passo guarda no máximo 32 KiB de saída no histórico.De propósito
- A tela de atividade mostra até as 500 execuções mais recentes; o histórico que você guarda por workflow é de 1 a 1 000 execuções e de 1 a 365 dias.De propósito
- Os deploys vão só para
render,netlify,digitaloceanerailway, e Consultar base de dados chega aneon,supabase,turso,upstash,cloudflare(D1) e às suas conexões PostgreSQL remotas guardadas.Terceiros - Gerar por prompt e Alterar com IA precisam de um provedor de IA com chave; sem um, recorrem à correspondência de palavras-chave.Precisa de rede
Solução de problemas
Mensagens reais do app, com o que significam.
Hoje ninguém emite PROJECT_CLOSED na aplicação, por isso este workflow não vai disparar.
O gatilho está no menu, mas nada o emite. Escolha outro gatilho: Projeto fechado e A IA terminou o seu turno nunca disparam.
Sem condições: este gatilho dispara com cada evento do seu tipo.
Não é um erro: o gatilho não tem filtro. Adicione uma condição se quiser só alguns eventos.
Um workflow que eu liguei nunca roda
Confira se Ativado está ligado, se o gatilho dele realmente tem um emissor e um filtro correspondente, se ele não está sendo pulado por Ignorar o novo enquanto outra execução roda, e se as entradas obrigatórias têm valores padrão (um evento, um agendamento ou um atalho não têm a quem perguntar).
Nenhum workflow ativo está a escutar isto. Adiciona o gatilho no editor de workflows.
Você compartilhou algo com o PocketCode e nenhum workflow ligado tem Texto partilhado para o PocketCode nem Ficheiro partilhado para o PocketCode. Adicione o gatilho e ligue o workflow.
… precisa antes de um valor
Um atalho, botão ou compartilhamento tentou iniciar um workflow com uma entrada obrigatória sem valor padrão. Dê um valor padrão à entrada, ou execute-o pelo módulo.
Obrigatórias sem valor por omissão: … Uma execução agendada não pode arrancar: o agendador não tem a quem perguntar.
Um agendamento não consegue perguntar entradas a você. Dê um valor padrão a toda entrada obrigatória.
Expressão cron inválida
Um cron tem cinco campos: min hour day month weekday. ?, L, #, um passo sobre um intervalo e um campo de ano não são aceitos.
Pede cada 5 min, mas corre cada 15 min: é o mínimo que o Android permite.
Um intervalo abaixo de 15 minutos é elevado a 15. Um cron abaixo desse ritmo recebe “abaixo de 15 minutos o Android não garante esse ritmo em segundo plano”.
Os workflows agendados precisam de atenção
O aviso diz o que o Android respondeu: As notificações do PocketCode estão desligadas, “O canal «Workflows · avisos» está bloqueado”, ou “O PocketCode está sujeito à otimização de bateria”. Toque em Abrir definições. O aviso não pode ser dispensado; some quando a causa some.
permiso denegado (…): … Se cambia en «Permisos», dentro de los ajustes del workflow.
Um passo foi recusado pelas permissões do workflow (a mensagem está em espanhol em todos os idiomas). Abra Definições do workflow e Permissões e libere a rede, a gravação ou os comandos, ou adicione o domínio.
Faça upgrade para disparar outro deploy ativo
No Free um passo Disparar deploy falha enquanto um deploy do mesmo projeto ainda está em andamento (na fila, compilando ou implantando); o limite é 1. Espere terminar, ou assine o Pro.
la consulta modifica datos (…) y el paso no tiene «allowWrites» activado
Um passo Consultar base de dados tem verbos de escrita e allowWrites está desligado (a mensagem está em espanhol em todos os idiomas). Ligue allowWrites só se for isso mesmo que você quer.
Isso não é um arquivo de workflow do PocketCode. Escolha um arquivo .pcwf.json.
O arquivo não é um workflow. As outras duas mensagens são “É um arquivo de workflow, mas está danificado e não pode ser lido. Peça outra cópia a quem o enviou.” e “Este arquivo foi escrito por uma versão mais nova do PocketCode (formato …). Atualize o aplicativo para abri-lo.”
Esse endereço manda você para outro lugar: …. Não foi seguido; confirme o novo endereço apenas se confiar nele.
Um link de importação redirecionou para outro endereço. Confirme o novo endereço apenas se confiar nele.
Não foi possível abrir o armazenamento cifrado neste dispositivo
O armazenamento de segredos não abre depois de restaurar o celular ou mudar o bloqueio de tela. Nada foi apagado.
Atenção: este valor tem menos de 4 caracteres, por isso NÃO será tapado com ••• no histórico de execuções. Se um passo o imprimir, fica ali legível.
O segredo é salvo, mas se um passo o imprimir, ele continua legível no histórico de execuções. Use um valor mais longo.
O workflow já não existe: esta execução não pode ser repetida.
O workflow foi apagado. As execuções de um workflow apagado ainda podem ser lidas em Atividade, mas não repetidas.
O log da shell não fica no histórico: só se vê enquanto a execução decorre.
Acompanhe o log em Saída ao vivo enquanto a execução roda, ou grave o que precisar num arquivo com um passo.
Corrija isto antes de guardar: este workflow não está pronto.
As verificações do gerador acharam um erro. Abra o workflow no editor com Abrir no editor e corrija o que Problemas lista.
Sem testar: … Pode testá-lo você mesmo no editor.
O gerador não simulou o workflow porque uma simulação executa passos e ele não podia ter certeza de algum: um passo que não pode ser simulado (um deploy), esperas que somam mais de 10 segundos, uma espera por um evento ou um subfluxo em que não consegue olhar. Teste-o pelo editor.