Skip to content

v0.4

Choose a tag to compare

@DavidLeati DavidLeati released this 05 Oct 18:39
· 97 commits to main since this release

A 0.4 traz duas mudanças. A governança vira configurável: cada projeto escolhe, gesto a gesto, se quem decide é o humano ou um árbitro agêntico. E a orquestração fica mais barata, com medida de onde o custo nasce e regras para cortá-lo.

Governança configurável

  • Novo tipo Governanca e novo papel arbitro (ontologia 1.3.0). O nó guarda a política global e só o humano o escreve.
  • Dois presets fixos, governanca_maxima (o padrão, tudo com o humano) e arbitragem_maxima, e uma política personalizada. O Projeto herda do global e pode sobrepor só parte dos gestos.
  • Os gestos que antes eram só do humano passam a seguir a política do projeto do alvo: responder Question, promover Aprendizado ao Setor ou ao Projeto, criar Constraint, excluir, fechar Goal, encerrar Sessão, liberar posse alheia e integração. Também entram na política o max_correcoes e a estrutura (estrito ou ilimitado).
  • Seguem sempre humanos: criar Goal, promover Aprendizado a global, configurar a governança e fazer push.
  • O Projeto de um nó sai só das arestas de contenção (contem, produz, decompoe). Quando o nó alcança mais de um Projeto, vale a política mais restritiva: humano vence árbitro, estrito vence ilimitado e vale o menor max_correcoes.
  • Um agente só conclui uma Task que tenha veredito vigente aprovado, de revisor, humano ou árbitro, ou um aceite legítimo pelo teto de correções. A propriedade veredito fica reservada a quem julga.
  • O árbitro não decide o que ele mesmo abriu e não promove o aprendizado que ele mesmo registrou.
  • MCP: a sessão árbitro passa a existir, junto com a ferramenta configurar_governanca. O protocolo e as vistas de Sessão, Task e Goal mostram a governança vigente.
  • Novo subagente graphow-arbitro. A raiz da orquestração o despacha para os gestos que a política lhe entrega, em vez de parar no humano.
  • A consolidação de aprendizados deixa de ser reaberta enquanto o consolidado espera a promoção.

Interface web

  • Nova aba Configurações, aberta pela engrenagem da faixa global. Ela tem escopo Global ou Projeto, cartões dos presets, uma tabela de gestos editável na personalizada com a origem de cada valor e a auditoria dos gestos do árbitro.
  • Liberar a posse de uma Task pelo inspetor ou pelo menu.
  • O Goal ganha o vocabulário de status.
  • Question respondida e Aprendizado promovido pelo árbitro levam o selo "pelo árbitro".
  • API: GET e PUT da governança global e por projeto, auditoria do árbitro e liberação de posse.

Custo da orquestração

A linha de base de 414 transcrições de um projeto extenso mostrou de onde vem o custo:

  • executores de 99 a 138 turnos, com 190 a 280 mil tokens de contexto por turno;
  • saídas de ferramenta acima de 2 mil caracteres que ficam na conversa até o fim (Bash 1954, expandir_no 1623, Read 993);
  • o executor mais caro leu 51 caminhos, 47 deles fora dos arquivos_alvo.

Medição

  • O Run grava a forma do contexto, lida da transcrição: o contexto por turno (média e pico), a maior saída de ferramenta, as saídas acima de 2 mil caracteres por ferramenta, as pausas acima de 5 min (o cache de prompt expira) e os caminhos lidos. Os caminhos contam o que passa por Read, Grep e Glob e os leitores de shell (cat, sed, grep, Get-Content).
  • O graphow orquestracao-medir ganha as linhas contexto: e mais caros:, com as leituras fora do alvo de cada Task.
  • Novo comando graphow transcricao-medir <arquivo-ou-pasta>. Ele mede transcrições .jsonl direto do disco e dá a linha de base sem escrever no banco.

Executor

  • Lê só os arquivos_alvo, as faixas apontadas pelas Evidence e até cerca de 5 consultas pontuais de símbolo.
  • Quando falta contexto, devolve o novo RESULTADO: falta_contexto com uma pergunta de localização. O condutor a resolve com o explorador, sem abrir Question.
  • Saída longa vai para arquivo.
  • expandir_no fica limitado a cerca de 5 por tarefa.
  • Espera de CI é uma chamada bloqueante só.

Condutor

  • Teto de tamanho por Task: cerca de 30 min e 60 a 80 turnos.
  • Operação longa é cortada por etapa: preparar, esperado, executar o lote e apurar.
  • O modelo é escolhido pela etapa, e a etapa mecânica vai em Sonnet.
  • Ao dividir uma Task, a original vira a última etapa, e quem depende dela espera a cadeia inteira.

Instrução do humano

  • Chega literal numa linha Humano: do despacho e é gravada no grafo (Note e Decision) antes do desenho.
  • Se ela muda o desenho, a rodada devolve decomposicao sem executar.
  • A linha de cota do harness passa a ser ancorada no início da linha, para uma cota citada nessa instrução não contar.

Custo visível

  • O condutor devolve a linha Custo: com minutos, ferramentas e tokens de cada filho, e marca ALERTA o executor acima de 40 min ou 100 ferramentas. A raiz repete isso ao humano.
  • O portão de higiene da raiz cai para 150 mil tokens de contexto, porque cada rodada deixa expirar o cache da raiz.

Atualização: copie de novo .agents/skills/graphow-orquestracao e .agents/agents/graphow-*.md para ~/.claude. O graphow-arbitro é novo.