Mit KI Projekte konzipieren, programmieren und konstruieren · Teil 2AnleitungEinsteiger

KI nutzen

Mit KI programmieren – VS Code, Codex, GitHub und automatisierte Tests

Mit VS Code, Codex und GitHub entwickelst du Software in kleinen Schritten und sicherst ?nderungen durch Tests, Versionierung und Dokumentation ab.

Veröffentlicht am

7 Minuten Lesezeit

Im ersten Teil wurde aus einer Projektidee eine strukturierte Projektbeschreibung mit Anforderungen, Lösungsvarianten und Roadmap entwickelt.

Jetzt beginnt die eigentliche Umsetzung.

Dabei soll KI nicht einfach möglichst viel Code erzeugen. Ziel ist vielmehr ein nachvollziehbarer Entwicklungsprozess:

Aufgabe definieren → Code analysieren → kleine Änderung durchführen → Tests → Dokumentation → Commit


1. Visual Studio Code als Entwicklungszentrale

Workshop-Plakat: Visual Studio Code als Entwicklungszentrale Plakat vergrößern
Visual Studio Code als Entwicklungszentrale

Visual Studio Code kann bei solchen Projekten mehrere Aufgaben gleichzeitig übernehmen:

  • Quellcode bearbeiten

  • Projektstruktur verwalten

  • Terminal verwenden

  • Git bedienen

  • Tests starten

  • Markdown-Dokumentation bearbeiten

  • KI-Agenten einsetzen

Dadurch befinden sich Code und Projektdokumentation im selben Arbeitsumfeld.


2. Codex als Projekt-Agent

Workshop-Plakat: Codex als Projekt-Agent – KI im Projektworkflow Plakat vergrößern
Codex als Projekt-Agent – KI im Projektworkflow

Der entscheidende Unterschied zu einem einfachen Chat besteht darin, dass ein Agent im Projektkontext arbeiten kann.

Er kann beispielsweise:

  • vorhandenen Code untersuchen

  • Abhängigkeiten zwischen Dateien erkennen

  • Funktionen ergänzen

  • Tests erzeugen

  • Dokumentation aktualisieren

  • Änderungen über mehrere Dateien hinweg durchführen

Dafür muss der Agent aber klare Regeln erhalten.


3. Eine grundlegende Agentenanweisung

Du arbeitest als technischer Entwicklungsassistent für dieses Projekt.

Bevor du Änderungen durchführst:

1. Lies README und Projektdokumentation.
2. Prüfe die aktuelle Version.
3. Prüfe die Roadmap.
4. Analysiere den bestehenden Code.
5. Ermittle Auswirkungen der geplanten Änderung.

Bei Änderungen:

6. Implementiere nur den vereinbarten Funktionsumfang.
7. Ergänze passende Tests.
8. Aktualisiere notwendige Dokumentation.
9. Aktualisiere den Changelog.
10. Prüfe, ob eine Versionsänderung notwendig ist.

Nach der Änderung:

11. Führe Tests aus.
12. Dokumentiere bekannte Einschränkungen.
13. Nenne sinnvolle nächste Schritte.

Verändere keine Funktionen außerhalb des aktuellen Arbeitsauftrages,
wenn dies nicht technisch notwendig ist.

Diese Anweisung verhindert zwar nicht jeden Fehler, reduziert aber die Wahrscheinlichkeit unkontrollierter Änderungen.


4. Kleine Arbeitspakete statt Komplettlösungen

Ein schlechter Auftrag lautet:

Programmiere die komplette Steuerung.

Ein wesentlich besserer Auftrag wäre:

Implementiere zunächst ausschließlich die Steuerung einer einzelnen
Stepper-Achse.

Anforderungen:

- STEP/DIR-Treiber
- einstellbare Geschwindigkeit
- einstellbare Schrittzahl
- sauberes Stoppen
- keine Referenzfahrt
- keine Mehrfachachsen
- keine Kommunikation

Erstelle zusätzlich passende Tests und dokumentiere die öffentliche API.

Damit ist eindeutig definiert:

  • was umgesetzt werden soll

  • was noch nicht umgesetzt werden soll

Diese Begrenzung ist bei Agenten besonders wichtig.


5. Git und GitHub als Sicherheitsnetz

Workshop-Plakat: GitHub Desktop unter Windows Plakat vergrößern
GitHub Desktop unter Windows
Workshop-Plakat: Git und GitHub verständlich erklärt Plakat vergrößern
Git und GitHub verständlich erklärt

Git übernimmt nicht nur die Sicherung des Codes.

Es dokumentiert gleichzeitig die Entwicklung.

Typische Bestandteile:

