Lektion 11 · Zusammenarbeit

Agent, der selbst Arbeit findet

„Der Agent findet Arbeit selbst.“ Zum Versenden von Bestellungen sind keine Menschen erforderlich, die Arbeit selbst wird dem Taskboard abgenommen.

⏱ ~12 Min · 📝 3 interaktive Widgets · 🧑‍💻 Basiert auf shareAI-lab · s11_autonomous_agents.py

Vom „Aufwachen“ bis zum „eigenen Job finden“

Der Teamkollege von s09 / s10 ist passiv: Jemand muss eine Nachricht über die Mailbox senden, bevor es zu funktionieren beginnt; Wenn es fertig ist, bleibt es im Leerlauf und wird wieder aufgeweckt.

S11s autonomer Teamkollege Aktiv: Es hört nicht wirklich auf, wenn es keine Arbeit gibt. Das Verzeichnis .tasks/ wird alle 5 Sekunden gescannt. Wenn eine nicht besessene Aufgabe erkannt wird, beansprucht claim_task diese und beginnt mit der Arbeit.

Teamkollegen-Lebenszyklus:
  +-------+
  | laichen |
  +---+---+
      |
      v
  +-------+
  | ARBEIT | <-- LLM-tool_use-Schleife
  +---+---+
      |
      | stop_reason != tool_use ODER tool_use("idle")
      v
  +-------+
  | LEERLAUF | Abfrage alle 5 Sekunden, insgesamt 12 Mal = 60 Sekunden Zeitüberschreitung
  +---+---+
      |
      +--> Neue Nachrichten im Posteingang?  → Arbeit wieder aufnehmen
      |
      +--> .tasks/ scannen, unbeansprucht gefunden → Anspruch → Arbeit fortsetzen
      |
      +--> 60s nichts wartet → Status = Herunterfahren, Thread wird beendet

Automatisch beanspruchen · „Bestellungen annehmen“ vom Taskboard

Kernfunktionen:

def scan_unclaimed_tasks() -> Liste:
    nicht beansprucht = []
    für f in sortiert(TASKS_DIR.glob("task_*.json")):
        task = json.loads(f.read_text())
        if (task.get("status") == "pending"
                und nicht task.get("owner")
                und nicht task.get("blockedBy")):
            unclaimed.append(task)
    Rückgabe ohne Anspruch

Drei Filter = ausstehend + kein Eigentümer + kein blockiert von. Beides ist unverzichtbar.

Die Anspruchsaktion selbst verfügt über eine Sperre (_claim_lock), um zu verhindern, dass zwei Agenten gleichzeitig dieselbe nicht beanspruchte Aufgabe übernehmen. Lesen Sie die Sperre erneut, prüfen Sie, ob der Eigentümer noch leer ist, und schreiben Sie dann die Markierung „in_progress“ + Eigentümer auf die Festplatte.

Simulieren Sie mehrere Agenten, um das Taskboard gleichzeitig zu scannen

Drei Teamkollegen befinden sich im Ruhezustand und drei Aufgaben warten darauf, übernommen zu werden. Klicken Sie auf „Nächste Runde scannen“, um zu sehen, wer sie zuerst erhält.

Wiederinjektion der Identität: Nach der Komprimierung wissen Sie immer noch, wer Sie sind

s06 erwähnte, dass auto_compact Nachrichten durch Zusammenfassungen ersetzen wird. Der autonome Agent kann nach stundenlanger Ausführung leicht ausgelöst werden – nach der Komprimierung kennt das Modell weder seinen Namen noch seine Rolle.

S11s Trick: Wenn Sie eine neue Aufgabe anfordern und len(messages) ≤ 3 (was anzeigt, dass sie gerade komprimiert wurde), fügen Sie automatisch den Identitätsblock in den Header ein:

if len(messages) <= 3:
    message.insert(0, {
        "role": "user",
        "content": f"<identity>Sie sind 'alice', Rolle: Coder, Team: my-team. Setzen Sie Ihre Arbeit fort.</identity>",
    })
    messages.insert(1, {"role":"assistant", "content": f"I am alice. Continuing."})

Dieser Modus wird Identity Reinjection genannt – er nutzt eine künstlich konstruierte Dialogrunde, um „dem Model zu sagen, wer es ist“, damit es sein Charaktergefühl wiedererlangen kann.

Interaktiv

Widget 1 · Aufgabenscanner · 3 Agenten übernehmen 3 Aufgaben

Alice / Bob / Charlie sind alle untätig. Klicken Sie auf „Scannen“, um in alphabetischer Reihenfolge zu sehen, wer die erste nicht beanspruchte Aufgabe beansprucht.

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

Widget 2 · Identitätsdrift · Erinnert sich der Agent nach der Komprimierung noch an sich selbst?

Vergleich der Antwort des Agenten auf „Wer sind Sie?“ vor und nach der Simulationskontextkomprimierung. Was passiert ohne erneute Identitätsinjektion?

没有 identity 重注入
有 identity 重注入
Interaktiv

Widget 3 · Autonom vs. Assistiert · Welche Rollen eignen sich für Autonomie?

Entscheiden Sie, ob diese Rolle einen autonomen Zyklus ausführen oder passiv im Standby-Modus bleiben soll. Denken Sie an „Kosten des Kontrollverlusts“ und „Häufigkeit menschlicher Eingriffe“.

答对 0 / 5