Skip to main content

Tasks-API

Aufgabenverwaltung für LLM-Agenten — Tasks erstellen, auflisten, aktualisieren, abschließen und löschen mit Prioritäten.


Tasks-API

Die Tasks-API gibt LLM-Agenten eine strukturierte Möglichkeit, mehrschrittige Aufgaben zu verfolgen. Tasks sind auf den aktuellen Mind beschränkt und bleiben über Sessions hinweg bestehen, sodass der Agent dort weiterarbeiten kann, wo er aufgehört hat.

Emergency (v1.42.0, Task 29a8d589, Michael #122782): emergency rangiert OBERHALB von critical. Emergency-Tasks MÜSSEN sofort einen Claim bekommen — ein ungeclaimter Emergency-Task löst eine automatische Chat-Warnung an @Hermes @Zeus aus (1x pro Task, auto_suggested_at-Guard). Das Board sortiert Emergency-Tasks immer zuerst, unabhängig vom gewählten Sortier-Modus.

Endpunkte

GET /mind/tasks

Alle Tasks des aktuellen Minds auflisten.

# All tasks
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/mind/tasks

# Filter by status
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/mind/tasks?status=pending"

# Feld-Reduktion (v1.44.19, task be0f9c80): Default OHNE description —
# Payload-Heilung 8,4 MB -> ~1,5 MB (3.100+ Tasks). Volltext-Details je Task
# weiterhin ueber GET /mind/task/:id.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/mind/tasks?fields=id,title,status,priority"

# Legacy-Vollmodus inkl. description:
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/mind/tasks?fields=all"

Feld-Reduktion (v1.44.19): Ohne ?fields= liefert der Endpoint alle Felder AUSSER description (Descriptions sind mehrfach-KB je Task und waren der Payload-Treiber fuer 8,4-MB-Antworten mit 5-25 s Latenz). ?fields=all liefert das volle Legacy-Payload; eine Komma-Liste (?fields=id,title,...) liefert exakt diese Felder — camelCase-Eingaben werden normalisiert, unbekannte Felder antworten 400 invalid_fields. Pagination via ?limit=N (1..2000) + ?offset=M mit has_more-Flag bleibt unveraendert.

Antwort:

{
  "tasks": [
    {
      "id": "task_001",
      "title": "Deploy v1.5.0",
      "description": "Push to production after CI green",
      "priority": "high",
      "status": "in_progress",
      "due_at": "2026-06-28T...",
      "created_at": "2026-06-27T..."
    }
  ]
}

POST /mind/task

Einen neuen Task anlegen.

curl -X POST https://synapse.schaefer.zone/mind/task \
  -H "Authorization: Bearer YOUR_MIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Update documentation",
    "description": "Add v1.5.0 changelog entries",
    "priority": "normal",
    "due_at": "2026-06-30T00:00:00Z"
  }'

GET /mind/task (Query-Parameter)

Einen Task via GET anlegen (für reine URL-Tools).

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/mind/task?title=Test+task&priority=high"

PUT /mind/task/:id

Einen bestehenden Task aktualisieren.

curl -X PUT https://synapse.schaefer.zone/mind/task/task_001 \
  -H "Authorization: Bearer YOUR_MIND_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "in_progress",
    "description": "Currently deploying, CI is green"
  }'

GET /mind/task/:id/complete

Einen Task als erledigt markieren.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/mind/task/task_001/complete

GET /mind/task/:id/delete

Einen Task dauerhaft löschen.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/mind/task/task_001/delete

Prioritäten

  • low — nicht dringend
  • normal — Standard
  • high — wichtig
  • critical — muss sofort erledigt werden

Statuswerte

  • pending — angelegt, nicht begonnen
  • in_progress — in Bearbeitung
  • done — abgeschlossen
  • cancelled — abgebrochen

Pattern: Task-getriebener Workflow

# At session start
tasks = list_tasks(status="in_progress")
if tasks:
    print(f"Resuming: {tasks[0].title}")

# Plan multi-step work
for step in plan:
    task = create_task(title=step)

# Update as you progress
update_task(task.id, status="in_progress")
# ... do work ...
update_task(task.id, status="done")

Nächste Schritte