So arbeitet der Code-Mode

Für: Administratoren, Entwickler und technische Projektpartner 6 Minuten Zuletzt geprüft: 02.11.2026

Im Code-Mode ruft dein Assistent die Werkzeuge nicht einzeln auf. Er schreibt ein kurzes Programm in TypeScript, das die Werkzeuge nacheinander aufruft, die Daten filtert und zählt und nur das Ergebnis zurückgibt. Die Zwischenstände landen nicht in seinem Kontext. Das spart viele Token, wenn eine Frage Dutzende Datensätze berührt.

Bevor du beginnst

Der API-Key muss im Code-Mode stehen, die Code-Ausführung muss auf deiner Instanz eingerichtet sein, und der Actor-User braucht das Recht „Programme über einen API-Schlüssel ausführen“. Wie du das einrichtest: Code-Mode einschalten und absichern.

Die fünf Werkzeuge

Ein Key im Code-Mode zeigt dem Assistenten nur diese Werkzeuge:

  • search_tools sucht Werkzeuge nach Begriffen, auf Wunsch nur in einer App. Mit stufe „typescript“ bekommt der Assistent die Deklaration als syncore.<app>.<werkzeug>(input).
  • code_ausfuehren führt ein Programm aus (programm und werkzeuge) oder startet einen Skill (skill und eingabe).
  • lauf_status zeigt den Stand eines Laufs: läuft, fertig mit Ergebnis, abgebrochen, oder mit Freigabe am Key: wartet, abgelehnt, verfallen.
  • skills_lesen zeigt die Skills, die die Verbindung starten kann, je App eine Übersicht oder einen Skill im Ganzen.
  • skill_vorschlagen schlägt das Programm eines fertigen Laufs als Skill vor. Mit ?nur=lesen fehlt dieses Werkzeug.

So läuft ein Programm ab

  1. Der Assistent sucht mit search_tools die passenden Werkzeuge, zum Beispiel „projekt list“ und „ticket list“, mit stufe „typescript“.
  2. Er schreibt den Rumpf einer async-Funktion und schickt ihn mit code_ausfuehren. In werkzeuge nennt er die Namen aus der Suche mit Punkt (projektsyn.projekt.list), im Programm ruft er sie mit Unterstrich auf (syncore.projektsyn.projekt_list).
  3. SynCore startet das Programm in einer eigenen Sandbox. Jeder Werkzeugaufruf kommt zurück zu SynCore und läuft dort mit den Rechten des Actor-Users, wie ein Einzelaufruf.
  4. Mit return gibt das Programm das Ergebnis zurück. Die Antwort nennt den Lauf (prl_…), den Stand liefert bei Bedarf lauf_status.

So sieht ein Programm aus, das offene Aufgaben je Projekt zählt:

const projekte = await syncore.projektsyn.projekt_list({ limit: 50 });
const ergebnis = [];
for (const p of projekte.data) {
  const aufgaben = await syncore.projektsyn.ticket_list({ filters: { projektId: p.id }, limit: 200 });
  ergebnis.push({ projekt: p.name, aufgaben: aufgaben.data.length });
}
return ergebnis;

Dazu werkzeuge: ["projektsyn.projekt.list", "projektsyn.ticket.list"]. Zurück kommt nur die kurze Liste, nicht die einzelnen Aufgaben.

Was ein Programm darf

  • Nur die genannten Werkzeuge. Ein Werkzeug, das nicht in werkzeuge steht, gibt es im Programm nicht.
  • Kein Netz, keine Dateien. Bereit stehen nur syncore und console.
  • Rechte wie der klassische Weg. Lesen, Anlegen und Ändern laufen sofort, Löschen nur, wenn am Key Löschen erlaubt an ist. Ist am Key unter Programme freigeben eine Person eingetragen, laufen Schreibaufrufe zuerst als Vorschau und erst nach ihrer Freigabe: Programme von Agenten freigeben.
  • Jeder Aufruf im Audit-Log. Als Quelle ist „code“ vermerkt, dazu der Lauf. Die Läufe selbst stehen in der App Automationen auf der Seite Programme.

Grenzen

GrenzeWert
Laufzeit je Programm60 Sekunden
Rechenzeit je Programm (Warten auf Werkzeuge zählt nicht)15 Sekunden
Werkzeugaufrufe je Programm200
Werkzeuge je Programm50
Länge des Programms100.000 Zeichen
Ergebnis an den Assistentengekürzt auf rund 6.000 Token
Listen je Aufrufhöchstens 200 Einträge, danach mit offset weiterblättern
Gleichzeitige Läufe2 je Mandant
Offene Läufe20 je Mandant, 5 je Key

Ein Programm, das eine Grenze überschreitet, bricht ab. Der Lauf steht dann auf Abgebrochen mit dem Grund.

Skills: bewährte Programme wiederverwenden

Ein Skill ist ein Programm mit Beschreibung und Eingabe, das dein Assistent starten kann, statt es neu zu schreiben. Vier liefert SynCore mit: Aufgaben anlegen und Zeiten buchen, Rechnung aus Zeiten, Berichte ziehen und CRM-Import mit Abgleich.

  1. skills_lesen ohne Angabe zeigt alle Skills, die die Verbindung starten kann. Mit { "app": "crm" } kommt die Übersicht einer App (Werkzeuge, Lesen und Schreiben, typische Abläufe), mit { "skill": "crm_import_abgleich" } ein Skill mit Eingabe-Schema und Programm.
  2. Gestartet wird ein Skill mit code_ausfuehren { "skill": "…", "eingabe": { … } }. Die Eingabe prüft SynCore gegen das Schema des Skills.
  3. Lief ein eigenes Programm gut, schlägt der Assistent es mit skill_vorschlagen als Skill vor. Gespeichert wird nur ein Vorschlag; übernehmen kann ihn nur ein Mensch: Skills übernehmen.
Ergebnis

Ein Skill schreibt wie jedes Programm: sofort mit den Rechten des Actor-Users oder, wenn am Key eine Person eingetragen ist, erst nach ihrer Freigabe.