[{"data":1,"prerenderedAt":926},["ShallowReactive",2],{"blog-temporal-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":23,"sources":36,"cover":112,"og":113,"expertise":114,"locales":115,"lang":117,"title":119,"description":120,"coverAlt":121,"metaTitle":122,"takeaways":123,"faq":129,"toc":142,"blocks":170,"others":655},"temporal","2026-10-07",8,"agents",[9,10,11,12,13],"Durable execution","Workflow orchestration","Human in the loop","AI agents","Self-hosting",[15,16,17,18,19,20,21,22],"temporal workflow","temporal ai agents","durable execution for ai agents","temporal vs langgraph","temporal cloud pricing","temporal openai agents sdk","self-hosted temporal","temporal determinism rules",[24,27,30,33],{"name":25,"url":26},"Temporal","https:\u002F\u002Ftemporal.io",{"name":28,"url":29},"Workflow engine","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWorkflow_engine",{"name":31,"url":32},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",{"name":34,"url":35},"Human-in-the-loop","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHuman-in-the-loop",[37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109],{"title":38,"url":39},"Temporal Cloud pricing","https:\u002F\u002Ftemporal.io\u002Fpricing",{"title":41,"url":42},"Temporal Cloud pricing documentation","https:\u002F\u002Fdocs.temporal.io\u002Fcloud\u002Fpricing",{"title":44,"url":45},"OpenAI Agents SDK integration for Python","https:\u002F\u002Fdocs.temporal.io\u002Fdevelop\u002Fpython\u002Fintegrations\u002Fopenai-agents",{"title":47,"url":48},"Workflow definition and determinism","https:\u002F\u002Fdocs.temporal.io\u002Fworkflow-definition",{"title":50,"url":51},"Retry policies","https:\u002F\u002Fdocs.temporal.io\u002Fencyclopedia\u002Fretry-policies",{"title":53,"url":54},"Activity timeouts","https:\u002F\u002Fdocs.temporal.io\u002Fencyclopedia\u002Fdetecting-activity-failures",{"title":56,"url":57},"Cloud actions reference","https:\u002F\u002Fdocs.temporal.io\u002Fcloud\u002Factions",{"title":59,"url":60},"Event history limits","https:\u002F\u002Fdocs.temporal.io\u002Fworkflow-execution\u002Fevent",{"title":62,"url":63},"Message passing in Python: signals, queries and updates","https:\u002F\u002Fdocs.temporal.io\u002Fdevelop\u002Fpython\u002Fmessage-passing",{"title":65,"url":66},"Human-in-the-loop AI agent sample","https:\u002F\u002Fdocs.temporal.io\u002Fai\u002Fcookbook\u002Fhuman-in-the-loop-python",{"title":68,"url":69},"Cloud security model","https:\u002F\u002Fdocs.temporal.io\u002Fcloud\u002Fsecurity",{"title":71,"url":72},"Cloud service regions","https:\u002F\u002Fdocs.temporal.io\u002Fcloud\u002Fregions",{"title":74,"url":75},"Data processing agreement","https:\u002F\u002Ftemporal.io\u002Fdpa",{"title":77,"url":78},"Self-hosted deployment guide","https:\u002F\u002Fdocs.temporal.io\u002Fself-hosted-guide\u002Fdeployment",{"title":80,"url":81},"Self-hosted production checklist","https:\u002F\u002Fdocs.temporal.io\u002Fself-hosted-guide\u002Fproduction-checklist",{"title":83,"url":84},"Self-hosted visibility stores","https:\u002F\u002Fdocs.temporal.io\u002Fself-hosted-guide\u002Fvisibility",{"title":86,"url":87},"Temporal Server architecture","https:\u002F\u002Fdocs.temporal.io\u002Ftemporal-service\u002Ftemporal-server",{"title":89,"url":90},"Temporal server LICENSE file","https:\u002F\u002Fgithub.com\u002Ftemporalio\u002Ftemporal\u002Fblob\u002Fmain\u002FLICENSE",{"title":92,"url":93},"Temporal integrations index","https:\u002F\u002Fdocs.temporal.io\u002Fintegrations",{"title":95,"url":96},"LangGraph integration with Temporal","https:\u002F\u002Fdocs.temporal.io\u002Fdevelop\u002Fpython\u002Fintegrations\u002Flanggraph",{"title":98,"url":99},"LangGraph persistence","https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Flanggraph\u002Fpersistence",{"title":101,"url":102},"LangGraph interrupts","https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Flanggraph\u002Finterrupts",{"title":104,"url":105},"Self-hosted guide and development server","https:\u002F\u002Fdocs.temporal.io\u002Fself-hosted-guide",{"title":107,"url":108},"Python SDK reference: workflow.wait_condition","https:\u002F\u002Fpython.temporal.io\u002Ftemporalio.workflow._context.html",{"title":110,"url":111},"Python SDK reference: ApplicationError","https:\u002F\u002Fpython.temporal.io\u002Ftemporalio.exceptions.ApplicationError.html","\u002Fimages\u002Fblog\u002Ftemporal\u002Fcover.webp","\u002Fimages\u002Fblog\u002Ftemporal\u002Fog.jpg","ai-engineer",[116,117,118],"en","de","hu","Temporal im Test: Agenten, die Abstürze überstehen und auf Menschen warten","Temporal führt Agenten als dauerhafte Workflows aus: Retries, Freigaben und Timer überstehen Abstürze. Kosten, Datenschutz, Determinismus und wann du darauf verzichtest.","Vier gestapelte Platten in einer Spalte auf dünnem Pfeiler, ein Tor mit Kreis und eine Figur.","Temporal im Test: Agenten, die warten · Balázs Csorba",[124,125,126,127,128],"Temporal passt zu Agentenläufen, die Minuten bis Tage dauern, mehrere Systeme berühren und auf einen Menschen warten. Für eine Chat-Antwort in Sekunden ist es übertrieben.","Der Server ist MIT-lizenziert. Temporal Cloud kostet ab $0 im Monat nach Verbrauch, mit Actions zu $50 pro Million für die ersten 5 Millionen. Der Business-Tarif startet bei $500 im Monat.","Workflow-Code muss deterministisch sein. Modellaufrufe und Tools gehören in Activities, und wer laufende Workflows ändert, braucht Versionierung.","Activities werden standardmäßig ohne Limit wiederholt. Deshalb braucht jede Modell-Activity eine Retry-Policy und eine Liste von Fehlertypen, die nie wiederholt werden dürfen.","Cloud-Namespaces können in EU-Regionen wie Frankfurt und Irland laufen, unter einem Auftragsverarbeitungsvertrag mit Standardvertragsklauseln. Beim Selbsthosting wandert diese Frage zu deinem eigenen Hoster.",[130,133,136,139],{"q":131,"a":132},"Ist Temporal kostenlos selbst betreibbar?","Der Server ist MIT-lizenziert, und laut Preisseite kann die Plattform ohne Kosten von Temporal auf deiner eigenen Infrastruktur laufen. Datenbank, Suchspeicher, Maschinen und die Menschen, die sie betreiben, bezahlst du weiterhin selbst.",{"q":134,"a":135},"Was kostet ein Agentenlauf in Temporal Cloud?","Ein Lauf mit einem Start, zwölf Activity-Starts, zwei Retries, einem Update, einem Signal und einem Timer kommt auf etwa 18 Actions. Bei $50 pro Million sind das unter einem Zehntel Cent an Actions, vor Storage und dem Support-Aufschlag von 10 Prozent.",{"q":137,"a":138},"Wiederholt ein Absturz meine Modellaufrufe?","Abgeschlossene nicht. Temporal spielt den Workflow aus seiner gespeicherten Historie ab und überspringt bereits fertige Activities. Eine Activity, die gerade lief, als ihr Worker ausfiel, wird erst nach Ablauf ihres Start-to-close-Timeouts wiederholt. Deshalb muss Activity-Code idempotent sein.",{"q":140,"a":141},"Temporal oder LangGraph?","LangGraph ist weniger Betrieb, wenn der Agent ein Graph in einem Python-Prozess ist und ein PostgreSQL-Checkpointer reicht. Temporal passt zu Läufen, die Tage dauern, mehrere Services umspannen oder Retries und Timer brauchen, die die Plattform festhält. Beides lässt sich kombinieren, denn LangGraph kann in einem Temporal-Workflow laufen, und das ist als Public Preview verfügbar.",[143,146,149,152,155,158,161,164,167],{"id":144,"title":145},"what-it-is","Was es ist",{"id":147,"title":148},"how-it-works","Wie es funktioniert",{"id":150,"title":151},"getting-started","Erste Schritte",{"id":153,"title":154},"retries-and-timeouts","Retries und Timeouts",{"id":156,"title":157},"human-approval","Menschliche Freigabe mit Signalen",{"id":159,"title":160},"cost-and-deployment","Kosten und Betrieb",{"id":162,"title":163},"where-it-falls-short","Wo es hakt",{"id":165,"title":166},"verdict","Fazit",{"id":168,"title":169},"sources","Quellen",[171,175,178,181,205,206,217,223,234,235,246,248,266,267,270,287,289,308,311,312,323,325,346,347,350,405,408,411,438,444,450,451,489,490,493,514,517,542,551,552],{"type":172,"content":173},"paragraph",[174],"Temporal ist eine quelloffene Plattform für dauerhafte Ausführung. Du schreibst den Agenten als normalen Code, und die Plattform protokolliert jeden Schritt. So übersteht ein Lauf Abstürze, Deployments und Tage des Wartens. Mein Urteil vorweg: Es passt zu Agentenläufen, die Minuten bis Tage dauern, mehrere Systeme berühren und für einen Schritt einen Menschen brauchen. Für eine Chat-Antwort, die in zwei Sekunden fertig ist, ist es übertrieben.",{"type":172,"content":176},[177],"Es konkurriert mit zwei einfacheren Dingen, die die meisten Teams schon betreiben: einem Graph-Checkpointer wie dem von LangGraph und einer Job-Queue mit Zustandstabelle. Beides ist die richtige Wahl, bis ein Prozess mitten in einem zwölfschrittigen Lauf stirbt und der Lauf dort weitermachen muss, wo er aufgehört hat. Lass Temporal weg, wenn niemand den Workflow-Code oder, beim Selbsthosting, den Cluster verantworten will.",{"type":179,"level":180,"id":144,"text":145},"heading",2,{"type":182,"ordered":183,"items":184},"list",false,[185,195,200],[186,190,194],{"tag":187,"children":188},"strong",[189],"Ein Befehl zum Ausprobieren. ",{"tag":191,"children":192},"code",[193],"temporal server start-dev"," startet Service und Web-Oberfläche auf dem Laptop, ohne externe Abhängigkeiten.",[196,199],{"tag":187,"children":197},[198],"Zwei Wege zum Betrieb. ","Du hostest den Server selbst oder nutzt Temporal Cloud, deren Regionen unter anderem AWS Frankfurt und Irland umfassen. Der Server ist MIT-lizenziert.",[201,204],{"tag":187,"children":202},[203],"Normaler Code. ","Workflows und Activities sind einfache Funktionen in Go, Java, Python, TypeScript, .NET, Ruby oder PHP, je nach SDK.",{"type":179,"level":180,"id":147,"text":148},{"type":172,"content":207},[208,209,212,213,216],"Ein ",{"tag":187,"children":210},[211],"Workflow"," entscheidet, was als Nächstes passiert. Eine ",{"tag":187,"children":214},[215],"Activity"," erledigt die Arbeit: Sie ruft ein Modell auf, spricht eine API an oder schreibt eine Datei. Temporal speichert jede Entscheidung und jedes Activity-Ergebnis in der Ereignishistorie des Workflows. Nach einem Absturz spielt ein Worker den Workflow-Code gegen diese Historie ab, überspringt die fertigen Activities und macht beim ersten offenen Schritt weiter. Ein Agent passt sauber auf diese Aufteilung: Schleife, Tool-Auswahl und Übergaben liegen im Workflow, und jeder Modell- oder Tool-Aufruf ist eine Activity.",{"type":218,"src":219,"alt":220,"wide":221,"caption":222},"image","\u002Fimages\u002Fblog\u002Ftemporal\u002Fdiagram-6.webp","Wie ein dauerhafter Agentenlauf durch Temporal fließt Ein Client startet den Workflow und sendet Signale und Updates an den Temporal Service, der die Ereignishistorie und Timer speichert. Ein Worker fragt die Task-Queue ab, erhält Aufgaben vom Service und liefert Ergebnisse zurück. Auf dem Worker führt der Workflow-Code die Agentenschleife deterministisch aus und übergibt jeden Modell- oder Tool-Aufruf an eine Activity. Die Activities rufen die externen LLM- und Tool-APIs auf, und diese Aufrufe werden nicht wiederholt.",true,"Der Workflow entscheidet, die Activities erledigen die I\u002FO-Arbeit, und der Service hält die Historie, die einen Neustart harmlos macht.",{"type":172,"content":224},[225,226,229,230,233],"Replay ist die Grenze. Der Workflow-Code muss bei jedem Replay dieselben Aufrufe in derselben Reihenfolge machen. Darum bricht das Replay, wenn darin eine API aufgerufen, die Uhr gelesen oder eine Zufallszahl gezogen wird. Solche Arbeit gehört in Activities, oder du nutzt in Python ",{"tag":191,"children":227},[228],"workflow.now()"," und ",{"tag":191,"children":231},[232],"workflow.random()",". Eine Änderung an einem Workflow mit laufenden Ausführungen braucht Versionierung. Typ oder ID einer Activity zu ändern ist nicht sicher, Eingaben und Timeouts dürfen sich aber ändern.",{"type":179,"level":180,"id":150,"text":151},{"type":172,"content":236},[237,238,241,242,245],"Der schnellste Einstieg ist die Integration mit dem OpenAI Agents SDK, die als Paket ",{"tag":191,"children":239},[240],"temporalio-openai-agents"," erscheint. Du schreibst den Agenten mit dem normalen SDK innerhalb eines Workflows und hängst dann ",{"tag":191,"children":243},[244],"OpenAIAgentsPlugin"," an den Client und an den Worker. Jeder Modellaufruf wird zu einer Activity, wird also dauerhaft wiederholt und beim Replay nicht erneut ausgeführt.",{"type":191,"code":247},"from datetime import timedelta\nfrom agents import Agent, Runner\nfrom temporalio import workflow\nfrom temporalio.client import Client\nfrom temporalio.openai_agents import ModelActivityParameters, OpenAIAgentsPlugin\n\n\n@workflow.defn\nclass HelloWorldAgent:\n    @workflow.run\n    async def run(self, prompt: str) -> str:\n        agent = Agent(name='Assistant', instructions='You only respond in haikus.')\n        result = await Runner.run(agent, input=prompt)\n        return result.final_output\n\n\n# worker.py: the plugin sets the timeout for each model activity\nclient = await Client.connect(\n    'localhost:7233',\n    plugins=[\n        OpenAIAgentsPlugin(\n            model_params=ModelActivityParameters(\n                start_to_close_timeout=timedelta(seconds=30)\n            )\n        ),\n    ],\n)\n\n# starter.py: the same plugin, so payloads are converted the same way\nclient = await Client.connect('localhost:7233', plugins=[OpenAIAgentsPlugin()])\nresult = await client.execute_workflow(\n    HelloWorldAgent.run,\n    'Tell me about recursion in programming.',\n    id='my-workflow-id',\n    task_queue='openai-agents-basic-task-queue',\n)",{"type":172,"content":249},[250,253,254,257,258,261,262,265],{"tag":191,"children":251},[252],"ModelActivityParameters"," legt fest, wie Modell-Activities geplant werden. Der Parameter ",{"tag":191,"children":255},[256],"start_to_close_timeout"," ist standardmäßig 60 Sekunden. Für Tools führt ",{"tag":191,"children":259},[260],"activity_as_tool()"," I\u002FO als Activity aus, während ein einfaches ",{"tag":191,"children":263},[264],"@function_tool"," im Workflow läuft und deterministisch sein muss. Integrationen gibt es auch für Google ADK, Pydantic AI, Mastra und das Vercel AI SDK. Die LangGraph-Integration ist als Public Preview verfügbar.",{"type":179,"level":180,"id":153,"text":154},{"type":172,"content":268},[269],"Retries sind der Punkt, an dem sich dauerhafte Ausführung bezahlt macht, und dort, wo die Standardwerte beißen. Eine fehlgeschlagene Activity wird mit exponentiellem Backoff wiederholt, beginnend bei einer Sekunde und begrenzt auf 100 Sekunden zwischen den Versuchen, ohne Limit für die Zahl der Versuche. Eine Zahlungsbuchung will genau das. Eine Anfrage, die nie gelingen kann, etwa das Abrufen einer Bestellung, die es nicht gibt, sollte gar nicht wiederholt werden. Drei Einstellungen bestimmen das Verhalten:",{"type":182,"ordered":183,"items":271},[272,277,282],[273,276],{"tag":187,"children":274},[275],"Start-to-close"," begrenzt einen Versuch. Es hat keinen eigenen Standardwert, und Temporal empfiehlt dringend, es zu setzen.",[278,281],{"tag":187,"children":279},[280],"Schedule-to-close"," begrenzt die ganze Activity inklusive Retries und damit, wie lange ein Modellschritt insgesamt laufen darf.",[283,286],{"tag":187,"children":284},[285],"Retry-Policy"," legt die Zahl der Versuche und die Fehlertypen fest, die nie wiederholt werden dürfen.",{"type":191,"code":288},"import httpx\nfrom datetime import timedelta\nfrom temporalio import activity\nfrom temporalio.common import RetryPolicy\nfrom temporalio.exceptions import ApplicationError\nfrom temporalio.openai_agents import ModelActivityParameters\n\nmodel_params = ModelActivityParameters(\n    start_to_close_timeout=timedelta(seconds=60),\n    schedule_to_close_timeout=timedelta(minutes=5),\n    retry_policy=RetryPolicy(maximum_attempts=5),\n)\n\n\n@activity.defn\nasync def lookup_order(order_id: str) -> dict:\n    async with httpx.AsyncClient() as client:\n        response = await client.get(f'https:\u002F\u002Fshop.example.com\u002Fapi\u002Forders\u002F{order_id}')\n    if response.status_code == 404:\n        # Retrying cannot make a missing order appear.\n        raise ApplicationError('Order not found', type='OrderNotFound', non_retryable=True)\n    response.raise_for_status()\n    return response.json()",{"type":290,"variant":291,"title":292,"body":293},"callout","warn","Jeder Retry ist ein zweiter Modellaufruf",[294],[295,296,299,300,303,304,307],"Ein Retry sendet die Anfrage erneut, und jeder Versuch zählt als weitere Action. Setze ",{"tag":191,"children":297},[298],"maximum_attempts"," auf jeder Modell-Activity und wirf ",{"tag":191,"children":301},[302],"ApplicationError"," mit ",{"tag":191,"children":305},[306],"non_retryable=True"," für Anfragen, die nicht gelingen können.",{"type":172,"content":309},[310],"Activity-Code muss außerdem idempotent sein, denn Temporal rechnet damit, dass Activities nach einem Fehler erneut laufen. Ein Tool, das eine E-Mail verschickt, braucht einen Idempotency-Key, den das empfangende System respektiert.",{"type":179,"level":180,"id":156,"text":157},{"type":172,"content":313},[314,315,318,319,322],"Hier hört Temporal auf, nur eine Retry-Bibliothek zu sein. Ein ",{"tag":187,"children":316},[317],"Signal"," ist eine asynchrone Nachricht an einen laufenden Workflow. Das Human-in-the-loop-Beispiel von Temporal speichert die Entscheidung in einem Signal-Handler und wartet mit ",{"tag":191,"children":320},[321],"workflow.wait_condition"," darauf. Während des Wartens liegt der Zustand in der Ereignishistorie, und Timer überstehen Neustarts. Der Standard-Timeout des Beispiels beträgt fünf Minuten, was für einen Test passt. Für eine Freigabe-Queue würde ich Tage nehmen.",{"type":191,"code":324},"import asyncio\nfrom datetime import timedelta\nfrom typing import Optional\nfrom temporalio import workflow\n\n\n@workflow.defn\nclass ApprovalWorkflow:\n    def __init__(self) -> None:\n        self.decision: Optional[str] = None\n\n    @workflow.signal\n    async def approval_decision(self, decision: str) -> None:\n        self.decision = decision\n\n    @workflow.run\n    async def run(self, request: str) -> str:\n        # propose_action and execute_action are activities defined elsewhere\n        proposal = await workflow.execute_activity(\n            propose_action, request, start_to_close_timeout=timedelta(seconds=60)\n        )\n        try:\n            await workflow.wait_condition(\n                lambda: self.decision is not None,\n                timeout=timedelta(days=3),\n            )\n        except asyncio.TimeoutError:\n            return 'no decision within three days'\n        if self.decision != 'approve':\n            return 'rejected'\n        return await workflow.execute_activity(\n            execute_action, proposal, start_to_close_timeout=timedelta(seconds=60)\n        )",{"type":172,"content":326},[327,328,331,332,335,336,339,340,345],"Eine ",{"tag":187,"children":329},[330],"Query"," liest den Zustand, ohne ihn zu ändern. Ein ",{"tag":187,"children":333},[334],"Update"," ist eine Anfrage, auf die der Aufrufer wartet, und ein Validator kann sie ablehnen, bevor sie in die Historie geschrieben wird. Eine abgelehnte Anfrage zählt trotzdem als Action. Lange Sitzungen stoßen auf harte Grenzen: Eine Ausführung endet ab 51.200 Ereignissen, 2.000 Updates oder 10.000 Signalen. Darum brauchen Chat-artige Workflows Continue-As-New. ",{"tag":191,"children":337},[338],"workflow.info().is_continue_as_new_suggested()"," meldet, wann der Server es vorschlägt. Wo Freigabe-Gates hingehören, ist eine Designfrage, die ich in ",{"tag":341,"to":342,"children":343},"link","\u002Fblog\u002Fhuman-in-the-loop-ai-agents",[344],"Human in the Loop für KI-Agenten"," behandle.",{"type":179,"level":180,"id":159,"text":160},{"type":172,"content":348},[349],"Selbst gehostet fällt keine Lizenzgebühr an. Temporal Cloud wird nach Verbrauch bezahlt, ohne Mindestumsatz, und neue Konten erhalten $150 Guthaben für 90 Tage. Die Tabelle zeigt die Listenpreise Stand Oktober 2026.",{"type":351,"head":352,"rows":361},"table",[353,355,357,359],[354],"Option",[356],"Preis",[358],"Enthalten",[360],"Was sich ändert",[362,371,380,389,398],[363,365,367,369],[364],"Selbst gehostet",[366],"Kostenlos, MIT",[368],"Nichts von Temporal",[370],"Du betreibst die Services, die Datenbank, den Suchspeicher und die Upgrades",[372,374,376,378],[373],"Cloud nach Verbrauch",[375],"$0 Grundgebühr, plus 10 % Support auf die Nutzung",[377],"Nichts",[379],"Actions zu $50 pro Million für die ersten 5 Millionen im Monat",[381,383,385,387],[382],"Cloud Business",[384],"Höherer Wert aus $500 im Monat oder 10 % der Nutzung",[386],"2,5 Mio. Actions, 2,5 GB active, 100 GB retained",[388],"SAML inklusive, SCIM $500 im Monat extra",[390,392,394,396],[391],"Cloud Enterprise",[393],"Jährlich, auf Anfrage",[395],"10 Mio. Actions, 10 GB active, 400 GB retained",[397],"SCIM inklusive, P0-Reaktion unter 30 Minuten",[399,401,402,403],[400],"Cloud Mission Critical",[393],[395],[404],"Eigener Platform Architect, P0-Reaktion unter 15 Minuten",{"type":172,"content":406},[407],"Nutzungsregeln bewegen die Rechnung mehr als der Richtpreis. Actions zählen jeden Activity-Start und jeden Retry sowie jedes Signal, jeden Timer, jedes Update, jede Query und jeden Workflow-Start. Mein Rechenbeispiel umfasst 18 Actions, also kosten 100.000 solcher Läufe etwa $90 an Actions, vor Storage und Support. Ein GB aktiver Storage, einen Monat lang gehalten, kostet etwa $31, und ein GB Retained Storage etwa 78 Cent. Ist Fairness aktiv, steigen die Actions jeder Stunde um 10 Prozent.",{"type":172,"content":409},[410],"Business lohnt sich wegen Support, SCIM und Commit-Rabatten mehr als wegen der Actions. Die Mindestgebühr von $500 enthält 2,5 Millionen Actions, und das reicht für mehr als 130.000 Läufe wie mein Beispiel.",{"type":172,"content":412},[413,416,417,420,421,424,425,428,429,432,433,437],{"tag":187,"children":414},[415],"Wohin die Daten gehen. ","Ein Namespace wird in einer Region angelegt. Die Regionsliste umfasst AWS Frankfurt (",{"tag":191,"children":418},[419],"eu-central-1","), Irland (",{"tag":191,"children":422},[423],"eu-west-1",") und London (",{"tag":191,"children":426},[427],"eu-west-2","), dazu GCP Frankfurt (",{"tag":191,"children":430},[431],"europe-west3","). Nutzlasten lassen sich auf deinen Workern mit dem Data Converter verschlüsseln, bevor sie den Worker verlassen. Ein Codec Server erlaubt deinem Team, Historien in der Web-Oberfläche zu lesen, ohne Schlüssel herauszugeben. Aufbewahrte Historien bleiben in Cloud bis zu 90 Tage erhalten, längere Aufbewahrung heißt also Export. Für die weiteren Fragen siehe ",{"tag":341,"to":434,"children":435},"\u002Fblog\u002Fgdpr-llm-api-eu-data-residency",[436],"DSGVO und LLM-Datenresidenz",".",{"type":172,"content":439},[440,443],{"tag":187,"children":441},[442],"Der Auftragsverarbeitungsvertrag. ","Der Vertrag von Temporal, gültig ab 10. Oktober 2024, enthält Standardvertragsklauseln und ein UK-Addendum. Die Subprocessor-Liste nennt AWS für die Infrastruktur, Google Cloud für Namespaces in GCP-Regionen sowie Datastax, Auth0, Elastic und WorkOS für bestimmte Dienste. Gegen einen neuen Subprocessor kannst du innerhalb von 15 Tagen nach Veröffentlichung widersprechen. Backups werden 30 Tage aufbewahrt, und Kundendaten werden bei Beendigung gelöscht. Temporal erklärt, nach SOC 2 Typ 2 zertifiziert sowie mit DSGVO und HIPAA konform zu sein. Betrachte das als Ausgangspunkt deiner Prüfung, nicht als Rechtsberatung.",{"type":172,"content":445},[446,449],{"tag":187,"children":447},[448],"Selbsthosting. ","Das verlagert diese Fragen auf deinen eigenen Hoster, und du trägst Datenbank, Suchspeicher, Backups und Upgrades. Der Server besteht aus vier Services, die unabhängig skalieren: Frontend, History, Matching und Worker. Elasticsearch oder OpenSearch wird empfohlen, sobald du mehr als ein paar Ausführungen betreibst, und das Docker-Compose-Beispiel betreibt PostgreSQL mit Elasticsearch. Temporal empfiehlt, jeweils eine Minor-Version nach der anderen einzuspielen, und Releases können alle zwei Wochen erscheinen. Die Shard-Anzahl wird beim Build festgelegt, und RBAC oder Audit-Logs gibt es nicht ab Werk. Die Checkliste des Herstellers nennt Personal einen erheblichen Kostenfaktor. Hardware habe ich nicht bepreist, weil sie von Shard-Anzahl und Last abhängt.",{"type":179,"level":180,"id":162,"text":163},{"type":182,"ordered":183,"items":452},[453,458,463,468,473],[454,457],{"tag":187,"children":455},[456],"Determinismus ist eine Gewohnheit. ","Code zu ändern, während Ausführungen laufen, kann das Replay brechen, und Versionierung lässt alte Codepfade zurück, die du pflegen musst.",[459,462],{"tag":187,"children":460},[461],"Harte Grenzen der Historie. ","Ausführungen enden ab 51.200 Ereignissen, 2.000 Updates oder 10.000 Signalen, daher brauchen lange Sitzungen Continue-As-New von Anfang an.",[464,467],{"tag":187,"children":465},[466],"Retries sind ein Budget. ","Der unbegrenzte Standard passt zu Infrastruktur und schlecht zu Modellaufrufen.",[469,472],{"tag":187,"children":470},[471],"Teile sind noch Preview. ","Die OpenTelemetry- und LangGraph-Integrationen sind Public Preview, Sandbox-Unterstützung ist Pre-Release und Streaming ist experimentell.",[474,477,478,481,482,229,485,488],{"tag":187,"children":475},[476],"Nicht alles ist dauerhaft. ","MCP-Server laufen außerhalb des Workflows, und jeder MCP-Aufruf läuft als Activity. ",{"tag":191,"children":479},[480],"LocalShellTool",", ",{"tag":191,"children":483},[484],"ComputerTool",{"tag":191,"children":486},[487],"SQLiteSession"," werden nicht unterstützt.",{"type":179,"level":180,"id":165,"text":166},{"type":172,"content":491},[492],"Temporal ist der richtige Standard für langlaufende Agenten, die mehrere Systeme berühren und auf Menschen warten, vorausgesetzt, jemand verantwortet den Workflow-Code und, beim Selbsthosting, den Cluster. Als Standard für einen einzelnen Modellaufruf hinter einer HTTP-Anfrage ist es der falsche.",{"type":182,"ordered":221,"items":494},[495,500,504,509],[496,499],{"tag":187,"children":497},[498],"Nimm es, wenn ","ein Lauf Stunden oder Tage dauert und ein Neustart keine Zahlung, keine E-Mail und keinen Modellaufruf wiederholen darf.",[501,503],{"tag":187,"children":502},[498],"ein Mensch Schritte freigibt, die erst Tage später kommen, und das Warten Neustarts überstehen muss.",[505,508],{"tag":187,"children":506},[507],"Lass es weg, wenn ","der Agent in Sekunden antwortet. Ein Timeout und ein Retry um den Modellaufruf reichen dann.",[510,513],{"tag":187,"children":511},[512],"Betreibe es selbst nur, wenn ","jemand den Cluster durch häufige Upgrades bringt. Sonst nimm Temporal Cloud.",{"type":172,"content":515},[516],"Drei Alternativen decken die meisten Fälle ab, in denen Temporal übertrieben ist:",{"type":182,"ordered":183,"items":518},[519,528,533],[520,523,527],{"tag":187,"children":521},[522],"LangGraph-Checkpoints ",{"tag":341,"to":524,"children":525},"\u002Fblog\u002Flanggraph",[526],"LangGraph"," wenn der Agent ein Python-Graph ist, der Zustand klein bleibt und PostgreSQL ohnehin da ist. Seine Interrupts pausieren einen Graphen für die menschliche Freigabe.",[529,532],{"tag":187,"children":530},[531],"Eine Job-Queue mit Zustandstabelle ","wenn die Pipeline eine feste Folge idempotenter Schritte ist. Retries und Timer baust du selbst, das ist bei fünf Schritten in Ordnung und bei fünfzig mühsam.",[534,537,541],{"tag":187,"children":535},[536],"Das OpenAI Agents SDK allein ",{"tag":341,"to":538,"children":539},"\u002Fblog\u002Fopenai-agents-sdk",[540],"OpenAI Agents SDK"," wenn jeder Lauf kurz ist, in einem Prozess bleibt und nie einen Neustart überstehen muss.",{"type":290,"variant":543,"title":544,"body":545},"tip","Klein anfangen",[546],[547,548,550],"Starte mit ",{"tag":191,"children":549},[193]," und dem Cloud-Guthaben von $150. Geh erst dann zu einem Cluster über, wenn eine Residenzvorgabe oder ein gemessenes Volumen den Ausschlag gibt.",{"type":179,"level":180,"id":168,"text":169},{"type":182,"ordered":183,"items":553},[554,559,563,567,571,575,579,583,587,591,595,599,603,607,611,615,619,623,627,631,635,639,643,647,651],[555],{"tag":556,"href":39,"children":557},"a",[558],"Temporal Cloud: Preise",[560],{"tag":556,"href":42,"children":561},[562],"Temporal Cloud: Preisdokumentation",[564],{"tag":556,"href":45,"children":565},[566],"OpenAI-Agents-SDK-Integration für Python",[568],{"tag":556,"href":48,"children":569},[570],"Workflow-Definition und Determinismus",[572],{"tag":556,"href":51,"children":573},[574],"Retry-Policies",[576],{"tag":556,"href":54,"children":577},[578],"Activity-Timeouts",[580],{"tag":556,"href":57,"children":581},[582],"Referenz der Cloud-Actions",[584],{"tag":556,"href":60,"children":585},[586],"Grenzen der Event History",[588],{"tag":556,"href":63,"children":589},[590],"Nachrichtenübermittlung in Python: Signale, Queries und Updates",[592],{"tag":556,"href":66,"children":593},[594],"Beispiel für KI-Agenten mit menschlicher Freigabe",[596],{"tag":556,"href":69,"children":597},[598],"Sicherheitsmodell der Cloud",[600],{"tag":556,"href":72,"children":601},[602],"Cloud-Service-Regionen",[604],{"tag":556,"href":75,"children":605},[606],"Auftragsverarbeitungsvertrag",[608],{"tag":556,"href":78,"children":609},[610],"Anleitung zum Selbsthosting",[612],{"tag":556,"href":81,"children":613},[614],"Checkliste für den Produktivbetrieb (selbst gehostet)",[616],{"tag":556,"href":84,"children":617},[618],"Visibility-Speicher beim Selbsthosting",[620],{"tag":556,"href":87,"children":621},[622],"Architektur des Temporal Servers",[624],{"tag":556,"href":90,"children":625},[626],"Lizenzdatei des Temporal Servers",[628],{"tag":556,"href":93,"children":629},[630],"Übersicht der Temporal-Integrationen",[632],{"tag":556,"href":96,"children":633},[634],"LangGraph-Integration mit Temporal",[636],{"tag":556,"href":99,"children":637},[638],"LangGraph-Persistenz",[640],{"tag":556,"href":102,"children":641},[642],"LangGraph-Interrupts",[644],{"tag":556,"href":105,"children":645},[646],"Anleitung zum Selbsthosting und Entwicklungsserver",[648],{"tag":556,"href":108,"children":649},[650],"Python-SDK-Referenz: workflow.wait_condition",[652],{"tag":556,"href":111,"children":653},[654],"Python-SDK-Referenz: ApplicationError",[656,714,787,857],{"slug":657,"published":658,"minutes":659,"category":7,"tags":660,"keywords":665,"about":676,"sources":686,"cover":708,"og":709,"expertise":114,"locales":710,"lang":117,"title":711,"description":712,"coverAlt":713},"agent-tool-design-descriptions-errors","2026-10-17",11,[12,661,662,663,664],"Tool use","Function calling","MCP","Agent design",[666,667,668,669,670,671,672,673,674,675],"agent tool design","writing tool descriptions for llm","function calling best practices","tool use error handling","mcp tool design","tool calling is_error","how many tools should an agent have","tool search defer_loading","agent computer interface","llm tool schema design",[677,680,683],{"name":678,"url":679},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":681,"url":682},"Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":684,"url":685},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[687,690,693,696,699,702,705],{"title":688,"url":689},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":691,"url":692},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":694,"url":695},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":697,"url":698},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":700,"url":701},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":703,"url":704},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":706,"url":707},"OpenAI API Docs: Function calling","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffunction-calling","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fog.jpg",[116,117,118],"Tools für KI-Agenten gestalten: Namen, Beschreibungen, Schemas und Fehlermeldungen","Agent-Tools, die richtig gewählt und aufgerufen werden: aufgabenorientierte Tools, Beschreibungen, Schemas, kompakte Antworten und verwertbare Fehlermeldungen.","Ein Sockel mit drei Schlitzen; über dem mittleren steht ein passend breiter Block, daneben zwei Blöcke falscher Breite.",{"slug":715,"published":658,"minutes":659,"category":7,"tags":716,"keywords":722,"about":735,"sources":745,"cover":781,"og":782,"expertise":114,"locales":783,"lang":117,"title":784,"description":785,"coverAlt":786},"coding-agents-legacy-codebase-migration",[717,718,719,720,721],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[723,724,725,726,727,728,729,730,731,732,733,734],"legacy code migration ai","coding agent legacy codebase","strangler fig pattern ai","characterization tests legacy code","ai code migration review","agent assisted refactoring","legacy modernization coding agent","differential testing migration","shadow traffic migration","ai code review gate","test harness before migration","llm code migration",[736,739,742],{"name":737,"url":738},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":740,"url":741},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":743,"url":744},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[746,749,751,754,757,760,763,766,769,772,775,778],{"title":747,"url":748},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":750,"url":741},"Wikipedia: Characterization test",{"title":752,"url":753},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":755,"url":756},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":758,"url":759},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":761,"url":762},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":764,"url":765},"METR: Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":767,"url":768},"Chand et al.: Why Industry Migrates and When It Trusts LLMs (ESEM 2026)","https:\u002F\u002Fdrops.dagstuhl.de\u002Fentities\u002Fdocument\u002F10.4230\u002FLIPIcs.ESEM.2026.85",{"title":770,"url":771},"Li et al.: Environment-in-the-Loop: Rethinking Code Migration with LLM-based Agents (arXiv 2602.09944)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.09944",{"title":773,"url":774},"AWS: Amazon Q Developer just reached a $260 million dollar milestone (2024)","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Famazon-q-developer-just-reached-a-260-million-dollar-milestone\u002F",{"title":776,"url":777},"OpenAI: Why SWE-bench Verified no longer measures frontier coding capabilities (2026)","https:\u002F\u002Fopenai.com\u002Findex\u002Fwhy-we-no-longer-evaluate-swe-bench-verified\u002F",{"title":779,"url":780},"GitHub Docs: About GitHub Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcoding-agent\u002Fabout-coding-agent","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fog.jpg",[116,117,118],"Legacy-Codebase mit Coding-Agenten migrieren: ein Strangler-Fig-Playbook","Wie Coding-Agenten eine Legacy-Migration tragen: Characterization-Tests zuerst, ein Seam pro Task, Review-Gates und differentielle Verifikation.","Ein Stapel Schichten, bei dem die obersten zwei durch neue ersetzt werden, daneben eine Naht und ein Haken.",{"slug":788,"published":658,"minutes":789,"category":7,"tags":790,"keywords":794,"about":806,"sources":816,"cover":851,"og":852,"expertise":114,"locales":853,"lang":117,"title":854,"description":855,"coverAlt":856},"background-agents-async-pr-workflow",12,[718,791,792,721,793],"Pull requests","CI","Automation",[795,796,797,798,799,800,801,802,803,804,805],"background coding agent","async coding agent","cloud coding agent pull request","copilot coding agent limits","codex cloud tasks","claude code cloud sessions","jules coding agent limits","agent pull request review","coding agent sandbox","agent CI gating","cost per merged pull request",[807,810,813],{"name":808,"url":809},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":811,"url":812},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":814,"url":815},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[817,818,821,824,827,830,833,836,839,842,845,848],{"title":779,"url":780},{"title":819,"url":820},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":822,"url":823},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":825,"url":826},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":828,"url":829},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":831,"url":832},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":834,"url":835},"GitHub Docs: About protected branches","https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fmanaging-protected-branches\u002Fabout-protected-branches",{"title":837,"url":838},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":840,"url":841},"OpenAI Developers: Codex pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":843,"url":844},"Ehsani et al.: Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub (MSR 2026, arXiv 2601.15195)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2601.15195",{"title":846,"url":847},"Peralta et al.: Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study (MSR 2026, arXiv 2605.22534)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2605.22534",{"title":849,"url":850},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fdora.dev\u002Fdora-report-2025","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fog.jpg",[116,117,118],"Coding-Agenten im Hintergrund: Pull Requests, Queues und Review","Wie asynchrone Coding-Agenten Tasks einreihen, in Sandboxes laufen, Draft-PRs öffnen und CI passieren. Grenzen, Kosten, Review und Fehlerbilder.","Eine Karte in einer Ablage fächert sich zu fünf Feldern auf, alle Pfeile führen zu einer Seite hinter einem Tor.",{"slug":858,"published":859,"minutes":860,"category":7,"tags":861,"keywords":867,"about":879,"sources":887,"cover":920,"og":921,"expertise":114,"locales":922,"lang":117,"title":923,"description":924,"coverAlt":925},"context-rot-compaction-long-running-agents","2026-10-16",10,[862,863,864,865,866],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[868,869,870,871,872,873,874,875,876,877,878],"context rot","context rot LLM","compaction AI agents","context engineering","long-running agents context window","Claude compaction API","context editing clear tool results","OpenAI responses compaction","lost in the middle LLM","agent context management","sub-agents context isolation",[880,883,886],{"name":881,"url":882},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":884,"url":885},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":678,"url":679},[888,891,894,897,900,902,905,908,911,914,917],{"title":889,"url":890},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":892,"url":893},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":895,"url":896},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":898,"url":899},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":901,"url":759},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":903,"url":904},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":906,"url":907},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":909,"url":910},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":912,"url":913},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":915,"url":916},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":918,"url":919},"Cognition: Don't Build Multi-Agents","https:\u002F\u002Fcognition.ai\u002Fblog\u002Fdont-build-multi-agents","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fog.jpg",[116,117,118],"Context Rot bei langlaufenden Agenten: Leeren, Compaction, Memory und Sub-Agenten","Warum die Genauigkeit von LLMs mit wachsendem Kontext sinkt und wie Leeren, Compaction, Notizen und Sub-Agenten lange Agentenläufe stabil halten.","Eine kleine Presse drückt einen hohen Blätterstapel zu einem kurzen, zwei Notizen zweigen ab.",1792261157254]