Labs · Lorebook trigger
Paste a chat,
see which lorebook entries fire.
“Why didn’t my lorebook trigger” is the number-one lorebook headache — and the usual debugging method is edit, start a chat, squint. Drop a lorebook JSON and a few chat lines here instead: matched keywords get highlighted, constants get flagged, recursion chains get drawn, probability entries get a re-roll button. The engine is ported against SillyTavern 1.18 scan-and-activate semantics and runs entirely in your browser.
Lorebook
Drop a lorebook JSON here, or click to pick
Tap to pick a lorebook JSON file
Accepts SillyTavern World Info exports · character card JSON (embedded book auto-extracted)Chat text
Load a lorebook, paste some chat — trigger results show up here.
How do you test a lorebook without starting a chat?
Paste the lorebook JSON and a few lines of chat above: every entry gets a verdict with its reason — matched keywords highlighted, secondary-key logic (AND_ALL / NOT_ANY and friends) spelled out, recursion chains drawn, probability entries re-rollable. The engine follows SillyTavern 1.18 scan-and-activate semantics and runs entirely in your browser, so you can iterate on an entry in seconds instead of burning test chats.
Lorebook not triggering — symptom, cause, fix
| Symptom | Most likely cause | Fix |
|---|---|---|
| Nothing ever triggers | book not bound to this character or chat | check the binding first, toggles second |
| One entry never fires | the keyword is never actually said — aliases missing | put every alias and nickname into the key list |
| Works early, dies in long chats | token budget saturated by one oversized entry | shrink entries; lower priority on nice-to-haves |
| Fires one turn, silent the next | keyword drifted outside the scan window | raise scan depth, or promote the entry to constant |
| Random no-shows | probability below 100% — the roll missed | that's by design; re-roll it in the simulator to watch |
| Triggers, but the model ignores it | entry too long and literary | rewrite as a telegraphic dossier, facts first |
Where this tool comes from
The trigger engine is a line-for-line port of the lorebook activator inside the Foreverse app — an implementation aligned with SillyTavern 1.18's checkWorldInfo and pinned down by 60+ unit tests. The web build carries over the scan-and-activate phases: keyword matching (case, whole-word boundaries, CJK keys, regex keys), all four secondary-key modes (AND_ANY / AND_ALL / NOT_ANY / NOT_ALL), constants, recursive scanning (including the excludeRecursion / preventRecursion / delayUntilRecursion level machine), probability rolls, and inclusion groups.
Behavior alignment used the app-side unit test suite as gold: representative cases (CJK keys, case overrides, the four secondary modes, recursion chains, decorators) were carried into the web engine's self-test, and everything passes before shipping. Ported 2026-07.
What it can't do
It simulates which entries activate — not what finally lands in the prompt. A real run adds token-budget trimming (low-priority entries get cut when the budget runs out), injection ordering, and cross-turn sticky/cooldown counters. Those need session state a one-shot simulation doesn't have; entries carrying such settings get a "simulated stateless" badge.
Entries with a character filter are treated as unfiltered here — the page has no "who is speaking" context. And frontends differ on recursion and probability details; this page follows SillyTavern 1.18 semantics.
FAQ
How do I test if my lorebook is working?
Without this page: start a throwaway chat, say a sentence containing one entry's trigger key, and check the prompt log for the entry's text — repeat per entry, burning a message each time. With this page: paste the lorebook JSON and a few chat lines, press one button, and every entry reports fired / silent with the exact reason — matched keys highlighted, secondary-key logic spelled out, recursion chains drawn. Same SillyTavern 1.18 semantics, zero test chats.
Why isn't my lorebook entry triggering?
The four usual suspects, all flagged directly by this tool: ① the keyword never appears in the scan window — by default only the last 4 messages are scanned, so a keyword from ten turns ago doesn't count; ② the secondary-key condition fails — AND_ALL wants every key present, NOT_ANY wants none of them, and people mix the directions up constantly; ③ the entry is disabled, or it's a dead entry with no keys at all; ④ the probability roll missed — a 30% entry sitting out seven rounds in ten is working as designed.
What does recursive activation mean?
When entry A fires, A's own content joins the next scan pass — if B's keyword appears inside A's text, B fires too. That's recursion, and lorebook authors use it deliberately to build lore chains: mention the lighthouse, get the keeper, get the keeper's secret. This tool draws the chain ("triggered by the content of …") — information you can't see inside SillyTavern itself.
Will the simulation match a real chat exactly?
The scan-and-activate verdicts match (keyword matching, case, whole-words, secondary logic, recursion, probability, inclusion groups — all ported against SillyTavern 1.18 semantics). Three things a real run adds that this page doesn't simulate: token-budget trimming (low-priority entries get cut when too much fires), injection ordering, and cross-turn sticky/cooldown counters. Entries carrying those settings get a caveat badge.
Is my lorebook uploaded?
No. Parsing and simulation run entirely in your browser — the page keeps working offline once loaded. That's also why you can throw a 50,000-word book at it: there's no server in the loop.