Każdy przepływ zaczyna się od lomi_status → zatwierdzonego parowania → lomi_workspace_list → lomi_connect. Używaj jawnych ID, świeżych odczytów i reguł operacji/ponawiania. Poniższe nazwy znajdziesz w pełnej referencji narzędzi; zakresy opisują uprawnienia.
Uruchomienie i odczyt komendy terminala
Dział zatytułowany „Uruchomienie i odczyt komendy terminala”lomi_terminal_createtworzy terminal z zatwierdzonym profilem Bash/Zsh. Obserwuj operację do gotowości i uzyskaniaterminalSessionIdorazleaseId.lomi_terminal_runwysyła jednowierszową komendę przy potwierdzonym bezczynnym prompcie. Zachowaj ID operacji komendy.lomi_operation_getobserwuje zakończenie.lomi_terminal_readzmode: "command"i ID operacji odczytuje ograniczony wynik.- Użyj
lomi_terminal_interruptdla nadal działającej obserwowanej komendy; dalej sprawdzaj oryginalną operację, aby potwierdzić wyjście.
Dla istniejącego terminala lomi_panel_control może poprosić o claim lub release. Przy wyłączonym YOLO przejęcie wymaga natywnej zgody i zachowuje proces powłoki. Wejście użytkownika unieważnia lease. Chroniony terminal pochodzenia nie może być przejęty jako zwykły cel agenta.
lomi_terminal_input wysyła dokładny tekst lub obsługiwane klawisze z uporządkowanym inputSequence; tekst nie dopisuje Enter. Umożliwia pracę z REPL/TUI, ale nie czyni nieznanego promptu bezpiecznym dla automatycznego run. Odczyt terminala oferuje output, command, zachowany ekran xterm screen i jawnie wybrane bajty base64 raw; kursory output/raw mają osobne przestrzenie bajtów. Odczyt ekranu pokazuje opóźnienie parsera.
Zakończenie komendy wynika ze znaczników integracji powłoki, które są niezaufanymi obserwacjami. Cisza, ponowne narysowanie promptu czy sam EOF nie potwierdzają sukcesu. Bash 3.2 na macOS z istniejącym DEBUG trap może odmówić gotowości automatycznej komendy zamiast nadpisać trap.
Wyszukiwanie, edycja i zapis pliku
Dział zatytułowany „Wyszukiwanie, edycja i zapis pliku”lomi_files_listpokazuje jeden katalog względem projektu.lomi_files_searchwyszukuje tekst na dysku jako literal/regex, z wielkością liter/całymi słowami i globami include/exclude.lomi_files_readodczytuje bajty dysku zdekodowane jako tekst. Kolejne strony wymagają oryginalnegoexpectedDiskRevision; offsety używają UTF-16 i zachowują końce linii dysku.lomi_editor_openotwiera lub wykorzystuje wspólny bufor.lomi_editor_readczyta załadowany bufor, także niezapisane zmiany, zwracającdocumentId, rewizje bufora/dysku, stan dirty/conflict i kodowanie.lomi_editor_apply_editsstosuje uporządkowane niepokrywające się zmiany do dokładnej rewizji bufora w jednej transakcji undo. Offsety to UTF-16 od zera; wstawiany tekst używa znormalizowanego LF. Nie zapisuje dysku.lomi_editor_saveatomowo zapisuje dokładną załadowaną rewizję. Ponownie sprawdza bajty dysku, zachowuje obsługiwane kodowanie, końce linii i zwykłe uprawnienia oraz pozostawia późniejsze zmiany jako niezapisane.
Traktuj dysk i bufor jako osobne źródła. Odczyt pliku nie otwiera edytora, a odczyt edytora nie ładuje brakującego bufora. Obsługiwane pliki tekstowe to UTF-8, UTF-8 BOM i UTF-16 z BOM; zwykłe odczyty/edycje/zapisy mają limit 4 MiB. Strona odczytu przyjmuje 2-8192 jednostek UTF-16. Żądanie edycji zawiera 1-64 zmiany i do 64 KiB wstawionego tekstu UTF-8; rozcięte pary surogatów, nakładanie zmian i stare rewizje są odrzucane.
lomi_editor_open obsługuje też preview/split dla Markdown i SVG; obrazy rastrowe wymagają podglądu. Podgląd używa pierwszej klatki, zachowuje orientację/alpha i ograniczony PNG (1280 pikseli na krawędź, 3 MiB). AVIF nie jest obsługiwany. Zewnętrzne obrazy Markdown pozostają linkami.
lomi_files_mutate tworzy pusty plik/folder, zmienia nazwę/przenosi wpisy lub prosi o Kosz. Najpierw odczytaj wymagane rewizje katalogu/wpisu. Nie nadpisuje celu ani nie podąża za linkami; przenoszenie między woluminami nie ma awaryjnego kopiowania/usuwania. Rewizja katalogu obejmuje bezpośrednie wpisy, a nie rekurencyjny snapshot treści. Otwarte bufory zachowują niezapisany tekst i undo po zmianie ścieżki.
Kosz używa natywnego etapu odzyskiwania. Save niezapisanego pliku anuluje usunięcie, aby agent mógł przeczytać zapisaną wersję i poprosić ponownie. Discard/Cancel stosują istniejącą ochronę. Zobacz odzyskiwanie.
Odczyt i obsługa przeglądarki
Dział zatytułowany „Odczyt i obsługa przeglądarki”- Udostępnij właściwe originy HTTP(S), wraz z portem.
lomi_browser_opentworzy izolowany natywny profil i zwraca operację; zachowaj generację przeglądarki i lease. lomi_browser_snapshotzwraca ograniczone semantyczne elementy i ramki. Używaj jegosnapshotId,navigationId, odwołań elementu/ramki iviewportRef.lomi_browser_fill,click,scrolllubkeydziała na aktualnym celu z lease. Obserwuj operacje modyfikujące.- Odśwież snapshot po zmianie strony.
lomi_browser_waitczeka do dziesięciu sekund na załadowanie, URL, tekst DOM lub rolę/nazwę i zastępuje wcześniejsze odwołania. lomi_browser_logsodczytuje błędy JavaScript, konsolę lub odrzucenia promise.lomi_browser_screenshotzwraca PNG obszaru strony po osobnej zgodzie na composite capture.
Snapshot obejmuje do 16 ramek HTTP(S) same-origin na głębokości czterech. Treść ramek cross-origin/opaque/ukrytych/przekraczających limit i wszystkie wartości formularzy są pomijane. Odwołania wygasają po 60 sekundach lub nawigacji, nowym snapshocie, zastąpieniu dokumentu/ramki lub przejęciu. Nie jest to pełne drzewo dostępności.
Kliknięcia, fill i klawisze używają syntetycznych zdarzeń DOM. Nie zapewniają zaufanych gestów użytkownika. key działa na już aktywnym elemencie dokumentu głównego i zwraca defaultAction: false; nie jest natywną edycją ani przechodzeniem klawiaturą. Click nie aktywuje pól plikowych ani zwykłych pobrań.
visible: false pozwala przygotować ukrytą przeglądarkę bez zmiany wyboru. Odczyt DOM może działać w ukryciu, ale wejście/zrzuty wymagają odpowiednio widocznego panelu; najpierw wybierz jego dokładną generację. Koniec nawigacji oznacza zatwierdzenie dokumentu lub załadowanie strony, a nie network idle. Zrzuty mogą zawierać zewnętrzne ramki, mimo ich pomijania w DOM.
Każdy rodzaj logu przechowuje 64 wpisy głównego dokumentu do 256 jednostek UTF-16. Kursor należy do tego rodzaju/dokumentu. Obiekty, stosy, ramki podrzędne/dane sieci i nagłówki/cookies są pomijane. Raporty mogą być syntetyczne; samo eventTrusted nie dowodzi autentyczności w WKWebView. Strona może zastąpić metody konsoli i ominąć późniejsze zbieranie.
Transfer plików przez artefakty
Dział zatytułowany „Transfer plików przez artefakty”Artefakty są prywatnymi niezmiennymi kopiami z ID, rozmiarem i SHA-256. Nie są dowolnymi ścieżkami lokalnymi i wygasają po 24 godzinach. Ponowny odczyt/eksport sprawdza uprawnienie źródła, a dla zrzutów/pobrań również pierwotną generację/profil/origin urządzenia lub przeglądarki. Zamknięte lub przejęte źródło może odmówić późniejszego dostępu.
- Import:
lomi_artifact_importprzyjmuje ścieżkę projektu, dokładny rozmiar/hash ikind: "file"(0-4 MiB) lubkind: "android_apk"(od 4 bajtów do 512 MiB). Obserwuj operację do otrzymania artefaktu. Zwykłe pliki pozostają nieprzetworzonymi bajtami; odczyt metadanych nie ujawnia ich zawartości ani prywatnej ścieżki. - Upload: zaimportuj plik, znajdź widoczny
file_inputi ramkę w snapshocie, potem poproś olomi_browser_uploadz artefaktem/hashem i samą nazwą pliku. Przy wyłączonym YOLO zatwierdź dokładną stronę/pole, nazwę, rozmiar i hash w Browser upload requests. Strona może od razu wysłać bajty. Sukces potwierdza załączenie i zdarzenia input/change, a nie przyjęcie przez serwer. - Pobranie:
lomi_browser_downloadwykonuje ograniczony GET same-origin w profilu agenta, zmaxBytesdo 4 MiB i terminem pięciu sekund. Używa poświadczeń same-origin tego profilu i odrzuca przekierowania, poświadczenia/fragment URL oraz własne metody/nagłówki/body. Nieudany/anulowany GET nadal może wpłynąć na serwer. - Eksport:
lomi_artifact_exportzapisuje do 4 MiB w nowym pliku względem projektu po kontroli rewizji katalogu docelowego i zakresów źródła. Nie tworzy katalogów nadrzędnych i nigdy nie nadpisuje pliku ani linku.
Importy dzielą limit 2 GiB globalnie, 1 GiB na połączenie/projekt, 64 plików i dwóch producentów. Limit APK jest osobny od limitu uploadu/eksportu 4 MiB; duży zaimportowany APK nie staje się automatycznie eksportowalny.
Obsługa zarządzanego Androida
Dział zatytułowany „Obsługa zarządzanego Androida”lomi_android_listpokazuje jawnie udostępnione urządzenia.lomi_android_opentworzy/wybiera zachowany panel bez uruchamiania urządzenia.lomi_android_starturuchamia zatrzymane urządzenie lub wykorzystuje generację tego połączenia. Obserwuj gotowość Android/RPC/ADB/IME; start może trwać do 180 sekund.lomi_android_snapshotodczytuje ograniczoną projekcję UI Automator.lomi_android_screenshotdaje PNG z wymiarami, obrotem i transformacją obrazu do współrzędnych sprzętowych.lomi_panel_controluzyskuje upoważnienie wejścia.lomi_android_inputwysyła uporządkowany dotyk, klawisze, nawigację, obrót lub zatwierdzony tekst Unicode. Wybrany panel musi być widoczny w aktywnym oknie Lomi.lomi_android_launchdostarcza intent zatwierdzonemu pakietowi; sprawdź rezultat odczytem/logami.lomi_android_logcatczyta ostatni snapshot logów procesu głównego zatwierdzonego pakietu.lomi_android_stopprosi o potwierdzone zatrzymanie bez usuwania aplikacji/danych. Force stop pozostaje operacją natywnego interfejsu użytkownika.
ID węzłów jest lokalne dla odczytu i nie służy jako cel wejścia. Wartości edytowalne/haseł są pomijane; Canvas, WebView i ekrany chronione mogą być niepełne. Wejście używa hardware_display, a granice snapshotu rotated_display; korzystaj z wymiarów/obrotu i transformacji zrzutu. Zrzuty są pojedynczymi PNG, a nie ciągłym filmem MCP lub zrzutem pulpitu (do 1600 pikseli na krawędź, 2 milionów pikseli i 3 MiB).
Projekcja UI ma do 500 węzłów, 48 KiB wyniku i termin 12 sekund. Logcat obejmuje ostatnie linie main buffer działającego procesu głównego, a nie wszystkie procesy/crashe czy bufory. Odrzuca pakiety współdzielące UID i zgłasza nieznane luki; kursory trwają 60 sekund. Nie ma dowolnego ADB shell, narzędzia schowka ani automatycznego Enter.
SDK, urządzenia i instalacja APK
Dział zatytułowany „SDK, urządzenia i instalacja APK”lomi_android_setup_plan obsługuje inventory, strony katalogu i dokładny plan SDK/prywatnej Javy. Planowanie nie pobiera archiwów SDK ani nie akceptuje licencji. Zastosuj plan/rewizję w ciągu 30 minut przez lomi_android_setup_apply; przy wyłączonym YOLO Settings pokazuje źródła, wersje, rozmiary i warunki dostawcy do zatwierdzenia.
lomi_android_device_manage obsługuje tworzenie/modyfikację/wipe/usuwanie, odzyskiwanie, ograniczone czyszczenie własnego cache, odtwarzanie metadanych i usuwanie/rollback pakietów. Istniejące urządzenia muszą być udostępnione i zatrzymane; destrukcyjne cele wymagają dokładnej nazwy. Modyfikacja zachowuje obraz/rozmiar partycji danych i stosuje sprzęt przy kolejnym starcie. Używane obrazy pozostają niezmienne.
Dla APK najpierw importuj dokładne bajty, potem wywołaj lomi_android_install_apk dla kontrolowanej działającej generacji. Przy wyłączonym YOLO zatwierdź tę kopię/urządzenie w Settings w ciągu 120 sekund. Instalacja może trwać 180 sekund; zachowuje dane aplikacji i nie odinstalowuje jej po błędzie. INSTALL_FAILED_INSUFFICIENT_STORAGE jest konkretną odmową, a przerwane/nieznane rezultaty mogą być niepewne. Sprawdź urządzenie przed kolejnym żądaniem. YOLO automatycznie obsługuje zatwierdzenia opisane w uprawnieniach.
Odczyt i zmiany Git
Dział zatytułowany „Odczyt i zmiany Git”lomi_git_status, diff, history, commit i remotes korzystają z chronionego systemowego Git tylko do odczytu. Podaj repositoryRelative dla repozytorium wewnątrz projektu; mechanizm nie szuka dowolnych katalogów nadrzędnych. Powiązane worktrees/zewnętrzne metadane nie są obsługiwane. Odczyty blokują helpery, zapisy i sieć. Dane remote ukrywają poświadczenia, ścieżkę repozytorium, query/fragment i nieznane transporty.
Kursory statusu stronicują niezmienny snapshot komendy przez 60 sekund; późniejsze zmiany dysku nie zmieniają tej strony. Kontynuacja diffu wymaga dokładnej rewizji odczytu. Historia zachowuje zwrócony commit początkowy zamiast podążać za przesuwającym się HEAD. API commit wymaga pełnego SHA o długości 40/64 znaków; porównanie plików merge używa pierwszego rodzica. lomi_git_open otwiera widok diff/commit tylko do odczytu.
lomi_git_mutate obsługuje stage, unstage, commit, fetch, push, discard i pull. Przy wyłączonym YOLO każde żądanie ma dokładny plan zatwierdzany w głównym oknie, powiązany z plikami, indeksem, HEAD, refs, konfiguracją i środowiskiem. Wykonywanie Git może uruchamiać skonfigurowane hooki/helpery z Twoim kontem; odczyt tego nie upoważnia.
- Commit przyjmuje kompletny zestaw staged paths i dokładną wiadomość; nie robi automatycznie stage. Dodanie końcowego LF przez Git jest opisane w podglądzie.
- Fetch aktualizuje jedną zatwierdzoną gałąź remote-tracking; nie robi merge, prune, pobierania tagów ani submodułów.
- Push wymaga network/push, bieżącego HEAD i dokładnego oczekiwanego commita remote (jawne
nulloznacza utworzenie tylko przy braku). Kontrola fast-forward i lease oczekiwanej wartości chronią przed przepisaniem historii/nadpisaniem równoległych zmian. - Discard odtwarza śledzone pliki worktree z indeksu, zachowując staged changes. Odrzucone bajty nie trafiają do Git ani Kosza. Niezapisane bufory blokują działanie; dla untracked użyj Kosza plików.
- Pull wymaga network/pull, czystego śledzonego worktree, bieżącego HEAD i lokalnie zaobserwowanego commita remote (najpierw fetch). Tryby to
ff_onlyi ograniczony liniowyrebase. Konflikty pozostają widoczne; Lomi nie robi automatycznie abort, reset, stash ani ponowienia.
Praca z Chat AI
Dział zatytułowany „Praca z Chat AI”lomi_chat_list pokazuje metadane indywidualnie udostępnionych rozmów (do 64). lomi_chat_read czyta zapisane szkice/checkpointy wiadomości; pomija reasoning, załączniki, instrukcje systemowe i metadane dostawcy. Null ID wiadomości wybiera aktywny liść; ID rodziców pozwalają przejść po gałęzi.
lomi_chat_open wykorzystuje istniejącą rozmowę albo tworzy nową przez target.type: "new". Nie wysyła żądania do dostawcy. lomi_chat_draft zastępuje do 32 KiB zapisanego tekstu szkicu, zachowując załączniki i chroniąc równoległe pisanie użytkownika. Nie wysyła wiadomości.
Dla lomi_chat_send odczytaj includeSendTarget: true, aby uzyskać skonfigurowane połączenie/model i aktualne rewizje rozmowy/szkicu. Przy wyłączonym YOLO Lomi pokazuje rzeczywisty kontekst, załączniki, instrukcje systemowe, model, limit odpowiedzi i możliwe opłaty do zatwierdzenia. Narzędzie nie zmienia dostawcy/modelu. Obserwuj operację; draftRevision: null oznacza rezerwację, a nie przyjęte wysłanie. Nie wysyłaj ponownie z nowym kluczem po niepewnym efekcie u dostawcy.
lomi_chat_stop wskazuje dokładny natywny requestId, więc ponowienie nie zatrzyma nowszej odpowiedzi. lomi_chat_export zwraca tekst Markdown/JSON zapisanych wariantów wiadomości i szkicu, do 512 wiadomości/4 MiB; nie zapisuje pliku i nie wywołuje dostawcy. Kolejne strony wymagają rewizji dokumentu.
Ustawienia i układ obszaru
Dział zatytułowany „Ustawienia i układ obszaru”lomi_settings_read czyta zachowane efektywne domyślne ustawienia edytora, preferencje terminala, skróty lub wybór motywów/safe mode. lomi_settings_update prosi o jedną zmianę powiązaną z rewizją: wcięcia, pole terminala z zamkniętej listy, przypisanie/reset skrótu, focus-follows-pointer, wbudowany Lomi/DeepMono lub system/light/dark. Przy wyłączonym YOLO Settings pokazuje stan przed/po do zatwierdzenia. Wybór/import własnego motywu i zapis odzyskiwania nie są obsługiwane. lomi_settings_open tylko prosi o wskazaną sekcję Settings.
lomi_workspace_create zaczyna od pliku scratch, nie powłoki. lomi_workspace_update zmienia nazwę/wybór lub prosi o zamknięcie. lomi_project_open prosi o nowy katalog z jednym obszarem; lomi_project_close wymaga wszystkich bieżących obszarów. lomi_panel_move obsługuje kolejność kart, docking, przesuwanie panelu i transfer między zatwierdzonymi obszarami tego samego projektu. Zachowuje zweryfikowane działające zasoby i odrzuca nieobsługiwane widoki pluginów, modal UI lub brak miejsca.
Zamykanie respektuje dialogi niezapisanych buforów, chronione/zajęte/posiadane przez użytkownika zasoby i współdzielone widoki. Ostatni widok Androida wymaga potwierdzonego Stop; ostatni Chat wymaga zapisanych szkiców/checkpointów i prawa stop. Zapis podczas zamykania pozostawia obszar/projekt otwarty z częściowymi efektami; odczytaj nowy stan przed ponowieniem. Zamknięcie projektu nigdy nie usuwa jego folderu.
Kod źródłowy: zachowanie i limity narzędzi, adaptery brokera, natywne użycie i granice weryfikacji.