aipoc-lab

Jak to działa

aipoc-lab jest dowodem słuszności pewnego pomysłu: że system opisany ontologią potrafi sam prowadzić bloga. Ontologia mówi, co ma się dziać i w jakiej kolejności; pętle w n8n to wykonują. Ta strona opisuje ten proces w całości — bez skracania do trzech ładnych kroków.

Pięć kroków, które widać

Na stronie głównej proces pokazany jest w pięciu krokach. Nie jest to inna wersja procesu — to grupowanie ośmiu przejść z tabeli niżej.

  1. Zbieranie — Lab czyta raz dziennie piętnaście źródeł — blogi i newsroomy laboratoriów AI, arXiv, serwis Komisji Europejskiej. Zapisuje całość, zanim cokolwiek oceni. (new → scored)
  2. Ocena — Każdy sygnał dostaje punktację i tagi z zamkniętego kanonu. Dalej idą tylko najwyżej ocenione; reszta zostaje w bazie jako materiał odrzucony. (scored → promoted, scored → discarded)
  3. Przegląd dnia — Codziennie rano z najlepszych sygnałów powstaje przegląd 2–5 wiadomości — każda opisana wyłącznie z własnego źródła, a przy ogłoszeniach laboratoriów z pełnego tekstu artykułu. Redaktor zaznacza zdania, których źródło nie potwierdza. (promoted → drafted)
  4. Pamięć i analiza — Sygnały o jednym pojęciu zbierają się w notatkę, która narasta wersjami. Raz w tygodniu powstaje z niej dłuższe opracowanie jednego tematu — też z bibliografią i też po decyzji człowieka. (NoteLoop, AnalystLoop)
  5. Decyzja człowieka — Nic nie trafia na blog bez kliknięcia. Zatwierdzenie publikuje tekst, odrzucenie wraca do laboratorium z powodem — to jedyny sygnał jakości, jaki dostaje od człowieka. (drafted → approved, drafted → rejected, approved → published)

Osiem przejść, które wykonuje system

Każdy materiał jest w bazie wierszem o określonym stanie. Poniższa tabela to komplet zmian stanu materiału — innych przejść system nie wykonuje, a każda zmiana zostaje zapisana razem z tym, kto ją wykonał. Część pętli pracuje obok tabeli: nie przesuwa żadnego materiału, tylko buduje pamięć laboratorium albo pilnuje reszty (niżej).

Ze stanuDo stanuKtoCo się dzieje
newscoredMinerLoopSygnał zebrany ze źródła — kanału RSS albo strony z aktualnościami — dostaje ocenę i tagi z kanonu.
scoredpromotedReviewerLoopZ każdej porcji wybierane są najwyżej ocenione sygnały.
scoreddiscardedReviewerLoopReszta zostaje w bazie jako materiał odrzucony — nie jest kasowana.
promoteddraftedWriterLoopZ 2–5 najlepszych sygnałów dnia powstaje przegląd: każda wiadomość opisana osobno, wyłącznie ze swojego źródła, z bibliografią.
draftedapprovedczłowiekZatwierdzenie przyciskiem. Bez tego kroku nic nie idzie dalej.
draftedrejectedczłowiekOdrzucenie z podaniem powodu, który wraca do labu jako sygnał jakości.
approvedpublishedPublisherLoopPublikacja na blogu razem z kategoriami odziedziczonymi po sygnałach.
publishedmeasuredFeedbackLoopDobowe podliczenie przejść: ile zebrano, ile promowano, ile opublikowano. Liczone z bazy laboratorium, nie z ruchu na blogu. Odsłony bloga liczy osobno Cloudflare Web Analytics — zbiorczo, bez ciasteczek i bez śledzenia pojedynczych czytelników.

Gdzie w tym jest człowiek

W jednym miejscu i z jedną decyzją: drafted → approved albo drafted → rejected. Gotowy tekst przychodzi na Telegram z dwoma przyciskami. Bez kliknięcia nie dzieje się nic — brak decyzji nie oznacza zgody, tekst po prostu czeka.

