KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Kontrakt narzędzia i polityka danych — błędy
Narzędzie, którego zadeklarowana sygnatura (`amount String`) nie zgadza się z funkcją KretS (`amount: Int`), oraz nieznana polityka danych modelu — obie deklaracje są odrzucane przy kompilacji.
Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.
Kanoniczne pliki projektu
kretai "1.0"
// Model lokalny: serwer modeli na tym komputerze (protokół chat/completions — llama.cpp server, Ollama, LM Studio).
// Polityka „local-only”: brama wymusza, żeby połączenie kończyło się na adresie pętli zwrotnej — dane nie opuszczają komputera.
model local.small {
provider "local"
name "qwen2.5:7b"
endpoint "http://127.0.0.1:11434"
dataPolicy "local-only"
maxOutputTokens 1024
timeout 2min
}
tool counter.read {
description "Odczytuje wartość licznika o podanej nazwie."
handler "Tools.readCounter"
parameter name String "Nazwa licznika, np. orders"
returns "Int64"
permissions {
kretdb.open
kretdb.read
}
sideEffects "none"
}
tool counter.add {
description "Zwiększa licznik o podaną wartość i zwraca nowy stan."
handler "Tools.addCounter"
parameter name String "Nazwa licznika"
parameter amount Int64 "O ile zwiększyć"
returns "Int64"
permissions {
kretdb.open
kretdb.read
kretdb.write
}
sideEffects "write"
requiresConfirmation true
}
// Agent tylko do odczytu.
agent reader {
model local.small
system "Odpowiadasz krótko i tylko na podstawie danych z narzędzi."
tools counter.read
permissions {
kretdb.open
kretdb.read
}
limits {
maxSteps 4
maxToolCalls 8
timeout 2min
}
}
// Agent, który może zmieniać dane — każde wywołanie narzędzia zapisującego wymaga potwierdzenia.
agent assistant {
model local.small
system "Pomagasz prowadzić liczniki. Zanim coś zmienisz, sprawdź obecny stan."
tools counter.read counter.add
delegates reader
permissions {
kretdb.open
kretdb.read
kretdb.write
}
limits {
maxSteps 8
maxToolCalls 16
timeout 5min
maxTokens 200000
}
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
kretai "1.0"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.// Model lokalny: serwer modeli na tym komputerze (protokół chat/completions — llama.cpp server, Ollama, LM Studio).Komentarz autora; nie jest wykonywany.// Polityka „local-only”: brama wymusza, żeby połączenie kończyło się na adresie pętli zwrotnej — dane nie opuszczają komputera.Komentarz autora; nie jest wykonywany.model local.small {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.provider "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.name "qwen2.5:7b"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.endpoint "http://127.0.0.1:11434"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.dataPolicy "local-only"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxOutputTokens 1024Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 2minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.tool counter.read {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Odczytuje wartość licznika o podanej nazwie."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.handler "Tools.readCounter"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.parameter name String "Nazwa licznika, np. orders"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns "Int64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.sideEffects "none"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.tool counter.add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.description "Zwiększa licznik o podaną wartość i zwraca nowy stan."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.handler "Tools.addCounter"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.parameter name String "Nazwa licznika"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.parameter amount Int64 "O ile zwiększyć"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.returns "Int64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.sideEffects "write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.requiresConfirmation trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.// Agent tylko do odczytu.Komentarz autora; nie jest wykonywany.agent reader {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.model local.smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.system "Odpowiadasz krótko i tylko na podstawie danych z narzędzi."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.tools counter.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.maxSteps 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxToolCalls 8Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 2minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.// Agent, który może zmieniać dane — każde wywołanie narzędzia zapisującego wymaga potwierdzenia.Komentarz autora; nie jest wykonywany.agent assistant {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.model local.smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.system "Pomagasz prowadzić liczniki. Zanim coś zmienisz, sprawdź obecny stan."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.tools counter.read counter.addOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.delegates readerOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.maxSteps 8Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxToolCalls 16Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.timeout 5minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.maxTokens 200000Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Wynik i typowy błąd
Pierwszy krok — sukces; dwa kolejne — kod 1 z diagnostyką `KCS-KAI-…`.
Nadanie agentowi uprawnień szerszych niż przyznał host — agent nigdy nie ma własnych uprawnień, a narzędzie działa z uprawnieniami ze swojej deklaracji.
Wymagania wersji i procedura lokalna
- sdk
- 1.0.0-rc.3+kret.local.3
- sdkInfoReports
- 1.0.0-rc.3
- core
- 1.0.0-test.6.11-draft.1
- os
- Windows 11 x64
- dotnet
- .NET 10 runtime
Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.
- valid
kret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0 - wrong-signature
kret check wrong-signature --jsonKatalog: project · Oczekiwany kod wyjścia: 1 - bad-data-policy
kret check bad-data-policy --jsonKatalog: project · Oczekiwany kod wyjścia: 1
Wyniki zapisane w pakiecie źródłowym
To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.
# EXPECTED_OUTPUT — KRETAI-A01-ToolContractErrors
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:13Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.
### 1. valid (exit 0, PASS)
> kret check . --json
{
"format": "kret-diagnostics/1",
"project": "<project>",
"succeeded": true,
"plugin": {
"id": "LOCAL-KPL-AXA2TLCT",
"name": "ToolContracts",
"version": "1.0.0",
"profile": "standard",
"database": true
},
"permissions": {
"required": [
"logs.own.write",
"kretdb.open",
"kretdb.read",
"kretdb.write"
],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": []
}
### 2. wrong-signature (exit 1, PASS)
> kret check wrong-signature --json
{
"format": "kret-diagnostics/1",
"project": "<project>\\wrong-signature",
"succeeded": false,
"plugin": {
"id": "LOCAL-KPL-AXA2TLCT",
"name": "ToolContracts",
"version": "1.0.0",
"profile": "standard",
"database": true
},
"permissions": {
"required": [
"logs.own.write",
"kretdb.open",
"kretdb.read",
"kretdb.write"
],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": [
{
"file": "<project>\\wrong-signature\\Ai\\assistant.kretai",
"line": 1,
"column": 1,
"endLine": 1,
"endColumn": 1,
"severity": "error",
"code": "KCS-KAI-0202",
"message": "narz\u0119dzie counter.add: deklaracja (String, String) -\u003E Int64 nie zgadza si\u0119 z funkcj\u0105 Tools.addCounter(String, Int64) -\u003E Int64"
}
]
}
### 3. bad-data-policy (exit 1, PASS)
> kret check bad-data-policy --json
{
"format": "kret-diagnostics/1",
"project": "<project>\\bad-data-policy",
"succeeded": false,
"plugin": {
"id": "LOCAL-KPL-AXA2TLCT",
"name": "ToolContracts",
"version": "1.0.0",
"profile": "standard",
"database": true
},
"permissions": {
"required": [
"logs.own.write",
"kretdb.open",
"kretdb.read",
"kretdb.write"
],
"optional": []
},
"handlers": {
"lifecycle": [
"start",
"shutdown"
],
"events": [],
"commands": []
},
"diagnostics": [
{
"file": "<project>\\bad-data-policy\\Ai\\assistant.kretai",
"line": 9,
"column": 5,
"endLine": 9,
"endColumn": 26,
"severity": "error",
"code": "KCS-KAI-0201",
"message": "model local.small: dataPolicy musi by\u0107 \u0022local-only\u0022 albo \u0022external-allowed\u0022"
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
# EXPECTED_OUTPUT — KRETAI-A01-ToolContractErrorsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:13Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. valid (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-AXA2TLCT",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "ToolContracts",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 2. wrong-signature (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check wrong-signature --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>\\wrong-signature",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-AXA2TLCT",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "ToolContracts",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."file": "<project>\\wrong-signature\\Ai\\assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KAI-0202",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "narz\u0119dzie counter.add: deklaracja (String, String) -\u003E Int64 nie zgadza si\u0119 z funkcj\u0105 Tools.addCounter(String, Int64) -\u003E Int64"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.### 3. bad-data-policy (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret check bad-data-policy --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."project": "<project>\\bad-data-policy",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."id": "LOCAL-KPL-AXA2TLCT",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."name": "ToolContracts",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.],Zamknięcie struktury otwartej we wcześniejszych liniach."events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."file": "<project>\\bad-data-policy\\Ai\\assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 5,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 26,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KAI-0201",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "model local.small: dataPolicy musi by\u0107 \u0022local-only\u0022 albo \u0022external-allowed\u0022"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów
{
"format": "kretos-web-playground-diagnostics/1",
"exampleId": "KRETAI-A01-ToolContractErrors",
"sdk": "1.0.0-rc.3+kret.local.3",
"origin": "PRECOMPUTED",
"diagnostics": [
{
"id": "diag.KRETAI-A01-ToolContractErrors.2.1",
"exampleId": "KRETAI-A01-ToolContractErrors",
"step": 2,
"stepName": "wrong-signature",
"command": "kret check wrong-signature --json",
"exitCode": 1,
"file": "wrong-signature/Ai/assistant.kretai",
"line": 1,
"column": 1,
"endLine": 1,
"endColumn": 1,
"severity": "error",
"code": "KCS-KAI-0202",
"message": "narzędzie counter.add: deklaracja (String, String) -> Int64 nie zgadza się z funkcją Tools.addCounter(String, Int64) -> Int64",
"origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
},
{
"id": "diag.KRETAI-A01-ToolContractErrors.3.2",
"exampleId": "KRETAI-A01-ToolContractErrors",
"step": 3,
"stepName": "bad-data-policy",
"command": "kret check bad-data-policy --json",
"exitCode": 1,
"file": "bad-data-policy/Ai/assistant.kretai",
"line": 9,
"column": 5,
"endLine": 9,
"endColumn": 26,
"severity": "error",
"code": "KCS-KAI-0201",
"message": "model local.small: dataPolicy musi być \"local-only\" albo \"external-allowed\"",
"origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"
}
]
}
Czytanie kodu linia po linii
Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.
{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."format": "kretos-web-playground-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETAI-A01-ToolContractErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."sdk": "1.0.0-rc.3+kret.local.3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "diag.KRETAI-A01-ToolContractErrors.2.1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETAI-A01-ToolContractErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."step": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."stepName": "wrong-signature",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."command": "kret check wrong-signature --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."file": "wrong-signature/Ai/assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KAI-0202",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "narzędzie counter.add: deklaracja (String, String) -> Int64 nie zgadza się z funkcją Tools.addCounter(String, Int64) -> Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."id": "diag.KRETAI-A01-ToolContractErrors.3.2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exampleId": "KRETAI-A01-ToolContractErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."step": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."stepName": "bad-data-policy",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."command": "kret check bad-data-policy --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."file": "bad-data-policy/Ai/assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."line": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."column": 5,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endLine": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."endColumn": 26,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."code": "KCS-KAI-0201",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."message": "model local.small: dataPolicy musi być \"local-only\" albo \"external-allowed\"",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.]Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.
Pochodzenie i integralność
KRET_LANGUAGE_KRETAI.zip:KretAI/Examples/ADVANCED_ToolContractErrors/example.json
02_PLAYGROUND/EXAMPLES/KRETAI-A01-ToolContractErrors.json
SHA-256 86B5C1B6347250DD33CECEB07FC560CF301C47D12FE409B41F458F85CB03A787Materiał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.
KRETAI-A01-ToolContractErrors — Kontrakt narzędzia i polityka danych — błędy
KRETAI-A01-ToolContractErrors — Kontrakt narzędzia i polityka danych — błędy
🇬🇧 English version below.
| Pole | Wartość |
|---|---|
| Technologia | KretAI |
| Poziom | ADVANCED |
| Klasyfikacja | VALIDATION_ONLY — Tylko walidacja (bez wykonania) |
| Playground | LOCAL_VALIDATE — lokalnie: walidacja (kret check, lokalny walidator Playground) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt |
Co pokazuje
Narzędzie, którego zadeklarowana sygnatura (amount String) nie zgadza się z funkcją KretS (amount: Int), oraz nieznana polityka danych modelu — obie deklaracje są odrzucane przy kompilacji.
Pliki
| Plik |
|---|
Ai/assistant.kretai |
Disk/Schema.kdb |
Script/Main.krs |
Script/Tools.krs |
bad-data-policy/Ai/assistant.kretai |
bad-data-policy/Disk/Schema.kdb |
bad-data-policy/Script/Main.krs |
bad-data-policy/Script/Tools.krs |
bad-data-policy/host-policy.json |
bad-data-policy/plugin.kretl |
host-policy.json |
plugin.kretl |
wrong-signature/Ai/assistant.kretai |
wrong-signature/Disk/Schema.kdb |
wrong-signature/Script/Main.krs |
wrong-signature/Script/Tools.krs |
wrong-signature/host-policy.json |
wrong-signature/plugin.kretl |
Jak uruchomić
Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.
kret check . --json— wersja poprawnakret check wrong-signature --json— sygnatura narzędzia ≠ funkcja KretS (oczekiwany błąd)kret check bad-data-policy --json— nieznana polityka danych (oczekiwany błąd)
Oczekiwany wynik
Pierwszy krok — sukces; dwa kolejne — kod 1 z diagnostyką KCS-KAI-….
Najczęstszy błąd
Nadanie agentowi uprawnień szerszych niż przyznał host — agent nigdy nie ma własnych uprawnień, a narzędzie działa z uprawnieniami ze swojej deklaracji.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →