Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Kontrakt narzędzia i polityka danych — błędy

ADVANCEDVALIDATION_ONLYKretAI

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.

Edycja i zapisane wyniki

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.

  1. kretai "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. // Model lokalny: serwer modeli na tym komputerze (protokół chat/completions — llama.cpp server, Ollama, LM Studio).Komentarz autora; nie jest wykonywany.
  4. // 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.
  5. model local.small {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. provider "local"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. name "qwen2.5:7b"Pole tożsamości lub wersji w otaczającym bloku; zachowaj jego kontekst.
  8. endpoint "http://127.0.0.1:11434"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. dataPolicy "local-only"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. maxOutputTokens 1024Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. timeout 2minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  13. Pusta linia oddziela fragmenty źródła.
  14. tool counter.read {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  15. description "Odczytuje wartość licznika o podanej nazwie."Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  16. handler "Tools.readCounter"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  17. parameter name String "Nazwa licznika, np. orders"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  18. returns "Int64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  19. permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  20. kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  22. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  23. sideEffects "none"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  24. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  25. Pusta linia oddziela fragmenty źródła.
  26. tool counter.add {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  27. 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.
  28. handler "Tools.addCounter"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  29. parameter name String "Nazwa licznika"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  30. parameter amount Int64 "O ile zwiększyć"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  31. returns "Int64"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  32. permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  33. kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  34. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  35. kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  36. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  37. sideEffects "write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  38. requiresConfirmation trueOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  39. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  40. Pusta linia oddziela fragmenty źródła.
  41. // Agent tylko do odczytu.Komentarz autora; nie jest wykonywany.
  42. agent reader {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  43. model local.smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  44. 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.
  45. tools counter.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  46. permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  47. kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  48. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  49. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  50. limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  51. maxSteps 4Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  52. maxToolCalls 8Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  53. timeout 2minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  54. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  55. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  56. Pusta linia oddziela fragmenty źródła.
  57. // Agent, który może zmieniać dane — każde wywołanie narzędzia zapisującego wymaga potwierdzenia.Komentarz autora; nie jest wykonywany.
  58. agent assistant {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  59. model local.smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  60. 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.
  61. tools counter.read counter.addOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  62. delegates readerOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  63. permissions {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  64. kretdb.openOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  65. kretdb.readOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  66. kretdb.writeOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  67. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  68. limits {Początek nazwanego bloku; jego pola odczytaj w powiązanej referencji.
  69. maxSteps 8Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  70. maxToolCalls 16Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  71. timeout 5minOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  72. maxTokens 200000Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  73. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  74. }Zamknięcie struktury otwartej we wcześniejszych liniach.

Wynik i typowy błąd

Pierwszy krok — sukces; dwa kolejne — kod 1 z diagnostyką `KCS-KAI-…`.

Na co uważać

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.

  1. validkret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. wrong-signaturekret check wrong-signature --jsonKatalog: project · Oczekiwany kod wyjścia: 1
  3. bad-data-policykret 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.

  1. # EXPECTED_OUTPUT — KRETAI-A01-ToolContractErrorsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # 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.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. valid (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-AXA2TLCT",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "ToolContracts",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. "kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  22. "kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  23. "kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  24. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  25. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  26. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  27. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  30. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  31. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  35. "diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  36. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  37. Pusta linia oddziela fragmenty źródła.
  38. ### 2. wrong-signature (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  39. > kret check wrong-signature --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  40. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  41. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  42. "project": "<project>\\wrong-signature",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  43. "succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  44. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  45. "id": "LOCAL-KPL-AXA2TLCT",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. "name": "ToolContracts",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  47. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  51. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  54. "kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  55. "kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  56. "kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  57. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  58. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  59. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  60. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  62. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  63. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  64. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  65. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  66. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  68. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  69. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  70. "file": "<project>\\wrong-signature\\Ai\\assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "line": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "endLine": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. "endColumn": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  75. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. "code": "KCS-KAI-0202",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  77. "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.
  78. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  79. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  80. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  81. Pusta linia oddziela fragmenty źródła.
  82. ### 3. bad-data-policy (exit 1, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  83. > kret check bad-data-policy --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  84. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  85. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  86. "project": "<project>\\bad-data-policy",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  87. "succeeded": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. "id": "LOCAL-KPL-AXA2TLCT",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  90. "name": "ToolContracts",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "database": truePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  95. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "logs.own.write",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  98. "kretdb.open",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  99. "kretdb.read",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  100. "kretdb.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  101. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  102. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  103. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  104. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  105. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  106. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  107. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  108. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  109. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  112. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  114. "file": "<project>\\bad-data-policy\\Ai\\assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "line": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "column": 5,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. "endLine": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  118. "endColumn": 26,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  120. "code": "KCS-KAI-0201",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  121. "message": "model local.small: dataPolicy musi by\u0107 \u0022local-only\u0022 albo \u0022external-allowed\u0022"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  123. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  124. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  125. Pusta linia oddziela fragmenty źródła.
  126. 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.

  1. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. "format": "kretos-web-playground-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  3. "exampleId": "KRETAI-A01-ToolContractErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  4. "sdk": "1.0.0-rc.3+kret.local.3",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  5. "origin": "PRECOMPUTED",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  6. "diagnostics": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "id": "diag.KRETAI-A01-ToolContractErrors.2.1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "exampleId": "KRETAI-A01-ToolContractErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "step": 2,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "stepName": "wrong-signature",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "command": "kret check wrong-signature --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "file": "wrong-signature/Ai/assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "line": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "column": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. "endLine": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  18. "endColumn": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "code": "KCS-KAI-0202",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. "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.
  22. "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  24. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. "id": "diag.KRETAI-A01-ToolContractErrors.3.2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  26. "exampleId": "KRETAI-A01-ToolContractErrors",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  27. "step": 3,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "stepName": "bad-data-policy",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "command": "kret check bad-data-policy --json",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  30. "exitCode": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. "file": "bad-data-policy/Ai/assistant.kretai",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  32. "line": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "column": 5,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "endLine": 9,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  35. "endColumn": 26,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  36. "severity": "error",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  37. "code": "KCS-KAI-0201",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "message": "model local.small: dataPolicy musi być \"local-only\" albo \"external-allowed\"",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "origin": "PRECOMPUTED (kret check, SDK 1.0.0-rc.3+kret.local.3)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  41. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  42. }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 86B5C1B6347250DD33CECEB07FC560CF301C47D12FE409B41F458F85CB03A787

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.

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.
PoleWartość
TechnologiaKretAI
PoziomADVANCED
KlasyfikacjaVALIDATION_ONLY — Tylko walidacja (bez wykonania)
PlaygroundLOCAL_VALIDATE — lokalnie: walidacja (kret check, lokalny walidator Playground)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_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.

  1. kret check . --json — wersja poprawna
  2. kret check wrong-signature --json — sygnatura narzędzia ≠ funkcja KretS (oczekiwany błąd)
  3. 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.

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

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