Code-Steps (code_step)
Manche Logik ist zu spezifisch für einen compute-Operator, aber zu deterministisch, um einen LLM-Agent zu rechtfertigen: Abgleiche aus mehreren Quellen, maßgeschneiderte Geschäftsberechnungen, exotische Normalisierungen. Für diese Fälle führt der code_step-Knoten Code innerhalb einer Sandbox aus, ohne LLM-Aufruf und mit vorhersehbarer Ausgabe.
Der Code wird direkt bearbeitet, wie jedes andere Konfigurationsfeld, und läuft, sobald er gespeichert wird.
Das Ausführungsmodell
code_step führt Starlark aus — einen für Isolation entworfenen Python-Dialekt: kein Dateisystemzugriff, kein Netzwerk, keine beliebigen Imports, deterministisch, durch ein Zeitbudget begrenzt. Der Code sieht nur:
- Die Eingaben, die Sie ihm explizit zuordnen (
input_paths). - Die Werkzeuge, die Sie ihm aufzurufen erlauben (
allowed_tools).
Alles andere ist außer Reichweite. Ein Code-Step kann nicht auf eine Ressource zugreifen, die Sie ihm nicht übergeben haben.
Konfiguration
| Feld | Zweck |
|---|---|
| Code | Der ausgeführte Starlark-Quellcode, direkt bearbeitet. |
Eingaben (input_paths) | Variable → Selektor-Zuordnung. Nur diese Kontextschlüssel werden dem Code bereitgestellt. Interne Schlüssel (_*) werden abgelehnt. |
| Werkzeug-Allowlist | Die über tool(name, args) aufrufbaren Werkzeuge. Jeder Aufruf erbt die eigenen Schutzmechanismen des Werkzeugs (SSRF-Schutz, Abrechnung, Audit, Killswitch). |
| Ausgabeschlüssel | Wo das Ergebnis im Kontext abgelegt wird. Nachgelagerte Knoten lesen diesen Schlüssel. |
| Ausführungsbudget | Zeitobergrenze (ms), serverseitig gedeckelt. Ein Step, der sie überschreitet, wird unterbrochen. |
Wo die Sicherheitsgrenze liegt
Die Sprache ist nicht die Bedrohung: Starlark ist von Grund auf in einer Sandbox — von sich aus kann es weder eine Datei lesen, das Netzwerk erreichen noch endlos schleifen. Reine Berechnung ist harmlos.
Die einzige echte Fähigkeit ist die tool()-Brücke, und sie ist durch die zur Laufzeit durchgesetzte Allowlist begrenzt: Der Code kann nur die von Ihnen aufgelisteten Werkzeuge aufrufen, und jedes trägt seine eigenen Schutzmechanismen (SSRF-Schutz, Abrechnung, Audit, Killswitch). Genau dort — bei der Wahl der Werkzeuge — legen Sie fest, was ein Step tun darf.
Eine leere Allowlist = keine Fähigkeit zu Seiteneffekten: Der Step berechnet lediglich über seine Eingaben und produziert eine Ausgabe.
Wann verwenden
- Ja: deterministische Logik, die Sie präzise beschreiben können, die aber über die integrierten
compute-Operationen hinausgeht (mehrere Listen abgleichen, zusammengesetzte Geschäftsregeln, proprietäre Formate). - Nein: ein einfacher Filter, eine Aggregation oder Projektion → ein
compute-Operator genügt. - Nein: eine Aufgabe, die Urteilsvermögen oder offenes Schreiben erfordert → das ist ein Agent, kein Code.