>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
TypeScript

Jak generator książek InkOS utrzymuje kontekst na właściwym torze w setkach rozdziałów

Każdy, kto próbował pisać długą fikcję przy użyciu modeli językowych, zna ten moment, gdy wszystko zaczyna się rozpadać. W trzecim lub czwartym rozdziale bohater nieoczekiwanie „wskrzesza" towarzysza, który zmarł, myli lokalizacje, a styl narracji zsuwa się w nudne uogólnienia typu „nauczył się ważnej lekcji i poszedł dalej".

Problem nie polega tylko na rozmiarze okna kontekstowego. Nawet jeśli wcisniesz pięćdziesiąt tysięcy poprzednich słów do sieci neuronowej, model i tak zacznie popełniać błędy w szczegółach lub produkować cliche.

Ostatnio natknąłem się na otwarty projekt o nazwie InkOS (który zgromadził już ponad 8,5 tysiąca gwiazdek na GitHub). To w pełni funkcjonalny framework TypeScript do zarządzania narracją, generowania powieści internetowych, gier interaktywnych i scenariuszy. Autorzy próbowali skonsolidować kontrolę nad pamięcią, stylem i fabułą.

Architektura systemu

Jaka jest idea i dlaczego zwykłe prompty nie wystarczą

InkOS zarządza tworzeniem tekstu poprzez łańcuch wyspecjalizowanych agentów. Zamiast prosić pojedynczą sieć neuronową o „napisanie rozdziału z uwzględnieniem fabuły", system dzieli proces na wyraźne role.

Jeden agent (Planner) kształtuje kierunek bieżącego rozdziału, inny (Writer) tworzy szkic, trzeci (Observer) wyodrębnia fakty o świecie i postaciach z tekstu, a czwarty (Auditor) sprawdza gotową wersję pod kątem sprzeczności.

Tekst przechodzi przez lejek kontrolny:

Potok produkcji rozdziału

Jeśli auditor zauważy, że postać nagle wyciąga miecz, który został zgubiony dwa rozdziały wcześniej, rozdział zostaje odesłany do automatycznej rewizji przez agenta redaktora.

Trójpoziomowa pamięć i ochrona przed halucynacjami

Najciekawszym aspektem technicznym InkOS jest sposób, w jaki projekt przechowuje stan świata fikcyjnego. Jeśli polegasz na samym agencie LLM, aby przepisywał cały stan w pliku Markdown, struktura szybko się zdegraduje.

Autorzy zastosowali hybrydowe podejście:

Schemat pamięci długoterminowej

  1. Ściśle ustrukturyzowana baza danych. Stan ekwipunku, rekwizyty fabularne, statusy relacji między postaciami są przechowywane w formacie JSON i walidowane za pomocą schematów Zod. Agent nie wyprowadza na nowo całego JSON, lecz tylko pakiet różnicowy delta (JSON delta), który kod projektu aplikuje do stanu w sposób niezmienny.
  2. Lokalna baza danych SQLite. W wersjach Node.js 22+ system automatycznie łączy SQLite do wyszukiwania wektorowego i słownego kluczowego przeszłych wydarzeń, skompresowanych adnotacji i faktów.
  3. Projekcje w Markdown. Pliki takie jak current_state.md lub pending_hooks.md są automatycznie generowane z zwalidowanego JSON. Służą jako wizualne odniesienie dla ludzkiego autora oraz do przekazywania do kontekstu generatora.

Dzięki temu rozdzieleniu model nie może przypadkowo usunąć gałęzi fabularnej ani uszkodzić formatu pliku state.json.

Zwalczanie neuralnego błysku i automatyczny audit

Każdy zauważył charakterystyczny styl modeli językowych. Nadmierne używanie wypełniaczy, jednolita długość zdań, miłość do głębokich moralnych konkluzji na końcu każdego akapitu.

InkOS zawiera wbudowany moduł sprawdzania tekstu z 37 parametrami. Monitoruje rytm zdań, częstotliwość powtarzania słów i tropi banalne cliche.

