{"id":117722,"date":"2026-08-05T10:42:54","date_gmt":"2026-08-05T08:42:54","guid":{"rendered":"https:\/\/diselva.com\/?p=117722"},"modified":"2026-08-05T10:59:20","modified_gmt":"2026-08-05T08:59:20","slug":"der-ai-agent-vergisst-alles-die-spezifikation-nicht","status":"publish","type":"post","link":"https:\/\/diselva.com\/de\/blog\/der-ai-agent-vergisst-alles-die-spezifikation-nicht\/","title":{"rendered":"Der AI Agent vergisst alles. Die Spezifikation nicht."},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Ein AI Agent hat zwischen zwei Sitzungen kein eigenes Ged\u00e4chtnis.<\/em> <em>Wir sichern das Projektged\u00e4chtnis dauerhaft durch Spezifikationen, Leitplanken und Skills.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Drei Monate nach Projektstart fand der Abnahmetest einer mit AI entwickelten Anwendung etwas Beunruhigendes: Wer die Rechnungsnummer in der URL \u00e4nderte, sah die Rechnung eines fremden Kunden als PDF, samt Adresse und Zahlungsstatus. Wir suchten nach der Regel, die das h\u00e4tte verhindern m\u00fcssen. Irgendwo h\u00e4tte stehen m\u00fcssen: Ein Kunde darf ausschliesslich seine eigenen Rechnungen einsehen. Wir fragten den AI Agenten, der gerade an diesem Modul arbeitete. Er hatte keine Ahnung, konnte er auch gar nicht haben: Diese Sitzung wusste nichts von der letzten, geschweige denn von jener, die Monate zuvor diese Pr\u00fcfung h\u00e4tte vorschreiben sollen. Also suchten wir in der Spezifikation selbst. Die Regel war nicht da. Nicht gel\u00f6scht. Nie aufgeschrieben, weil sie allen zu selbstverst\u00e4ndlich erschien, um sie eigens festzuhalten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Damit das nicht mehr passiert, braucht jede Entscheidung einen Ort, an dem auch der n\u00e4chste, ahnungslose AI-Agent sie noch lesen kann.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Die Spezifikation (Specification) &#8211; Was feststeht und was noch offen ist<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Hier wird das fachliche Gebiet (<strong>Domain<\/strong>) eines Moduls definiert: seine Begriffe, Daten und Regeln. Dazu geh\u00f6ren auch die Anwendungsf\u00e4lle (<strong>Use Cases<\/strong>) mit ihren Akzeptanzkriterien (<strong>Acceptance Criteria<\/strong>), die genau beschreiben, wie sich das System verhalten soll. Verantwortet wird das vom <strong>Business Analyst<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jede Aussage darin l\u00e4sst sich in zwei Kategorien einteilen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Invariante (Invariant):<\/strong> Eine feststehende Regel, gegen die eine Implementierung niemals verstossen darf.<\/li>\n\n\n\n<li><strong>Offene Entscheidung (Open Decision):<\/strong> noch nicht getroffene Entscheidung, festgehalten mit einem sicheren Standardwert, damit niemand raten muss.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Die goldene Regel:<\/strong> Schreibe jede fachliche Regel und Invariante explizit auf, egal wie selbstverst\u00e4ndlich sie erscheint. Was nicht in der Spezifikation steht, existiert f\u00fcr den AI-Agenten nicht.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">AUSZUG: AUS DEM ORDER DOMAIN MODEL<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Order<br>  id: string<br>  accountId: string (owning customer account)<br>  status: placed | shipped | cancelled | refunded<br><br>INV-07: A customer may view only orders belonging to their own account.<br><br>OD-03: How long does a cancelled order stay visible in the account?<br>       Default: 24 months, pending confirmation from Legal.<br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">AUSZUG: USE CASE ORDER DETAIL<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Scenario: Customer views their own order<br>  Given an authenticated customer<br>  When they request an order by id<br>  Then the order is returned only if accountId matches the requester<br>  # enforces INV-07<br><br>Scenario: Customer requests an order they do not own<br>  Given an authenticated customer<br>  When the requested order belongs to a different account<br>  Then the response is 403 Forbidden<br>  # enforces INV-07<br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Die Leitplanken (Harness) &#8211; Das Ged\u00e4chtnis, das f\u00fcr alle gilt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcbergeordnet zur Spezifikation eines einzelnen Moduls stehen die <strong>Leitplanken<\/strong>. Sie bilden den gemeinsamen technischen Standard, dem jede Applikation im System folgt: Tech-Stack, Programmiersprache, API-Design, Security, Fehlerbehandlung und Logging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Definiert wird dies vom <strong>L\u00f6sungs-Architekt<\/strong>. Dazu geh\u00f6ren auch <strong>Architektur-Entscheidungen (ADRs)<\/strong>, kurze Eintr\u00e4ge, die festhalten, <em>warum<\/em> eine bestimmte Option gew\u00e4hlt und eine Alternative verworfen wurde.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Die goldene Regel:<\/strong> Definiere technische Standards und Sicherheitsregeln einmal zentral f\u00fcr das gesamte System. Was in den Leitplanken verankert ist, gilt ausnahmslos, unabh\u00e4ngig davon, an was der Business Analyst im einzelnen Use Case gedacht hat.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">AUSZUG: ARCHITECTURE DECISION RECORD <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Title: Integration with SAP S\/4HANA<br>Status: Accepted<br><br>Context: Multiple services need data from SAP. Direct point-to-point connections would mean many sets of credentials to rotate and no single place to audit access.<br><br>Decision: All integration with SAP S\/4HANA goes through SAP Cloud Integration. No service connects to SAP directly.<br><br>Consequences: One integration surface to secure and monitor. Slightly higher latency accepted as tradeoff for a single audited path.<br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">AUSZUG: DEFINITION STRUKTUR ABLAGE<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><br>pxp-portal-web (BFF)<br>  \u251c\u2500\u2500 app\/          (Routes &amp; Server Components call microservice directly)<br>  \u251c\u2500\u2500 app\/api\/      (Route Handlers, one per client-triggered write)<br>  \u2514\u2500\u2500 lib\/api-client (Typed calls to the microservice)<br><br>order-service (Microservice)<br>  \u251c\u2500\u2500 src\/handlers  (HTTP routes)<br>  \u251c\u2500\u2500 src\/services  (Business logic)<br>  \u2514\u2500\u2500 src\/models    (Domain types)<br><br>Rule: The browser never calls a microservice directly. <br>Every client-triggered write goes through a same-origin Route Handler in the BFF.<br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Die UX &#8211; Was erlaubt ist vs. wie es aussehen soll<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein visuelles Design tr\u00e4gt <strong>\u00fcberhaupt kein Ged\u00e4chtnis<\/strong> in sich. Ein Figma-Design zeigt nur einen Soll-Zustand, aber nie die Begr\u00fcndung oder die Gesch\u00e4ftslogik dahinter.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Die goldene Regel:<\/strong> Das Design zeigt das <em>Wie<\/em>, die Spezifikation entscheidet das <em>Was<\/em>. Wenn beide sich widersprechen, gewinnt immer die Spezifikation, weil sie die Einzige ist, die sich nachvollziehbar erkl\u00e4ren l\u00e4sst.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">BEISPIEL: UX ORDER OVERVIEW<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"823\" src=\"https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=1360%2C823&#038;quality=78&#038;ssl=1\" alt=\"\" class=\"wp-image-117759\" srcset=\"https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=2048%2C1239&amp;quality=78&amp;ssl=1 2048w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=1024%2C619&amp;quality=78&amp;ssl=1 1024w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=400%2C242&amp;quality=78&amp;ssl=1 400w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=768%2C464&amp;quality=78&amp;ssl=1 768w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=1536%2C929&amp;quality=78&amp;ssl=1 1536w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image-1.png?resize=1200%2C726&amp;quality=78&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1360px) 100vw, 1360px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die H\u00e4nde (Skills) &#8211; Zwei Arten von Ged\u00e4chtnis<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Keine der drei menschlichen Rollen (Architekt, Business Analyst, UX Designer) schreibt den Code selbst. Das \u00fcbernimmt eine Menge wiederholbarer Verfahren: die <strong>Skills<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier zeigt sich der Unterschied zwischen zwei Wissensarten:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Deklaratives Wissen (Faktenwissen):<\/strong> Die Spezifikation und die Leitplanken halten fest, <em>was<\/em> entschieden wurde.<\/li>\n\n\n\n<li><strong>Prozedurales Wissen (Verfahrenswissen):<\/strong> Die Skills halten fest, <em>wie<\/em> man aus diesen Vorgaben tats\u00e4chlich etwas baut.<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Die goldene Regel:<\/strong> Definiere das Verfahrenswissen (<em>Wie<\/em> man baut) in wiederholbaren Skills, aber lass sie niemals das Faktenwissen (<em>Was<\/em> gebaut wird) erraten. Ein Skill f\u00fchrt Regeln strikt aus und stoppt sofort, wenn eine Spezifikation unvollst\u00e4ndig ist.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">AUSZUG: SKILL-DEFINITION IMPLEMENT-USE-CASE<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">name: implement-use-case<br>description: Turn an already written Use Case doc into working code against the harness.<br><br>instructions:<br>  Before writing any code, trace every Open Decision and Invariant <br>  the Use Case cites. If a citation points to an ID that does not <br>  exist in the Domain Model doc, STOP and flag it rather than <br>  guessing what it might have meant.<br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Was \u201eSTOP and flag&#8220; in der Praxis bedeutet: Der Agent bricht die Session nicht ab, er pausiert sie. Die offene Frage geht als R\u00fcckfrage an die verantwortliche Rolle zur\u00fcck, meist an den Business Analyst bei einer fehlenden Anforderung, an den Architekten bei einer L\u00fccke in den Leitplanken. Bis die Antwort da ist, wird nichts geraten und nichts implementiert. Sobald die Entscheidung in Spezifikation oder Leitplanken eingetragen ist, nimmt der Agent die Session mit dem neuen Stand wieder auf.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Pr\u00fcfung (Audit) &#8211; Wie wir die L\u00fccke schlossen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Als das Team die Sicherheitsl\u00fccke der Rechnungs-URL untersuchte, wurde klar: Sie war nie die Entscheidung eines einzelnen Moduls, sondern eine Regel, die alle f\u00fcr \u201eselbstverst\u00e4ndlich\u201c hielten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Behoben wurde das Problem an zweierlei Stellen:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Der Rechnungsabruf pr\u00fcft nun die Eigent\u00fcmerschaft.<\/li>\n\n\n\n<li>Die Regel wurde <strong>global in die Leitplanken<\/strong> aufgenommen.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">AUSZUG: LEITPLANKEN (ERG\u00c4NZUNG NACH DEM VORFALL)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Rule: Any endpoint returning an entity by ID MUST verify that the requester <br>owns it before the response is built. No exception\u2014not even for internal tools.<br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Die \u00dcbersicht: Drei Rollen, ein geliehenes Ged\u00e4chtnis<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein AI-Agent vergisst alles. Jedes Mal. Damit KI im Unternehmen trotzdem verl\u00e4sslich Software entwickelt, verschieben wir das Projektged\u00e4chtnis aus dem fl\u00fcchtigen Chatfenster in strukturierte Artefakte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Drei menschliche Rollen definieren das <strong>Faktenwissen<\/strong> (<em>Was<\/em> gebaut wird). Wiederholbare Skills liefern das <strong>Verfahrenswissen<\/strong> (<em>Wie<\/em> gebaut wird). Der Agent <em>leiht<\/em> sich dieses Wissen nur f\u00fcr die Dauer einer Arbeitssitzung aus.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"913\" src=\"https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image.png?resize=1024%2C913&#038;quality=78&#038;ssl=1\" alt=\"\" class=\"wp-image-117733\" srcset=\"https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image.png?w=1024&amp;quality=78&amp;ssl=1 1024w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image.png?resize=400%2C357&amp;quality=78&amp;ssl=1 400w, https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image.png?resize=768%2C685&amp;quality=78&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Auf den Punkt gebracht<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Das geliehene Ged\u00e4chtnis:<\/strong> Der AI-Agent besitzt kein eigenes Ged\u00e4chtnis. Er liest Spezifikationen und Leitplanken beim Start der Session und vergisst sie beim Schliessen wieder.<\/li>\n\n\n\n<li><strong>Die goldene Regel:<\/strong> Was nicht aufgeschrieben ist, existiert f\u00fcr die KI nicht. Selbstverst\u00e4ndlichkeiten gibt es im KI-Engineering nicht.<\/li>\n\n\n\n<li><strong>Engineering statt \u201eVibe Coding\u201c:<\/strong> Der Unterschied zwischen Herumprobieren und professioneller KI-Entwicklung liegt nicht im Prompting, sondern in der Qualit\u00e4t der Spezifikationen und Leitplanken.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Wie Diselva hier unterst\u00fctzt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Einstieg in KI-getriebene Software-Entwicklung ist ein Kultur- und Prozesswandel. <strong>Wir bei Diselva unterst\u00fctzen Sie dabei, dieses Fundament aufzubauen:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Leitplanken verankern:<\/strong> Wir definieren mit Ihren Architekten die technischen Standards und Sicherheitsregeln (Harness).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Spezifikationen sch\u00e4rfen:<\/strong> Wir etablieren Strukturen f\u00fcr Use Cases und Invarianten, die KI-Agenten missverst\u00e4ndnisfrei verstehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Custom AI Skills entwickeln:<\/strong> Wir bauen die passenden Verfahren, damit Ihre Agenten pr\u00e4zise nach Ihren Vorgaben coden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kontext-Kosten senken: <\/strong>Ein Ged\u00e4chtnis, das bei jeder Sitzung komplett neu geladen wird, hat einen Preis. Wir strukturieren Leitplanken und Spezifikationen so, dass Agenten nur laden, was sie tats\u00e4chlich brauchen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Machen Sie das Wissen Ihres Projekts unabh\u00e4ngig vom Kontextfenster einzelner Chats \u2013 <strong>sprechen Sie uns an.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein AI Agent hat zwischen zwei Sitzungen kein eigenes Ged\u00e4chtnis. Wir sichern das Projektged\u00e4chtnis dauerhaft durch Spezifikationen, Leitplanken und Skills. Drei Monate nach Projektstart fand der Abnahmetest einer mit AI entwickelten Anwendung etwas Beunruhigendes: Wer die Rechnungsnummer in der URL \u00e4nderte, sah die Rechnung eines fremden Kunden als PDF, samt Adresse und Zahlungsstatus. Wir suchten [&hellip;]<\/p>\n","protected":false},"author":268896787,"featured_media":117733,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_eb_attr":"","content-type":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1883,1951],"tags":[],"thema":[],"class_list":["post-117722","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-expertenartikel","category-leading-with-ai"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/diselva.com\/wp-content\/uploads\/2026\/07\/image.png?fit=1024%2C913&quality=78&ssl=1","_links":{"self":[{"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/posts\/117722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/users\/268896787"}],"replies":[{"embeddable":true,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/comments?post=117722"}],"version-history":[{"count":41,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/posts\/117722\/revisions"}],"predecessor-version":[{"id":117801,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/posts\/117722\/revisions\/117801"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/media\/117733"}],"wp:attachment":[{"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/media?parent=117722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/categories?post=117722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/tags?post=117722"},{"taxonomy":"thema","embeddable":true,"href":"https:\/\/diselva.com\/de\/wp-json\/wp\/v2\/thema?post=117722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}