Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Aktualisiert:
- Autor:
- Roland Golla
Schema Based AI Coding: Definition
Schema Based AI Coding mit NCA: Schnelle Hilfe vom Experten
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Warum Prompts und Specs allein nicht reichen
Ebene 1: Das Schema als Vertrag für die Modellausgabe
{
"name": "create_ticket",
"input_schema": {
"type": "object",
"properties": {
"title": { "type": "string", "maxLength": 120 },
"severity": { "enum": ["low", "medium", "high"] },
"component": { "type": "string" }
},
"required": ["title", "severity"],
"additionalProperties": false
}
}
Ebene 2: Das Schema als Leitplanke im Code
import { z } from 'zod';
export const InvoiceSchema = z.object({
number: z.string().regex(/^RE-\d{6}$/),
netAmount: z.number().positive(),
taxRate: z.union([z.literal(7), z.literal(19)]),
issuedAt: z.coerce.date(),
});
export type Invoice = z.infer<typeof InvoiceSchema>;
Ebene 3: Das Schema als letzte Verteidigungslinie in den Daten
Schema Based AI Coding in PHP und Symfony
final class Invoice
{
public function __construct(
#[Assert\Regex('/^RE-\d{6}$/')]
public readonly string $number,
#[Assert\Positive]
public readonly int $netAmountCents,
#[Assert\Choice([7, 19])]
public readonly int $taxRate,
) {
}
}
Schema Based AI Coding in Astro und TypeScript
import { defineCollection, z } from 'astro:content';
const glossar = defineCollection({
schema: z.object({
title: z.string().max(70),
updated: z.coerce.date(),
tags: z.array(z.string()).min(1),
}),
});
export const collections = { glossar };
Die vier Reifegrade von Schema Based AI Coding
Reifegrade im Überblick
Spec Driven Development und Schema Based AI Coding im Vergleich
Zwei Ebenen derselben Idee
Grenzen: Wo Schemas nicht helfen
The goal is to eliminate duplicative type declarations.
Quality Gates für KI generierten Code: Linting, Tests, Review Agents und CI Pipelines setzen CLAUDE.md Regeln automatisch durch. Praxiswissen von NCA
Mehr erfahrenAus der NCA Praxis: Der Vertrag steht vor dem Code
Roland Golla ist Entwickler aus Leidenschaft – seit über 20 Jahren. Er hat hunderte Projekte begleitet, von Legacy-Refactoring bis KI-Integration. Bei Vibe Coding verbindet er das Beste aus beiden Welten: Die Geschwindigkeit von KI-generiertem Code mit der Qualität professioneller Softwareentwicklung. Kein Bullshit, keine Agentur-Floskeln – direkte Hilfe von jemandem, der selbst täglich im Code steckt.
Häufige Fragen zu Schema Based AI Coding
Schema Based AI Coding heißt, dass ein maschinenlesbares Schema den Vertrag definiert, gegen den ein KI Agent Code schreibt. Zod, JSON Schema, OpenAPI, Symfony Constraints oder Datenbank Constraints legen die erlaubte Form fest. Weicht der generierte Code ab, schlägt der Build oder die Pipeline fehl. Der Fehler wird also von einer Maschine gefunden, nicht erst im Review.
Spec Driven Development beschreibt Anforderungen in Prosa, meist in versionierten Markdown Dateien. Das ist wertvoll für Absicht und Architektur, aber eine Spec kann veralten, ohne dass etwas rot wird. Ein Schema ist ausführbar. Es prüft bei jedem Lauf. Die beiden Ansätze konkurrieren nicht, sie ergänzen sich: Die Spec beschreibt das Ziel, das Schema erzwingt die Einhaltung.
Drei reichen für den Anfang. Erstens ein Schema an jeder Systemgrenze, an der fremde Daten hereinkommen. Zweitens typisierte Datenmodelle, aus denen Typen abgeleitet statt doppelt gepflegt werden. Drittens ein Datenbank Schema mit echten Constraints statt durchgängig nullable Spalten. Wer diese drei Ebenen hat, fängt den größten Teil der typischen KI Fehler automatisch ab.
Ja, und PHP ist dafür sogar gut ausgestattet. Symfony Validator Constraints sichern die Grenze, Doctrine bildet die Persistenz ab, PHPStan und Psalm prüfen statisch, Rector zieht Änderungen automatisiert durch die Codebasis. Für Schnittstellen empfiehlt sich der API First Weg über OpenAPI, damit Client und Server an dieselbe Definition gebunden sind.
Nein. Ein Schema prüft die Form, nicht die Bedeutung. Ein Betrag kann typkorrekt und trotzdem falsch berechnet sein. Schemas sind das erste und billigste Quality Gate, danach folgen weiterhin statische Analyse, Unit Tests, funktionale Tests und End to End Tests mit Cypress. Wer Schemas als Testersatz verkauft, tauscht nur eine Illusion von Sicherheit gegen eine andere.
Nicht flächendeckend, sondern an der schmerzhaftesten Grenze zuerst. Meist ist das die Stelle, an der externe Daten hereinkommen oder an der ein Agent regelmäßig Unsinn baut. Dort ein Schema definieren, den Check in die CI hängen, dann die nächste Grenze. Parallel dazu wachsen die Regeln in rules.md oder AGENTS.md mit, damit der Agent den Vertrag kennt.
Wir arbeiten mit einer transparenten Minuten Abrechnung, ohne Pakete und ohne Festpreis. Am Anfang steht ein kostenloses Kennenlernen, in dem wir den Zustand der Codebasis anschauen und den Aufwand gemeinsam schätzen. Erfahrungsgemäß liegt die Einführung bei 15 bis 30 Tagen bis zum ersten verlässlichen Ergebnis, danach ein paar Tage im Monat für die laufende Pflege.
Sie sichern die Ausgabe des Modells selbst. Mit einem JSON Schema darf das Modell beim Generieren nur noch Token wählen, die zur Struktur passen. Aus einem hoffentlich gültigen JSON wird ein garantiert gültiges JSON. Dasselbe Prinzip trägt jeden Tool Call und jeden MCP Server, weil dort jeder Parameter typisiert ist, bevor der erste Token fließt.
Nein, meist das Gegenteil. Tief verschachtelte Strukturen mit vielen optionalen Feldern verwirren Modelle und kosten unnötig Kontext. Kleine Schemas mit sprechenden Feldnamen und engen Wertebereichen liefern deutlich stabilere Ergebnisse. Enums schlagen freie Strings, Pflichtfelder schlagen optionale Felder, und additionalProperties auf false verhindert, dass erfundene Felder still mitreisen.
Mehr als es zunächst wirkt. Aus einem sauberen Datenbank Schema lassen sich realistische Fake Daten erzeugen. Damit arbeiten große Coding Modelle gegen eine lokale Entwicklungsumgebung statt gegen echte Kundendaten. Genau das ist unser Leitmotiv: Coding aus der Cloud, Datenverarbeitung im eigenen Netzwerk. Für gehostete Inferenz in Europa nutzen wir TensorX, für Infrastruktur arbeiten wir mit Conversis zusammen.
Nein. TypeScript macht den Weg bequem, weil sich Typen direkt aus dem Schema ableiten lassen. Das Prinzip funktioniert aber in jeder Sprache mit ordentlicher statischer Analyse. In PHP übernehmen PHPStan und Psalm diese Rolle, in Python Ruff und mypy. Entscheidend ist nicht die Sprache, sondern ob die Prüfung in der Pipeline verpflichtend läuft.
Über zwei Mechanismen. Erstens Regeln: In rules.md oder AGENTS.md steht explizit, dass Schemas nur mit Migration und Begründung geändert werden. Zweitens Prozess: Schemadateien gehören in ein Review, das ein Mensch abnimmt. Ein Agent, der eine Regel umschreiben darf, um sie zu erfüllen, hat keine Leitplanke mehr, sondern eine Ausrede.