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.
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_toolssucht Werkzeuge nach Begriffen, auf Wunsch nur in einer App. Mitstufe„typescript“ bekommt der Assistent die Deklaration alssyncore.<app>.<werkzeug>(input).code_ausfuehrenführt ein Programm aus (programmundwerkzeuge) oder startet einen Skill (skillundeingabe).lauf_statuszeigt den Stand eines Laufs: läuft, fertig mit Ergebnis, abgebrochen, oder mit Freigabe am Key: wartet, abgelehnt, verfallen.skills_lesenzeigt die Skills, die die Verbindung starten kann, je App eine Übersicht oder einen Skill im Ganzen.skill_vorschlagenschlägt das Programm eines fertigen Laufs als Skill vor. Mit?nur=lesenfehlt dieses Werkzeug.
So läuft ein Programm ab
- Der Assistent sucht mit
search_toolsdie passenden Werkzeuge, zum Beispiel „projekt list“ und „ticket list“, mitstufe„typescript“. - Er schreibt den Rumpf einer async-Funktion und schickt ihn mit
code_ausfuehren. Inwerkzeugenennt er die Namen aus der Suche mit Punkt (projektsyn.projekt.list), im Programm ruft er sie mit Unterstrich auf (syncore.projektsyn.projekt_list). - 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.
- Mit
returngibt das Programm das Ergebnis zurück. Die Antwort nennt den Lauf (prl_…), den Stand liefert bei Bedarflauf_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
werkzeugesteht, gibt es im Programm nicht. - Kein Netz, keine Dateien. Bereit stehen nur
syncoreundconsole. - 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
| Grenze | Wert |
|---|---|
| Laufzeit je Programm | 60 Sekunden |
| Rechenzeit je Programm (Warten auf Werkzeuge zählt nicht) | 15 Sekunden |
| Werkzeugaufrufe je Programm | 200 |
| Werkzeuge je Programm | 50 |
| Länge des Programms | 100.000 Zeichen |
| Ergebnis an den Assistenten | gekürzt auf rund 6.000 Token |
| Listen je Aufruf | höchstens 200 Einträge, danach mit offset weiterblättern |
| Gleichzeitige Läufe | 2 je Mandant |
| Offene Läufe | 20 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.
skills_lesenohne 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.- Gestartet wird ein Skill mit
code_ausfuehren { "skill": "…", "eingabe": { … } }. Die Eingabe prüft SynCore gegen das Schema des Skills. - Lief ein eigenes Programm gut, schlägt der Assistent es mit
skill_vorschlagenals Skill vor. Gespeichert wird nur ein Vorschlag; übernehmen kann ihn nur ein Mensch: Skills übernehmen.
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.