Dodatkowo silnik zawiera polecenie analityki stylu:

inkos style analyze sample_author.txt
inkos style import sample_author.json --book my-novel

Utilita wyodrębnia numeryczny odcisk palca z tekstu referencyjnego (rozkład długości zdań, słownik częstotliwości, gęstość dialogów) i generuje wytyczne. Podczas generowania nowych rozdziałów produkuje nie abstrakcyjny tekst, lecz materiał ściśle dopasowany do tego odcisku palca.

Interaktywne światy i tekstowe RPG

W wersji 1.5 deweloperzy dodali tryb InkOS Play. To narzędzie do uruchamiania tekstowych światów z wolnymi akcjami lub opartym na turach rozgałęzieniem.

Interfejs webowy Studio

W trybie Play ustawiany jest tak zwany kontrakt świata. Na przykład zasady śledztwa detektywistycznego lub symulatora przetrwania. Agent systemowy śledzi czas, ekwipunek, przedmioty i dowody, generując interfejsy wyboru lub przetwarzając dane wejściowe użytkownika w języku naturalnym.

Pod maską wykorzystywane są mechanizmy dynamicznego generowania ilustracji dla scen i przedmiotów, a także wsparcie dla standardowych pakietów umiejętności SKILL.md.

Jak to działa w środku

Projekt jest w całości napisany w TypeScript. Interfejs webowy (Studio) działa na Vite, React i Hono. Interaktywna konsola jest zaimplementowana przez TUI, a tradycyjny CLI jest dostępny dla entuzjastów automatyzacji.

Struktura agentów jest zbudowana na bazie biblioteki pi-mono (@mariozechner/pi-agent-core).

Jednym wygodnym rozwiązaniem jest elastyczne routowanie modeli. Pisanie fikcji może być przypisane do, powiedzmy, Claude 3.5 Sonnet lub Kimi K2.7, podczas gdy zadania audytu, składania JSON delta i walidacji mogą być delegowane do szybszych i tańszych modeli przez OpenRouter, Gemini lub lokalny Ollama.

Konfiguracja routingu jest ustawiana poprzez pary:

inkos config set-model writer kimi-k2.5 --provider custom --base-url https://api.moonshot.cn/v1
inkos config set-model auditor gemini-2.5-flash --provider google

Jak uruchomić lokalnie

Pakiet jest dostępny na npm:

npm i -g @actalk/inkos

Utworzenie pierwszej książki i uruchomienie lokalnego studio wymaga zaledwie trzech poleceń:

inkos init my-story
cd my-story
inkos studio

Panel webowy otwiera się w przeglądarce na porcie 45 67. Tam możesz wprowadzić klucze API dla wymaganych dostawców, ustawić koncepcję dzieła i uruchomić proces planowania pierwszych rozdziałów.

Bezpośrednie polecenia są dostępne do pracy w konsoli:

inkos book create --title "Забытый код" --genre sci-fi
inkos plan chapter Забытый код --context "Герой обнаруживает странный архив в серверной"
inkos write next Забытый код

Komu przyda się ten projekt

InkOS to nie tylko kolejne opakowanie wokół ChatGPT. To ustrukturyzowane środowisko programistyczne dla osób pracujących systematycznie z narracją.

Projekt będzie przydatny dla:

  • Projektantów narracji i scenarzystów gier do rozwijania questów i rozgałęziających się dialogów.
  • Autorów powieści internetowych, którzy potrzebują asystenta utrzymującego chronologię i fakty.
  • Deweloperów tworzących boty AI oparte na tekście z pamięcią i wewnętrznymi zasadami świata.

Oczywiście kod źródłowy i prompty są zorientowane na język chiński i angielski, ale elastyczna konfiguracja pakietów promptów wewnątrz folderu prompt/ pozwala dostosować generowanie do dowolnego języka. Licencja AGPL-3.0 pozwala na wdrożenie systemu lokalnie na własnym serwerze bez uzależnienia od zastrzeżonych chmur.

Powiązane projekty