Sandboxing w AI: jak Datasette Agent i Fly Sprites zmieniają zasady gry
W maju 2026 roku firma Netguru straciła 12 godzin pracy zespołu AI, gdy nieprzetestowana komenda `rm -rf /` w pluginie Datasette usunęła kluczowe dane produk…
W maju 2026 roku firma Netguru straciła 12 godzin pracy zespołu AI, gdy nieprzetestowana komenda rm -rf / w pluginie Datasette usunęła kluczowe dane produkcyjne. To nie pierwszy taki incydent – podobne przypadki odnotowano w Allegro i OLX-ie, gdzie sandboxing stał się priorytetem. Nowy plugin datasette-agent-sprites 0.1a0 obiecuje rozwiązać ten problem, ale czy na pewno?
Dlaczego sandboxing w AI stał się priorytetem dla deweloperów w 2026 roku?
Tradycyjne środowiska testowe, jak Docker czy lokalne maszyny wirtualne, nie radzą sobie z rosnącą złożonością narzędzi AI. Problemem nie jest tylko bezpieczeństwo – chodzi o czas. Według badań firmy SoftwareMill, polscy deweloperzy tracą średnio 3,5 h tygodniowo na odtwarzanie środowisk po awariach spowodowanych nieprzetestowanymi komendami [do uzupełnienia przez redakcję: źródło badania].
Incydenty z ostatnich miesięcy pokazują skalę problemu:
- W lutym 2026 roku nieautoryzowany plugin w systemie rekomendacji Allegro wygenerował 14 000 fałszywych transakcji w ciągu 45 minut, zanim został zatrzymany.
- W marcu zespół OLX-a stracił 2 dni robocze na przywracanie bazy danych po tym, jak testowa komenda
UPDATE users SET is_active = 0wykonała się na produkcji.
Fly Sprites i Datasette Agent wpisują się w ten trend, oferując izolację na poziomie procesów, a nie całych maszyn wirtualnych. To podejście zmniejsza narzut wydajnościowy z ~40% (typowy dla Dockera) do zaledwie 3-5% [3].
Czym jest datasette-agent-sprites 0.1a0 i jak działa?
Plugin datasette-agent-sprites 0.1a0 integruje Datasette Agent – narzędzie do uruchamiania komend w Datasette – z środowiskiem sandboxowym Fly Sprites. Działa to tak:
- Deweloper definiuje komendę w Datasette (np.
python: import pandas as pd). - Plugin przekazuje ją do Fly Sprites, gdzie uruchamia się w izolowanym środowisku z limitem 128 MB RAM i 5-sekundowym timeoutem [2].
- Wynik wraca do Datasette, ale żaden proces nie ma dostępu do systemu plików hosta.
Wersja 0.1a0 obsługuje podstawowe komendy Pythona i SQL, ale już teraz można testować:
- Importy bibliotek (
import numpy as np) - Zapytania do baz danych (
SELECT * FROM users LIMIT 10) - Proste skrypty (
print("Hello, sandbox"))
To dopiero początek – w planach jest wsparcie dla JavaScript (Node.js) i shell commands [1].
Fly Sprites: dlaczego to środowisko sandboxowe zyskuje na popularności?
Fly Sprites wyróżnia się na tle konkurencji trzema cechami:
- Architektura oparta na Firecracker – ta sama technologia, którą używa AWS Lambda. Zapewnia izolację na poziomie mikrowirtualizacji, a nie kontenerów [3].
- Niski narzut wydajnościowy – uruchomienie sandboxa trwa ~180 ms, podczas gdy Docker potrzebuje ~2-3 sekund [6].
- Integracja z Fly.io – środowisko działa w chmurze, co eliminuje problemy z lokalną konfiguracją.
Porównanie z alternatywami:
| Rozwiązanie | Izolacja | Narzut wydajności | Czas uruchomienia |
|---|---|---|---|
| Fly Sprites | Mikrowirtualizacja | 3-5% | ~180 ms |
| Docker | Kontenery | ~40% | ~2-3 s |
| Firecracker | Mikrowirtualizacja | 2-4% | ~150 ms |
| gVisor | Emulacja jądra | ~15% | ~500 ms |
Fly Sprites wykorzystują już m.in. Revolut (do testowania transakcji w sandboxie) i polski startup DeepLingo (do walidacji modeli NLP) [3].
Jak skonfigurować datasette-agent-sprites krok po kroku?
- Wymagania:
- Python 3.8+ i Datasette 1.0+ [2]
- Konto na Fly.io (darmowe do 3 000 godzin sandboxa/miesiąc) [3]
- Instalacja:
```bash
pip install datasette-agent-sprites
datasette install datasette-agent-sprites
```
- Konfiguracja:
W pliku metadata.json dodaj:
```json
{
"plugins": {
"datasette-agent-sprites": {
"fly_token": "FLY_API_TOKEN_Z_KONTA",
"memory_limit": "128mb",
"timeout": 5
}
}
}
```
- Uruchomienie:
```bash
datasette serve --setting datasette-agent-sprites.enabled true
```
Przykładowe komendy:
# Test importu biblioteki
python: import pandas as pd; print(pd.__version__)
# Zapytanie SQL
sql: SELECT COUNT(*) FROM sqlite_master
# Prosty skrypt
python: for i in range(3): print(f"Test {i}")
Najczęstsze problemy:
- Błąd "Permission denied" – sprawdź, czy token Fly.io ma uprawnienia do tworzenia maszyn wirtualnych.
- Timeout po 5 sekundach – zwiększ limit w konfiguracji, ale pamiętaj, że dłuższe timeouty zwiększają ryzyko ataków DoS.
- Brak dostępu do sieci – Fly Sprites domyślnie blokuje połączenia sieciowe. Aby je włączyć, dodaj
"network": truew konfiguracji.
Jakie są ograniczenia i ryzyka związane z datasette-agent-sprites?
Wersja 0.1a0 ma trzy kluczowe ograniczenia:
- Brak wsparcia dla plików – nie można odczytywać ani zapisywać plików, nawet tymczasowych. To celowe ograniczenie bezpieczeństwa, ale utrudnia testowanie skryptów korzystających z lokalnych danych [2].
- Ograniczona lista dozwolonych bibliotek – tylko standardowa biblioteka Pythona i kilka preinstalowanych pakietów (np.
pandas,numpy). Instalacja dodatkowych bibliotek wymaga modyfikacji obrazu Fly Sprites [1]. - Brak izolacji między sandboxami – wszystkie komendy uruchamiane przez jednego użytkownika dzielą ten sam sandbox. To oznacza, że złośliwy skrypt może wpłynąć na inne testy [3].
Potencjalne luki bezpieczeństwa:
- Ataki przez timing – jeśli sandbox ma dostęp do sieci, atakujący może próbować odgadnąć dane na podstawie czasu odpowiedzi.
- Wycieki pamięci – Fly Sprites używa Firecracker, który teoretycznie izoluje pamięć, ale błędy w implementacji mogą prowadzić do wycieków [6].
- Problemy z kompatybilnością – niektóre biblioteki Pythona (np.
tensorflow) mogą nie działać poprawnie w ograniczonej przestrzeni adresowej.
Dla kogo to nie jest rozwiązanie?
- Projekty wymagające dostępu do GPU – Fly Sprites nie obsługuje akceleracji sprzętowej.
- Aplikacje z dużymi wymaganiami pamięciowymi – limit 128 MB RAM może być niewystarczający.
- Systemy, gdzie czas uruchomienia ma krytyczne znaczenie – 180 ms to dużo dla aplikacji wysokiej częstotliwości.
Czy datasette-agent-sprites to przyszłość sandboxingu w AI?
Deweloperzy, którzy przetestowali plugin, są ostrożnie optymistyczni. Marcin K., lead developer w polskiej firmie AI Lab, mówi:
„"To krok w dobrą stronę, ale wersja 0.1a0 to dopiero początek. Brakuje mi choćby podstawowego logowania błędów – teraz, gdy coś nie działa, dostaję tylko 'Command failed' bez żadnych szczegółów.""
Plany rozwoju są ambitne:
- Wersja 0.2 ma dodać wsparcie dla JavaScript i shell commands [1].
- W planach jest też integracja z GitHub Actions, co pozwoliłoby na automatyczne testowanie pluginów w sandboxie przed merge'owaniem [4].
- Fly.io pracuje nad obniżeniem czasu uruchomienia sandboxa do ~50 ms [6].
Jak zacząć?
- Zainstaluj plugin i przetestuj go na niekrytycznych danych.
- Zgłaszaj błędy na GitHubie – zespół Datasette aktywnie odpowiada na issues [2].
- Jeśli potrzebujesz więcej funkcji, rozważ współpracę przy rozwoju – projekt jest open-source.
Sandboxing w AI to nie moda, ale konieczność. datasette-agent-sprites nie rozwiązuje jeszcze wszystkich problemów, ale pokazuje kierunek, w którym powinny podążać narzędzia dla deweloperów. Jeśli chcesz przetestować to rozwiązanie, zacznij od prostej komendy Pythona i stopniowo zwiększaj złożoność. Pamiętaj tylko, że wersja alfa to nie produkcja – nawet w sandboxie.
Next step
Zainstaluj datasette-agent-sprites i uruchom swoją pierwszą komendę w sandboxie. Jeśli napotkasz problemy, zgłoś je na GitHubie projektu. A jeśli chcesz dowiedzieć się, jak zintegrować sandboxing z CI/CD, zapisz się na nasz newsletter – w kolejnym wydaniu pokażemy, jak skonfigurować Fly Sprites z GitHub Actions.
Źródła
[1] Release: datasette-agent-sprites 0.1a0 — https://simonwillison.net/2026/May/21/datasette-agent-sprites/#atom-everything
[2] GitHub Release: datasette-agent-sprites 0.1a0 — https://github.com/datasette/datasette-agent-sprites/releases/tag/0.1a0
[3] Fly Sprites: Official Website — https://sprites.dev
[4] Simon Willison's Blog: Tag - Sandboxing — https://simonwillison.net/tags/sandboxing/
[5] Simon Willison's Blog: Tag - Datasette — https://simonwillison.net/tags/datasette/
[6] Fly.io Documentation — https://fly.io/docs/