Agente que encontra trabalho sozinho
"O próprio agente encontra trabalho." Não são necessários humanos para despachar pedidos; o trabalho será realizado no quadro de tarefas.
De “ser acordado” a “encontrar seu próprio emprego”
O companheiro de s09/s10 é passivo: alguém precisa enviar uma mensagem pela caixa de correio antes que ela comece a funcionar; quando terminar, ele fica inativo e é ativado novamente.
Companheiro de equipe autônomo do S11 Ativo: Ele realmente não para quando não há trabalho. Ele verificará o diretório .tasks/ a cada 5 segundos - quando encontrar uma tarefa sem proprietário, claim_task irá reivindicá-la e começar a trabalhar.
Ciclo de vida do companheiro de equipe:
+-------+
| desovar |
+---+---+
|
v
+-------+
| TRABALHO | <-- Loop tool_use do LLM
+---+---+
|
| stop_reason != tool_use OU tool_use("ocioso")
v
+-------+
| Ocioso | pesquisa a cada 5s, 12 vezes no total = tempo limite de 60s
+---+---+
|
+--> Novas notícias na caixa de entrada? → retomar o TRABALHO
|
+--> digitalizar .tasks/, encontrado não reclamado → reivindicação → retomar TRABALHO
|
+--> Anos 60, nada esperando → status = desligamento, thread sai
Reivindicação automática · "Aceitar pedidos" no quadro de tarefas
Funções principais:
def scan_unclaimed_tasks() -> lista: não reclamado = [] para f em classificado(TASKS_DIR.glob("task_*.json")): tarefa = json.loads(f.read_text()) if (task.get("status") == "pendente" e não task.get("proprietário") e não task.get("blockedBy")): não reclamado.append(tarefa) devolução não reclamada
Três filtros = pendente + sem proprietário + sem bloqueadoBy. Ambos são indispensáveis.
A própria ação de reivindicação tem um bloqueio (_claim_lock) para evitar que dois agentes capturem a mesma tarefa não reivindicada ao mesmo tempo - leia o bloqueio novamente, verifique se o proprietário ainda está vazio e, em seguida, grave a marca "in_progress" + proprietário no disco.
Simule vários agentes para verificar o quadro de tarefas ao mesmo tempo
3 companheiros de equipe estão inativos e 3 tarefas aguardam para serem reivindicadas. Clique em "Scan Next Round" para ver quem recebe primeiro.
Reinjeção de identidade · Você ainda sabe quem você é após a compressão
s06 mencionou que auto_compact substituirá mensagens por resumo. O agente autônomo pode ser facilmente acionado após horas de execução - após a compactação, o modelo não sabe seu nome ou função.
O truque do S11: Ao reivindicar uma nova tarefa, se len(messages) ≤ 3 (indicando que ela acabou de ser compactada), insira automaticamente o bloco de identidade no cabeçalho:
se len(mensagens) <= 3: mensagens.insert(0, { "função": "usuário", "content": f"<identity>Você é 'alice', função: codificadora, equipe: minha-equipe. Continue seu trabalho.</identity>", }) messages.insert(1, {"role":"assistente", "content": f"Eu sou Alice. Continuando."})
Esse modo é chamado de reinjeção de identidade - ele usa uma rodada de diálogo construída artificialmente para "dizer ao modelo quem ele é" para que ele possa recuperar seu senso de caráter.