Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Schemat, typy i profile

BASIC20 min
Postęp nauki 0 / 3
Zaloguj się na konto użytkownika, aby zachować postęp.

Czego się nauczysz

  • Prześledź źródła i wyjaśnij opisany kontrakt.
  • W SchemaAndProfiles powiąż wartość profilu z typem i zakresem w schemacie.
Wymagania wstępne
  • Ukończ Podstawy i wcześniejszy poziom tej ścieżki.

Wyjaśnienie krok po kroku

KretConfig oddziela schemat ustawień od profili. Typ, jednostka, zakres i dozwolone wartości opisują poprawną konfigurację. Parametr tajny nie powinien zawierać sekretu w pliku: tajne dane obsługuje Vault.

Praca z kodem źródłowym

Schemat ustawień, profile i polityka hosta (PROVISIONAL)

Na podstawie przykładu SDK `ConfigProfiles`: `schema.kconfig` (typy z jednostkami, zakresy, `allowed`, `hotReload`, ustawienie tajne), `project.kconfig` (profile `default`, `gaming extends default`, `quiet`), `policy.kconfig` (blokada i górna granica). `kret config show` składa warstwy i pokazuje pochodzenie każdej wartości; KretS czyta ustawienia przez `Kret.Config`, a sekretu **nie** dostaje.

kconfig "1.0"

