Agentes administradores

Deixa um agente gerir e treinar outros com a ferramenta manage_agent, dentro de um âmbito can_manage dirigido.

Um agente pode administrar e treinar outros agentes. Com a ferramenta manage_agent define a persona, o modelo, as ferramentas e a memória de outro agente, ou cria agentes novos de raiz. A autoridade é uma lista de permissões dirigida, por agente, chamada can_manage, por isso podes ter vários administradores ao mesmo tempo, cada um com âmbito sobre um conjunto diferente de agentes.

O âmbito can_manage

can_manage O que significa
ausente, ou nil Apenas ele próprio. É o valor por omissão.
[] Ninguém, nem sequer ele próprio. Um agente de cliente trancado.
[a, b] Exatamente esses agentes. Inclui o próprio nome para o incluir a ele.
["*"] 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-se a si próprio
pepe agent add child --can-manage none

Tal como no encaminhamento, can_manage é uma lista dirigida e deliberadamente não é simétrica. Dar ao boss autoridade sobre o sales não concede ao sales nada sobre o boss. A autoridade só flui no sentido em que a escreveste, e é isso que te permite colocar um agente trancado, virado para o cliente, à frente de um administrador sem que o agente de cliente consiga reconfigurar o administrador nem a si próprio.

O que o manage_agent faz

Ação O que faz
list Lista os agentes no âmbito.
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 ligação de modelo.
set_utility_model Define a ligação barata onde correm as tarefas menores do agente alvo, como dar nome a uma conversa. Um valor vazio desliga isto, e as tarefas passam a ser feitas sem modelo.
set_flag Liga ou desliga um interruptor do agente alvo (on/off): trust_untrusted_content (deixar que ele atue sobre o que estranhos enviam), exempt_message_limit, midrun_fold (deixar uma correção a meio do turno direcionar o turno em curso em vez de esperar sempre; usa o triage_model se existir, senão o próprio modelo do agente — uma chamada extra por mensagem a meio do turno), commitments (reparar num seguimento declarado depois de cada turno e acompanhá-lo, sem que lhe seja pedido), session_search_project_wide (deixar o session_search ver todas as conversas do projeto do agente alvo, não apenas as do próprio chamador — vê Busca de sessões; desligado é o correto para um agente que fala com vários clientes finais diferentes), ou capability_nudge (deixar que mencione uma funcionalidade relacionada - Watches, tarefas agendadas, Goals, uma skill instalada - numa frase curta logo depois de ajudar com algo, quando esta realmente se aplica). Ligar o trust_untrusted_content ou o session_search_project_wide não pode ser feito a partir de uma execução que ela própria ingeriu conteúdo de fora, por isso um documento injetado não consegue virar nenhum dos dois.
add_tool Concede mais uma ferramenta ao agente alvo.
remove_tool Revoga uma ferramenta do agente alvo.
remember Acrescenta um facto à memória do agente alvo.

Não precisa dos nomes técnicos das flags. O set_flag é conduzido pelo modelo, por isso pede com as suas palavras (“deixa o agente de atendimento atuar nos ficheiros que os clientes enviam”, “para de limitar as mensagens deste agente”) e ele escolhe o interruptor certo.

A persona e a memória vivem no workspace do agente alvo. As ferramentas e o modelo vivem na entrada dele no ficheiro de configuração.

A barreira de permissão

manage_agent é uma ferramenta de risco, por isso cada utilização é autorizada através da barreira de permissão. O agente propõe a alteração, tu aprovas, e só então ela é escrita. Um agente só pode mexer nos agentes dentro do seu próprio âmbito can_manage, e um pedido para administrar algo fora desse âmbito é recusado.