Agentes administradores
Com a ferramenta manage_agent, um agente treina e gerencia outros dentro de um escopo can_manage direcionado.
Um agente pode administrar e treinar outros agentes: a ferramenta manage_agent deixa
ele definir a persona, o modelo, as ferramentas e a memória de outro agente, ou criar
agentes novos do zero. Essa autoridade vem de uma lista de permissões direcionada, por
agente, chamada can_manage, o que permite manter vários administradores ao mesmo
tempo, cada um respondendo por um conjunto diferente de agentes.
O escopo can_manage
can_manage |
O que significa |
|---|---|
ausente, ou nil |
Apenas ele mesmo. É o padrão. |
[] |
Ninguém, nem ele mesmo. Um agente de cliente trancado. |
[a, b] |
Exatamente esses agentes. Inclua o próprio nome para incluir a si mesmo. |
["*"] |
Todos os agentes. Um superadministrador explícito. |
# boss passa a administrar o "sales"
pepe agent manage boss sales
# um superadministrador sobre todos os agentes
pepe agent manage boss "*"
# um agente trancado, que não pode alterar a si mesmo
pepe agent add child --can-manage none
Assim como o roteamento entre agentes, can_manage é direcionado, e de propósito não é
uma via de mão dupla: dar ao boss autoridade sobre o sales não devolve ao sales
nada sobre o boss. A autoridade corre só no sentido em que foi escrita, e é exatamente
isso que permite pôr um agente trancado, voltado ao cliente, na frente de um
administrador sem correr o risco de esse agente reconfigurar o administrador, ou a si
mesmo.
O que o manage_agent faz
| Ação | O que faz |
|---|---|
list |
Lista os agentes dentro do escopo. |
get |
Lê a configuração de um agente. |
create |
Cria um agente novo. |
set_persona |
Reescreve o prompt de sistema do agente alvo. |
set_model |
Aponta o agente alvo para outra conexão de modelo. |
set_utility_model |
Define a conexão barata em que rodam as tarefinhas do agente alvo, como dar nome a uma conversa. Deixar vazio desliga isso, e as tarefinhas passam a acontecer sem modelo nenhum. |
set_flag |
Liga ou desliga (on/off) um interruptor do agente alvo: trust_untrusted_content (deixar que ele aja sobre o que estranhos mandam), exempt_message_limit, midrun_fold (deixar uma correção no meio do turno redirecionar o turno em andamento, em vez de sempre esperar o próximo; usa o triage_model, se houver, senão o próprio modelo do agente, ao custo de uma chamada extra por mensagem no meio do turno), commitments (perceber sozinho um follow-up prometido ao fim de cada turno e passar a acompanhá-lo), session_search_project_wide (deixar o session_search enxergar todas as conversas do projeto do agente alvo, não só as do chamador; veja Busca de sessões — desligado é o certo para um agente que atende vários clientes finais diferentes), ou capability_nudge (deixar que ele mencione, numa frase curta logo após ajudar com algo, uma funcionalidade relacionada que realmente se aplique: Watches, tarefas agendadas, Goals, uma skill instalada), ou skill_learning (deixar que ele ofereça, sem ninguém pedir, guardar como skill um procedimento que acabou de descobrir, ou corrigir uma skill que ele seguiu e que o levou para o lugar errado; ele só oferece, e não escreve nada sem um sim). Ligar trust_untrusted_content ou session_search_project_wide é algo que não pode partir de uma execução que ela mesma já ingeriu conteúdo externo, então um documento injetado nunca consegue virar nenhum dos dois sozinho. |
add_tool |
Concede mais uma ferramenta ao agente alvo. |
remove_tool |
Revoga uma ferramenta do agente alvo. |
remember |
Acrescenta um fato à memória do agente alvo. |
Você não precisa saber o nome técnico de cada flag: o set_flag é conduzido pelo
próprio modelo, então basta pedir com suas palavras (“deixa o agente de atendimento
agir nos arquivos que os clientes mandam”, “para de limitar as mensagens desse
agente”) que ele acha o interruptor certo.
A persona e a memória moram no workspace do agente alvo. As ferramentas e o modelo ficam na entrada dele dentro do arquivo de configuração.
A barreira de permissão
Como manage_agent é uma ferramenta de risco, todo uso dela passa pela barreira de
permissão: o agente propõe a mudança, você aprova, e só depois disso ela é gravada. Um
agente só consegue mexer nos agentes que estão dentro do próprio escopo can_manage, e
um pedido para administrar algo fora desse escopo é recusado de cara.