Vigie qualquer processo

Algumas coisas correm durante horas sem ninguém a olhar: uma recolha noturna, um treino, uma migração, um pipeline de CI, um agente a abrir caminho por uma tarefa longa. O Progress Watch dá-lhes um sítio para reportar, e dá-lhe a si um sítio para olhar — mais uma notificação quando terminam.

Três comandos a partir de dentro do trabalho

Crie uma tarefa onde o trabalho começa, reporte contra ela à medida que avança, feche-a quando estiver feito. O do meio é a chamada que vai no seu ciclo, e é a única coisa que conhece os números.

Contagens, não percentagens: o ecrã mostra 1200 / 50000 pages, que lhe diz algo que 2.4% não diz. O total pode mudar à medida que um trabalho descobre mais que fazer — envie o número novo e a barra recalcula. A página CLI tem os três, prontos a colar.

Quando o processo não é seu para alterar, progresswatch run "python train.py" envolve-o por inteiro — cria a tarefa, deixa passar a saída intacta e fecha-a com o código de saída, por isso um trabalho que falha também o avisa. Reporta início e fim em vez de contagens, porque nada fora de um processo sabe quanto já vai.

Ou um pedido, a partir de qualquer coisa

Por baixo de tudo isto está um único pedido HTTP, e essa é toda a API. Não há SDK para instalar nem nada para importar, porque embrulhar um PUT não acrescentaria nada que não conseguisse escrever sozinho em menos tempo do que leva a ler a documentação.

A referência da API é a referência sobre a qual construir, e colar os exemplos de curl é a forma mais rápida de ver a coisa a funcionar antes de se comprometer.

Os agentes reportam o seu próprio trabalho

Um agente de IA parte um trabalho em passos e depois trabalha muito tempo sem nada para mostrar. Ligue um por MCP e ele ganha ferramentas para criar uma tarefa e reportar contra ela: uma tarefa para o trabalho, uma subtarefa por passo, atualizadas pelo caminho. O MCP não precisa de instalar nada em lado nenhum; para um cliente que não o fale, uma skill de agente ensina o mesmo através da CLI.

O agente decide quando vale a pena acompanhar e com que frequência reportar. As descrições das ferramentas dizem-lhe para que serve uma tarefa, não um horário a cumprir.

Sem contas

Um espaço é um contentor de tarefas, e o seu UUID é a credencial. Quem tiver a ligação pode ler e escrever; partilhar é dar a ligação a alguém. Não há nada para registar, nada onde entrar e nenhuma palavra-passe para perder — o que também significa que a ligação é a única forma de voltar a um espaço, por isso vale a pena guardá-la como um token de API.

O progresso não é guardado

O estado atual vive em memória e expira sozinho. Um recolhedor que reporta a cada segundo durante três meses não faz crescer nenhuma base de dados, e depois não há nada para limpar. A troca é deliberada: não há histórico nem gráficos, apenas o que está a acontecer agora.

O que não vai fazer

  • Devolver comandos. É um painel de partidas, não um orquestrador. Um processo reporta; nada lhe reporta a ele.
  • Guardar um registo. Uma linha, a última, por tarefa. Guardar registos é um problema resolvido e não é isto.
  • Aninhar mais do que um nível. Uma tarefa pode ter passos; um passo não.

Corra-o você mesmo

O servidor é de código aberto e alojá-lo é um contentor mais um Redis — veja o excerto de Docker para o arrancar e alojamento próprio para o correr como deve ser. O serviço alojado existe para que não tenha de o fazer, não porque o software fique coxo sem ele.

Nada para registar

Crie um espaço, guarde a ligação, e comece a reportar para lá a partir de qualquer coisa.

Criar um espaço