Agente que encuentra trabajo por sí solo
"El agente encuentra trabajo por sí mismo". No se necesitan humanos para enviar pedidos, el trabajo se realizará desde el tablero de tareas.
De "que te despierten" a "encontrar tu propio trabajo"
El compañero de equipo de s09/s10 es pasivo: alguien necesita enviar un mensaje a través del buzón antes de que comience a funcionar; cuando termina, queda inactivo y se reactiva nuevamente.
Compañero de equipo autónomo del S11 Activo: En realidad, no se detiene cuando no hay trabajo. Escaneará el directorio .tasks/ cada 5 segundos; cuando vea una tarea sin dueño, claim_task la reclamará y comenzará a trabajar.
Ciclo de vida del compañero de equipo:
+-------+
| engendrar |
+---+---+
|
v
+-------+
| TRABAJO | <-- bucle de uso de herramienta LLM
+---+---+
|
| stop_reason! = uso_herramienta O uso_herramienta ("inactivo")
v
+-------+
| INACTIVO | encuesta cada 5 segundos, 12 veces en total = tiempo de espera de 60 segundos
+---+---+
|
+--> ¿Nuevas noticias en la bandeja de entrada? → reanudar el TRABAJO
|
+--> escanear .tasks/, encontrado no reclamado → reclamar → reanudar TRABAJO
|
+--> Años 60 nada esperando → estado = apagado, el hilo sale
Auto-reclamo · "Tomar pedidos" desde el tablero de tareas
Funciones principales:
def scan_unclaimed_tasks() -> lista: no reclamado = [] para f en ordenado(TASKS_DIR.glob("task_*.json")): tarea = json.loads(f.read_text()) if (task.get("status") == "pendiente" y no task.get("propietario") y no task.get("blockedBy")): no reclamado.append(tarea) devolución no reclamada
Tres filtros = pendiente + sin propietario + no bloqueado por. Ambos son indispensables.
La acción de reclamo en sí tiene un bloqueo (_claim_lock) para evitar que dos agentes tomen la misma tarea no reclamada al mismo tiempo: lea el bloqueo nuevamente, verifique si el propietario aún está vacío y luego escriba la marca "in_progress" + propietario en el disco.
Simule varios agentes para escanear el tablero de tareas al mismo tiempo
Tres compañeros de equipo están en estado inactivo y 3 tareas están esperando ser reclamadas. Haga clic en "Escanear la siguiente ronda" para ver quién lo recibe primero.
Reinyección de identidad·Aún sabes quién eres después de la compresión
s06 mencionó que auto_compact reemplazará los mensajes con un resumen. El agente autónomo se puede activar fácilmente después de funcionar durante horas; después de la compresión, el modelo no conoce su nombre ni su función.
Truco de S11: al reclamar una nueva tarea, si len(messages) ≤ 3 (lo que indica que acaba de ser comprimida), inserta automáticamente el bloque de identidad en el encabezado:
if len(mensajes) <= 3: mensajes.insert(0, { "rol": "usuario", "content": f"<identity>Eres 'alicia', rol: codificador, equipo: mi-equipo. Continúa tu trabajo.</identity>", }) mensajes.insert(1, {"rol":"assistant", "content": f"Soy Alice. Continuando."})
Este modo se llama reinyección de identidad: utiliza una ronda de diálogo construida artificialmente para "decirle al modelo quién es" para que pueda recuperar su sentido de carácter.