Tag: Zarządzanie pamięcią

  • Claude Code 2.1.217 łata wycieki pamięci i hamuje niekontrolowane subagenty

    Claude Code 2.1.217 łata wycieki pamięci i hamuje niekontrolowane subagenty

    Wydana 21 lipca 2026 roku aktualizacja Claude Code 2.1.217 wprowadza mechanizmy ochronne dla długotrwałych sesji agentowych. Choć na pierwszy rzut oka widać jedynie wsparcie dla autouzupełniania emoji, to w rzeczywistości zawiera znacznie ważniejsze zmiany — naprawę wycieku pamięci w MCP, ograniczenia równoległych subagentów oraz poprawki stabilności na systemie Windows.

    Co nowego w skrócie

    • Autouzupełnianie emoji pozwala na wstawienie ❤️ po wpisaniu :heart: lub na zobaczenie podpowiedzi przy :hea; funkcję można wyłączyć opcją emojiCompletionEnabled.
    • Wyciek pamięci MCP został naprawiony — obcięte wyniki z narzędzi MCP nie są już trzymane w pamięci do końca sesji.
    • Limit 20 subagentów jednocześnie to nowy domyślny sufit, który można konfigurować przez CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS.
    • Zagnieżdżanie subagentów wyłączone — subagenty domyślnie nie tworzą już własnych podprocesów, chyba że operator włączy to jawnie przez CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH.
    • Budżet działa poprawnie — flaga --max-budget-usd zatrzymuje teraz także zadania w tle po osiągnięciu limitu.

    Wyciek pamięci, który ciążył na długich sesjach

    Jednym z problemów były narzędzia MCP, które zwracały duże wyniki — logi serwerów, wyniki wyszukiwania, dane repozytoriów. W wersji 2.1.217, po pokazaniu skróconego wyniku, pełna treść jest zwalniana z pamięci. Dla zespołów DevOps i web developerów pracujących z MCP na dużych zbiorach danych to znacząca poprawa stabilności.

    Subagenty pod kontrolą

    Nowe ograniczenia dotyczą dwóch aspektów. Jednoczesność — liczba subagentów mogących działać naraz — ma domyślny pułap 20. To wystarczająca liczba dla typowych zadań, ale jednocześnie na tyle mało, by zapobiec przypadkowemu tworzeniu nadmiarowych procesów w tle.

    Głębokość zagnieżdżeń to kolejny aspekt. Wcześniej subagent mógł uruchomić kolejne subagenty bez pytania. Teraz domyślnie nie może. Jeśli ktoś potrzebuje głębszego drzewa, na przykład w przypadku agenta koordynującego zadania, musi jawnie ustawić CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH.

    Dzięki tym zmianom pojedyncza wiadomość nie spowoduje już nadmiernego uruchamiania procesów w tle, co jest istotne w środowiskach CI/CD, gdzie koszty API mogą szybko wzrosnąć.

    Poprawki dla Windows i izolacja sesji

    Użytkownicy Windows zyskali naprawę błędów autoaktualizacji — wcześniej aktualizacje mogły nie przechodzić i wymagały ręcznej reinstalacji. Teraz proces ma działać niezawodnie.

    Izolacja sesji w tle to kolejna zmiana, która może ucieszyć osoby pracujące z wieloma równoległymi agentami. Poprawka zapobiega sytuacjom, w których sesje w tle miałyby dostęp do kontekstu przestrzeni roboczej innych sesji. Dla projektów z wieloma agentami działającymi jednocześnie oznacza to mniejsze ryzyko konfliktu danych.

    Drobniejsze, ale użyteczne zmiany

    Nowa wersja lepiej radzi sobie z błędami zapisu transkryptów — zamiast cichego niepowodzenia, Claude Code 2.1.217 teraz ostrzega, gdy nie może zapisać danych sesji. To szczególnie przydatne w środowiskach CI lub na maszynach z ograniczonym dostępem do systemu plików.

    Poprawiono także responsywność interfejsu użytkownika oraz zachowanie w sieciach korporacyjnych z proxy. Dla zespołów pracujących za firewallem korporacyjnym to mniej frustracji przy codziennym użytkowaniu.

    Aktualizacja, która stawia na stabilność

    Claude Code 2.1.217 nie wprowadza przełomowych funkcji programistycznych. Autouzupełnianie emoji to miły dodatek, ale prawdziwa wartość leży w poprawkach — wyciek pamięci MCP przestanie zjadać zasoby, subagenty nie będą się rozmnażać bez kontroli, a budżet w końcu zadziała tak, jak powinien. Dla zespołów intensywnie korzystających z agentów w codziennej pracy to zestaw poprawek, które realnie zmniejszają ryzyko awarii i nieprzewidzianych kosztów.


    Źródła

  • OpenCode v1.2.20: Fundament Stabilności i Udoskonalenia Interfejsu Terminalowego

    OpenCode v1.2.20: Fundament Stabilności i Udoskonalenia Interfejsu Terminalowego

    Wydanie OpenCode w wersji 1.2.20, opublikowane 6 marca 2026 roku, to kolejny kluczowy krok w ewolucji tego zaawansowanego środowiska programistycznego wspieranego przez sztuczną inteligencję. Choć nie wprowadza spektakularnych nowości, koncentruje się na kwestiach fundamentalnych dla codziennej pracy – solidności rdzenia i płynności działania. Aktualizacja ta eliminuje poważne problemy z zarządzaniem pamięcią i zwiększa kompatybilność, poprawiając jednocześnie user experience w trybie tekstowego interfejsu użytkownika (TUI).

    Dla zespołu OpenCode takie wydania są często najważniejsze. Stabilna i przewidywalna podstawa pozwala później bezpiecznie wprowadzać eksperymentalne funkcje, na których skupiają się kolejne wersje, jak 1.2.21 czy 1.2.23. Wersja 1.2.20 to cegiełka umacniająca fundament pod przyszłe innowacje.

    Naprawa krytycznego wycieku pamięci w daemonach fsmonitor

    Najpoważniejszą zmianą w tej wersji jest rozwiązanie problemu wycieku pamięci w daemonach fsmonitor. Narzędzie to monitoruje zmiany w systemie plików, reagując na modyfikacje kodu w czasie rzeczywistym. Nieszczelność w jego działaniu była jednak wyjątkowo dotkliwa.

    Podczas uruchamiania testów nieprawidłowo zamykane procesy daemonów potrafiły pozostawiać w pamięci operacyjnej (committed memory) ponad 60 GB śmieci. Dla programistów pracujących na lokalnych maszynach, zwłaszcza tych z mniejszą ilością RAM, taki wyciek prowadził do drastycznego spadku wydajności całego systemu, a nawet do jego zawieszenia. Problem był szczególnie uciążliwy podczas długich sesji deweloperskich lub przy ciągłym uruchamianiu testów jednostkowych i integracyjnych.

    Naprawa tego błędu ma bezpośredni wpływ na developer experience. Zamiast martwić się o restartowanie środowiska co kilka godzin w celu zwolnienia pamięci, użytkownik może skupić się wyłącznie na pisaniu kodu. Zwiększa to również niezawodność OpenCode jako narzędzia do ciągłej integracji (CI), gdzie stabilne zużycie zasobów jest kluczowe.

    Większa kompatybilność: zamiana Bun.which na npm which

    Kolejna istotna zmiana w module core dotyczy zastąpienia narzędzia Bun.which jego odpowiednikiem z ekosystemu npm – npm which. To część szerszego trendu w rozwoju OpenCode, polegającego na stopniowym odchodzeniu od specyficznych API środowiska Bun na rzecz bardziej uniwersalnych rozwiązań z Node.js.

    Funkcja which służy do lokalizowania ścieżek do plików wykonywalnych w systemie. Choć API Buna jest wydajne, jego użycie może czasem powodować problemy z kompatybilnością w niektórych konfiguracjach, zwłaszcza przy złożonych setupach z wieloma menedżerami pakietów lub w kontenerach.

    • Migracja na npm which zwiększa przenośność kodu OpenCode. Oznacza to, że środowisko będzie działać bardziej niezawodnie na różnych dystrybucjach Linuksa, wersjach macOS czy w systemie Windows z WSL2. To strategiczny ruch ułatwiający wdrożenie OpenCode w zróżnicowanych zespołach i infrastrukturach. Trend ten jest kontynuowany w późniejszych wydaniach, w których pojawiają się podobne zmiany, jak zastąpienie Bun.semver czy Bun.shell.

    Przywrócenie obsługi stdin z Buna w TUI

    W obszarze tekstowego interfejsu użytkownika (TUI) wprowadzono ważną poprawkę techniczną. Przywrócono wykorzystanie Bun.stdin do odczytu danych wejściowych z prompta. Poprzednie wydanie eksperymentowało z przejściem na node:stream/consumers w celu poprawy kompatybilności, co jednak najwyraźniej wywołało pewne komplikacje.

    Interfejs TUI w OpenCode jest kluczowy dla osób preferujących pracę bezpośrednio w terminalu. Wszelkie problemy z odczytem komend, zwłaszcza w trybie interaktywnym podczas pisania promptów dla AI, natychmiast odbijają się na produktywności. Przywrócenie sprawdzonego mechanizmu z Bun zapewnia płynność i responsywność, których oczekują programiści. Pokazuje to również podejście zespołu OpenCode: chęć do eksperymentowania, ale i zdolność do szybkiego wycofania zmian, które nie działają optymalnie.

    Kontekst ścieżki rozwoju

    Aby w pełni zrozumieć znaczenie wersji 1.2.20, warto spojrzeć na sąsiadujące wydania. Poprzednia wersja była dużym krokiem w stronę uniezależnienia od Buna. Zawierała serię zamian: Bun.stderr, Bun.color, Bun.connect, Bun.hash, Bun.write i Bun.sleep na ich odpowiedniki z Node.js. Wersja 1.2.20 kontynuuje ten proces, skupiając się na Bun.which.

    Z kolei wersja 1.2.21, wydana dzień później, wprowadza już ulepszenia funkcjonalne, które bazują na stabilności zapewnionej przez „łatanie” w 1.2.20. Mowa tu o poprawie rozwiązywania ścieżek Git na Windowsie, uszczelnieniu wycieku uchwytów sesji PTY czy zachowaniu oryginalnych zakończeń linii (line endings) w narzędziu do edycji. To klasyczny schemat: najpierw budowa solidnego fundamentu, a dopiero potem bezpieczne wznoszenie na nim nowych konstrukcji.

    Dlaczego takie wydania są kluczowe?

    Dla użytkownika końcowego wydania skupione na stabilizacji mogą nie być tak ekscytujące jak te wprowadzające nowe modele AI czy spektakularne funkcje interfejsu. Ich wartość jest jednak nie do przecenienia.

    • Niezawodność to podstawa zaufania do narzędzia. Programista używa OpenCode jako głównego środowiska pracy, a wszelkie problemy z zarządzaniem pamięcią czy kompatybilnością bezpośrednio uderzają w jego efektywność. Stabilne zużycie zasobów jest kluczowe zarówno lokalnie, jak i w środowiskach CI/CD. Wydania takie jak 1.2.20, choć mało efektowne, są niezbędne, aby innowacyjne funkcje mogły działać bez zarzutu. Dzięki takim aktualizacjom OpenCode staje się nie tylko potężnym, ale i godnym zaufania partnerem w procesie tworzenia oprogramowania.