README.md
.gitignore
LICENSE
CHANGELOG.md
version.py
docs/
src/
tests/

Mit Git kann jederzeit nachvollzogen werden:

  • welche Datei verändert wurde

  • wann eine Änderung erfolgte

  • warum sie durchgeführt wurde

  • welche Version davon betroffen ist


6. .gitignore automatisch überprüfen

KI-Agenten und Entwicklungswerkzeuge erzeugen zahlreiche Dateien, die nicht in ein Repository gehören.

Dazu zählen beispielsweise:

  • Python-Cache

  • virtuelle Umgebungen

  • IDE-Einstellungen

  • temporäre Dateien

  • Logdateien

  • Build-Artefakte

  • lokale Konfigurationen

Beispiel-Agentenanweisung

Analysiere das Repository und die vorhandene .gitignore.

Ermittle Dateien und Verzeichnisse, die nicht versioniert werden sollten.

Berücksichtige insbesondere:

- Python Cache
- virtuelle Umgebungen
- IDE-Dateien
- Betriebssystem-Dateien
- Logdateien
- temporäre Dateien
- Build-Ausgaben
- lokale Konfigurationsdateien
- Zugangsdaten und Secrets

Ergänze die .gitignore nur dort, wo es sinnvoll ist.

Bestehende projektspezifische Regeln dürfen nicht entfernt werden.

Dokumentiere anschließend kurz alle vorgenommenen Änderungen.

7. Secrets gehören nicht ins Repository

Workshop-Plakat: Secrets sicher aus Repositories fernhalten Plakat vergrößern
Secrets sicher aus Repositories fernhalten

Besonders wichtig ist der Umgang mit:

  • Passwörtern

  • API-Schlüsseln

  • Tokens

  • privaten Schlüsseln

  • WLAN-Zugangsdaten

Solche Informationen gehören beispielsweise in:

.env
config.local.json
secrets.py

Diese Dateien müssen wiederum in .gitignore eingetragen werden.


8. Automatische Tests erzeugen

Workshop-Plakat: Automatische Tests mit KI und pytest Plakat vergrößern
Automatische Tests mit KI und pytest

Tests sind eine der wichtigsten Ergänzungen beim Arbeiten mit KI.

Bei einem Python-Projekt kann beispielsweise pytest eingesetzt werden.

Ein Agent kann zunächst analysieren, welche Funktionen bisher nicht getestet werden.

Beispiel-Agentenanweisung

Analysiere das bestehende Python-Projekt.

Ermittle:

- öffentliche Funktionen
- Klassen
- wichtige Grenzfälle
- Fehlerfälle
- bislang ungetestete Funktionen

Erstelle anschließend passende pytest-Tests.

Vorgaben:

- vorhandenen Anwendungscode nur ändern, wenn zwingend notwendig
- für jeden Fehlerfall einen eigenen Test erstellen
- aussagekräftige Testnamen verwenden
- keine Hardware für Unit-Tests voraussetzen
- Hardwarezugriffe nach Möglichkeit mocken

Dokumentiere zusätzlich, welche Bereiche noch nicht automatisiert
getestet werden können.

9. Hardwarezugriffe testen

Gerade bei Firmware- und Hardwareprojekten ist nicht jede Funktion direkt auf einem normalen Computer testbar.

Deshalb muss zwischen verschiedenen Testarten unterschieden werden:

Unit-Test

Testet einzelne Softwarefunktionen.

Integrationstest

Testet mehrere Komponenten gemeinsam.

Hardwaretest

Testet das reale Gerät.

Beispielsweise kann ein Stepper-Treiber im Unit-Test durch ein Mock-Objekt ersetzt werden.

Damit lässt sich überprüfen:

  • ob die richtige Richtung gesetzt wird

  • ob die richtige Anzahl Schritte erzeugt wird

  • ob ungültige Werte abgefangen werden

ohne tatsächlich einen Motor anzuschließen.


10. Regressionstests

Nach jeder neuen Funktion sollten vorhandene Tests erneut ausgeführt werden.

Der Ablauf lautet:

Änderung
↓
bestehende Tests
↓
neue Tests
↓
Fehleranalyse
↓
Dokumentation
↓
Commit

Dadurch werden sogenannte Regressionen erkannt:

Eine neue Funktion darf keine bereits funktionierende Funktion beschädigen.


11. Versionsnummern automatisch unterstützen

Ein Agent kann auch bei der Versionierung helfen.

Beispielsweise mit:

MAJOR.MINOR.PATCH

Also:

0.3.0
0.4.0
0.4.1

Agentenanweisung

Unterstütze die Versionierung dieses Projektes.

