KI Coding Plugin
KI Coding Plugin
Das KI Coding Plugin bindet einen Large Language Model (LLM) basierten KI-Assistenten in den Activity-Editor (Aktivitäten-Code), den Compound-Netzwerk-Editor, den Dokumentations-Editor und in den ST/X Class Browser ein. Das Plugin unterstützt zwei Anbieter, die im Einstellungsdialog umschaltbar sind:
- Anthropic Claude (claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5)
- OpenAI ChatGPT (gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1, o3)
- Ollama (codellama:7b, codellama:13b)
Je nach gewähltem Anbieter erscheint die Toolbar-Schaltfläche als "Ask Claude" bzw. "Ask ChatGPT"; das Einstellungs-Tab heißt "AI Coding".
Aktivitäten-Editor
Im Aktivitäten-Code-Editor erscheint in der Toolbar eine Schaltfläche "Ask Claude" / "Ask ChatGPT" mit folgenden Aktionen:
- Open KI Window — öffnet das eigenständige Chat-Fenster
- Explain code — erklärt den Code der aktuellen Aktivität
- Suggest improvement — schlägt Verbesserungen vor
- Find bugs — sucht nach Fehlern, Race Conditions, nil-Handling-Problemen
- Generate doc-comment — generiert eine Aktivitäts-Dokumentation inklusive Pin-Kommentaren und füllt den Documentation-Tab
- Custom prompt... — freier Prompt; der Aktivitäts-Code wird als Kontext mitgesendet
- Set model ▸ — Untermenü mit den Modellen des aktiven Anbieters (das aktuell aktive ist mit (active) markiert)
- Set provider ▸ — nur sichtbar, wenn API-Schlüssel für mehr als einen Anbieter konfiguriert sind; Untermenü zum Umschalten zwischen Claude und ChatGPT
Code-Vorschläge können mit [Apply] (direkt am jeweiligen
Code-Block im Chat oder über die obere Apply-Schaltfläche) in den
Aktivitäts-Body übernommen werden. Vom KI gelieferte Smalltalk/X
Hilfsmethoden (Form: Klasse >> selector) werden nach
Rückfrage in die genannte Klasse compiliert.
Compound (Netzwerk) Editor
Auf der Toolbar von Compound-Worksheets erscheint dieselbe Schaltfläche, beschränkt auf die für Netze sinnvollen Aktionen (Open KI Window, Generate doc-comment) — ebenfalls mit den Untermenüs Set model und ggf. Set provider.
Dokumentations-Editor
Der Dokumentations-Tab der Block-Description (Editor für Test-Cases, Test-Plans und Aktivitäten) trägt dieselbe Toolbar-Schaltfläche "Ask Claude" / "Ask ChatGPT" mit den Einträgen Open KI Window, Generate doc-comment sowie den Untermenüs Set model und ggf. Set provider. Generate doc-comment analysiert den aktuellen Block (Name, vorhandene Beschreibung, Eingangs-/Ausgangs-Pins, Sub-Steps eines Compound-Netzes, referenzierte Environment-Variablen) und schlägt eine vollständige Block- und Pin-Dokumentation vor.
Ist der Block schreibgeschützt (importierte Library, RTL-Lizenz), fragt [Apply] nach, ob der Block freigeschaltet und die Dokumentation eingetragen werden soll.
Class Browser (ST/X)
Im Class Browser stehen die Aktionen unter dem AI-Untermenü sowie im Selektor-Kontextmenü zur Verfügung. Die Aktionen operieren auf der aktuell ausgewählten Methode (Klasse + Selektor + Quelltext werden als Kontext mitgesendet). [Apply] kann das Resultat direkt in die Methode der aktiven Klasse einbauen. Auch hier sind Set model und ggf. Set provider als Untermenüs verfügbar.
Chat-Fenster
Das eigenständige Chat-Fenster trägt den Titel AI Coding [<Produkt> / <Modell>] (z.B. "AI Coding [Claude / claude-opus-4-7]") und zeigt nach jedem Turn den Tokenverbrauch und die kumulierten Kosten — sofern Preise für das gewählte Modell hinterlegt sind. Anbieter- und Modellwechsel im Einstellungsdialog werden live übernommen.
Das Transkript ist als vertikales Panel von "Karten" aufgebaut:
- Prosa-Karten enthalten den fließenden Text der Antwort; Zeilen werden auf die Fenster-Breite umgebrochen.
- Code-Karten (eingerahmt) entstehen aus markdown-Code-Blöcken (
```...```) und sind als Workspace editierbar — das Standard-Smalltalk-Popup-Menü bietet doIt / printIt / inspectIt, einTestCase-simulatedSelfist gesetzt, so dassself assert:... equals:...direkt ausgeführt werden kann. Lange Blöcke scrollen innerhalb der Karte. Rechts oben sitzen die Schaltflächen [Apply] (sofern für den Kontext sinnvoll) und [⎘ Copy]; links wird der Sprachtag (smalltalk, python, …) angezeigt. - Doku-Karten (volle Breite, Prosa) entstehen aus dem speziellen
```doc-Block, den der Dokumentations-Generator anfordert; Inhalt ist die Vorschlags-Dokumentation für Block- und Pin-Beschreibungen.
Scroll-Lock: solange der Anwender bereits am unteren Ende des Transkripts steht, folgt die Anzeige neu eintreffenden Karten automatisch; nach manuellem Hochscrollen bleibt die Position stehen.
Bilder können als Anhang versendet werden (Screenshot oder PNG/JPG-Datei). Anhänge funktionieren mit beiden Anbietern; bei OpenAI nur mit vision-fähigen Modellen (gpt-4o-Familie).
Einstellungen (AI Coding)
Im Einstellungsdialog unter Plugins → AI Coding (bzw. unter Tools → AI Coding im Smalltalk-Launcher) werden konfiguriert:
- Provider — Anthropic oder OpenAI. Beim Wechsel werden API-URL und Default-Modell entsprechend angepasst; der gespeicherte API-Schlüssel des jeweiligen Anbieters wird geladen.
- API Key — Schlüssel des aktuell gewählten Anbieters. Die Schlüssel werden pro Anbieter getrennt gespeichert (
#claudeApiKey_anthropicbzw.#claudeApiKey_openai), so dass zwischen den Anbietern ohne erneute Eingabe gewechselt werden kann. Das Setzen des Schlüssels erfolgt ausschließlich über diesen Dialog. - Model — ein Modell aus der Liste des aktiven Anbieters oder ein selbst eingegebener Modellname. Kann auch direkt über das Set model-Untermenü in den Editor-Toolbars umgeschaltet werden.
- Max output tokens — maximale Antwortlänge.
- API URL — nur zu ändern für eigene Proxies / Gateways. Standard:
https://api.anthropic.com/v1/messagesbzw.https://api.openai.com/v1/chat/completions.
API-Schlüssel beschaffen
- Anthropic: console.anthropic.com, Schlüsselformat
sk-ant-.... - OpenAI: platform.openai.com/api-keys, Schlüsselformat
sk-...odersk-proj-.... Voraussetzung ist ein aufgeladenes Konto (Mindestbetrag derzeit USD 5).
Datenschutz / Datenfluss
Bei aktivem Anbieter Anthropic gehen die Anfragen direkt an
api.anthropic.com, bei OpenAI direkt an
api.openai.com. Es gibt keinen eXept-seitigen Proxy oder
Zwischenspeicher. Mit dem Aktivitäts-Quelltext bzw. den Methoden-
Quelltexten werden auch Pin-Beschreibungen, Sub-Step-Namen und
referenzierte Environment-Variablen aus dem Block-Description-Modell
als Kontext versendet.
Bei Benutzung von Anthropic API-Tokens - wie hier der Fall - werden laut Anthropic die Daten nicht zum Training des KI-Modells genutzt (Anthropic Erkärung dazu).
Tipps
- Mehrere Konversationen: der Chat ist ein Singleton — eine neue Anfrage über ein Browser-/Editor-Menü startet jedesmal eine neue Konversation. Folge-Fragen (Klärung, Vertiefung) gehen über das Eingabefeld in derselben Konversation.
- Vorsicht: Die Größe der übertragenen Daten (auch die aus dem Chatfenster) geht in die Kostenberechnung ein. Deshalb immer eine neue Konversation starten, wenn es um ein neues Thema geht.
- Modell wechseln: Für schnelle Routine-Antworten Sonnet, für schwierige Refactorings Opus. Über das Set model-Untermenü direkt aus der Toolbar oder über die Settings.
- Anbieter wechseln: Sind Schlüssel für beide Anbieter konfiguriert, schaltet das Set provider-Untermenü ohne Umweg über den Settings-Dialog um.
- Code direkt ausführen: In Code-Karten kann markierter Smalltalk-Code per doIt / printIt / inspectIt direkt evaluiert werden — praktisch z.B. um vom Modell vorgeschlagene SUnit-Asserts gleich auszuprobieren, ohne den Code erst in einen Workspace zu kopieren.
- Custom prompt eignet sich gut für „warum macht Methode X es so und nicht so?" oder „schreib mir einen ParameterizedTest dazu mit folgenden Daten: …".
Tipps für die Arbeit mit claudeCode
Wenn Sie claudeCode verwenden, stehen ihnen noch weit mehr Funktionen zur Verfügung: sie können zum Beispiel im claudeCode Terminal eingeben:
- "mach mir eine neue Suite in einem neuen Fenster",
- "Mache eine Aktion zur Berechnung des Umfangs eines Kreises bei gegebenen Radius",
- "Erstelle eine neue suite mit einem Testfall der folgendes macht:
- 1) webbrowser auf "www.exept.de" öffnen.
- 2) auf das logo oben links klicken.
- 3) webbrowser schliessen.
- welche Funktionalität ist in xxx.ets
Claude wurde von uns in die Lage versetzt, selbst nach passenden Bibliotheken zu suchen, diese zu importieren, Aktionen zu Generieren und den Testplan anzulegen.
Tatsächlich auch, den Test gleich durchzuführen und das Resultat zu analysieren.
Aktuell sind wir am trainieren, so dass claude z.B. selbst entscheidet ob es besser ist, eine fehlende Aktion als Diagramm oder als elementare zu definieren. Es ist in der Lage, die Funktionen des unterliegenden Frameworks zu sehen und auch komplexe Aufgaben zu erledigen:
- "aktion zum Lesen der Jahresumsätze eines Jahres aus der Datenbank"
- extrahiere aus dem xml Dokument alle budget Einträge und liefere die Summe
Erfahrungen und Tippsfür die Arbeit
Sonnet-4 ist gefühlt weit intelligenter als Heiku-4.5, aber auch weit teurer. Ihr Budget kann sehr schnell schmelzen mit Sonnet. Insbesondere wenn man auf medium oder high Intelligenzlevel abeitet. Aber Haiku macht auch weit mehr Fehler und man sollte genau hinschauen was er so generiert. Gefühlt war Sonnet selbst im low level besser als Haiku. Aber der Preis...
Folgende konkrete Tipps aus unseren ersten Erfahrungen, diese Liste wird aktualisiert, und kann auch basieren auf unserer eigenen Dummheit. Ist also u.U.mit Vorsicht zu geniessen.
- geben Sie Haiku Hinweise, z.B. schau mal dort, oder nimm das als Beispiel. Sonnet findet selbst viel besser Lösungen.
- kurze Anweisungen, je konkreter desto günstiger.
- haiku ist weit "fauler". Z.B hat sonnet automatisch eine Dokumentation bei neuen Aktionen angelegt, und diese auch aktualisiert. Haiku hingegen musste man explizit eine Regel dazu anlegen (z.B. mit "wenn du eine aktion anlegst oder änderst, aktualisiere die dokumentation")
- heiku ist dümmer. Regeln die von sonnet angelegt wurden, können von haiku u.U. nicht befolgt werden, weil sonnet weit mehr generalisieren kann.
- sagen sie beiden sie sollten wenn sie ein Problem haben, nicht lange selbst suchen. sondern nachfragen ob man ihnen einen Tipp geben kann. Wenn Sie das nicht tun, kann es sein dass Sonnet auch eine viertel Stunde nachdenkt und die Dollars schmelzen wie Eis in der Sonne
(ist mir passiert, als ein Socket Problem in der Kommunikation auftrat, und er nicht erkannte, das die Antworten von mcp falsch waren, es hat dann selbst alle möglichen Wege gesucht, eine Nachricht abzusetzen, incl. der Erstellung diverser Shell, curl und Python Scripte... obgleich es eigentlich ein Interface dafür gab, das aber einen Fehler hatte). - schränken Sie das Modell in seinen Möglichkeiten ein, z.B. sagen sie "editiere nicht die files sondern verwende dazu ein tool", oder "eine expecco aktion und sag mir vorher welche du nimmst". Sonst kann es passieren dass es anfängt ihre ets zu entpacken um darin nach strings zu suchen, obgleich es das eigentlich einfacher über das interface machen kann (dieses konkrete Problem wird nicht mehr auftreten aber Sie sehen den Punkt). Da war Sonnet weit intelligenter hat aber auch länger nachgedacht.
- wenn sie feststellen, dass es einen Fehler macht, sagen sie (wörtlich) "remember: mach dies nicht, oder um das zu machen tu das."
- sie können diese Erinnerungen sowohl in ihrem UserProfile (also im lokalen Filesystem) als auch in ihren expecco Präferenzen halten. Sagen Sie dazu "remember this in in my expecco memory" oder "remember (in my user memory): bla bla". Erinnerungen kann man auch löschen "forget to ...". Zu Beginn der nächsten session sagen sie "read your expecco memory".
- wechseln sie das Modell oder den level, je nach Komplexität der Aufgabe. Aber bedenken Sie dass Wissen von Session zu Session verloren geht, wenn es nicht erinnert wird. Technisch sind Erinnerungen nichts anderes als das Lesen einer Liste der vormaligen remember Anweisungen. Kosten also auch Tokens. Sie könnten also die Erinnerunge auch einfach neu eintippen ;-)
- auch wenn es so scheint: das "Ding" ist kein Mensch; lassen sie "bitte, danke, oder Begründungen - es sei denn sie dienen der Entscheidung - weg. Tatsächlich erhöhen sie den Tokenverbrauch u.U.