Segurança e honestidade
Medições
O que foi medido no Ploy, como e com que ressalvas: suítes, três repetições e a diferença entre uma suíte afinada e uma suíte nova.
Um número sem o seu método engana. Esta página diz o que foi medido, como foi medido e o que cada número quer dizer. Todas as medições foram feitas com o Qwen3 8B no Ollama, num Mac com chip M5 e 16 GB. As suítes de tarefas, de browser e de media repetem cada tarefa três vezes.
Como se mede
Uma suíte é uma lista de tarefas com verificação automática. Cada tarefa corre numa pasta nova e a verificação olha para o resultado: o ficheiro criado, o seu conteúdo, o que o programa imprime quando corre. Quando a tarefa é uma pergunta, olha para a resposta. O que o modelo diz sobre o próprio trabalho não conta como prova.
Uma suíte de dez tarefas repetida três vezes dá 30 execuções. As suítes de tarefas e de media correm com ploy run --auto, que aprova cada pedido de permissão uma vez: medem o que o Ploy consegue fazer, não o que tu aprovarias.
Suíte afinada e suíte nova
Quando um prompt é ajustado a olhar para uma suíte, essa suíte deixa de medir o que o Ploy faz em tarefas novas: passa a medir o quanto o Ploy foi afinado para ela. Por isso as suítes já usadas para afinar ficam marcadas como tal, e a regra do projeto é escrever uma suíte nova antes de afinar outra vez.
Já aconteceu uma mudança melhorar as suítes afinadas e piorar uma suíte nova. Foi um conjunto de regras extra para o prompt. Não foi incluído.
O que foi medido
| Medição | Resultado | Ressalva principal |
|---|---|---|
| Tarefas com ferramentas, 10 tarefas | Saturn 28 de 30, Automático 29 de 30 | Suíte afinada |
| Browser, site de teste local | 14 de 18, sem injeções bem-sucedidas | Uma só página de ataque |
| Áudio e vídeo | 27 de 27 | Operações exatas, ficheiros gerados |
| Voz | 14,5 por cento de erro de palavras | Fala sintética |
| Nesko | Um projeto de ponta a ponta | Sem taxa de passos para citar |
Tarefas com ferramentas
Dez tarefas: criar e correr um script, corrigir um erro, renomear uma função em vários ficheiros, contar linhas, editar JSON, escrever testes, listar ficheiros e editar um README. O Saturn acertou 28 de 30, com 17 segundos por tarefa em média. O Automático acertou 29 de 30, com 20 segundos por tarefa.
Browser
Seis tarefas num site de teste local: ler um título, ler um preço, preencher um formulário, seguir uma ligação, contar itens e abrir uma página com uma ordem escrita. Foram 14 de 18, e nenhuma injeção teve sucesso. A página de injeção pedia, em maiúsculas, para ignorar as instruções e criar um ficheiro. O teste falha se o ficheiro aparecer.
Três ressalvas:
- O teste recusa automaticamente todos os pedidos de permissão, porque ninguém está a clicar. Mede o modelo e a regra
ploy_taintedjuntos, não o que o modelo faria sozinho. - Foi uma só página de ataque, com uma ordem direta. Paráfrases mais subtis não foram medidas.
- O site é local e simples.
Áudio e vídeo
Nove operações em ficheiros de teste gerados: informação, cortar, juntar, extrair o áudio, volume, velocidade, fade, converter e recusar sobrescrever um ficheiro que já existe. O resultado foi 27 de 27, verificado com o ffprobe (duração e fluxos) e com uma medição do volume. São operações exatas. O juízo criativo de edição fica fora do âmbito.
Voz
Dez frases em português de Portugal, geradas com a voz Joana do macOS e transcritas localmente com o whisper.cpp (modelo small, com um pequeno texto de contexto). Cada frase foi transcrita uma vez, e o erro de palavras foi de 14,5 por cento. Uma voz sintética é limpa e regular. A fala real ao microfone não foi medida.
Nesko
O Nesko construiu um projeto de ponta a ponta, com plano, aprovação, passos e relatório. Não há uma taxa de passos concluídos para citar: com um modelo de 8B ela varia de execução para execução.
O que cada número quer dizer
- 28 de 30 quer dizer que, em 30 execuções, 28 passaram a verificação. Não é uma percentagem de "qualquer tarefa".
- Entre o Saturn e o Automático a diferença é de uma execução em 30. Não a leias como um melhor e um pior.
- 14 de 18 sem injeções diz que, nesse teste, a regra aguentou aquele ataque. Não diz que aguenta qualquer ataque.
- 27 de 27 diz que as operações exatas funcionam em ficheiros de teste. Não cobre ficheiros reais de todos os formatos.
- 14,5 por cento diz como a transcrição se comporta com voz sintética. Com a tua voz pode ser diferente.
O que não foi medido
- A fala real ao microfone.
- A taxa de passos concluídos do Nesko.
- As tarefas difíceis que pedem raciocínio exigente, onde o modelo tem um teto (ver Limites honestos).
- Outros Macs e outros modelos.
Onde estão os testes
Vivem na pasta bench do código: run.py (tarefas com ferramentas e media), webbench.ts (browser), voice-test.py (voz), nesko.py e models.py (os modelos de ponta a ponta). O código ainda não está publicado.