Lección 11 · cooperación

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.

⏱ ~12 min · 📝 3 widgets interactivos · 🧑‍💻 Basado en shareAI-lab · s11_autonomous_agents.py

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.

Interactivo

Widget 1 · Escáner de tareas · 3 agentes toman 3 tareas

alice / bob / charlie están todos inactivos. Haga clic en Escanear para ver quién reclama la primera tarea no reclamada en orden alfabético.

.tasks/ 目录
Teammates 状态
所有人都 idle,等着扫
Interactivo

Widget 2 · Deriva de identidad · Después de la compresión, ¿el agente todavía se recuerda a sí mismo?

Comparación de la respuesta del agente a "¿Quién eres?" Antes y después de la compresión del contexto de simulación. ¿Qué pasa sin una reinyección de identidad?

没有 identity 重注入
有 identity 重注入
Interactivo

Widget 3 · Autónomo vs Asistido · Qué roles son adecuados para la autonomía

Decida si desea dejar que esta función ejecute un ciclo autónomo o permanezca pasivamente en espera. Piense en el "costo de la pérdida de control" y la "frecuencia de la intervención humana".

答对 0 / 5