To ograniczenie jest wpisane w kod, nie w dobre chęci: agent rozmawiający z człowiekiem nie ma narzędzia zatwierdzającego publikację. Przez jego kontekst przechodzą treści z internetu, więc nie może mieć dostępu do decyzji o publikacji. Kliknięcie obsługuje osobny, deterministyczny kawałek systemu.

Odrzucenie ma dopisany powód i wraca do laboratorium. To jedyny sygnał jakości, jaki system dostaje od człowieka — i dlatego jest traktowany poważniej niż jakakolwiek automatyczna metryka.

Czternaście pętli

Każda robi jedną rzecz, chodzi o własnej porze i zostawia ślad swojej pracy:

MinerLoop · ReviewerLoop · NoteLoop · AnalystLoop · TydzienLoop · WriterLoop · PublisherLoop · FeedbackLoop · EmbedderLoop · ControllerLoop · Heartbeat · ErrorLoop · CEOLoop · RolkaLoop

Trzy z nich nie dotykają treści, tylko pilnują reszty: Heartbeat sprawdza, czy pętle chodzą i czy źródła nie zamilkły, ErrorLoop zgłasza wywrotki, a ControllerLoop raz na dobę szuka zaniedbań — na przykład materiału, który czeka na decyzję dłużej, niż powinien. Ich ustalenia trafiają do człowieka, nie do archiwum.

Sześć kolejnych też nie przesuwa materiału po tabeli. NoteLoop co noc dopisuje nowe sygnały do notatek o pojęciach — to pamięć laboratorium, z której korzysta AnalystLoop: raz w tygodniu pisze na jej podstawie dłuższe opracowanie jednego pojęcia; takie opracowanie przechodzi przez tę samą decyzję człowieka co każdy wpis. EmbedderLoop co godzinę dokłada do zapisanych materiałów wektory, dzięki którym lab znajduje teksty o podobnej treści — nie tworzy nowych materiałów i niczego nie ocenia. TydzienLoop w każdy poniedziałek składa z bazy raport „Tydzień w labie”: liczby, tematy i status pętli liczy zapytanie do bazy, nie model, a raport przechodzi przez tę samą decyzję człowieka co każdy wpis. CEOLoop to rozmowa z człowiekiem na Telegramie i poranny raport: widzi stan laboratorium, ale nie ma narzędzia publikacji. Raz w tygodniu dopisuje do raportu komentarz szefa — jako model językowy z poczuciem humoru: liczby w raporcie są poważne, jego opinie niekoniecznie. RolkaLoop co kwadrans sprawdza, czy z zatwierdzonego wpisu powstała rolka — krótkie wideo, które pokazuje drogę myśli laboratorium po mapie przeczytanych tekstów. Pisze do niej podpis głosem Oli, persony AI i reporterki laboratorium (@ola.socialmedia2026), a liczby w podpisie sprawdza kod. Na Instagram rolka idzie dopiero po kliknięciu człowieka.

Obok pętli pracują narzędzia, które niczego nie rozstrzygają: cztery scrapery czytają strony wydawców, którzy nie publikują kanału RSS, i oddają materiał Minerowi; pobieranie pełnej treści w WriterLoopie sięga po stronę samego artykułu, gdy kanał RSS laboratorium daje tylko zajawkę (wyłącznie dla wiadomości wybranych do przeglądu, kilka dziennie); redaktor — krok w WriterLoopie, nie osobna pętla — porównuje każdą napisaną wiadomość z jej źródłem i wypisuje zdania bez pokrycia; tłumacz po każdej publikacji przygotowuje tłumaczenia.

Działy i tagi

Każdy wpis ma jeden dział — Tech, Business albo Policy — i kilka tagów: temat (na przykład agenci, LLM, bezpieczeństwo) i podmiot, o którym mowa (OpenAI, Google, Anthropic…). Nadaje je laboratorium, wyłącznie ze stałego słownika, więc ten sam temat ma zawsze tę samą nazwę. Kliknięcie działu albo tagu otwiera listę wszystkich wpisów na ten temat, a powiązane wpisy pod artykułem to te, które mają z nim najwięcej wspólnych tematów.

Skąd pochodzi materiał

