↓ Ir para o conteúdo principal

Tarefas

Versão documentada: v0.1.8

Tradução da página original em inglês, que é a referência se algo estiver diferente.

Uma tarefa é um objetivo com os critérios que dizem que ela está pronta, guardada neste computador, que o Vults pode passar para um agente trabalhando num clone só dele. A aba Tasks do Nest as lista (O Nest).

Guardando uma tarefa
#

/task no chat guarda uma tarefa numa mensagem só, mandada para nenhum modelo: o objetivo na primeira linha, e depois uma linha para cada critério que diz que ela está pronta, começando com -:

/task Fix the flaky login test
- passes 20 runs in a row
- no sleep added

Numa linha só, done when: começa os critérios, separados por ;. O roost dela é o repositório da pasta da conversa. A aba Tasks do Nest lista as tarefas, as que faltam primeiro, com cada critério para marcar, quem trabalha nela (você, o Zeca ou um agente), em que pé está (To do, Doing, Blocked, Done, Dropped) e quanto custou depois que o Vults começar sessões para ela. New task cria uma lá também. Com o conector do GitHub ligado, uma tarefa num repositório do GitHub ganha Open an issue: no seu clique, o seu gh abre uma issue com o objetivo e os critérios, e a tarefa fica ligada a ela. Qualquer tarefa pode se ligar a uma issue que você já tem: #12 (no repositório do GitHub dela) ou o endereço da issue, e depois Link. As tarefas ficam no vults.sqlite, neste computador.

Delegando
#

/delegate cria uma tarefa do mesmo jeito e a começa na hora no agente que o roteador escolhe, e o card da tarefa diz por quê. A regra do próprio projeto escolhe primeiro (/delegate default codex, ou claude, digitado numa conversa nesse projeto; /delegate default none a apaga); sem ela, o Claude Code. Se o plano desse agente passa de 85% e o do outro está, que se saiba, abaixo disso, a tarefa vai para o outro. Quando um projeto tem 10 tarefas terminadas de um tipo (uma correção, testes, docs, uma funcionalidade), o agente que mais terminou delas ali substitui a regra para esse tipo, mas os 85% continuam valendo. Uma tarefa conta para o agente dono dela quando é marcada como feita ou abandonada.

Começando um agente numa tarefa
#

Start with Claude Code trabalha numa tarefa que está num repositório. O Vults faz para a tarefa um clone próprio, num branch só dela (vults/task-12), dentro da pasta de dados do Vults: um clone --shared, que lê os objetos do seu repositório mas nunca os escreve. Ele começa o Claude Code ali com o objetivo e os critérios da tarefa, orientado a fazer commit nesse branch e nunca dar push. Ele roda no sandbox do Claude Code (bubblewrap): não começa sem ele, todo comando continua perguntando, e ele só escreve no clone dele e nas pastas temporárias, nunca no seu repositório, nos branches, nos hooks ou na config dele. Comandos que você tirou do sandbox nas suas próprias configurações do Claude Code continuam rodando fora dele, cada um perguntando antes. Ele lê as suas próprias configurações, então aparece no bando como qualquer sessão e as permissões dele são cards da ilha, respondidos por você, pelas suas regras ou pelas suas políticas. Duas tarefas rodam lado a lado sem mexer nos arquivos uma da outra. Quando o turno acaba, o Vults traz o branch da tarefa, e só ele, para o seu repositório, sem rodar nada do clone; What it said last embaixo da tarefa guarda o fim da resposta, e Go on continua a mesma sessão. Start fresh passa a tarefa para uma sessão nova, quando a antiga já cresceu demais: a sessão antiga escreve um pacote de contexto (Objective, Constraints, Done, In progress, Decisions, Files, Failures, Next), o Vults põe o que sabe com certeza (o objetivo, quais critérios estão marcados, os arquivos mudados no branch), e a sessão nova começa só desse pacote. O pacote fica embaixo da tarefa como Handoff notes; se a sessão antiga não escreve nenhum, nada é passado adiante e ela mantém a sessão. Stop pede para o turno parar, espera e então o encerra; só uma sessão que o Vults começou pode ser parada, e uma tarefa rodando não pode ser apagada. O que ela custou entra na tarefa. Remove its folder traz o branch de volta e remove o clone; trabalho que nunca teve commit nele vai junto, então pergunta duas vezes.