// Polityka hosta: ograniczenia, których żaden profil ani użytkownik nie może przekroczyć.
policy {
    lock telemetry.enabled false
    max fan.target 90%
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. kconfig "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. Pusta linia oddziela fragmenty źródła.
  3. // Polityka hosta: ograniczenia, których żaden profil ani użytkownik nie może przekroczyć.Komentarz autora; nie jest wykonywany.
  4. policy {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  5. lock telemetry.enabled falseOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. max fan.target 90%Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.

Oczekiwany wynik: `show` podaje wartości z pochodzeniem (`default`, `project:…`, `policy`); `run` zwraca tryb `performance`, a komenda `settings.secret` — opis odmowy zamiast wartości.

Typowy błąd: Wpisanie wartości sekretu wprost do pliku (`api.token "abc"`) → `KCS-CFG-0007` (przykład KRETCONFIG-I01). Vault działa tylko na Windows (DPAPI).

Instrukcja, wersje i zapisane wyniki →

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KretConfig — wprowadzenie

KretConfig — wprowadzenie

Status 1.0: `PROVISIONAL_VERSIONED` — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju. Gramatyka/wersja: kconfig-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Czym jest

KretConfig opisuje ustawienia pluginu: schemat (typy z jednostkami, zakresy, wartości dozwolone, hotReload, ustawienia tajne), profile (z dziedziczeniem), warstwy (domyślne → użytkownik → projekt → moduł) i politykę hosta, która zawsze wygrywa. Sekrety wyłącznie przez Vault (Windows DPAPI). Status PROVISIONAL_VERSIONED (własna ścieżka rozwoju).

Dla początkujących

Definiujesz ustawienia (np. „co ile odświeżać”, „tryb”) z typem i wartością domyślną, potem profile z innymi wartościami. Plugin czyta gotową, sprawdzoną konfigurację; hasła i klucze nie trafiają do plików.

Dla zaawansowanych programistów

Każda wartość ma pochodzenie (default, user:p, project:p, module:p, policy). Hot reload dwufazowy: błąd walidacji albo wyjątek odbiorcy wycofuje całą zmianę; ustawienie bez hotReload true → KCS-CFG-0205 (wymaga restartu). Blok policy poza plikiem polityki hosta → KCS-CFG-0203. KretS (getString/getInt/getFloat/getBool) nie odczyta sekretu (sprawdzone: odmowa KCS-CFG-0007). Vault na Linux/macOS → KCS-CFG-0207 (nie udaje ochrony).

Jakie problemy rozwiązuje

Typowana, warstwowa konfiguracja z nadrzędną polityką hosta i bez sekretów w plikach.

Kiedy używać

  • ustawienia pluginu i profile (np. gaming, quiet)
  • ograniczenia hosta (blokady, minimum/maksimum)
  • klucze API przez Vault (dla hosta, np. brama modeli)

Kiedy nie używać

  • sekrety wpisane wprost (KCS-CFG-0007)
  • ustawienia typu lista/rekord (NOT_SUPPORTED)
  • Vault poza Windows
  • traktowanie jako FROZEN — status PROVISIONAL

Współpraca z innymi technologiami

KretS (use Kret.Config as config), KretAI (sekret klucza modelu), Core (warstwa Store ✓, Vault ✗).

Obecny status

PROVISIONAL_VERSIONED — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju.

Dalej: ARCHITECTURE.md · SYNTAX_REFERENCE.md · ../Tutorials/BASIC/TUTORIAL_PL.md

Otwórz cały rozdział ze źródłem →
KretConfig — referencja składni

KretConfig — referencja składni

Status 1.0: `PROVISIONAL_VERSIONED` — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju. Gramatyka/wersja: kconfig-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Opisane są wyłącznie konstrukcje potwierdzone implementacją SDK (i, gdzie zaznaczono, testami tej rundy).

schema / setting

Definicje ustawień.

schema {
    setting refresh.interval {
        type Duration
        default 5s
        min 1s
        max 1h
        hotReload true
    }
    setting api.token {
        type String
        secret true
    }
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. schema {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. setting refresh.interval {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. type DurationOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. default 5sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. min 1sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. max 1hOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. hotReload trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  9. setting api.token {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. type StringOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. secret trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  13. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typytype default min max allowed secret hotReload description
Wynik—
Wymaganiadefault wymagane (poza tajnymi, które go nie mogą mieć)
Ograniczeniasecret tylko String
Możliwe błędyKCS-CFG-0001…0005
Wprowadzonokconfig 1.0

profile / extends / vault

Profile z dziedziczeniem; sekret jako odwołanie do Vault.

profile default {
    refresh.interval 10s
    api.token vault "nazwa-wpisu"
}
profile gaming extends default {
    mode "performance"
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. profile default {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. refresh.interval 10sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. api.token vault "nazwa-wpisu"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  5. profile gaming extends default {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. mode "performance"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typy—
Wynik—
Wymagania—
Ograniczeniacykl/nieznany profil bazowy = błąd
Możliwe błędyKCS-CFG-0007, 0201, 0202
Wprowadzonokconfig 1.0

policy

Ograniczenia hosta; zawsze wygrywają.

policy {
    lock telemetry.enabled false
    max fan.target 90%
    min refresh.interval 2s
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. policy {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  2. lock telemetry.enabled falseOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. max fan.target 90%Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. min refresh.interval 2sOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  5. }Zamknięcie struktury otwartej we wcześniejszych liniach.
CechaWartość
Parametry / typylock, max, min
Wynik—
Wymaganiatylko w policy.kconfig hosta
Ograniczenia—
Możliwe błędyKCS-CFG-0203, 0204, 0006
Wprowadzonokconfig 1.0

config.get* (KretS)

Odczyt złożonej konfiguracji przez brokera.

use Kret.Config as config
let ms = config.getInt("refresh.interval")
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. use Kret.Config as configOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. let ms = config.getInt("refresh.interval")Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
CechaWartość
Parametry / typyklucz
WynikString/Int/Float/Bool (Duration w ms)
Wymaganiabrak uprawnień; sekret zawsze odmowa
Ograniczenia—
Możliwe błędyKCS-CFG-0007
Wprowadzonokconfig 1.0
Otwórz cały rozdział ze źródłem →
KretConfig — samouczek BASIC

KretConfig — samouczek BASIC

Status 1.0: `PROVISIONAL_VERSIONED` — zdefiniowane i przetestowane, za mało dowodów na stabilne 1.0; własna ścieżka rozwoju. Gramatyka/wersja: kconfig-1.0. Status języka nie nadaje uprawnień KCS ani prawa do działania w Production.

Cel: pierwszy plik, podstawowa struktura, najprostszy działający przykład, najczęstszy błąd, sposób uruchomienia.

Narzędzia: kret = <SDK>\Compiler\kret.exe (SDK 1.0.0-rc.3+kret.local.3), kretui-host = <SDK>\UiHost\kretui-host.exe. {DATA}/{OUT} = nowe, puste katalogi.

1. Schemat ustawień, profile i polityka hosta (PROVISIONAL) (KRETCONFIG-B01-SchemaAndProfiles)

Projekt: ../../Examples/BASIC_SchemaAndProfiles/ · klasyfikacja RUNNABLE_LOCAL · Playground LOCAL_EXECUTE

Kroki (katalog roboczy: katalog przykładu):

  1. kret check . --json — w wyniku: "succeeded": true
  2. kret config show . — w wyniku: 10s
  3. kret config show . --profile gaming — w wyniku: performance
  4. kret run . --policy host-policy.json --data {DATA} --profile gaming --invoke settings.secret — w wyniku: performance

Wynik tej rundy: PASS — zob. EXPECTED_OUTPUT.txt.

Otwórz cały rozdział ze źródłem →

Ćwiczenie i sprawdzenie wiedzy

W SchemaAndProfiles powiąż wartość profilu z typem i zakresem w schemacie.

Szkic nie jest wysyłany na serwer i znika po opuszczeniu lekcji. Przed wyjściem możesz go skopiować.
Podpowiedzi
  • KretConfig opisuje ustawienia pluginu: schemat (typy z jednostkami, zakresy, wartości dozwolone, `hotReload`, ustawienia tajne), profile (z dziedziczeniem), warstwy (domyślne → użytkownik → projekt → moduł) i politykę hosta, która zawsze wygrywa. Sekrety wyłącznie przez Vault (Windows DPAPI). Status **PROVISIONAL_VERSIONED** (własna ścieżka rozwoju).
  • Odczytaj ograniczenia i oczekiwane błędy z dostarczonego samouczka; check i run są oddzielnymi krokami.
Omówienie rozwiązania

Odpowiedź oprzyj na pokazanym kodzie i rozdziale źródłowym. KretConfig oddziela schemat ustawień od profili. Typ, jednostka, zakres i dozwolone wartości opisują poprawną konfigurację. Parametr tajny nie powinien zawierać sekretu w pliku: tajne dane obsługuje Vault.

Które podsumowanie jest zgodne z lekcją?

To quiz o opisanym kontrakcie. Nie kompiluje kodu, nie potwierdza wykonania programu i nie przyznaje nagród.

Podsumowanie i następny krok

KretConfig oddziela schemat ustawień od profili. Typ, jednostka, zakres i dozwolone wartości opisują poprawną konfigurację. Parametr tajny nie powinien zawierać sekretu w pliku: tajne dane obsługuje Vault.

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności