trigsight
trigsight
Ein KI-Assistent, der keine Behauptung über meine Arbeit aufstellen kann, die er nicht beweisen kann.
Jede faktische Aussage, die er produziert, ist zur Build-Zeit an den exakten Satz gebunden, der sie stützt. Ein Klick auf eine Zitation scrollt die Quellseite zu diesem Satz und hebt ihn hervor. Wenn eine zitierte Passage nicht im Quelldokument existiert, schlägt der Build fehl — eine nicht verifizierbare Behauptung ist nicht lieferbar.
Warum es das gibt
Portfolio-Chatbots machen Behauptungen über die Kompetenz ihres Autors. Ein Leser hat keine Möglichkeit, sie zu überprüfen, und guten Grund, es nicht zu versuchen: Gemessene Zitierfehlerraten für allgemeine KI-Suche liegen über 60 %, und nur 51,5 % der generierten Sätze werden vollständig durch ihre zitierten Quellen gestützt. Also werden die Behauptungen abgewertet und das Feature ist Dekoration.
Die übliche Lösung ist, das Modell auf einen Korpus zu stützen und zu hoffen. Das hilft gegen Halluzinationen, aber nicht gegen Verifikation — der Leser bekommt immer noch einen Link zu einer ganzen Seite und muss den Satz suchen, der die spezifische Behauptung stützt.
Das kehrt das Vertrauensmodell um. Das Modell schreibt nie einen Link. Es benennt eine Passage; der Build löst sie gegen einen Index dessen auf, was die Dokumente tatsächlich sagen, oder weigert sich zu liefern.
Related MCP server: CiteGuard
Gemessene Ergebnisse
Vergleichbares Portfolio | trigsight | |
Lighthouse-Leistung (mobil) | 62 | 100 |
Barrierefreiheit · Best Practices · SEO | 100 · 100 · 100 | 100 · 100 · 100 |
Largest Contentful Paint | 3,9 s | 1,9 s |
Total Blocking Time | 1.540 ms | ~20 ms |
Initiales JavaScript (brotli) | 380,9 KB | 133,9 KB |
WebGL-Szene | keine | ausgeliefert |
Zitationen gegen Quelle verifiziert | — | 34 / 34 |
2,8× weniger JavaScript mit laufender 3D-Szene. Beide Zahlen sind echte On-the-Wire-Brotli-Übertragungen von den bereitgestellten Websites, gemessen mit derselben Testumgebung (bench/baseline/measure-payload.sh), drei Läufe jeweils — siehe docs/05-results.md für die Erklärung, warum die Messung der beiden Seiten auf unterschiedliche Weise dies als 3,4× überzeichnete.
Retrieval, 30 handgeschriebene Gold-Queries bei k=5:
Konfiguration | recall@5 | MRR |
Nur lexikalisch (BM25) | 0,933 | 0,729 |
Hybrid (BM25 + lokaler Ersatz, RRF k=60) | 0,967 | 0,831 |
Hybrid (BM25 + echte Embeddings) | 0,967 | 0,889 |
Echte Embeddings sind text-embedding-3-small mit 1536 Dimensionen, Kosinus, über Upstash Vector. Drei identische Läufe. Beachte, was sich geändert hat: Recall verbesserte sich nicht, Ranking schon. Bei dieser Korpusgröße finden echte Embeddings nicht mehr relevante Chunks, sie ranken die gefundenen höher — was die Metrik ist, die zählt, da nur die obersten sechs das Modell erreichen.
Wie die Garantie funktioniert
flowchart TB
subgraph build["BUILD"]
MDX["content/*.mdx"] --> N["normalise: collapse whitespace, casefold"]
N --> IDX["passage index"]
IDX --> VER{"every cited passage present exactly once?"}
VER -->|no| FAIL["EXIT 1 — build fails"]
VER -->|yes| OK["allowlist.json"]
end
subgraph run["REQUEST"]
Q["question"] --> R["hybrid retrieve: BM25 + vector, RRF"]
R --> M["model"]
M -->|emits a cite token| RES{"in allowlist?"}
OK --> RES
RES -->|yes| CHIP["chip with text-fragment deep link"]
RES -->|no| DROP["dropped"]
endDas Modell hat keinen Mechanismus, eine URL zu erzeugen, also kann es keine falsche erzeugen. Prompt-Anweisungen sind eine Bitte; eine fehlende Fähigkeit ist eine Invariante.
Der Teil, der schwieriger war, als es aussieht
Ein Browser, der #:~:text= abgleicht, vergleicht mit gerendertem Text, und jeder Teil der Direktive muss in einem einzelnen Element liegen. Zwei Konsequenzen, die echtes Debugging kosteten:
Der Vergleich mit rohem Quelltext schlägt bei 3 von 7 Passagen fehl, die ein Browser problemlos abgleicht — Passagen, die einen Zeilenumbruch überqueren, zusammengefallene Leerzeichen enthalten oder sich in der Groß-/Kleinschreibung unterscheiden. Ein Verifizierer, der falsche Fehlschläge produziert, trainiert dich, ihn zu deaktivieren.
Eine Passage, die Inline-Markup überspannt, wird als separate DOM-Knoten gerendert und kann überhaupt nicht abgeglichen werden, selbst wenn der abgeflachte Text sie enthält. Zwei von 34 Zitationen waren in diesem Zustand: als gebunden gemeldet, in der Praxis nicht abgleichbar. Nur durch das Abrufen jeder erstellten Seite und die Suche in ihrem Text entdeckt.
Beides ist jetzt erzwungen, mit Regressionstests. Der Verifizierer verlangt außerdem, dass jede Passage genau einmal vorkommt, und disambiguiert mit einem Präfix, wenn dies nicht der Fall ist — sonst scrollt der Browser still zum falschen Vorkommen, ein Korrektheitsfehler, der wie Erfolg aussieht.
Schnellstart
npm ci
npm run dev # http://localhost:3000Keine Anmeldedaten erforderlich. Ohne AI_GATEWAY_API_KEY gibt der Chat-Endpunkt den abgerufenen Kontext statt einer Antwort zurück, sodass Retrieval für sich allein überprüfbar ist.
Überprüfe die Behauptungen selbst
npm run verify:citations # the gate: exits 1 on any unbound claim
npx tsx bench/citations/verify.ts --demo # watch it reject a fabricated passage
npm run eval:retrieval # recall@5 and MRR over the golden set
./bench/payload/measure.sh 3990 150 # initial JS against the budget
npm test # 91 testsJede Zahl oben stammt aus einer davon. bench/ ist eingecheckt und niemals gitignored — eine nicht eingecheckte Testumgebung verwandelt ein echtes Ergebnis in eine nicht verifizierbare Behauptung.
MCP-Server
POST /api/mcp — zustandsloses Streamable HTTP, Spezifikation 2026-07-28. Vier schreibgeschützte Verifikations-Werkzeuge statt Beschreibungswerkzeuge:
Werkzeug | Antworten |
| Was dokumentiert ist, mit Metriken, die als verifiziert oder nicht markiert sind |
| Welche Passagen eine Behauptung stützen — oder klar, dass keine es tun |
| Ob eine Technologie in Prosa diskutiert oder nur in einem Stack aufgelistet ist |
| Volltext einer Fallstudie |
find_evidence bestätigte ursprünglich "Quantenkryptographie-Forschung an Ionenfallen". Ein Vektorbein ist Nächste-Nachbarn-Suche: Es gibt immer seine nächsten Chunks zurück, wie unzusammenhängend auch immer. Ein Agent, der das konsumiert, würde eine erfundene Qualifikation wiederholen. Es erfordert jetzt echte lexikalische Überlappung, kalibriert auf 8/10 echte Positive und 0/6 falsche Positive gegen handgeschriebene Behauptungssätze.
Einschränkungen
Klar ausgesprochen, weil ein Einschränkungsabschnitt, der wie Marketing liest, wertlos ist.
Der Vorsprung gegenüber rein lexikalisch ist eine Query breit. Bei 34 Chunks und 30 Gold-Queries ist eine Query 0,033 Recall wert — also ist die 0,034-Recall-Lücke zwischen lexikalisch und hybrid eine einzelne Query. Lies die Tabelle nicht als Beweis, dass Hybrid allgemein überlegen ist. Sie zeigt, dass Hybrid nicht schlechter ist und auf diesem Korpus besser rankt.
Eine meiner Vorhersagen war falsch, und der Grund ist lehrreich. Ich sagte voraus, dass echte Embeddings die eine verpasste Query beheben würden. Das taten sie nicht. Die Untersuchung des Vektorbeins in Isolation zeigte, dass der richtige Chunk nie in seine Top 5 gelangt — weil dieser Chunk 1.340 Zeichen umfasst, die fünf Themen abdecken, und die Antwort ein Satz ist, der 871 Zeichen tief liegt. Sein einzelner Vektor ist ein Durchschnitt von fünf Ideen. Das ist ein Chunking-Problem, kein Embedding-Problem, und kein Modell behebt es. Aufgezeichnet statt gepatcht, weil das Ändern des Chunkers jetzt den Vergleich ungültig machen würde, den die Tabelle existiert, um zu machen. Siehe
bench/retrieval/results/real-embeddings-2026-08-21.md.Ohne Anmeldedaten degradiert das Vektorbein zu einem deterministischen Ersatz, der kein semantisches Modell ist. Retrieval antwortet weiterhin über BM25, aber die Qualität ist wirklich geringer — die Testumgebung benennt das Backend bei jedem Lauf, sodass eine Zahl nie ohne es zitiert werden kann.
Textfragmente sind von Natur aus fragil. Das Umformulieren eines zitierten Satzes bricht seinen Link. Das ist der Sinn des Build-Gates — du kannst den Bruch nicht ausliefern — aber es bedeutet, dass das Bearbeiten von Prosa manchmal das Aktualisieren einer Zitation erfordert.
Zitationen müssen innerhalb eines Blockelements liegen. Eine Behauptung, die am besten durch Text gestützt wird, der eine Tabellenzeile und einen Absatz überspannt, kann nicht als einzelne Passage zitiert werden.
Der Korpus ist klein (6 Dokumente, 34 Chunks). Retrieval-Zahlen hier sollten nicht als Vorhersagen für einen großen Korpus gelesen werden.
Keine Streaming-Zitationsauflösung. Chips erscheinen nach Abschluss einer Nachricht, nicht mitten im Stream.
Stack
Next.js 16.3.1 · React 19.2.8 (festgelegt — R3F 9 peers >=19 <19.3) · TypeScript · Tailwind v4.3.3 · Velite + Zod · three 0.185.1 + R3F 9.7.0 (festgelegt) · Vercel AI Gateway
Lizenz
MIT — siehe LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes a public, read-only professional profile with tools to search resume evidence, fetch curated links, and generate career briefs for LLM agents.MIT
- AlicenseNot gradedqualityBmaintenanceEnables per-claim citation verification for AI-generated text by fetching cited sources and judging whether they support the claim, with verdicts and evidence quotes.75MIT
- AlicenseNot gradedqualityBmaintenanceEnables defining and verifying evidence contracts for claims in READMEs, releases, or product pages using constrained verifiers and generating hash-chained receipts and reports.23MIT
- AlicenseNot gradedqualityAmaintenanceEnables traceable scholarly literature reviews using free APIs, generating reports where every claim links to evidence IDs.MIT
Related MCP Connectors
Resolve, search and verify legal citations against the official sources, with provenance.
Verify claims with verdict, confidence & cited sources; batch verify, source checks, daily brief.
Independent static verification for exact immutable public GitHub commits.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Raghu23-dev/trigsight'
If you have feedback or need assistance with the MCP directory API, please join our Discord server