Codex
#

Start with Codex faz o mesmo com o Codex, no sandbox dele (workspace-write: o clone dele e as pastas temporárias). O Codex pede aprovações pelo próprio canal: o Vults transforma cada uma no card da ilha que o hook dele mandaria (o comando inteiro, ou os arquivos e a contagem de linhas de uma edição; uma chamada que ele não consegue nomear inteira é um não), então as suas regras, políticas e o telefone respondem do mesmo jeito, e uma execução parada tira o card que esperava. Numa tarefa com sessão, Hand off to Codex (ou Hand off to Claude Code) é o Start fresh no outro agente: a sessão escreve o pacote, e o outro começa dele.

Outros agentes
#

Start with another agent… lista os agentes instalados aqui que falam o Agent Client Protocol: OpenCode, Qwen Code, Copilot CLI e Kimi Code. Um deles trabalha no clone da tarefa do mesmo jeito, logado com a própria conta. O Vults não oferece arquivos nem terminal próprios: ele usa as ferramentas dele e pede antes de cada uma que escreve, roda ou busca algo, e cada pedido é um card da ilha, respondido só daquela vez, nunca com o “sempre” do próprio agente. Uma mudança num arquivo fora do clone, ou no .git dele, um comando rodado em outro lugar, uma movimentação ou uma exclusão é um não sem card, assim como um arquivo alcançado por um link que aponta para fora do clone. O OpenCode roda toda ferramenta sem perguntar por padrão, e o Qwen Code e o Kimi Code podem rodar, pelas suas próprias configurações: o Vults inicia cada um com uma configuração, só para aquele processo ou sessão, que o faz perguntar (nunca escrita na config dele), e uma escrita ou um comando que ainda assim roda sem perguntar para o turno. Os hooks deles não perguntam nada nessas sessões, então uma chamada nunca mostra dois cards. Stop, Go on, Start fresh e Review funcionam como com o Codex; a revisão é do Codex. Testado com o OpenCode, e com o Kimi Code 2.1.1 contra um modelo de mentira; o Qwen Code e o Copilot CLI seguem o mesmo protocolo, mas ainda não foram testados com uma conta real.

Revisão
#

Review with Codex (ou with Claude Code) faz o outro agente revisar o trabalho de uma tarefa, no clone dela, como um revisor que não escreveu nada daquilo, num sandbox em que não escreve nada: ele roda os testes, lê o diff contra onde o branch começou, confere cada critério e lista o que está errado. O Codex usa o revisor próprio dele. Quando a revisão pede mudanças, os achados vão para a sessão da tarefa, que os corrige e faz commit, e a rodada seguinte revisa de novo, até três rodadas. Uma aprovação encerra; uma revisão sem veredito, ou uma terceira rodada que ainda pede mudanças, fica para você ler. A última revisão fica embaixo da tarefa, e quem marca a tarefa como feita continua sendo você.

Custo e um orçamento diário
#

O Vults conta o que os agentes dizem que custaram: cada turno de uma sessão que ele iniciou para uma tarefa ou um /continue (os dólares do Claude Code; o Codex informa só tokens, então as tarefas dele mostram os tokens) e cada sessão do Claude Code que ele acompanha, pela status line, contada a partir da primeira vez que o Vults a vê (o que ela custou antes fica fora do dia). Nada é estimado por tabela de preços. O chat do próprio Zeca, os resumos e o sono não entram nessa conta, e o orçamento não os para. Numa assinatura, os dólares são o que os tokens custariam a preços de API, que o seu plano não cobra; o Vults diz isso quando consegue saber (um plano que informa as janelas de uso). Cada tarefa mostra custo e tokens, cada roost em Activity → By project do Nest o custo de hoje e o total, e o topo da aba Tasks o de hoje.

Activity → Cost, no Nest, define um orçamento diário em dólares. Em 80% uma notificação avisa; quando ele acaba, outra avisa, e o Vults não inicia nenhuma sessão nova até o dia seguinte: nada de Start, handoff, review, /delegate ou /continue. É só isso. Ele nunca para uma sessão que está rodando, e nunca bloqueia nem atrasa um agente que você mesmo iniciou. Os custos ficam em vults.sqlite, neste computador; o Clear history não os apaga.