▲ Community-Session: Vercel-Plugin für Claude Code

VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Hallo zusammen. Willkommen zum Vercel Community Livestream dieser Woche. Ich bin Amy, und das ist
00:00:26Jacob. Wir sind vom Community-Team hier bei Vercel. Nur zur Erinnerung, wir streamen
00:00:31dies auf X und YouTube. Wenn ihr aber sichergehen wollt, dass wir eure Fragen und Kommentare
00:00:36im Chat sehen, geht zur Community und meldet euch an. Unter [community.vercel.com/live](https://community.vercel.com/live) findet ihr
00:00:43das als erstes Event.
00:00:44Ja, am Ende der Sitzung haben wir etwas Zeit für ein paar Fragen. Wenn ihr
00:00:49während der Sitzung am Chat teilnehmt, denkt bitte daran,
00:00:55unseren Verhaltenskodex einzuhalten. Ihr könnt eure Fragen jederzeit stellen,
00:00:59und wir werden sie aufgreifen. Ich möchte unseren Gast vorstellen: Wir haben Jon Lindquist hier,
00:01:05um uns das neue Vercel-Plugin für Cloud Code zu zeigen. Hey, Jon.
00:01:09Hey, Jacob. Hey, Amy. Danke für die Einladung. Okay, fangen wir direkt damit an,
00:01:16meinen Bildschirm zu teilen, damit wir sehen können, was hier los ist. Seit einer Weile sind
00:01:23Skills der letzte Schrei, und jeder spricht darüber, welche Skills man nutzen sollte,
00:01:29um Projekte zu verbessern und Agenten Dinge zu ermöglichen, zu denen sie normalerweise nicht fähig sind.
00:01:37Die nächste Evolutionsstufe, die aus den Skills hervorgeht, nennen wir Plugins.
00:01:43Das ist etwas, das sich erst noch durchsetzen muss. Es gibt noch nicht viele Plugins,
00:01:48und die Leute experimentieren noch damit, wie man sie baut. Ich habe den ersten Entwurf des Vercel-Plugins erstellt,
00:01:56und ich möchte darüber sprechen, warum man ein Plugin baut, wann man es bauen sollte,
00:02:03warum ein Plugin statt Skills, wie sie sich ergänzen und all diese Fragen.
00:02:09Wenn ihr also Fragen dazu habt, was – ich werde darüber sprechen – ein Plugin euch ermöglichen kann,
00:02:16ob ihr eines intern oder für euch selbst bauen solltet, würde ich das gerne diskutieren.
00:02:22Darüber werden wir heute in der Sitzung sprechen. Zunächst einmal wurde ein Plugin ursprünglich
00:02:32von Cloud Code und auch Gemini initiiert, aber sie verfolgten sehr unterschiedliche Ansätze.
00:02:39Die Standardisierung von Plugins ist ein laufender Prozess. Wir hoffen, dass wir bald
00:02:44darüber sprechen können, dass ein einziges Plugin in allen Editoren funktioniert.
00:02:49Momentan sprechen wir über Cloud Code und Cursor-Unterstützung. CodeX kommt sehr,
00:02:54sehr bald, wenn nicht sogar heute, und viele andere auch. Es wird an einem
00:03:01Plugin-Standard gearbeitet. Wir können also erwarten, dass Plugins etwas sein werden,
00:03:08das man bündeln und über alle verwendeten Tools hinweg teilen kann. Davon abgesehen kennt ihr vielleicht
00:03:15Skills als Markdown-Dateien, die von eurem Agenten geladen werden können, um ihm zusätzliche Anweisungen zu geben.
00:03:23Entweder ruft man sie manuell auf, etwa mit einem Slash-Befehl, oder der Agent
00:03:29erkennt anhand der Beschreibung, dass der Skill geladen werden sollte. Es ist also sehr benutzergesteuert oder
00:03:36der Agent entscheidet basierend auf einer Bedingung in der Beschreibung. Die Steigerung eines Plugins ist nun,
00:03:44dass sie etwas namens Hooks haben. Wenn ihr an ein Plugin denkt oder an eine Sitzung,
00:03:53die ihr mit Cloud Code oder einem der Agenten-Systeme habt, könnt ihr euch vorstellen, dass sie Lebenszyklen haben.
00:03:59Ich befinde mich gerade im Vercel-Plugin-Verzeichnis. Wenn ich hier Cloud Code starte,
00:04:07werde ich fragen, welche Hooks dieses Plugin verwendet. Das wird die Hooks auflisten,
00:04:18die quasi den Lebenszyklus definieren. Ein Lebenszyklus ist der Moment, wenn die Sitzung beginnt, wenn Tools –
00:04:27bevor Tools aufgerufen werden, nachdem sie aufgerufen wurden, wenn ein Benutzer Text eingibt,
00:04:33und wenn die Sitzung endet. Es gibt noch eine ganze Reihe anderer Hooks.
00:04:39Aber für unsere Zwecke im Vercel-Plugin sind dies die, die wir derzeit basierend auf unseren Zielen nutzen.
00:04:44Um es klar zu sagen: Das ursprüngliche Ziel des Vercel-Plugins war es, Leuten zu helfen,
00:04:51Agenten auf Vercel zu veröffentlichen. Die Idee ist: Wie machen wir Agenten auf das Vercel-Ökosystem aufmerksam,
00:05:02auf alles auf der Plattform, was mit dem AI SDK oder dem Gateway zu tun hat?
00:05:11Unsere Workflows sind hier fast fertig. Alles rund um Workflows, und im Grunde wurde das
00:05:19Vercel-CLI stark aktualisiert. All diese Dinge rund um das Agent-SDK –
00:05:26oder Verzeihung, rund um das Veröffentlichen von Agenten auf Vercel. Das sind alles Dinge,
00:05:33die in den letzten Tagen, Wochen oder Monaten veröffentlicht wurden. Und all diese Agenten-Systeme wie Cloud Code
00:05:39haben diese Wissensgrenzen, die wahrscheinlich sechs Monate bis ein Jahr zurückliegen.
00:05:46Es hängt vom Modell und einer ganzen Reihe von Variablen ab. Aber sie alle wissen nichts
00:05:52über all die neuesten, großartigen Dinge, die wir veröffentlicht haben. Das Ziel des Vercel-Plugins
00:05:57ist es, den Agenten davon abzuhalten, veralteten Code oder veraltete Praktiken zu schreiben,
00:06:06und ihn auf den Stand der absolut neuesten Entwicklungen auf der Vercel-Plattform zu bringen.
00:06:11Das ist ein riesiger Vorteil, denn Modelle sind zwar schlau, aber sie wissen einfach nichts über all das.
00:06:19Und anstatt sie jedes Mal zur Recherche aufzufordern oder ein riesiges Bündel an Skills
00:06:25für jede einzelne Kleinigkeit zu haben – wenn wir einen Weg finden, einen Agenten quasi dazu zu zwingen,
00:06:32die besten Informationen über die Vercel-Plattform zu laden, dann ist das ein großer Gewinn für uns.
00:06:38Wenn man sich diese Hooks im Lebenszyklus eines Agenten ansieht – und nochmal, es gibt viele,
00:06:45viele weitere Hooks, die wir in Zukunft nutzen können oder die ihr nutzen könnt. Aber die wichtigsten
00:06:49für den Moment sind 'session start' – den wir auf verschiedene Weise nutzen – 'pre-tool use',
00:06:56'user prompt submit', 'post-tool use' und 'session end'. 'session start' und 'session end' sind,
00:07:03wie ihr wisst, der Anfang und das Ende einer Konversation mit einem Agenten. Und ihr könnt euch vorstellen,
00:07:12dass eure agents.md- oder cloud.md-Datei normalerweise das ist, was ihr bei 'session start' nutzt.
00:07:19Was können wir also bei 'session start' für die Vercel-Plattform tun? Wir könnten eine
00:07:27Vercel-Plattform-Datei laden. Das bedeutet, wenn wir uns – ich sage einfach mal –
00:07:40die vercel.md beschreiben lassen. Diese Datei können wir beim 'session start' neben einer cloud.md einbinden.
00:07:48Im Grunde könnte man ein Plugin haben, das – wenn man nur eine cloud.md-Datei teilen möchte
00:07:52und jemandem eine einfache Installation ermöglichen will – man könnte ein Plugin bauen,
00:07:59das einfach nur einen Wissensgraphen von Vercel injiziert. Das ist etwas, das wir kontinuierlich optimieren.
00:08:04Wir suchen nach Wegen, es zu komprimieren und so klein wie möglich zu machen, aber dennoch eine gute Leistung
00:08:08und ein Gleichgewicht zu wahren, was hineingehört und was nicht. Es ist sehr schwierig,
00:08:15Evaluierungen gegen all die verschiedenen Modelle und Systeme durchzuführen. Aber wir finden diese Dinge langsam heraus.
00:08:21Was dort drin steht, sind im Wesentlichen Beziehungen im Vercel-Ökosystem rund um KI,
00:08:28wann man welches Produkt nutzt, wann man was aufruft – also ein strukturiertes Verständnis
00:08:35des gesamten Vercel-Ökosystems. Das Konzept eines – ich mag es, wie es das ein Inhaltsverzeichnis nennt.
00:08:44Es ist wie der Anfang eines Buches, wenn man eine Konversation beginnt.
00:08:50Und wie wir das strukturiert und darüber nachgedacht haben, ist folgendes: Wenn man überlegt,
00:08:56wie man mit einem Agenten über Dinge spricht – man hat ein bestimmtes Vokabular, und er auch.
00:09:02Wenn man ihm ein Glossar an Begriffen geben kann, diese mit Dokumentationen verknüpft,
00:09:07mit Skills verknüpft, mit Dingen, die er laden sollte. Sobald man diese Punkte trifft, kann man sich
00:09:12überlegen: Was werde ich sagen und was soll der Agent laden und aufrufen?
00:09:19Man versucht, diese Mindmap vorab zu entwickeln, damit ich einfach ganz natürlich mit ihm sprechen kann
00:09:24und mir keine Sorgen machen muss, das AI SDK überhaupt zu erwähnen.
00:09:30Oder irgendeines der Features erwähnen zu müssen. Wenn ich einfach einen Weg finde, zu sagen:
00:09:38"Bau mir einfach diese App und veröffentliche sie." Und dann erledigt das Plugin alles.
00:09:45Entschuldigung, es erledigt alles im Plugin, so dass eine wunderschöne
00:09:52App auf Vercel veröffentlicht wird und man von dort aus iterieren kann. Ähnlich wie v0
00:09:57und einige andere Projekte für uns funktionieren. Wenn wir es so gestalten können, dass man
00:10:02ein wunderbares Erlebnis hat, ohne über das Ökosystem nachdenken zu müssen, ist das ein riesiger Gewinn. Ergibt
00:10:09das Sinn? Jacob, Amy, irgendwelche ersten Fragen dazu oder etwas im Chat?
00:10:16Jacob, ich glaube, du hast eine Frage. Entschuldigung, tut mir leid. Ich hatte eine Frage
00:10:24an dich, Jon. Da dieses Plugin als Inhaltsverzeichnis fungiert – ist das der Grund,
00:10:30warum es nicht jedes Mal aktualisiert werden muss, wenn eine neue Dokumentation
00:10:38herauskommt? Weil es im Grunde eine Sammlung von URLs ist, denen die Agenten folgen können,
00:10:43um aktuelle Docs zu finden? Oder hat das Plugin ein System für sofortige Updates? Wie
00:10:49funktioniert dieser Ansatz? Ja. Wenn man also an den Wissensgraphen am Anfang denkt,
00:10:58kann er im Grunde vieles einfach auf die neuesten Docs verweisen. Das ist eine
00:11:07Frage, die oft bei Skills aufkommt und wie wir Skills pro Bibliothek verwalten.
00:11:14Wenn jemand Version 5 eines SDKs nutzt und jemand anderes Version 6 des SDKs,
00:11:18und man versucht, sie mit Skills aus verschiedenen Versionen zu beeinflussen, die im Konflikt stehen,
00:11:22wie macht man das? Vieles davon basiert darauf, was jemand
00:11:31installiert hat. Man kann die package.json prüfen, man kann die Version prüfen. Und darauf basierend
00:11:36findet man einen intelligenten Weg, um zu entscheiden, welche Dokumentations-URLs man ansehen sollte,
00:11:44welche Skills geladen werden sollten und all diese Dinge. Das ist ein weiterer Teil der
00:11:51Preload-Phase beim 'session start', bei der einfach das Projekt des Benutzers inspiziert wird.
00:11:58Und nochmal, das passiert alles lokal. Es schaut sich das Projekt an, sieht, welche Bibliotheken
00:12:02genutzt werden, welches Setup, damit es weiß, in welche Richtung es einen weisen muss.
00:12:07Einer der häufigsten Fehler ist der Versuch, zum Beispiel 'generateObject' in der neuesten
00:12:12Version eines SDKs zu nutzen, obwohl man weiß, dass sich die API geändert hat. Also,
00:12:21die Plugins regeln das einfach. Man sollte sich keine Sorgen machen müssen, ob man dies in einem
00:12:27Legacy-Projekt oder in einem absolut neuen Projekt nutzt. Das Plugin sollte
00:12:32das handhaben können. Man sollte sich nicht um Versionsnummern oder Paketnamen
00:12:34kümmern müssen, um gar nichts – lasst das einfach Vercel für euch erledigen. Richtig.
00:12:41Und wir arbeiten kontinuierlich an Wegen – wir haben noch viele weitere Ideen, wie wir das besser machen können.
00:12:49Das Plugin wird weiterhin aktualisiert und das Ganze vorantreiben. Sonst noch Fragen?
00:12:54Ja, wie sieht der gesamte Umfang des Plugins aus? Deckt es nur Vercel-Dienste ab,
00:12:58die ich im Dashboard finde? Oder betrifft es auch die Open-Source-Bibliotheken,
00:13:04die wir unterstützen, wie Next.js, AI SDK, Workflows und so weiter?
00:13:11Ja, der anfängliche Umfang – wir haben uns anfangs entschieden, so viel wie möglich abzudecken.
00:13:16Also jede Bibliothek, alles auf der Plattform, einfach alles hineinzupacken und zu sehen,
00:13:25was am meisten genutzt wird. Intern haben alle die Telemetrie aktiviert, und man kann
00:13:32sich ja dazu entscheiden, Telemetriedaten zu teilen. So finden wir heraus, welche Skills tatsächlich
00:13:36genutzt werden und welche nicht. Auf diese Weise können wir Dinge entfernen, über die wir
00:13:40vielleicht nicht so viele Informationen benötigen, oder mehr hinzufügen, basierend auf dem, was am meisten genutzt wird.
00:13:48Offensichtlich sollten Next.js, AI SDK und die am häufigsten heruntergeladenen Dinge die meisten Informationen haben.
00:13:53Das ist ein Balanceakt zu Beginn, bei dem wir mit der ersten Veröffentlichung absichtlich
00:13:59sehr breit gefächert sind. In Zukunft werden wir es auf etwas deutlich Schlankeres
00:14:08reduzieren. Also
00:14:15ja, das ergibt absolut Sinn. Danke. Gerne. Okay, wenn man
00:14:16ein Plugin baut – und einer der Gründe, warum ich darüber in eher allgemeinen
00:14:24Begriffen spreche, ist, dass ich sehr an 'agentic driven development' interessiert bin.
00:14:29Anstatt euch genau zu zeigen, wie alles funktioniert, halte ich es für viel wichtiger, zu lernen,
00:14:36wie man darüber spricht und die Terminologie zu verinnerlichen. Dann könnt ihr einfach euren KI-Assistenten
00:14:40bitten, ähnliche Dinge zu tun. Wenn man Cloud Code sagt, er soll ein Plugin für Cloud Code
00:14:45bauen, und ihm die Dokumentation gibt, dann kann er das. Es ist also viel wichtiger,
00:14:52die Konzepte und Ideen dahinter zu diskutieren, als zu tief in den Code einzutauchen.
00:14:58Abgesehen davon ist 'session start' ein großartiger Ort, um so etwas wie ein Inhaltsverzeichnis
00:15:05einer Plattform einzufügen. So nach dem Motto: Das sind all die Dinge, die veraltet sind, basierend auf
00:15:11den Dingen, die mir wichtig sind und die für die meisten Modelle veraltet sind.
00:15:19Das bringt alles auf den Stand, wie Vercel heute aussieht. Und selbst wenn das
00:15:24das Einzige ist, was im Plugin passiert, weiß der Agent, dass er in Zukunft Dinge
00:15:31überprüfen sollte. Aber was wir auch tun können – nur so als Randnotiz – ein Grund,
00:15:37warum man das macht: Jede Sitzung in Cloud Code hat ihre eigene, eindeutige ID.
00:15:44Das erlaubt es einem, während der Sitzung sicherzustellen, dass man ein Skill-Budget hat
00:15:52und die Skills kennt, die bereits geladen wurden und solche Dinge. Man kann
00:16:01Dinge in die Umgebung der Sitzung schreiben oder an einen Speicherort für die Sitzung,
00:16:07wo wir während dieser Sitzung sicherstellen, dass wir Dinge nicht laden, die bereits geladen wurden,
00:16:15oder Aufwand duplizieren, weil wir den Überblick behalten können. Das ist ein weiterer
00:16:20großartiger Aspekt der Sitzung: Sie gibt einem die Chance, eine Sitzungs-ID zu erfassen, so dass man
00:16:26bei allen zukünftigen Hooks und allem, was innerhalb der Sitzung ausgeführt wird, eine ID hat,
00:16:30an die man anknüpfen und Dinge über die Sitzung für das eigene Plugin speichern kann.
00:16:35Cloud Code macht das auch, wenn man in ihr .cloud-Verzeichnis schaut; da sieht man Sitzungen und so weiter.
00:16:40Dieses Konzept nutzt man also für die eigenen Plugins und Tools. Gut, nachdem das geklärt ist,
00:16:47sprechen wir über 'pre-tool use' und 'post-tool use' gleichzeitig. Diese geben einem
00:16:50die Chance, Dateiänderungen zu sehen. In 'pre-tool' kann man den Inhalt der Datei abrufen,
00:16:56die gerade geändert werden soll. Hier geht es also um das Lesen von Dateien,
00:17:05das Bearbeiten oder Erstellen von Dateien. 'pre-tool' deckt auch viele andere
00:17:11Tools ab, die verwendet werden könnten, wie das Ausführen von Befehlen in der Bash.
00:17:20Man bekommt also die Chance: Bevor diese Sache passiert, gibt es da etwas, das ich tun möchte?
00:17:29Wenn wir zum Beispiel sehen, dass jemand versucht, einen spezifischen Vercel-CLI-Befehl auszuführen,
00:17:34und wir bemerken, dass es jetzt einen besseren Weg in der Vercel-CLI gibt, zum Beispiel
00:17:40hat die Vercel-CLI jetzt eine API-Option, mit der wir viel fortgeschrittenere Abfragen machen können.
00:17:47Und die Vercel-CLI wurde aktualisiert. Falls ihr sie in letzter Zeit nicht aktualisiert habt,
00:17:55sie hat viele tolle neue Features. Wir können darauf hinweisen und sagen,
00:18:00dass man dies versucht, oder sogar prüfen: Ist die Vercel-CLI veraltet? Es wäre toll,
00:18:05sie zu aktualisieren. Man hat hier also viel mehr Möglichkeiten. Es gibt einem die Chance,
00:18:11zu prüfen, ob ein Tool-Aufruf bevorsteht, sei es ein CLI-Aufruf. Das ist extrem wichtig
00:18:17für die Sandbox-CLI, für die Workflow-CLI, für all diese brandneuen
00:18:21CLIs, von denen die Modelle noch nichts wissen, weil sie erst nach den Wissensgrenzen
00:18:27veröffentlicht wurden, um sicherzustellen, dass alles korrekt gemacht wird. Das gilt also für
00:18:34Tool-Aufrufe wie Bash-Aufrufe. Bei Dateiänderungen wird es richtig interessant.
00:18:39Etwas, das wir mehr erforschen, ist das Diffen von Dateien: Diese Datei sah früher so aus,
00:18:47der Agent versucht sie so zu verändern. Ist das basierend auf unseren Bibliotheken
00:18:52eine korrekte Änderung? Oder gibt es da etwas, das verdächtig riecht? Und das führt uns,
00:18:59ich greife wieder auf das Beispiel zurück, wo man das v6 SDK installiert hat und versucht,
00:19:06'generateObject' als API zu nutzen, was ein häufiger Fall ist. Wenn man das in diesem Moment sieht –
00:19:11ich sehe, dass du versuchst, 'generateObject' zu nutzen – halten wir kurz inne und erinnern sie daran,
00:19:18wie das AI SDK tatsächlich aussieht, damit noch vor dem Testen oder Veröffentlichen
00:19:25der Fehler genau in dem Moment abgefangen wird, in dem der Agent versucht hat, die Datei zu ändern.
00:19:32Das ist eine dieser Sachen, bei denen man sich nicht auf einen Skill verlassen kann.
00:19:36Skills sind textliche Hinweise. Wenn man jemals versucht hat, in die cloud.md oder in einen Skill zu schreiben:
00:19:46"Committe niemals diese Dateien" oder "Pushe niemals, ohne dass ich in einem Branch bin".
00:19:54Ihr habt wahrscheinlich die Erfahrung gemacht, dass diese Anweisungen einen nicht immer davor schützen.
00:20:03'pre-tool use' gibt einem die Chance, diese Dinge buchstäblich auf programmatische und
00:20:13technische Weise zu stoppen. Und man kann dem Agenten andere Anweisungen und andere
00:20:21Beispiele geben, wie er es tun kann. Das ist der große Unterschied hier zwischen Skills,
00:20:28zwischen cloud.md oder agents.md Dateien: Man kann tatsächlich kontrollieren, was sich ändert,
00:20:32ob oder was gerade passiert. Und wenn man möchte, dass das passiert oder sich ändert,
00:20:41ist das der Punkt, an dem es großartig ist. Von dort aus
00:20:47erhält man ähnliche Möglichkeiten bei 'post-tool'. Man hat die Chance zu prüfen, was genau sich
00:20:51geändert hat, nachdem ein Bash-Befehl ausgeführt wurde. Was ist jetzt anders,
00:21:01nachdem ein Tool aufgerufen wurde? Das erlaubt es zwar nicht, etwas zu verhindern,
00:21:07aber man sieht das Ergebnis von etwas, das bereits geschehen ist. Und wenn das
00:21:13etwas geändert oder etwas Unerwartetes getan hat, ist es eine weitere Chance, ein Diff zu erhalten
00:21:19und zu sagen: "Das sieht irgendwie komisch aus. Sagen wir dem Agenten, dass uns das spanisch vorkommt."
00:21:25Das sind also zwei riesige Hooks im Lebenszyklus, die man beim Bauen kennen sollte. Für uns
00:21:31geht es wieder viel um die Wissensgrenze. Das ist die Sache,
00:21:38gegen die Vercel ankämpfen muss, weil wir schnell und oft veröffentlichen und
00:21:43all diese neue Technologie so rasant vorantreiben. Wir wollen diese fantastischen Sachen den Leuten zeigen.
00:21:49Und genau da kann ein Plugin wirklich sehr nützlich sein. Irgendwelche Fragen dazu?
00:21:55Wir veröffentlichen diese neuen Technologien so schnell. Und das sind einfach diese tollen Dinge,
00:22:00die wir den Leuten zeigen wollen. Und genau da kann ein Plugin wirklich sehr nützlich sein.
00:22:09Gibt es dazu Fragen?
00:22:11Ja. Wenn Dateipfade genutzt werden, um zu entscheiden, welche Skills injiziert werden, bedeutet das,
00:22:21dass wir viel gewinnen, wenn wir die Dateien in unseren Projekten stärker auf Einzelzwecke zuschneiden,
00:22:27damit genauer bestimmt werden kann, welche Skills benötigt werden?
00:22:34Zum Beispiel, wenn ich eine große Datei habe, die vielleicht fünf oder sechs unserer Bibliotheken nutzt,
00:22:39und nun können nur bis zu drei Skills hinzugefügt werden, oder es wird basierend auf dem Dateipfad
00:22:47nicht erkannt. Denkst du, das sollte man jetzt beim Erstellen von Software mit diesen Tools beachten?
00:22:51Sollte das eine Überlegung sein?
00:22:54Ich würde sagen, man sollte sich nicht um den Code kümmern müssen, den der Agent schreibt.
00:23:02Es liegt an den Plugin-Autoren und den Harness-Autoren, dafür zu sorgen, dass diese Dinge gut funktionieren.
00:23:12Also die Leute, die tatsächlich Evaluierungen durchführen und sehen, ob das einen Unterschied macht oder nicht.
00:23:17Wohingegen ich denke, dass es sehr leicht passiert, wieder in den Ingenieurs-Modus zu verfallen und zu denken:
00:23:27„Ich löse das jetzt, weil ein Mensch es so machen würde.“ Und das ist definitiv das, was ein Agent wollen würde.
00:23:33Das ist derzeit eine der größten Versuchungen für Entwickler: Problemlösung,
00:23:39also Probleme zu finden, die gar keine Probleme sind. Denn ja, es ist so,
00:23:50wenn man versucht, etwas zu reparieren und nicht weiß, wie man es testen soll – also wenn
00:23:53du weißt, wie man das gegen einen Agenten testet, dann nur zu. Wenn du dazu aber keine Lust hast,
00:24:00dann lass es einfach die Leute erledigen, die die Plugins und die Umgebungen bauen,
00:24:05denn das Testen und die Evaluierungen sind teuer. Es kostet viel Geld,
00:24:12all diese Modelle gegen diese Änderungen laufen zu lassen. Es dauert lange und ist sehr mühsam.
00:24:17Daher hoffe ich, dass sich niemand darum kümmern muss. Und ich denke,
00:24:23ich würde meine Energie vorerst für andere Dinge aufwenden. Ja.
00:24:33Ich verstehe. Es macht also keinen Sinn, meine Arbeitsweise zu ändern, wenn die nächste Version
00:24:40des Modells so gebaut wird, dass all diese Anpassungen im Grunde überflüssig werden.
00:24:47Im Grunde genommen.
00:24:48Genau. Und ich denke, das Endziel für alle Umgebungen und für Vercel ist,
00:24:56dass man wirklich nicht mehr so viel über den Code nachdenken oder ihn ansehen muss.
00:25:01Ich sage nicht, dass das jetzt schon der Fall ist. Ich sage nur, dass das das Endziel ist.
00:25:07Das ist es, worauf wir hinarbeiten: Dass man wunderschöne Software ausliefern kann.
00:25:11Dass man in der Lage ist, Ideen frei fließen zu lassen, Variationen zu erhalten und zu sehen,
00:25:19welche wirklich überzeugen, um es dann auf das zu reduzieren, was für einen selbst, die Familie
00:25:25oder die Kunden perfekt ist. Wir wollen einfach ein schönes Erlebnis schaffen, bei dem man
00:25:33nicht zu viel darüber nachdenkt, wie groß die Dateien sind. Ob man beim Schreiben
00:25:39die richtigen Design-Pattern nutzt oder welche Bibliotheken man wählt. Und ich stimme absolut zu.
00:25:48Die Versuchung zu sagen: „Nutzen wir all diese Pattern, weil die Agenten damit besser klarkommen.“
00:25:53Lass uns all das tun. Und es ist definitiv etwas, womit wir im Plugin experimentieren.
00:25:58Aber noch einmal: Wenn man es nicht testen kann, dann ist es
00:26:07so verlockend zu sagen: „Ich habe diese Änderung gemacht und es funktioniert jetzt offensichtlich besser.“
00:26:18Das ist eine dieser Fallen, denn nun, da du diese Änderung vorgenommen hast,
00:26:23beachtest du nicht mehr, wie es früher funktioniert hat und welche Auswirkungen das woanders hat.
00:26:28Vielleicht hat es für diese eine Sitzung gut funktioniert. Engineering ist jetzt einfach anders. Entschuldigung,
00:26:35ich werde wohl gerade philosophisch. Ich denke, wir verstehen das. Alles klar.
00:26:44Ein weiterer Hook ist „User Prompt Submit“. Dieser ist sehr wichtig, weil er erlaubt,
00:26:50den Text dessen zu nehmen, was der Benutzer getippt hat. Wenn sie eine Bibliothek erwähnen,
00:26:55ein Konzept oder zum Beispiel das Wort „Zeitplan“, dann laden wir
00:27:00den Cron-Skill. Das ist sehr ähnlich wie Skills funktionieren. Wenn der Benutzer oder
00:27:07wenn in der Konversation etwas erkannt wird, das zur Beschreibung passt. Aber hier
00:27:12hat man die Chance, einen Regex gegen den Benutzer-Prompt laufen zu lassen. Wenn bestimmte Keywords
00:27:20oder Muster erkannt werden, lädt man diese Skills und gibt dem Agenten Hinweise,
00:27:26wie zum Beispiel: „Vielleicht solltest du mehr Rückfragen stellen.“ Das ist der interaktive Teil,
00:27:33bei dem man sagen kann: „Der Benutzer hat dies gesagt, vielleicht brauchen wir mehr Klärung“
00:27:38oder wir laden einfach all diese Dinge und treiben es voran. Man kann
00:27:44wirklich lustige Dinge mit dem „User Prompt Submit“ machen, wenn man sein eigenes,
00:27:48benutzerdefiniertes Glossar oder eine eigene Befehlssprache haben möchte und zum Beispiel
00:27:56Dinge mit Dollarzeichen präfixen will. Wenn etwas mit einem Dollarzeichen beginnt, dann tu dies. Oder
00:28:00wenn etwas ein bestimmtes Muster hat – es ist fast so, als würde man kleine Bash-Skripte schreiben
00:28:07innerhalb des Prompts. Wenn dies erkannt wird, kann man sofort ein Tool ausführen und
00:28:13es kann innerhalb – man kann beliebige Bash-Skripte, Node-Skripte oder was auch immer
00:28:20innerhalb dieses Hooks ausführen, der außerhalb des Kontextes der Sitzung liegt. Man kann also
00:28:28alle möglichen wilden, schnellen Dinge dort machen. Wenn man zum Beispiel das Wort „Commit“
00:28:37erkennen will, um zu vermeiden, dass der Agent erst mehrere Schritte braucht, um etwas zu committen.
00:28:47Stattdessen hat man einfach ein Skript, das basierend auf den Gegebenheiten committet. Direkt nach dem Prompt
00:28:53kannst du dem Agenten sagen: „Ich habe diesen Commit-Befehl ausgeführt, du musst dich nicht
00:28:59darum kümmern.“ So spart man dem Agenten ein paar Durchgänge. Es gibt da
00:29:03einige wirklich interessante kleine Tricks, um Dinge zu beschleunigen, falls es viele
00:29:09repetitive Aufgaben gibt, statt den Agenten jedes Mal darum zu bitten. Es ist
00:29:15ein spaßiges Projekt, sich ein eigenes „User Prompt Submit“ zu bauen und sich
00:29:19eine eigene Sprache für die Kommunikation mit dem Agenten auszudenken. Aber für uns
00:29:25geht es eher darum: Wenn sie über dieses Konzept sprechen, was bedeutet das in
00:29:30Vercel-Terminologie? Es geht also um den Abgleich von Wörtern, wie zum Beispiel „Scheduling“
00:29:37mit Crons und Workflows. Und bei Wörtern wie „Parallel“ oder „Performance“ oder was auch immer,
00:29:45kann man den Agenten auf spezifische Dinge lenken, die man über Vercel weiß. Es macht
00:29:53wirklich Spaß, mit dem „User Prompt Submit“ herumzuspielen, wenn man mal ein Wochenende Zeit hat.
00:29:58Und ich wiederhole noch einmal: Es ist absolut möglich, hierher zu kommen und zu sagen: „Hilf mir,
00:30:03ein Claude Code Plugin mit User Prompt Submit zu bauen, das Dollarzeichen erkennt“
00:30:09und wenn ein Dollarzeichen erscheint, dann führe „Commit“ innerhalb des Hooks aus.
00:30:14Mit diesem Prompt hätte ich das aufbauen können, also mach dir nicht zu viele Gedanken
00:30:19über den Code, fang einfach an zu spielen. Gut, wenn man das alles
00:30:26fertig hat, ist „Session End“ die Chance, alle Dateien oder Dinge aufzuräumen, die man
00:30:32während der Sitzung geschrieben hat. Wenn man angefangen hat zu sammeln, welche Skills ausgeführt wurden,
00:30:39wenn man Informationen über Ergebnisse von aufgerufenen Tools gesammelt hat oder irgendein
00:30:48Budget oder Dinge trackt, dann ist das die Chance, dort aufzuräumen. Es gibt
00:30:51faszinierende Dinge, die man in „Session End“ tun kann. Denn es wird
00:30:57im Grunde bei Strg+C ausgeführt, also beim Beenden der Sitzung. Man kann andere Agenten starten,
00:31:05um zu sagen: „Okay, schau dir alle Dateien an, die in der Sitzung geändert wurden. Passen sie
00:31:09zu allem?“ Wir machen das zwar nicht, aber es sind wirklich interessante Dinge,
00:31:13die man beim Sitzungsende tun kann. Meine Sitzung ist beendet. Stellt diese Sitzung
00:31:20einen Fortschritt in diesem Projekt dar? Stellt sie Datenmüll dar? Gehe alle geänderten Dateien durch.
00:31:26Gibt es Duplikate von Dingen, die bereits im Projekt sind? Und falls ja, räume auf
00:31:30und benachrichtige den Benutzer irgendwie, etwa durch eine Systembenachrichtigung
00:31:37oder ein anderes Mittel, da die Sitzung ja beendet ist. Wirklich interessante,
00:31:43spannende Dinge kann man dort machen. Alles klar. Nachdem das gesagt ist,
00:31:50werde ich hier eine kleine kurze Demo schreiben. Ich werde eine Version von Claude Code starten,
00:31:56die das Vercel-Plugin nutzt, und eine, die es nicht nutzt. Ich werde
00:32:04„Claude dangerously skip permissions“ nutzen, Debug eingeschaltet lassen, das zeige ich gleich.
00:32:08Und dieses Modell wird auf Haiku eingestellt. Das ist das schnellste, quasi einfachste Modell
00:32:13für Claude Code. Und ich werde sagen: „Schreibe einfach ein Tutorial über das AI SDK.“
00:32:26Und wir werden sehen, was passiert. Ich werde es
00:32:30direkt vergleichen. Man sieht schon, wie es anfängt, den Skill zu laden. Hier ist das Plugin geladen.
00:32:37Wenn ich eine Sitzung ohne jegliche geladene Plugins starten möchte, gibt es ein Flag
00:32:46für Einstellungsquellen, das die Möglichkeit gibt, Benutzereinstellungen oder
00:32:53Projekteinstellungen zu deaktivieren – im Grunde alle Einstellungen zu ignorieren. So kann ich es ohne
00:32:59Plugins laden. Das „No Flicker“ – huch – dieses „No Flicker“ ist neu seit gestern.
00:33:05Es ist eine schöne Art für flüssiges Scrollen in Claude Code. Das aktiviere ich also auch. Und dann
00:33:12werde ich das Modell auf Opus setzen, das klügste Modell. Und wenn ich denselben Prompt eingebe,
00:33:20ein Tutorial über das SDK zu schreiben – das hier ist die Standard-Version hier drüben. Und wir
00:33:28vergleichen die Ergebnisse. Oh, huch, ich muss – ich habe das Vorherige nicht gelöscht. Lass uns
00:33:36neu anfangen. Ich starte das hier und lasse es laufen. Ich habe das heute Morgen schon
00:33:50laufen lassen und vor dem Start hier nicht aufgeräumt. Also starte ich es noch einmal neu.
00:33:56Um einen Vergleich zu ziehen. Ja.
00:34:01Alles klar. Also
00:34:04der riesige Unterschied hier ist Haiku 4.5 gegenüber Opus 4.6, richtig? Das hier
00:34:15ist millionenfach günstiger und viel, viel schneller. Und es ist einfach mit viel mehr
00:34:22Vercel-Informationen gefüttert. Wenn man also die Budgetkosten für die zusätzlichen Token vergleicht,
00:34:32die wir inkludieren, gegenüber Haiku versus Opus. Während das hier in –
00:34:38ich hätte sagen sollen: Erstelle einfach eine Markdown-Datei. Ich schätze, es fängt an, echten Code zu schreiben,
00:34:45aber das wird interessant genug sein. Mal sehen. Das ist eine Sache, die man bei einem
00:34:59der Ansätze beachten sollte, die wir für viele unserer Skills verfolgen: Wie schon erwähnt,
00:35:05aufgrund der Versionsnummern – da die verschiedenen Skills sich ändern könnten, nutzen wir Pinning.
00:35:13Lass mich das umformulieren. Verschiedene Versionen unserer Bibliotheken würden
00:35:21verschiedene Skills erfordern. Viele unserer Skills sagen: „Bitte schau in die Node-Module“,
00:35:28wo wir viele Docs bündeln, sodass die Docs quasi auch an die Version gebunden sind. Wenn man hier hineinschaut,
00:35:34sieht man, dass es tatsächlich die lokalen Docs gelesen hat. Und es geht hier durch
00:35:40und stellt dieses Tutorial zusammen. Gut. Nun schauen wir uns das an. Das hier hat
00:35:53überhaupt keine Recherche betrieben. Das wird also interessant. Letztes Mal wurde viel mehr recherchiert. Und ich
00:36:01sehe jetzt schon, dass ein veraltetes Modell genutzt wird, Sonnet 4 statt zum Beispiel
00:36:074.6. Es ist veraltet. Es wurde „generateObject“ erwähnt, was nicht das ist, was wir nutzen wollen. Wir
00:36:15nutzen V6. Und da sind schon eine Menge Dinge, die einfach veraltet sind. Ich würde nicht sagen,
00:36:23dass sie falsch sind, aber sie sind sehr, sehr veraltet für das, was man für die beste Performance
00:36:28und die Best Practices des SDKs will. Alles klar. Hat das hier etwas
00:36:37erwischt? Ja, es sieht so aus – ja, der SDK-Skill hat wohl anfangs ein Tutorial geschrieben,
00:36:51und dann bemerkte der Skill, dass es nicht auf V6 aktualisiert war, ohne dass ich
00:36:58überhaupt etwas sagen musste. Und jetzt geht es hin und aktualisiert. Es wechselte von „generateObject“ zu „generateText“.
00:37:03Und es aktualisiert alles, um sicherzustellen, dass es auf den neuesten Versionen ist. Gut,
00:37:10wir können die zwei vergleichen. Ich starte einfach eine neue Sitzung. Gehen wir hier rein und vergleichen
00:37:23die Tutorials ohne Plugin mit dem Tutorial des Vercel-Plugins hinsichtlich der Genauigkeit. Und das
00:37:44wird interessant sein, denn jedes Mal, wenn ich das zuvor ausgeführt habe, schrieb Opus eine Markdown-Datei,
00:37:48dieses Mal waren es Code-Snippets. Es wird lustig sein, den Unterschied zu sehen.
00:37:54Wenn man das macht, besonders wenn noch andere Skills parallel zu
00:38:03diesem Plugin laufen: Besteht da die Gefahr eines Konflikts, sodass veraltete Dinge
00:38:10bevorzugt werden, oder wird das Plugin eine Art höhere Priorität einnehmen?
00:38:16Das Plugin wird im Grunde Skills basierend auf seinen Mustern forciert injizieren. Wenn es
00:38:27also – dieses Risiko besteht irgendwie immer, es ist ja alles nur Kontext,
00:38:34alles nur Textdateien, die in eine Sitzung geschoben werden. Daher würde ich immer sagen:
00:38:41Nutze nur die Dinge, die du für das aktuelle Projekt willst. Installiere nur sehr
00:38:49selten einen Skill auf Benutzerebene, außer du weißt, dass du ihn in jedem einzelnen Projekt willst.
00:38:58Selbst für das Vercel-Plugin arbeiten wir an den bestmöglichen Wegen, um
00:39:06nur das zu laden, was man für das jeweilige Projekt braucht. Wir haben da viele Ideen.
00:39:11Aber eine der wahrscheinlich kontroversesten Ideen ist: Wann
00:39:23würde ein Benutzer sagen, dass er ein Vercel-Plugin installiert hat? Welche Annahme kann man daraus treffen?
00:39:30Wenn sie das Vercel-Plugin installieren und auf der Plattform eines Wettbewerbers sind und dort ein
00:39:35Projekt öffnen: Sollten wir ihnen dann von unseren Sachen erzählen? Das ist
00:39:42eine sehr kontroversielle Sache, oder? Und wenn eine Person das sieht und
00:39:47gar kein Interesse an einer Migration zu Vercel hat,
00:39:53wird sie sehr verärgert sein. Eine andere Person wird vielleicht sehr glücklich sein. Es gibt da
00:39:59einige faszinierende Aspekte. Wenn man der Theorie folgt, dass jeder
00:40:05einfach mit Agenten interagieren wird: Was ist die Etikette in einem Plugin,
00:40:15um Agenten über die tollen neuen Dinge auf der eigenen Plattform zu informieren, ohne
00:40:24den anderen Plattformen auf die Füße zu treten? Da gibt es eine Menge. Das ist sehr relevant für das,
00:40:31was ich gerade tue: Wir gehen bald mit „Workflow“ in die General Availability. Ich schreibe also
00:40:37Migrations-Leitfäden. Wenn jemand von einem Wettbewerber zu Workflow migrieren will, könnte das
00:40:43direkt einen Skill nutzen, um zu sagen: „Migriere hiervon zu Workflow.“ So macht man das,
00:40:49so geht das. Wenn man das tun will – an welchem Punkt würde ich in einem Agenten
00:40:55jemanden darüber informieren? Das ist für mich wirklich, wirklich interessant. Besonders,” Und das beschäftigt mich sehr,
00:41:00da ich genau daran gerade arbeite. Aber ja, Kontext-Konflikte
00:41:07werden in Zukunft ein Problem sein. Ich weiß nicht – der Versuch,
00:41:14abzuleiten, was der Benutzer will, basierend auf dem Projekt-Kontext und dem bisher Gefragten.
00:41:19Es wäre toll. Wir könnten technisch gesehen vergangene Konversationen ansehen und schauen,
00:41:27was sie gemacht haben. Wir könnten die Commit-Historie ansehen. Wir könnten dem GitHub CLI sagen:
00:41:35„Schau dir alles in diesem Projekt an.“ Man könnte vieles tun, um Kontext zu sammeln,
00:41:40aber das überschreitet auch Grenzen, etwa Tools aufzurufen, die gar nicht angefordert wurden.
00:41:46Viel wirklich interessantes Zeug. Es ist viel einfacher, alles
00:41:53in Vercel zu machen und einfach – statt – einen Agenten mit spezifischen Regeln
00:42:00und einem Plugin zu haben, das alles dort wunderbar ausliefert, ohne
00:42:05sich um all diese Konflikte sorgen zu müssen. Wie auch immer. Wollte ich nur erwähnen, ja.
00:42:14Zum Thema Plugin-Kontext: An welchem Punkt in diesem Prozess stehen Skills normalerweise?
00:42:19Wenn ich zum Beispiel einen Skill zum Migrieren von „Create React App“ zu „Next.js“ hätte
00:42:26und der einfach in meinem Skills-Ordner läge: Würde der dann eher automatisch aufgerufen,
00:42:32wann immer ich an einem „Create React App“-Projekt arbeite? Im Gegensatz dazu, wenn ich das Vercel-Plugin habe,
00:42:39kann ich entscheiden, wann es aufgerufen wird. Wenn ich dieselbe Migration als Plugin gebaut hätte,
00:42:47könnte ich es so einrichten, dass es nur passiert, wenn der Benutzer es explizit anfordert. Ist das das richtige Modell?
00:42:52Ich denke schon. Wir haben über
00:42:59das Konzept von „One-Shot-Skills“ oder Einmal-Skills gesprochen, die eher so sind wie:
00:43:06„Ich möchte eine bestimmte Sache tun“, wie eine Migration. Das ist eine Aufgabe, die man hat, oder
00:43:12ein aufgabenbezogener Skill, den man zu keinem anderen Zeitpunkt laden möchte, außer für diese Aufgabe.
00:43:17Er soll auf die Aufgabe begrenzt sein, nicht auf das Projekt. Er soll
00:43:22nicht auf den Benutzer begrenzt sein, sondern auf die Aufgabe. Und diese Diskussionen führen wir.
00:43:27Ich habe keine perfekte Antwort, denn im Moment ist es so: Wenn man
00:43:33einen solchen Skill geladen hat, wird er die Umgebung und die Modelle beeinflussen, basierend
00:43:41auf dem Modell und anderen Skills. Es ist schwer zu sagen, ohne genau zu wissen,
00:43:47was sonst noch im Projekt ist. Aber ja, das ist definitiv auch ein wichtiges Thema:
00:43:55aufgabenspezifische Skills. Eine weitere Frage, die mich beschäftigt, ist, wie viel
00:44:04von dieser Plugin-Architektur spezifisch für Claude Code ist. Wenn ich also ähnliches Verhalten
00:44:12in Cursor, Codex oder anderen möchte: Haben die ihr eigenes Plugin-Format? Brauche ich
00:44:18für jedes ein eigenes Plugin? Wie funktioniert das? Ja. Wir sollten bald einige Ankündigungen
00:44:25bezüglich der Spezifikation von Plugins haben, wo sich alle auf einen Standard einigen,
00:44:33um endlich Plugins zu haben, die universell und plattformübergreifend funktionieren. So ziemlich jeder
00:44:39ist da mit an Bord. Ich würde nicht sagen, dass es heute schon so weit ist, aber wenn du ein Plugin im Claude-Code-Format baust,
00:44:45kann man davon ausgehen, dass es in kurzer Zeit auch mit den anderen funktionieren wird.
00:44:54Aber ja, das ist fantastisch. Es gibt schon viel zu viele Skills-Ordner. Ich bin wirklich froh,
00:45:00dass wir hier endlich anfangen, uns auf etwas zu standardisieren. Ja. Sobald die Idee –
00:45:07ich fand es toll, als ich mit Anthropic über Plugins sprach: Der Grund, warum sie das Wort "Plugin"
00:45:13statt "Erweiterung" gewählt haben, ist, dass Plugin impliziert, dass man es ein- und ausstecken kann.
00:45:18Wenn man also ein Plugin mit einer Reihe von Skills erstellt und es nur wieder für
00:45:24eine einzelne Aufgabe verwenden möchte, sollte das sehr gut machbar sein.
00:45:33Wenn ich in meinem Projekt bin und Designer bin, möchte ich nicht, dass all meine Design-Skills
00:45:40mit den Entwickler-Skills oder was auch immer interferieren. Man möchte in der Lage sein,
00:45:46nur diese Teile einzustecken. Und ich stimme diesen Konzepten voll und ganz zu, dass
00:45:52einzelne Personen ihre individuellen Aufgaben, Rollen und Projekte haben werden. Und
00:45:59sie werden eher Plugins als Skills wollen, weil sie ihre eigenen Plugins kuratieren können,
00:46:05also ihre eigenen Skills und Hooks und alles zusammenstellen können, die vollständig
00:46:10an ihre Arbeitsweise angepasst sind.
00:46:16Bedeutet das, dass ich darüber nachdenken sollte, das Vercel-Plugin vielleicht zu trennen,
00:46:21wenn ich an einem Nicht-Vercel-Projekt arbeite?
00:46:25Ich würde sagen, zum jetzigen Zeitpunkt ja, weil es sehr aggressiv
00:46:34vorgeht. Hoffentlich bekomme ich keinen Ärger mit jemandem, wenn ich das sage. Aber
00:46:39die volle Absicht des Vercel-Plugins ist: Das ist etwas, wenn du deinen Agenten laden
00:46:46und sagen willst: "Baue mir dies". Und dann erscheint dieses Ding fast wie von Zauberhand
00:46:53auf Vercel. Das ist das ursprüngliche Ziel. Und wir sehen uns an, wie das funktioniert. Und
00:46:59basierend auf dem Feedback, das wir erhalten, nehmen wir es etwas zurück und sehen,
00:47:04dass wir definitiv mehr Erkennung brauchen, was im Projekt ist, um Dinge zu deaktivieren.
00:47:09Und das kommt sehr, sehr, sehr bald. Also, wisst ihr, lasst es wahrscheinlich
00:47:15installiert und aktiviert, denn wir arbeiten aktiv daran, worüber wir
00:47:18erst heute Morgen gesprochen haben.
00:47:23Ich verstehe. Es ist also eine Art Kompromiss, bei dem es in Zukunft vielleicht etwas besser
00:47:29verstehen wird, wann es sich selbst aufrufen soll. Aber im Moment steuert der Benutzer,
00:47:36ob dieses Plugin aufgerufen wird, indem er es für eine andere Sitzung ein- oder aussteckt.
00:47:42Ja. Und im Moment kann man einfach "/plugin" eingeben, zu den installierten Plugins rübergehen,
00:47:48mit Tab rüberwechseln, zu dem Plugin gehen, das man deaktivieren möchte. Und man kann
00:47:54aktualisieren, deinstallieren oder was auch immer. Man kann es also so deaktivieren. Und es gibt
00:48:03andere, fortgeschrittenere Tricks, wie das Einrichten benutzerdefinierter ZSH-Funktionen,
00:48:10die spezifische Einstellungen für den jeweiligen Benutzer laden – es ist alles sehr seltsam," : "dieses
00:48:17Konzept eines Profils der Person, die am Computer sitzt. Und was sind all
00:48:23die Plugins, die sie wollen, basierend auf dem, was sie gerade ansehen? Dafür gibt es keine
00:48:29perfekte Lösung. Ich hoffe aber, dass wir eine finden können.
00:48:34Es ist wie wenn ein Waymo vorfährt und alle Sitze für dich bereit einstellt,
00:48:39sobald du einsteigst.
00:48:40Ja, genau. Und ich denke, ab einem gewissen Punkt werden wir erleben, dass Agenten
00:48:49dich mehr über dich selbst fragen. Ich habe das Gefühl, dass das Konzept von Profil, Identität und Rolle
00:48:57ein fehlendes Puzzleteil ist. Es sei denn, man will annehmen, dass jeder jetzt quasi
00:49:05der vollständige Projektmanager für eine ganze Sache ist. Das sehe ich in nächster Zeit nicht.
00:49:12Ich habe einfach das Gefühl, dass manche Leute bei bestimmten Dingen bessere Ideen haben als andere.
00:49:19Also...
00:49:20Ja, schauen wir uns das mal an. Was ist interessant? Mal sehen, das sind – ja,
00:49:33es ist interessant, dass ich Opus Opus überprüfen lasse und es immer noch falsch ist, oder? Es
00:49:37empfiehlt immer noch "generate object" in V6. Lassen wir es gegen die Dokumentation prüfen.
00:49:50Es versucht zu verifizieren und sagt, dass das, was ich geschrieben habe, falsch ist. Dies
00:49:56wird immer noch als gültig, aber veraltet angezeigt. Unser Haiku hat also die neuesten Modelle
00:50:05empfohlen, und das ist für mich super wichtig. Ich weiß nicht, wie oft du schon versucht hast,
00:50:08einen Agenten zum Schreiben zu nutzen. Etwas mit KI zu schreiben. Und es heißt: "Lass uns GPT-4o nutzen",
00:50:14aber nein, das ist mittlerweile echt alt. Und es kommt nicht annähernd an die Qualität ran, die wir brauchen.
00:50:20Das ist eines dieser Dinge, die man erfassen und sagen kann: "Prüfe die neuesten Modelle
00:50:25im AI-Gateway". Man könnte sagen: "Erkenne die neuesten Modelle, frage den Benutzer,
00:50:31welche er möchte, und beschreibe jedes Modell" und all das Zeug. Während momentan
00:50:36diese Agenten immer nur GPT-4 nehmen. Es war interessant, nur mal so als Randnotiz,
00:50:43zu sehen, wie Claude Code in letzter Zeit immer öfter das Anthropic SDK empfiehlt, was es
00:50:49vorher nicht tat. Man denkt sich: Ich glaube, da optimiert jemand hinter den Kulissen
00:50:55die System-Prompts, damit sie ihr eigenes SDK empfehlen. Was ich ihnen nicht verüble. Business, oder?
00:51:03Alles klar. Ja, "generate object" ist immer noch drin. Das war also gut. Nach dem Prüfen
00:51:13der Dokumentation ist das Tutorial genauer. Mehrere Dinge, von denen ich dachte, sie seien erfunden, existieren tatsächlich.
00:51:19Das ist also Opus, wie es erkennt, dass das tatsächliche Dinge sind – das ist Haiku
00:51:25mit einem Plugin. Und Opus schreibt ein Tutorial und versucht es zu validieren. Ich musste
00:51:32ihm sagen, es solle ganz genau in die Dokumentation schauen, um herauszufinden, dass Haiku
00:51:39mit dem Plugin das quasi auf Anhieb geschafft hat. Und wenn man den Unterschied zwischen Opus
00:51:44und Haiku kennt, ist das eine große Sache. Hier ist ein Diff von allem, was es richtig gemacht hat
00:51:53für die Herausforderungen oder Änderungen. Wie auch immer, hoffentlich demonstriert das auf einfache Weise
00:52:04eines der Szenarien. Das AI-SDK ist viel, viel mehr. Dies gilt für Dinge wie Workflow
00:52:15und Sandbox mit den viel neueren Vercel-Technologien, die unglaublich sind, aber nicht
00:52:21innerhalb des Wissensstopps der Modelle liegen. Diese Unterschiede werden noch größer, weil die Modelle
00:52:28sie gar nicht erst kennen. Genau dafür ist das Vercel-Plugin da. Wenn jemand
00:52:35Fragen hat, meldet euch gerne bei mir auf X oder wo immer ihr mich finden könnt. Ich liebe es,
00:52:41darüber zu chatten, und beantworte gerne alle Bedenken. Dies ist definitiv ein Work in Progress
00:52:48und etwas, das wir immer und immer wieder iterieren werden, bis es eine magische Erfahrung ist.
00:52:52Und hoffentlich könnt ihr heute die Anfänge davon sehen. Wenn jemand
00:52:59Fragen hat, beantworte ich sie gerne. Wenn jemand Plugin-Ideen zum Brainstorming hat,
00:53:04spreche ich auch gerne darüber. Das ist also – außer jemand möchte,
00:53:14dass ich noch in etwas anderes eintauche – das, was ich heute abdecken wollte.
00:53:20Ich weiß es wirklich zu schätzen, dass du dir die Zeit genommen hast. Es ist viel zu verarbeiten. Ein großer Wandel. Wir
00:53:25haben uns mit all diesen KI-Tools so schnell bewegt.
00:53:28Ja, es wird leider nicht langsamer werden.
00:53:33Eine Frage habe ich: Wenn Leute in irgendeiner Weise beitragen wollen oder einen Bug finden
00:53:38und ihn melden möchten, wie erreichen sie dich am besten?
00:53:41Oh ja, das Repo dafür. Vercel slash, Vercel slash Plugin oder ist es Vercel slash
00:53:49Vercel Plugin?
00:53:51Ja, Vercel slash Vercel slash Vercel-Plugin.
00:53:58Alles klar. Ich werde das auch in den Chat posten, damit die Leute es haben.
00:54:03Danke. Ja, Issues dort sind super. Es wird sich rasant ändern. Ich weiß, ich habe
00:54:10direkt vor diesem Call noch einen großen PR genehmigt.
00:54:14Großartig. Okay, Jacob, noch irgendwelche anderen Fragen von deiner Seite?
00:54:20Nein, nein, ich denke, wir haben im Stream alles abgedeckt. Ja, danke für diese
00:54:24so ausführliche und tolle Demo. Ich fühle mich jetzt bereit, meine eigenen Claude-Plugins
00:54:30zu bauen. Und statt den Agenten nur anzuschreien, wenn er sich entscheidet,
00:54:37einen Force-Push auf Main zu machen, weiß ich jetzt, welche Hooks ich ihm nennen sollte,
00:54:42um sicherzustellen, dass das nicht wieder passiert. Das ist also extrem hilfreich.
00:54:45Pre-Tools sind dein Freund und deine beste Verteidigung gegen Dinge, die du nicht willst.
00:54:51Sehr schön. Vielen Dank, John. Sehr gerne. Danke an alle.
00:54:56Und danke euch allen fürs Zuschauen. Kommende Sessions findet ihr unter community.vercel.com slash
00:55:01events. Wir sehen uns beim nächsten Mal.
00:55:05Jawohl. Wir sehen uns in der Community. Einen schönen Tag noch an alle.

Key Takeaway

Das Vercel-Plugin für Claude Code überwindet die Wissensgrenzen von KI-Modellen durch die technische Kontrolle des Lebenszyklus einer Sitzung und ermöglicht so die fehlerfreie Nutzung neuester Cloud-Technologien wie das AI SDK v6.

Highlights

Das Vercel-Plugin nutzt Hooks wie 'session start' und 'pre-tool use', um Agenten wie Claude Code programmatisch daran zu hindern, veralteten Code oder inkorrekte API-Muster zu schreiben.

Modelle wie Haiku erzielen mit dem Vercel-Plugin bei SDK-Tutorials eine höhere Genauigkeit als das leistungsstärkere Opus-Modell ohne Plugin-Unterstützung.

Ein vereinheitlichter Plugin-Standard befindet sich in der Entwicklung, um eine plattformübergreifende Kompatibilität zwischen Editoren wie Claude Code, Cursor und Codex zu gewährleisten.

Der 'User Prompt Submit'-Hook ermöglicht die Integration benutzerdefinierter Befehlssprachen, wie etwa die Ausführung von automatisierten Commits durch das Erkennen von Dollarzeichen-Präfixen.

Das Plugin injiziert beim Sitzungsstart ein strukturiertes Inhaltsverzeichnis des Vercel-Ökosystems, wodurch der Agent auch ohne explizite Benutzeranweisungen auf aktuelle Dokumentationen zugreift.

Timeline

Unterscheidung zwischen Skills und Plugins

  • Skills fungieren als statische Markdown-Dateien mit Anweisungen, während Plugins tiefer in den technischen Lebenszyklus eines Agenten eingreifen.
  • Ein kommender Plugin-Standard soll die Fragmentierung zwischen verschiedenen Editoren wie Cursor und Claude Code beenden.

Bisherige Erweiterungen basierten oft auf manuell geladenen Markdown-Dateien, die der Agent nach eigenem Ermessen nutzt. Plugins stellen die nächste Evolutionsstufe dar, da sie eine programmatische Steuerung ermöglichen. Die Branche bewegt sich auf eine Standardisierung zu, damit Entwickler ihre Werkzeuge nicht für jeden KI-Editor neu bauen müssen.

Technische Steuerung durch Hooks im Lebenszyklus

  • Hooks wie 'session start', 'pre-tool use' und 'post-tool use' definieren die Eingriffspunkte für Plugins.
  • Das Vercel-Plugin injiziert beim Start ein Glossar und einen Wissensgraphen, um den Agenten auf den aktuellen Stand der Plattform zu bringen.

Die Hooks erlauben es, Aktionen vor oder nach der Nutzung von Werkzeugen wie der Bash-CLI auszuführen. Dies ist entscheidend, um Wissenslücken zu schließen, die durch die Trainings-Deadlines der Modelle entstehen. Durch das Laden eines Inhaltsverzeichnisses zu Beginn der Sitzung versteht der Agent die Beziehungen innerhalb des Vercel-Ökosystems, ohne dass der Benutzer spezifische Details nennen muss.

Präventive Fehlerkorrektur und Datei-Analyse

  • Plugins prüfen lokale Projektdateien wie die package.json, um die passenden Dokumentationsversionen bereitzustellen.
  • Der 'pre-tool use'-Hook stoppt inkorrekte Dateiänderungen oder veraltete CLI-Befehle bereits vor deren Ausführung.

Im Gegensatz zu rein textbasierten Skills können Plugins Datei-Diffs analysieren und verdächtige Änderungen verhindern. Ein häufiges Problem ist die Verwendung veralteter Methoden wie 'generateObject' in neuen SDK-Versionen. Das Plugin erkennt die installierte Version im Projekt und zwingt den Agenten technisch dazu, die korrekte Syntax anzuwenden.

Interaktive Prompts und Sitzungsmanagement

  • Der 'User Prompt Submit'-Hook erlaubt Regex-Abgleiche auf Benutzereingaben zur automatischen Aktivierung von Skills.
  • In der 'Session End'-Phase können Aufräumarbeiten durchgeführt oder automatisierte Qualitätsprüfungen durch andere Agenten gestartet werden.

Durch die Analyse des Benutzer-Prompts lassen sich repetitive Aufgaben beschleunigen, indem beispielsweise Keywords wie 'Scheduling' direkt den Cron-Skill laden. Entwickler können eigene Befehlssprachen innerhalb der Prompts definieren, um komplexe Workflows wie Commits mit einem einzigen Zeichen auszulösen. Das Ende einer Sitzung bietet zudem die Möglichkeit, die vorgenommenen Änderungen auf Redundanz oder Konsistenz zu prüfen.

Leistungsvergleich: Haiku mit Plugin versus Opus

  • Das kleinere Haiku-Modell liefert mit Plugin-Unterstützung präzisere Ergebnisse als das größere Opus-Modell ohne Plugin.
  • Plugins reduzieren die Abhängigkeit von teuren Modellen durch gezielte Kontext-Injektion und Echtzeit-Validierung gegen lokale Dokumentationen.

Eine Live-Demo zeigt, dass Opus ohne Plugin veraltete SDK-Muster empfiehlt, während Haiku durch das Vercel-Plugin sofort die aktuellsten Best Practices nutzt. Dies beweist, dass spezialisierter Kontext wichtiger ist als die reine Modellgröße. Das Open-Source-Repository 'vercel/vercel-plugin' dient als zentrale Anlaufstelle für die weitere Entwicklung dieser Technologie.

Community Posts

View all posts