KI Coding Plugin: Unterschied zwischen den Versionen

Aus expecco Wiki (Version 25.x)
Zur Navigation springen Zur Suche springen
Inhalt gelöscht Inhalt hinzugefügt
Sv (Diskussion | Beiträge)
Sv (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
= KI-Plugin (Claude Code) =
= KI Coding Plugin =


Das KI Coding Plugin bindet einen Large Language Model (LLM) basierten
Das KI-Plugin bindet das Anthropic-Claude-Sprachmodell direkt in den expecco-Activity-Editor und in den ST/X-Klassenbrowser ein. Damit lassen sich Activities und Methoden erklären, verbessern, kommentieren oder auf Bugs untersuchen — Antworten erscheinen in einem eigenen Chat-Fenster und können per Knopfdruck wieder ins ursprüngliche Editor-Fenster zurückgespielt werden.
KI-Assistenten in den Activity-Editor (Aktivitäten-Code) 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)
== Voraussetzungen ==
* '''OpenAI ChatGPT''' (gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1, o3)


Je nach gewähltem Anbieter erscheint die Toolbar-Schaltfläche als
* expecco mit installiertem Plugin <code>exept:expecco/plugin/claudeCodePlugin</code> (im Lieferumfang ab Version 26.1).
'''"Ask Claude"''' bzw. '''"Ask ChatGPT"'''; das Einstellungs-Tab
* Ein '''Anthropic-API-Key''' (beginnt mit <code>sk-ant-...</code>). Den bekommst Du unter [https://console.anthropic.com/ console.anthropic.com] nach Anmeldung. Beachte: Anfragen werden nach Anthropic-Tarif abgerechnet (typisch wenige Cent pro Anfrage, siehe Kostenanzeige im Chat-Fenster).
heißt '''"AI Coding"'''.
* Verfügbares <code>curl</code>-Binary auf dem System (wird vom Plugin für die HTTPS-Verbindung verwendet). Unter Windows wird die mit expecco ausgelieferte Version genutzt; auf Linux/macOS in der Regel das System-<code>curl</code>.


== Einrichtung ==
== Aktivitäten-Editor ==


Im Aktivitäten-Code-Editor erscheint in der Toolbar eine Schaltfläche
=== API-Key setzen ===
"Ask Claude" / "Ask ChatGPT" mit folgenden Aktionen:


* Open KI Window — öffnet das eigenständige Chat-Fenster
# Menü '''Extras → Einstellungen…''' öffnen.
* Explain code — erklärt den Code der aktuellen Aktivität
# In der Baumansicht den Tab '''Claude Code''' auswählen.
* Suggest improvement — schlägt Verbesserungen vor
# In das Feld '''API key''' den Anthropic-Key eintragen (<code>sk-ant-…</code>).
* Find bugs — sucht nach Fehlern, Race Conditions, nil-Handling-Problemen
# Optional anpassen:
* Generate doc-comment — generiert eine Aktivitäts-Dokumentation inklusive Pin-Kommentaren und füllt den Documentation-Tab
#* '''Model''' — z.B. <code>claude-sonnet-4-6</code> (Standard, ausgewogen) oder <code>claude-opus-4-7</code> (stärker, teurer)
* Custom prompt... — freier Prompt; der Aktivitäts-Code wird als Kontext mitgesendet
#* '''Max tokens''' — Obergrenze der Antwortlänge (Standard: 4096)
* Set API key... — Schlüssel des aktiven Anbieters setzen
#* '''API URL''' — nur ändern, wenn ein anderer Endpoint genutzt werden soll
# Mit '''OK''' schließen — der Key wird sowohl in den expecco-Preferences als auch in den User-Preferences abgelegt und überlebt damit Image-Wechsel.


Code-Vorschläge können mit '''[Apply]''' im Chat direkt in den
Alternativ ohne Settings-Dialog: im Chat-Menü oder über die Kontextmenüs (s.u.) gibt es einen Punkt '''Set API key…''', der dasselbe interaktiv erledigt.
Aktivitäts-Body übernommen werden. Vom KI gelieferte Smalltalk/X
Hilfsmethoden (Form: <code>Klasse >> selector</code>) werden nach
Rückfrage in die genannte Klasse compiliert.


== Compound (Netzwerk) Editor ==
=== Test ===


Auf der Toolbar von Compound-Worksheets erscheint dieselbe
Nach dem Setzen des Keys irgendwo eine Activity öffnen, im Code-Editor in das Toolbar-Icon '''Ask Claude''' klicken und '''Explain code''' wählen. Funktioniert die Verbindung, erscheint nach kurzer Zeit eine Antwort im Chat-Fenster.
Schaltfläche, beschränkt auf die für Netze sinnvollen Aktionen
(Open KI Window, Generate doc-comment, Set API key).


== Verwendung in expecco ==
== Class Browser (ST/X) ==


Im Class Browser stehen die Aktionen unter dem '''AI'''-Untermenü
=== Toolbar im Activity-Code-Editor ===
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.


== Chat-Fenster ==
In jedem expecco-Activity-Editor (Smalltalk, JavaScript, Python, Ruby, …) erscheint in der Toolbar ein Eintrag '''Ask Claude''' mit Submenü:


Das eigenständige Chat-Fenster trägt den Titel
* '''Explain code''' — erläutert, was die Activity tut, inkl. Inputs/Outputs und Nebenwirkungen.
'''AI Coding [&lt;Produkt&gt; / &lt;Modell&gt;]''' (z.B.
* '''Suggest improvement''' — schlägt konkret verbesserten Code vor (idiomatischer, klarer, robuster).
"AI Coding [Claude / claude-opus-4-7]") und zeigt nach jedem Turn
* '''Find bugs''' — sucht gezielt nach Fehlern, Race-Conditions, Nil-Problemen, vertauschten Branches.
den Tokenverbrauch und die kumulierten Kosten — sofern Preise für
* '''Generate doc-comment''' — generiert einen knappen Dokumentationstext.
das gewählte Modell hinterlegt sind. Anbieter- und Modellwechsel
* '''Custom prompt…''' — freie Eingabe; die aktuelle Activity wird als Kontext mitgeschickt.
im Einstellungsdialog werden live übernommen.
* '''Set API key…''' — interaktive Key-Eingabe.


Bilder können als Anhang versendet werden (Screenshot oder
=== Mitgeschickter Kontext ===
PNG/JPG-Datei). Anhänge funktionieren mit beiden Anbietern; bei
OpenAI nur mit vision-fähigen Modellen (gpt-4o-Familie).


== Einstellungen (AI Coding) ==
Mit jeder Anfrage an Claude wird automatisch übergeben:


Im Einstellungsdialog unter '''Plugins → AI Coding''' (bzw. unter
* Activity-Name und (sofern hinterlegt) Beschreibung.
'''Tools → AI Coding''' im Smalltalk-Launcher) werden konfiguriert:
* Sprache der Activity (z.B. <code>#Smalltalk</code>, <code>#PythonScript</code>).
* Liste aller Input- und Output-Pins mit Datentyp und ggf. Pin-Kommentar.
* Der vollständige Activity-Body.


* '''Provider''' — Anthropic oder OpenAI. Beim Wechsel werden API-URL und Default-Modell entsprechend angepasst; der gespeicherte API-Schlüssel des jeweiligen Anbieters wird geladen.
Dadurch kennt Claude die Schnittstelle der Activity und schlägt z.B. keine Typchecks für bereits typisierte Pins vor.
* '''API Key''' — Schlüssel des aktuell gewählten Anbieters. Die Schlüssel werden pro Anbieter getrennt gespeichert (<code>#claudeApiKey_anthropic</code> bzw. <code>#claudeApiKey_openai</code>), so dass zwischen den Anbietern ohne erneute Eingabe gewechselt werden kann.
* '''Model''' — ein Modell aus der Liste des aktiven Anbieters oder ein selbst eingegebener Modellname.
* '''Max output tokens''' — maximale Antwortlänge.
* '''API URL''' — nur zu ändern für eigene Proxies / Gateways. Standard: <code>https://api.anthropic.com/v1/messages</code> bzw. <code>https://api.openai.com/v1/chat/completions</code>.


== API-Schlüssel beschaffen ==
=== Antworten und Apply ===


* Anthropic: [https://console.anthropic.com console.anthropic.com], Schlüsselformat <code>sk-ant-...</code>.
Antworten erscheinen im '''Claude Code'''-Chat-Fenster (Singleton — wird beim ersten Aufruf geöffnet, danach jeweils wieder hochgeholt). Drei Buttons unter dem Verlauf:
* OpenAI: [https://platform.openai.com/api-keys platform.openai.com/api-keys], Schlüsselformat <code>sk-...</code> oder <code>sk-proj-...</code>. Voraussetzung ist ein aufgeladenes Konto (Mindestbetrag derzeit USD 5).


== Datenschutz / Datenfluss ==
* '''New conversation''' — startet eine neue Konversation (alter Verlauf wird verworfen).
* '''Apply''' — übernimmt einen Code-Block aus der Antwort:
** Bei Activity-Body-Vorschlag wird die aktuell offene Activity ersetzt (mit Compile-Schutz: schlägt das Compilieren fehl, bleibt der alte Code).
** Bei Method-Vorschlägen (z.B. Helper-Klassen-Methoden) wird automatisch ein NewSystemBrowser auf der Zielklasse geöffnet, der vorgeschlagene Code als geänderter Buffer geladen — Du kannst ihn vor dem Akzeptieren noch reviewen.
* '''Send (Ctrl-⏎)''' — schickt den Inhalt des Eingabefeldes als Folge-Frage (multi-turn). Während eine Antwort gestreamt wird, wird der Button zu '''Stop''' und kann den laufenden Stream abbrechen.


Bei aktivem Anbieter '''Anthropic''' gehen die Anfragen direkt an
==== Anhänge ====
<code>api.anthropic.com</code>, bei '''OpenAI''' direkt an
<code>api.openai.com</code>. Es gibt keinen eXept-seitigen Proxy oder
Zwischenspeicher. Mit dem Aktivitäts-Quelltext bzw. den Methoden-
Quelltexten werden auch Pin-Beschreibungen und Sub-Step-Namen 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 ([https://privacy.claude.com/de/articles/7996868-werden-meine-daten-fur-das-modelltraining-verwendet Anthropic Erkärung dazu]).
Über die Buttons '''+ Image''' und '''+ Screenshot''' kann man der nächsten Anfrage Bilder mitschicken (z.B. ein UI-Screenshot mit der Frage „warum sieht das so aus?"):

* '''+ Image''' — File-Chooser für PNG/JPEG/GIF/WebP.
* '''+ Screenshot''' — interaktiv einen Bildschirmbereich auswählen.

Die Anhänge werden mit der nächsten gesendeten Nachricht mitgeschickt und danach geleert. Ein Indikator im Send-Button zeigt die Anzahl pending Anhänge (z.B. „Send (1 img)").

==== Eingabefeld ====

Das Eingabefeld ist mehrzeilig:

* '''Enter''' — fügt einen Zeilenumbruch ein.
* '''Ctrl-Enter''' — sendet die Anfrage.

== Verwendung im Klassenbrowser (NewSystemBrowser) ==

Im ST/X-Klassenbrowser fügt das Plugin einen Eintrag '''Ask Claude''' im Methoden-Kontextmenü ein:

* '''Explain method''' — erläutert die selektierte Methode.
* '''Suggest improvement''' — schlägt verbesserten Code für die Methode vor.
* '''Generate test''' — generiert eine TestCase-Methode.
* '''Generate doc-comment''' — fügt einen Doc-Kommentar in die Methode ein (Method-Body bleibt erhalten).
* '''Find bugs''' — Bug-Audit für die selektierte Methode.
* '''Custom prompt…''' — freie Eingabe mit Methode als Kontext.
* '''Set API key…''' / '''Set model…''' — Setup direkt aus dem Browser heraus.

=== Smart Context ===

Beim Senden einer Methoden-Anfrage werden zusätzlich übergeben:

* Klassenname, Selector und Klassen-Kategorie.
* Die '''Calls'''-Liste — alle Selectoren, die diese Methode aufruft, mit jeweils der implementierenden Klasse. So kennt Claude die Abhängigkeiten der Methode, ohne dass der Prompt mit fremden Quelltexten überladen wird.

=== Apply ===

* '''Generate doc-comment''' und '''Suggest improvement''' für die '''aktuell selektierte Methode''' werden ''in-place'' im offenen Browser-Fenster geladen — kein neues Fenster, der Code-Editor zeigt direkt den modifizierten Vorschlag, den Du mit Ctrl-S akzeptieren kannst.
* Schlägt Claude eine '''andere Methode''' (anderer Selektor) oder eine '''andere Klasse''' vor (z.B. eine neue Helper-Methode), wird ein frischer Browser auf der Zielklasse geöffnet — der Vorschlag erscheint dort als modifizierter Buffer.
* Snippets, die kein Method-Definition-Format haben (z.B. Erklärungen mit Code-Beispielen), öffnen ein Workspace-Fenster zum Begutachten.

=== Existing-Method-Routing ===

Schlägt Claude eine Methode mit einem Selector vor, der auf der Zielklasse '''bereits existiert''', navigiert der Browser direkt zu dieser Methode — Du siehst den Diff zwischen gespeicherter und vorgeschlagener Source und kannst gezielt akzeptieren oder verwerfen.

== Streaming, Kosten und Verlauf ==

* Antworten kommen '''live''' angeflossen (Token für Token), nicht erst nach Komplett-Empfang. Code-Blöcke (<code>```</code>) werden farblich abgesetzt.
* '''Scroll-Lock''': Wenn Du während des Streams hochscrollst, springt das Fenster nicht mehr zum Ende — Du kannst in Ruhe lesen, was vorher kam.
* Nach jeder Antwort erscheint in grau eine kleine Footer-Zeile mit Token-Verbrauch und Kostenabschätzung, z.B. <code>[in: 1234 / out: 567 tok — $0.0123]</code>.
* Im '''Fenstertitel''' steht die kumulative Summe für die laufende Sitzung (alle Anfragen seit dem Öffnen des Chat-Fensters): <code>Claude Code — 12345 in / 6789 out tok — $0.1450</code>.
* Bei Anthropic-Überlastung (HTTP 429/529) wird automatisch bis zu vier Mal mit linearem Backoff (3, 6, 9 s) wiederholt.
* Bei Fehler bleibt Deine zuletzt eingetippte Frage im Eingabefeld, sodass Du sie mit '''Send''' erneut absenden kannst.

== Datenschutz ==

Alle Anfragen gehen über HTTPS direkt an <code>api.anthropic.com</code>. Es findet '''keine''' Zwischenspeicherung bei eXept statt; eXept hat keinen Einblick in Anfragen oder Antworten. Beachte aber, dass Anthropic nach deren Datenschutzbestimmungen Daten verarbeitet — schicke '''keinen produktiven, geheimen oder personenbezogenen Code/Daten''', wenn das nicht zulässig ist.<p>
Bei Benutzung von API-Tokens - wie hier der Fall - werden laut Anthropic die Daten nicht zum Training des KI-Modells genutzt ([https://privacy.claude.com/de/articles/7996868-werden-meine-daten-fur-das-modelltraining-verwendet Anthropic Erkärung dazu]).


== Tipps ==
== 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.
* '''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 '''Set model…''' im Menü oder in den Settings.
* '''Modell wechseln''': Für schnelle Routine-Antworten Sonnet, für schwierige Refactorings Opus. Über '''Set model…''' im Menü oder in den Settings.
* '''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: …".
* '''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: …".

== Bekannte Einschränkungen ==

* Native TLS funktioniert noch nicht zuverlässig; das Plugin ruft daher das System-<code>curl</code> per Subprozess auf.
* Sehr lange Activity-Bodies (> ein paar tausend Zeilen) können das Token-Limit der Anfrage sprengen — Claude bekommt dann nur einen Ausschnitt zu sehen. In diesem Fall: relevante Stelle in einer eigenen Helper-Method extrahieren und gezielt fragen.
* Inline-Markdown (<code>**fett**</code>, <code>`inline`</code>, Headers) wird im Transcript noch nicht hervorgehoben — nur fenced Code-Blocks.


[[Kategorie:Plugin]]
[[Kategorie:Plugin]]

Aktuelle Version vom 13. Mai 2026, 15:06 Uhr

KI Coding Plugin

Das KI Coding Plugin bindet einen Large Language Model (LLM) basierten KI-Assistenten in den Activity-Editor (Aktivitäten-Code) 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)

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 API key... — Schlüssel des aktiven Anbieters setzen

Code-Vorschläge können mit [Apply] im Chat direkt 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, Set API key).

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.

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.

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_anthropic bzw. #claudeApiKey_openai), so dass zwischen den Anbietern ohne erneute Eingabe gewechselt werden kann.
  • Model — ein Modell aus der Liste des aktiven Anbieters oder ein selbst eingegebener Modellname.
  • Max output tokens — maximale Antwortlänge.
  • API URL — nur zu ändern für eigene Proxies / Gateways. Standard: https://api.anthropic.com/v1/messages bzw. https://api.openai.com/v1/chat/completions.

API-Schlüssel beschaffen

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 und Sub-Step-Namen 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 Set model… im Menü oder in den Settings.
  • 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: …".



Copyright © 2014-2024 eXept Software AG