Verwende Semantic Versioning:

MAJOR.MINOR.PATCH

Prüfe bei Änderungen:

1. Welche Funktionen wurden ergänzt?
2. Wurden Schnittstellen verändert?
3. Wurden ausschließlich Fehler korrigiert?
4. Sind Tests vorhanden?
5. Ist die Dokumentation aktuell?

Schlage anschließend eine passende Versionsnummer vor.

Aktualisiere bei Freigabe:

- version.py
- CHANGELOG.md
- gegebenenfalls README.md
- docs/roadmap.md

12. Roadmap und Implementierung vergleichen

Ein Agent kann regelmäßig prüfen, ob Projektplanung und tatsächlicher Entwicklungsstand noch zusammenpassen.

Analysiere den aktuellen Stand des Repositorys.

Vergleiche:

- implementierte Funktionen
- Tests
- Dokumentation
- Roadmap

Erstelle einen Projektstatus mit:

1. abgeschlossen
2. aktuell in Entwicklung
3. noch geplant
4. technische Risiken
5. fehlende Tests
6. fehlende Dokumentation
7. empfohlener nächster Entwicklungsschritt

Diese Analyse ist besonders hilfreich vor einem neuen Entwicklungsschritt oder Release.


13. Changelog automatisch pflegen

Eine mögliche Struktur:

# Changelog

## 0.3.0

### Added

- Referenzfahrt
- Homing-Status

### Changed

- Axis-Klasse erweitert

### Fixed

- fehlerhafte Richtungsumschaltung

Wichtig ist, dass die KI historische Einträge nicht rückwirkend verändert.


14. Technische Dokumentation parallel entwickeln

Workshop-Plakat: Technische Dokumentation parallel entwickeln Plakat vergrößern
Technische Dokumentation parallel entwickeln

Dokumentation sollte nicht erst nach Abschluss des Projektes entstehen.

Typische Dateien sind:

README.md
CHANGELOG.md
docs/
├── architecture.md
├── installation.md
├── testing.md
├── troubleshooting.md
├── roadmap.md
└── decisions/

Agentenanweisung

Prüfe nach jeder größeren Änderung, ob die Projektdokumentation noch
mit dem aktuellen Entwicklungsstand übereinstimmt.

Kontrolliere insbesondere:

- README.md
- CHANGELOG.md
- docs/architecture.md
- docs/roadmap.md
- docs/testing.md
- Installationsanleitung

Dokumentiere nur tatsächlich implementierte Funktionen als vorhanden.

Geplante Funktionen müssen eindeutig als geplant gekennzeichnet sein.

Entferne keine historischen Informationen aus dem Changelog.

15. Lösungswege dokumentieren

Workshop-Plakat: Lösungswege dokumentieren Plakat vergrößern
Lösungswege dokumentieren

Besonders wertvoll ist es, nicht nur das Endergebnis zu dokumentieren.

Auch gescheiterte Versuche können wichtig sein.

Eine mögliche Struktur:

Problem

Versuch 1

Ergebnis

Versuch 2

Ergebnis

gewählte Lösung

Begründung

Gerade bei später auftretenden Fehlern kann diese Historie sehr hilfreich sein.


16. Troubleshooting automatisch erstellen

Nach einer längeren Fehlersuche kann ein Agent die Erkenntnisse zusammenfassen.

Erstelle aus der bisherigen Fehlersuche einen Troubleshooting-Eintrag.

Dokumentiere:

- Symptom
- Umgebung
- ursprüngliche Annahme
- durchgeführte Tests
- ausgeschlossene Ursachen
- tatsächliche Ursache
- Lösung
- Möglichkeit zur zukünftigen Vermeidung

Damit wird aus einer einmal gelösten Fehlersituation dauerhaft verfügbares Projektwissen.


17. Der Software-Workflow

Der resultierende Ablauf kann beispielsweise so aussehen:

Issue / Aufgabe
      ↓
Projektinformationen lesen
      ↓
Änderung planen
      ↓
Code ändern
      ↓
Tests ergänzen
      ↓
Tests ausführen
      ↓
Dokumentation aktualisieren
      ↓
Version prüfen
      ↓
Commit

Weiter im nächsten Teil

Im dritten Teil verlassen wir die reine Programmierung.

Themen sind unter anderem:

  • Proxmox

  • Debian-Container

  • automatische Setup-Scripts

  • Python-Dienste

  • Konstruktion

  • Festigkeitsberechnung

  • FEM

  • Fehleranalyse

  • FMEA

  • Projektdokumentation

  • Logos und Icons

  • Gesamtworkflow

Workshop-Plakat

Bild in voller Größe öffnen ↗