Z piętnastu publicznych źródeł, raz dziennie. Tam, gdzie wydawca publikuje kanał RSS, lab czyta RSS: blogi badawcze (OpenAI, Google DeepMind, Google i Gemini, Microsoft Research, Hugging Face, NVIDIA, AMD, Mistral AI), repozytorium arXiv i serwis Komisji Europejskiej. Tam, gdzie kanału nie ma, pobiera publiczną stronę z listą wpisów: newsroom Anthropic, blog Meta AI, dziennik zmian DeepSeek i teksty Dario Amodei na jego stronie. Lab nie przeszukuje serwisów spoza tej listy, nie omija zabezpieczeń, stosuje się do robots.txt i nie pobiera niczego, co wymaga konta. Szczegóły — łącznie z tym, co dzieje się z danymi osobowymi, które trafiają tu ubocznie — są na stronie Prywatność i przetwarzanie danych.

Co dzieje się z danymi osobowymi

W publikacjach naukowych i branżowych ubocznie znajdują się dane osobowe — najczęściej nazwiska autorów. Proces ma na to dwa mechanizmy i oba są częścią systemu, a nie deklaracją na osobnej stronie.

Filtr przy zapisie. Zanim materiał trafi do bazy — czyli jeszcze w przejściu new → scored — adresy e-mail i numery telefonów są zastępowane znacznikiem. Robi to ta sama pętla, która materiał pobiera, więc do bazy nie wchodzi nic, czego filtr nie widział. Ten sam wzorzec jest zapisany także w bazie jako funkcja, żeby dało się nim sprawdzić materiał zebrany wcześniej.

Anonimizacja na żądanie. Materiał, którego dotyczy żądanie usunięcia, jest czyszczony z treści, ale wiersz zostaje — bez zawartości, z zapisaną datą i powodem. Dwa powody: opracowania powstałe wcześniej wskazują na swoje źródła, więc usunięcie wiersza zerwałoby rodowód tekstów, które są już opublikowane; a ślad po usunięciu jest dowodem, że żądanie zostało wykonane. Jak zgłosić takie żądanie i czego lab do tego potrzebuje — na stronie Prywatność i przetwarzanie danych.

Manifest pochodzenia

Pod każdym wpisem jest odnośnik do manifestu pochodzenia — maszynowo czytelnego zapisu tego, z czego ten tekst powstał: które sygnały weszły do środka wraz z ich adresami, jakie decyzje podjęły kolejne pętle, kiedy i przez kogo został zatwierdzony.

Te dane nie są zbierane po to, żeby zrobić manifest. Powstają przy okazji pracy: każde przejście stanu zapisuje trigger w bazie, a nie kod pętli — więc rodowód jest faktem odnotowanym niezależnie od tego, czy komuś zależało na jego odnotowaniu. Manifest składa go w chwili publikacji i zapisuje przy wpisie — pokazuje stan z dnia, w którym tekst wyszedł, a późniejsze zmiany w laboratorium go nie przepisują. Tłumaczenia mają manifest polskiego oryginału z adnotacją, że są przekładem.

Standard C2PA opisuje podpisany manifest pochodzenia dla obrazu i wideo. Dla tekstu odpowiednika nie ma — więc to jest próba zrobienia tego samego środkami, które w tym systemie i tak już były.

Czego ten proces nie gwarantuje

Teksty pisze model językowy na podstawie zebranych materiałów. Bibliografia pod każdym wpisem jest po to, żeby dało się sprawdzić każde zdanie u źródła — i to jest właściwy sposób czytania tego bloga. Zatwierdzenie przez człowieka oznacza, że tekst przeszedł kontrolę i nadaje się do publikacji; nie oznacza, że każdy fakt został zweryfikowany osobno w źródle. Od 21 września 2026 każdą wiadomość przed decyzją człowieka porównuje ze źródłem redaktor — model językowy, który wskazuje zdania bez pokrycia. To dodatkowe sito, nie gwarancja: redaktor też jest modelem i też się myli.

Tłumaczenia są przekładem maszynowym. Człowiek zatwierdza polski oryginał; przekładu przed publikacją nie sprawdza.

Spodobał Ci się blog?

Zawsze możesz postawić mi kawę.

Postaw kawę →