fix: martwe Assistants API nie może wyłączać całego coga AI #27
Reference in New Issue
Block a user
Delete Branch "fix-ai-cog-load-crash"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
To jest przyczyna "Command modele_ai is not found"
Nie chodziło o Ollamę. Cały cog
ai_commandsnie ładował się, więc nie istniała ŻADNA komenda AI.Bootstrap osobistych asystentów woła OpenAI Assistants API (beta threads/runs) — to legacy, które teraz odpowiada 404. Wyjątek wychodził z
cog_load, więc discord.py wywalał całe rozszerzenie, a z nim:$gadaj_teraz,$modele_aii obsługę rozmów. Bot działał dalej (bot.pyładuje rozszerzenia defensywnie) — po prostu nie miał AI w ogóle.Dlaczego istniejące zabezpieczenie nie złapało
cog_loadmiał już właściwy odruch — pomija bootstrap, gdyOPENAICLIENT is None(żeby wdrożenie Claude-only działało). Ale zabezpieczał się przed brakiem klienta, nie przed błędem wywołania.Poprawka
Bootstrap wydzielony do
_start_personal_assistants(), a jego awaria jest nieśmiertelna: logujemy co przepadło i lecimy dalej. Osobiści asystenci to jedna opcjonalna funkcja — reszta coga działa na Claude i Ollamie i nie ma powodu, żeby szła z nimi na dno.Czego świadomie nie zrobiłem
Nie ma testu jednostkowego: sterowanie
cog_loadwymaga atrapopenai,tiktokenitasks.loopna tyle kompletnej, by odpowiadała nais_running()— wtedy test sprawdza moje atrapy, nie kod. Zamiast tego zweryfikuję na działającym klastrze po wdrożeniu.Suite: 72 unit + 71 integration zielone.
⚠️ Produkcja
deploy-botchodzi nafbd1ec9fi ma ten sam błąd. Żeby go naprawić, potrzebny jest commit z[deploy]— sam tego nie promuję.🤖 Generated with Claude Code
Field report from both instances: "Command modele_ai is not found", and on restart the extension fails outright: ai_commands.py:129 in cog_load thread = await OPENAICLIENT.beta.threads.create() openai.NotFoundError: Error code: 404 -> ExtensionFailed: Extension 'ai_commands' raised an error The personal-assistants bootstrap calls the OpenAI Assistants API (beta threads/runs), a legacy surface that now answers 404. That exception propagated out of cog_load, so discord.py failed the whole extension - and with it EVERY AI command: $gadaj_teraz, $modele_ai and the conversation handler. The bot kept running (bot.py loads each extension defensively), it simply had no AI at all. cog_load already had the right instinct - it skips the bootstrap cleanly when OPENAICLIENT is None, so a Claude-only deployment works - but it guarded against the client being ABSENT, not against the call FAILING. Move the bootstrap into _start_personal_assistants() and treat any failure there as non-fatal: log what was lost and carry on. Personal assistants are one optional feature; the rest of the cog works fine on Claude and Ollama and must not go down with them. Not unit-tested on purpose: exercising cog_load needs stubs for openai, tiktoken and a tasks.loop complete enough to answer is_running(), at which point the test exercises the stubs rather than the code. Verified against the running cluster instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>