Sprawdź przed zastosowaniem
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
Zweryfikuj całkowite węzły wyszukiwania z dwoma odwołaniami do dzieci.
def is_strict_bst(root):
pending, seen, checks = [(root, None, None)], set(), []
while pending:
node, low, high = pending.pop()
if node is None:
continue
if type(node) is not list or len(node) != 3 or type(node[0]) is not int:
raise ValueError("tree.node")
if id(node) in seen or len(seen) == 1000:
raise ValueError("tree.structure")
seen.add(id(node))
value, left, right = node
checks.append((value, low, high))
pending.extend([(right, value, high), (left, low, value)])
return all((low is None or low < value) and
(high is None or value < high) for value, low, high in checks)Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.
Sprawdź puste drzewa i granice przodków, zwróć fałsz dla duplikatów i odrzuć cykle, wspólne dzieci, błędne węzły lub ponad 1000 węzłów.
def is_strict_bst(root):
pending, seen, checks = [(root, None, None)], set(), []
while pending:
node, low, high = pending.pop()
if node is None:
continue
if type(node) is not list or len(node) != 3 or type(node[0]) is not int:
raise ValueError("tree.node")
if id(node) in seen or len(seen) == 1000:
raise ValueError("tree.structure")
seen.add(id(node))
value, left, right = node
checks.append((value, low, high))
pending.extend([(right, value, high), (left, low, value)])
return all((low is None or low < value) and
(high is None or value < high) for value, low, high in checks)TreeSentinel zapewnia środowisko projektu dla Windows i rozmowę z AI powiązaną z plikami źródłowymi do utrzymania danych strukturalnych. Zacznij od pokazania, gdzie aplikacja otrzymuje strukturę i jak używa wyniku walidacji. Zanim model zaproponuje prostszą kontrolę lub inne przejście, poproś o analizę całej tej granicy.
Na przykład zadanie dotyczące bst_order.py może badać drzewo, którego bezpośrednie dzieci wyglądają na uporządkowane, lecz głębsza wartość narusza granicę wyznaczoną przez przodka. Dołącz wadliwą strukturę i oczekiwany wynik. Następnie zapytaj o obsługę nieprawidłowych węzłów i powtarzających się odwołań, aby poprawka porządku nie pomijała założeń dotyczących kształtu przeglądanej struktury.
Sprawdź wynikową propozycję pod kątem odrębnych rezultatów: poprawnego drzewa, naruszenia porządku i nieprawidłowej struktury. Uruchom odpowiednie kontrole projektu i sprawdź, jak każdy rezultat dociera do odbiorcy. Każda zmiana polityki powtarzających się kluczy powinna być jawna. Pozornie drobna zmiana porównania może zmienić dane akceptowane przez otaczającą aplikację.
TreeSentinel łączy się z obsługiwanymi punktami końcowymi zgodnymi z OpenAI lub punktami Anthropic, z uwierzytelnianiem tam, gdzie jest potrzebne. Możesz wybrać model AI po ablacji, jeśli oferuje go Twój punkt końcowy. Ograniczenia dostawcy, limity kontekstu i dostępne narzędzia pozostają częścią konfiguracji; przegląd powinien opierać się na konkretnych strukturach i obserwowalnych wynikach, a nie pewności modelu.
Lokalne porównanie może przejść, mimo że potomek narusza granicę wcześniejszego przodka. Podaj mały zagnieżdżony przypadek ujawniający tę różnicę i określ oczekiwany wynik. Przed akceptacją uproszczenia walidacji sprawdź proponowane przejście względem tego przypadku.
Zdefiniuj to w kontrakcie aplikacji. Przykład wymusza ścisły porządek, który wyklucza równe klucze. Sprawdź, czy odbiorca rozróżnia nieprawidłowe wejście od poprawnej struktury naruszającej porządek, i zachowaj te konwencje odpowiedzi w proponowanej zmianie.
Może oznaczać, że wejście nie ma kształtu drzewa oczekiwanego przez funkcję, nawet gdy pojedyncze wartości wyglądają poprawnie. W razie potrzeby dodaj przypadek współdzielonego odwołania lub cyklu. Sprawdź zakończenie i odrzucanie, zamiast polegać wyłącznie na zwykłych zagnieżdżonych przykładach.
Dopiero po uwzględnieniu struktury i zachowania błędów wymaganych przez kod wywołujący. Sprawdzenie spłaszczonych wartości może ukryć nieprawidłowe węzły lub założenia przejścia. Przed zmianą kontraktu walidacji poproś model o wyjaśnienie tych kompromisów na rzeczywistym kodzie.
TreeSentinel · Zaktualizowano 2026-10-25