Boilerplate-Bot Rollout & Änderungsdetektion
Übersicht
Die boilerplate-bot-Vorlage (server/bot-actions-template/botId/boilerplate-bot/) bietet den Basiscode für alle Aktionsdienste. Wenn Änderungen an dieser Vorlage vorgenommen werden, müssen sie auf alle bestehenden Bot-Instanzen ausgerollt werden.
Wie der Rollout funktioniert
Beim Start liest der actions-manager-Dienst:
- Die Version aus
boilerplate-bot/pyproject.toml - Vergleicht sie mit der
pyproject.toml-Version jedes Bots - Wenn sich die Versionen unterscheiden, kopiert er alle nicht auf der schwarzen Liste stehenden Dateien vom Boilerplate zum Bot
Schwarze Liste (während des Updates beibehalten):
- actions/ (benutzerdefinierte Aktionen)
- agents/ (benutzerdefinierte Agenten)
- poetry_bot_requirements.txt
Warum Versionssprünge wichtig sind
Dateien, die einen Versionssprung für den Rollout erfordern:
main.pyexecutor.pyutils.pypyproject.toml(Abhängigkeiten)
Ohne Aktualisierung der Version in pyproject.toml werden Änderungen an diesen Dateien nicht auf bestehende Bots übertragen. Der Versionsvergleich ist der einzige Auslöser für den Datei-Kopiermechanismus.
Warum shared/-Änderungen immer in Ordnung sind
Das shared-Modul wird über relative Pfadangabe in pyproject.toml eingebunden:
packages = [
{ include = "shared", from = "../../../../llm/src/" },
{ include = "botario_gpt_events", from = "../../../../llm/src/" }
]
Das bedeutet:
shared/wird nicht in jeden Bot kopiert- Alle Bots verweisen auf dasselbe
llm/src/shared/-Verzeichnis - Änderungen an
shared/treten sofort in Kraft (beim nächsten Import/Neustart) - Kein Versionssprung erforderlich für Änderungen in
shared/
TL;DR
| Ort | Versionssprung erforderlich? | Grund |
|---|---|---|
boilerplate-bot/main.py, executor.py, etc. | ✅ Ja | Dateien werden kopiert; Version löst Kopie aus |
llm/src/shared/ | ❌ Nein | Über Pfad referenziert, nimmt immer die neueste Version auf |