Wie ein mit agent-sdk-builder gebauter Agent aussieht

(1:1 aus der OpenHands-Session vom 2026-10-04 übernommen)

Der Skill ist ein Interview-Workflow: Er befragt dich Schritt für Schritt (je eine Frage), recherchiert dann die SDK-Doku, und erzeugt konkrete Artefakte — plan/SDK_PLAN.md (Implementierungsplan), ein Flow-Diagramm als HTML/JS-Seite und am Ende idealerweise eine einzige Python-Datei in output/ mit sichtbarem Terminal-Logging, konfiguriert über LLM_API_KEY und LLM_BASE_MODEL (Default openhands/claude-sonnet-4-5).

Der entstehende Agent hat wesentlich diese Struktur:

from openhands.sdk import LLM, Agent, Conversation, Tool
 
llm = LLM(model="openhands/claude-sonnet-4-5", api_key=os.getenv("LLM_API_KEY"))
agent = Agent(llm=llm, tools=[
    Tool(name=TerminalTool.name),      # Shell ausführen
    Tool(name=FileEditorTool.name),    # Dateien lesen/schreiben
    Tool(name=TaskTrackerTool.name),   # Aufgaben verwalten
])
conversation = Conversation(agent=agent, workspace=os.getcwd())
conversation.send_message("…")
conversation.run()

Wesentliche Eigenschaften und Funktionen eines so gebauten Agents:

  • Reasoning-Action-Loop (Agent): Der Agent denkt → ruft Tools auf → beobachtet Ergebnisse → denkt weiter, bis die Aufgabe fertig ist. Kein einseitiges Frage-Antwort-Chatbot-Muster, sondern autonomes, mehrstufiges Arbeiten.
  • Tool-Framework: Standardwerkzeuge (Terminal, Datei-Editor, Task-Tracker, Browser) oder eigene Tools als Python-Klassen mit Typ-Schema — das definiert, was der Agent tun kann.
  • LLM-Abstraktion (LLM): Provider-unabhängig — Modell umkonfigurierbar ohne Agent-Logik zu ändern; dazu Profilspeicher, Fallback-Modelle, Streaming, Routing.
  • Conversation-Orchestrierung: persistierbar (Save/Restore für Multi-Session), pausierbar, forkbar, parallel (async), mit Goals-Completion-Loop (Selbstfortsetzung bis ein Ziel nachweislich erreicht ist).
  • Kontext-Management: Condenser verdichtet die Historie bei Langläufern (Token sparen), Stuck-Detektor erkennt Festhänger, Metrics tracken Token/Kosten/Latenz.
  • Sicherheit: Confirmation-Policies und Security-Analyzer pro Action — z. B. „alles Read-only automatisch, Schreibzugriffe nur mit Bestätigung”.
  • Erweiterbarkeit: Skills (wie unsere marker-listen/pdf-feedback — strukturierte Prompts mit Triggern), MCP-Server als dynamische Tool-Quellen, Hooks für Lifecycle-Events, Sub-Agent-Delegation.
  • Deployment-Optionen: standalone (Skript auf demselben Rechner, wie im Hello-World) oder auf einem Agent Server (lokal, Docker-Sandbox, OpenHands Cloud) — derselbe Agent-Code, andere Ausführungsumgebung.

Kurz gesagt: Ein SDK-Agent ist kein „Chat-Wrapper”, sondern ein konfigurierbares autonomes Arbeitssystem — LLM + Werkzeuge + Persistenz + Sicherheitsschicht in einem Python-Objekt. Für uns spannend: Ein damit gebauter Agent könnte dieselben Skills laden wie ich (Skill-Klasse liest Verzeichnisse, unsere Symlink-Struktur passt also).


Quelle: OpenHands-Session „LaTeX-Vorlagen” (Agent Canvas, sulla), Nutzerfrage 2 vom 2026-10-04. SDK-Doku: https://docs.openhands.dev/sdk