Vor kurzem hat Anthropic seinen nativen KI-Codierassistenten Claude Code. auf der Grundlage einer Überprüfung der @anthropic-ai/claude-code v2.1.88 QuellcodeDieses technische System mit 510.000 Zeilen TypeScript-Code, die sich auf 1.902 Dateien verteilen, zeigt nicht nur, wie man ein Endpunkt-CLI-Tool mit vollem Funktionsumfang erstellt, sondern ist auch eine Analyse auf technischer Ebene, die zeigt, wie das Head AI Lab die Interaktion großer Modelle mit realen physischen Systemen, die Berechtigungskontrolle und das Kontextmanagement handhabt.

(Anmerkung: Die Analyse von 500.000 Codezeilen dauerte mehr als eine Stunde).
II. das Projektpanorama und die Entwurfsphilosophie
2.1 Umfang des Codes und Hauptaufgaben
Die Verteilung des Volumens des Codeverzeichnisses gibt einen klaren Einblick in die Richtung der Ressourcenverteilung des Projekts. Die Infrastrukturschicht und die Rendering-Schicht der Benutzeroberfläche nehmen den Löwenanteil ein:
| Modul (in Software) | Zeile | Prozentsatz | Zentrale Aufgaben |
|---|---|---|---|
| utils | 180,472 | 35.2% | Berechtigungskontrolle, Bash-Sicherheitsabfragen, Nachrichtenverarbeitungspipelines, Git-Interaktionen, MCP-Clients und andere zugrunde liegende Infrastruktur |
| components | 81,546 | 15.9% | React Endpunkt-UI-Komponenten (Dialoge zur Bestätigung von Berechtigungen, Anzeige von Code-Diff-Unterschieden, Engine zur Wiedergabe von Nachrichten) |
| services | 53,680 | 10.5% | API-Aufrufkapselung, mehrschichtige Kontextkomprimierungsalgorithmen, MCP-Backend-Dienste, Datenanalyse und OAuth-Authentifizierung |
| tools | 50,828 | 9.9% | Spezifische Implementierungen von mehr als 40 Kernwerkzeugen (Bash-Ausführung, FileEdit-Bearbeitung, Agentendispatching, MCP-Werkzeuge usw.) |
| commands | 26,428 | 5.2% | Terminaleintrag für über 90 Slash-Befehle (z. B. /compact, /model, /mcp) |
| ink | 19,842 | 3.9% | Fork-Version unseres eigenen Ink-Frameworks, einer Hochleistungs-Rendering-Engine für Endpunktumgebungen. |
| hooks | 19,204 | 3.7% | Bereitstellung von React-Hooks zur Entkopplung von Berechtigungsverwaltung, IDE-Statusintegration und Sprachinteraktionslogik |
| bridge | 12,613 | 2.5% | Fernsteuerungsprotokolle, die es lokalen Rechnern ermöglichen, Aufgaben als Bridge-Bridged-Umgebung auszuführen |
| cli | 12,353 | 2.4% | CLI-Befehlszeilenparameter-Parsing und Lebenszyklusverwaltung für Hintergrundsitzungen |
2.2 Luftaufnahme der Architektur
Die untere Schicht des Systems stützt sich auf eine Reihe von Basisdiensten, während die obere Schicht die Entscheidungsfindung und den Betrieb des Agenten durch ausgeklügelte Zustandsautomaten und Ereignismechanismen steuert und einen hochgradig modularen Charakter aufweist.

2.3 Fünf übergreifende Gestaltungsprinzipien
Nach der Zerlegung dieser 510.000 Codezeilen lassen sich fünf zentrale Designrichtlinien herausfiltern, die die Richtung der Architektur bestimmen:
- Werkzeuge als KompetenzgrenzenDer Agent verfügt über keine Hintertüren, um das Toolset zu umgehen und die Umgebung direkt zu manipulieren. Das Lesen einer Datei erfordert einen Aufruf von FileReadTool, das Ändern einer Datei beruht auf FileEditTool, und das Ausführen von Systembefehlen ist nur mit BashTool möglich. Die Erweiterung der Systemfähigkeiten ist völlig gleichwertig mit dem Hinzufügen neuer Werkzeuge.
- Fail-closed-SicherheitsstandardAlle Standardeinstellungen, die Sicherheitseigenschaften betreffen, sind extrem konservativ. Die Werkzeuge erlauben standardmäßig keine parallele Ausführung (
isConcurrencySafe: false), die Standardannahme der Zerstörbarkeit des Schreibens (isReadOnly: false), und alle Betriebsgenehmigungen sind standardmäßig blockiert, so dass der Benutzer gezwungen ist, die Genehmigung zu erteilen. - Kontext-Engineering gegenüber Prompt-EngineeringDer technische Schwerpunkt liegt nicht darauf, dem Modell mit einem langen Hinweis zu sagen, “wer Sie sind”, sondern darauf, die vollständige kontextuelle Umgebung in jeder Dialogrunde dynamisch zusammenzustellen, und zwar durch segmentierte Zwischenspeicherung, dynamische Zustandsinjektion und mehrstufige Kontextkompression.
- Sehr gut kombinierbarNahtlose Wiederverwendung zwischen verschiedenen Modulen. Unter-Agenten verwenden direkt den Haupt-Thread wieder
query()Funktions-Engine, das externe MCP-Tool verwendet die systeminterne Pipeline für die Berechtigungsprüfung und das Team-Kollaborationsmodell verwendet die Subagent zugrunde liegende Ausführungs-Engine erneut. - Die Eliminierung während der Kompilierung ist besser als die Beurteilung während der Laufzeit: Verwendung der Bun-Laufzeit
feature()Macro [7] ermöglicht die Eliminierung von totem Code (DCE) zur Erstellungszeit. Nicht nur, dass nicht aktivierte Funktionen zur Laufzeit nicht ausgeführt werden, der physische Code ist auch im endgültigen generierten Bundle-Paket nicht mehr enthalten.
III. agent loop: Das ausführende Herz des Systems
gelegen sein bei src/QueryEngine.ts(Reihe 1295) vs. src/query.ts(Zeile 1729), sowie die Werkzeugimplementierungsschicht der StreamingToolExecutor.ts(530 Zeilen) und toolExecution.ts(1745 Zeilen), die zusammen den Kern dessen bilden, was Agent antreibt.
3.1 Zweistufiges zyklisches Modell
Anstelle der traditionellen while-Schleife baut Agent Loop einen impliziten Zustandsautomaten mit 7 Wiederherstellungspfaden und 10 Abbruchbedingungen auf und ist in zwei Schichten gegliedert:

QueryEngine (äußere Schicht Sitzungsmanagement)Zustandsverwaltung für mehrere Runden, Festplattenpersistenz von Transcript, SDK-Protokollanpassung und APIs. Token Kumulierter Verbrauch.
queryLoop (innere Einzelrunde der Ausführung)Schwerpunkt: Initiieren von API-Aufrufen, Parsen und Ausführen von Tools sowie lokale Fehlerbehebungsmechanismen.
Die Verbindung zwischen den beiden Schichten wird durch den AsyncGenerator hergestellt: Die innere queryLoop ist für die yield erzeugt das Nachrichtenobjekt, das von der äußeren QueryEngine verarbeitet wird. Mit diesem Entwurf werden drei technische Probleme gelöst:
- GegendruckkontrolleDer Aufrufer ruft die Daten nach Bedarf ab, um eine Überflutung des Speichers mit der umfangreichen Streaming-Ausgabe des Modells zu vermeiden.
- die semantische Übertragung unterbrechen: Aufruf des Generators
.return()Durch die Möglichkeit, die Schließung aller verschachtelten Generatorinstanzen zu kaskadieren, können Benutzerabbrüche sofort auf alle zugrunde liegenden Aufgaben übertragen werden. - Flow-Through-Kombination (z.B. von Gas- und Stromlieferung)Untervertreter
runAgent()Die Rückgabe ist ebenfalls ein AsyncGenerator, so dass sie direkt in den Datenstrom des Hauptagenten eingefügt werden kann.
3.2 Entwurf eines Zustandsautomaten für queryLoop
queryLoop ist im Wesentlichen eine while(true) Eine Schleife, bei der jede Iteration einen Zyklus “API-Aufruf + Werkzeugausführung” darstellt. Der Ausgang der Schleife wird durch zwei Typen bestimmt:
- TerminalDie Abbruchbedingung wird erreicht, die Schleife wird beendet und die spezifische Ursache wird zurückgegeben.
- ContinueAuslösen des Wiederherstellungspfads durch
state = next; continueÜbernehmen Sie den neuen Zustand in die nächste Iteration.
Um Zustandslücken zu vermeiden, verwendet das System keine stückweisen Variablenzuweisungen, sondern verwaltet zentral eine State Strukturen:
type State = {
messages: Message[]
toolUseContext: ToolUseContext
autoCompactTracking: AutoCompactTrackingState | undefined
maxOutputTokensRecoveryCount: number
hasAttemptedReactiveCompact: boolean
pendingToolUseSummary: Promise<ToolUseSummaryMessage | null> | undefined
turnCount: number
transition: Continue | undefined
}
Quellcode query.ts:266-268 In den Kommentaren im vorigen Abschnitt wird diese Motivation ausdrücklich genannt: Das Ersetzen mehrerer unabhängiger Variablenänderungen durch eine vollständige Zustandszuweisung zwingt den Entwickler, alle Zustände an jeder Fortsetzungsstelle explizit zu deklarieren, wodurch kontextuelle Inkonsistenzen gänzlich vermieden werden.

3.3 Vorverarbeitungspipeline für Nachrichten: leichte bis schwere Kontextverwaltung
Bevor eine API-Anforderung ausgelöst wird, durchläuft die Meldungsliste eine Vorverarbeitungspipeline, die streng nach dem Prinzip “vom Leichtesten zum Schwersten” arbeitet. Das System räumt kostengünstigen, lokalen Vorgängen Vorrang vor schweren Vorgängen ein, die API-Kontingente verbrauchen.

Context Collapse wird vor dem Aufruf von AutoCompact durchgeführt, da AutoCompact kostspielig ist und den feinkörnigen Kontext zerstört, während Context Collapse so viel wie möglich von der ursprünglichen Anfrage bewahrt, indem sekundäre Nachrichten zusammengelegt werden.
Für die Auslösung von AutoCompact gibt es ein genaues mathematisches Modell mit der folgenden Formel:
Effektives Kontextfenster = Modell-Kontextfenster - max(max_output_tokens, 20000)
Auslöseschwelle = Effektives Kontextfenster - 13000
Bei einem Modell mit einem 200k-Fenster liegt die Komprimierung bei 167k. tokens Start in der Nähe. Der Unterbrechungsmechanismus ist so konzipiert, dass nach drei aufeinanderfolgenden Fehlern kein neuer Versuch mehr unternommen wird. In den Kommentaren zum Quellcode werden echte Telemetriedaten zitiert: “1.279 Sitzungen weltweit hatten mehr als 50 aufeinanderfolgende Komprimierungsfehler (bis zu 3.272), wodurch etwa 250.000 API-Aufrufe pro Tag verschwendet wurden”. Dieser winzige Mechanismus verhindert schwarze Ressourcenlöcher in groß angelegten Implementierungen.
3.4 Das Wesen der Gleichzeitigkeitskontrolle für Streaming Tool Actuators
Wenn das Modell mehrere Werkzeugaufrufblöcke parallel in einer einzigen Anfrage ausgibt, verwendet das System standardmäßig die StreamingToolExecutor(Streaming-Ausführung). Während der API-Streaming-Empfangsphase wird die Ausführung eingeleitet, sobald ein vollständiger tool_use-Block empfangen wird.
Das Modell für die gleichzeitige Steuerung von Streaming-Aktoren basiert auf der Idee der Werkzeugaufteilung:

Der Aktuator tut dies, indem er den Wert des Werkzeugs liest isConcurrencySafe(input) Attribut gruppiert aufeinanderfolgende Sicherheitswerkzeuge in einer “parallelen Partition”. Wann immer ein nicht sicheres Werkzeug auftaucht (z. B. FileEdit, bei dem zwei parallele FileEdits, die dieselbe Datei ändern, unweigerlich zu Zeilennummernverschiebungen und Überschreibungen führen), wird eine neue Partition geöffnet. Zwischen den Partitionen wird eine serielle Ausführung erzwungen, während innerhalb der Partitionen volle Parallelität erlaubt ist.
Einer der defensiven Entwürfe besteht darin, dass das System, wenn die Sicherheitsüberprüfungsfunktion selbst eine Parsing-Ausnahme auslöst, dem Fail-Closed-Prinzip folgt und diese standardmäßig als nicht sichere Tool-Ausführung behandelt, anstatt die Leistung zu opfern und Gleichzeitigkeitskonflikte zu riskieren.
3.5 Einbehaltung von Nachrichten und Verwaltung des Token-Budgets
Nicht alle von der API zurückgegebenen Informationen werden direkt an das Front-End weitergegeben. Das System hält drei Arten von Nachrichten zurück:
- Eingabeaufforderung-zu-lang-FehlerreactiveCompact: Aufgehalten von reactiveCompact, interner Wiederholungsversuch nach Komprimierungsversuch.
- Fehler bei der MediengrößeRetry intern nach dem Versuch, übergroße Bildanhänge zu entfernen.
- max_output_tokens FehlerHängt und wartet darauf, dass das System entscheidet, ob ein Nachfolgebefehl eingegeben werden soll.
Der Kern dieses Zurückhaltungsmechanismus ist der Schutz der SDK-Konsumenten (z.B. Desktop-Clients) - Konsumenten neigen dazu, ihre Sitzungen zu beenden, sobald sie ein Fehlerfeld erhalten, und das Verbergen von Zwischenstatusfehlern stellt sicher, dass die interne Wiederherstellungsschleife nicht vorzeitig von der Außenwelt unterbrochen wird.
Wenn das Modell die normale Ausgabe stoppt, aber die Aufgabe nicht abschließen kann, weil der Text zu lang ist, sendet das System einen Hinweis, um das Modell aufzufordern, fortzufahren, solange das Token-Budget ausreicht. Den Unteragenten ist es untersagt, dieses Budget zu verwenden, um unendliche Hänger zu vermeiden. Die Erkennung von abnehmenden Erträgen kommt ebenfalls zum Tragen: Wenn das Inkrement in drei aufeinanderfolgenden Erkennungen weniger als 500 Token beträgt, ist das Modell untätig und das System zwingt es, die Aufgabe zu beenden.
IV. Das System der Instrumente: Beschränkungen und Kapazitäten
Das Werkzeugsystem umfasst mehr als 40 Verzeichnisse und fast 50.000 Codezeilen, und alles, was Agent tun kann, ist durch die vom System bereitgestellte Werkzeugbibliothek vollständig eingeschränkt.
4.1 Sechs Funktionsgruppen der Werkzeugschnittstelle
Das Generic Interface Tool spezifiziert etwa 30 Methoden, die funktional in sechs Module unterteilt sind. Die buildTool Die Werksfunktionen setzen harte Sicherheitsvorgaben:

| Kausalität | Standardwert | Motivation zur Gestaltung |
|---|---|---|
isConcurrencySafe |
false |
Erzwingen einer seriellen Warteschlange unter der Annahme, dass gleichzeitige Konflikte ausgelöst werden |
isReadOnly |
false |
Angenommen, es handelt sich um einen Schreibvorgang, der eine strenge Überprüfung der Schreibrechte auslöst |
isDestructive |
false |
Nicht als destruktive Aktion vordefiniert, um zu verhindern, dass die UI-Müdigkeit zu viele Warnungen auslöst |
checkPermissions |
allow |
Interne Standardversion, das tatsächliche Abfangen wird durch das äußere globale Berechtigungssystem unter der Haube gehandhabt |
4.2 Mehr als 40 Zustände von ToolUseContext
Instrumental call() Methode muss eine extrem große ToolUseContext Objekt, was zeigt, dass das zugrunde liegende Werkzeug keineswegs eine reine Funktion ist:
| obere und untere Textabsätze | verwenden. | Warum sie nicht weggelassen werden darf |
|---|---|---|
readFileState |
Datei Lesen Datensatz Cache | FileEditTool muss dieses Feld ankreuzen, um die Bearbeitung von Dateien abzulehnen, die nicht von dem Modell überprüft wurden. |
abortController |
Löschung von Signalgriffen | Ermöglicht es dem Benutzer, zeitaufwändige Build-Befehle, die vom BashTool ausgeführt werden, jederzeit zu unterbrechen. |
setToolJSX |
UI Render Callback Injection | Ermöglicht Tools wie BashTool, Fortschrittsbalken direkt im Terminal zu zeichnen |
agentId |
Instanzkennzeichnung | Unterscheidung zwischen Master-Prozess und Sub-Agenten zur Bindung separater CWD-Verzeichnisse |
contentReplacementState |
Haushaltskontrolle | Abfangen der unkontrollierten Werkzeugausgabe, um zu verhindern, dass der Systemkontext sofort gesprengt wird |
updateFileHistoryState |
Historischer Zustandszeiger | Ermöglicht die Verfolgung von Dokumentenänderungen und ist /rewind Rückgängigmachen der zugrunde liegenden Abhängigkeiten des Befehls |
Wenn der globale Zustand nach der Ausführung des Werkzeugs geändert werden muss (z. B. cd (Umschalten von Verzeichnissen), was nur durch Rückgabe von contextModifier Die Felder unterliegen einer kontrollierten Änderung. Und diese Erlaubnis gilt nur für serielle Werkzeuge. Gleichzeitig ausgeführte Werkzeuge dürfen nicht in die globale Umgebung eingreifen.
4.3 Kompilierzeit-Eliminierung und Partitionsregistrierung
src/tools.ts Für die Werkzeugregistrierung und das Laden werden drei Strategien verwendet:

Bun's feature() Makros spielen hier eine Schlüsselrolle. Unter der Kontrolle des Feature Gates require() Wenn eine Verzweigung als falsch erkannt wird, führt der Builder die Logik nicht nur nicht aus, sondern löscht sie mit DCE (Dead Code Elimination) vollständig aus dem Produkt. Aufgrund der dynamischen require() Unterstützung für bedingte Anweisungsumbrüche bei statischen import funktioniert nicht, so dass die require()。
Montagephase des Werkzeugs assembleToolPool Es wurde eine strenge Sortierstrategie für die Aufteilung eingeführt: eingebaute Tools stehen an erster Stelle und werden alphabetisch sortiert, extern eingeführte MCP Werkzeuge am Ende der Liste. Dieses nicht-hybride Layout stellt sicher, dass die serverseitigen Prompt-Cache-Haltepunkte stets nach dem letzten eingebauten Werkzeug liegen und verhindert, dass dynamisch geladene MCPs langlebige Caches ungültig machen.
4.4 BashTool: Eine Sicherheitsfestung für 18 Dateien
Aufgrund der nahezu unbegrenzten Zerstörungskraft des Shell-Befehls belegt BashTool allein 18 Dateien und bildet damit ein 8-schichtiges Abwehrsystem.

Mehrere sehr informative Sicherheitsdesigns:
Composite Command Physische IsolierungDas System verwendet tree-sitter, um den Shell AST zu analysieren, der cd /path && python3 evil.py Der gesamte zusammengesetzte Befehl wird zurückgewiesen, wenn einer der Unterbefehle die Prüfung nicht besteht, da er in separate SimpleCommands aufgeteilt ist. Um ReDoS-Angriffe und eine Aushungerung der Ereignisschleife zu verhindern, wird ein einzelner Befehl zwingend in maximal 50 Unterbefehle aufgeteilt.
Überprüfung der Whitelist auf Flag-EbeneNicht nur der Befehlsname wird gesperrt, sondern auch der Wert des Parameters (Flag) wird eingehend untersucht. Zum Beispiel, Begrenzung xargs -I Eingabeformat zum Schutz vor böswilliger Ausnutzung des Modells -i GNU-Variante der Semantik für die Ausführung der Prozessinjektion.
25 Erkennung von Syntaxinjektionen:bashSecurity.ts Mehr als 25 syntaxspezifische Erkennungslogiken sind enthalten, die Befehlssubstitutionen (Backquotes oder $()), Prozess-Substitution (<()), Zsh-spezifische eingebaute Methoden mit hohem Risiko (z. B. zmodload、syswrite), Steuerzeichen und verschiedene Arten von Unicode-Camouflage-Whitespace.
Sandkasten-Umwelttaschen:SandboxManager Eine letzte Ebene des Sicherheitsnetzes wird durch die Einschränkung von Lese- und Schreibpfaden zum Dateisystem, die Begrenzung von Netzzugangsadressen und Unix-Sockets gebildet.
4.5 FileEditTool's Suchen-Ersetzen-Varianten
Anstatt eine auf Zeilennummern basierende Logik zum Hinzufügen/Löschen zu verwenden, erzwingt FileEditTool das “Suchen und Ersetzen”. Dies setzt voraus, dass das Modell old_string Der Codeblock muss in der Zielquelldatei eindeutig übereinstimmen. Wird mehr als eine Übereinstimmung festgestellt, bricht das System die Änderung ab und fordert das Modell auf, so lange weiteren Kontextcode zu liefern, bis er eindeutig ist. Durch diese strenge, aber zuverlässige Einschränkung werden katastrophale Unfälle, bei denen das Modell die falsche Stelle ändert, vollständig vermieden.
In der Zwischenzeit wurde die bereits erwähnte readFileState Eine zweite Verteidigungslinie wird aufgebaut: das Verbot der Bearbeitung ungelesener Dateien. Das Modell kann eine Datei nicht blind aus seinem eigenen “halluzinatorischen Gedächtnis” heraus bearbeiten; es muss zuerst FileRead verwenden, um den aktuellen Zustand der Datei zu bestätigen.
V. Kompetenzsystem: eine Immunbarriere für das System
Dieses System von mehr als 70 Dokumenten legt die Vertrauensskala zwischen “KI autonom agieren lassen” und “Verhinderung einer systemischen Katastrophe” feinfühlig fest.
5.1 Kontinuierliches Spektrum von Vertrauensgradienten
Das Berechtigungssystem umfasst sechs Stufen von der Sperrung bis zur vollständigen Delegation:

| Paradigma | Wesentliche Verhaltensmerkmale | Anwendbare Arbeitsabläufe |
|---|---|---|
plan |
Entziehen Sie allem den Schreibzugriff, Modelle können nur für die Architekturplanung und die Codeüberprüfung verwendet werden. | Sondierungsanalysen und Audits |
default |
Standard-Startmodus, bei jedem Tool-Aufruf wird eine Benutzeroberfläche angezeigt, die eine manuelle Bestätigung verlangt | Routinemäßige alltägliche Zusammenarbeit bei der Entwicklung |
acceptEdits |
Lese- und Schreibdateien im Arbeitsbereich werden stillschweigend freigegeben, der Rest der Umgebung muss noch gesperrt werden, um die Änderung zu bestätigen. | Code-Refactoring mit einem sehr hohen Maß an Vertrauen |
auto |
Einführung von intelligenten Klassifikatoren auf der Modellseite zur Beurteilung der Sicherheit in Echtzeit (interne Umgebung) | Hochfrequenz-Automatisierung |
bypassPermissions |
Überspringt den regulären manuellen Prüfprozess vollständig und behält nur die zugrunde liegende Kernel-Blockierung bei | CI-Umgebung oder kontrollierter Isolationscontainer |
dontAsk |
Wenn Sie auf eine Aufforderung zum Abfangen stoßen, wandeln Sie sie direkt in Ablehnen um, um die Aufgabe ohne ein Pop-up-Fenster zu überspringen | Rein automatisierte, unbeaufsichtigte Skripte |
In Verbindung mit diesem Modell ist das System mit einem Statsig-basierten Gating-Mechanismus ausgestattet. bypassPermissionsKillswitch.ts Ferngesteuerte Sicherung. Wenn die Anthropic Sofortiges und ferngesteuertes Downgrade globaler Clients im Bypass-Modus, wenn eine groß angelegte Sicherheitsverletzung festgestellt wird.auto Der Modus hat eine ähnliche autoModeCircuitBroken Der Abschaltmechanismus.
5.2 Mehrschichtige Bewertung von Rohrleitungen und regelmäßiges Abdecken
gerichtet sein gegen rm -rf / Diese Art von empfindlichen Befehlen wird mit einem vom System entwickelten mehrschichtigen Pipeline-Mechanismus ausgewertet:

Explizite Ask-Regeln haben absoluten VorrangAuch wenn Sie sich derzeit in der bypassPermissionsWenn der Benutzer manuell die Konfiguration der ask: ["Bash(npm publish:*)"]Das System bricht auch die automatische Ausführung ab und zeigt ein Fenster an. Damit wird die Entwurfsphilosophie umgesetzt, dass “die expliziten Befehle des Benutzers immer Vorrang vor dem globalen Modus haben”.
Fest kodierte Pfadimmunität:: Für .git/、.claude/、.vscode/ und Terminal-Konfigurationsdateien (z. B. .bashrc、.zshrcDie Änderungen am Bypass-Modus sind fest codiert, um gegen den Bypass-Modus immun zu sein, und müssen in jedem Fall manuell überprüft werden.
Klassifikatorische AbsicherungWenn der KI-Klassifikator im Automatikmodus den Befehl dreimal hintereinander oder insgesamt 20 Mal in einer einzigen Sitzung ablehnt, schaltet das System von einer intelligenten Ablehnung auf ein eindringliches Pop-up um, das den Benutzer zum Eingreifen auffordert. Befindet sich das System derzeit im Modus "Headless", wird es direkt die AbortError Zerstören Sie den gesamten Agentenprozess.
5.3 Regelquellen, Syntax und Erkennung von Maskierungen
Jede Berechtigungsregel wird auf 8 verschiedenen Quellenebenen gesteuert. Unternehmensadministratoren verwenden policySettings Mit absoluter Herrschaft, beim Öffnen der allowManagedPermissionRulesOnly: true Danach erkennt das System nur noch das vom Unternehmen herausgegebene Regelwerk an.

Die Shell-Match-Syntax unterstützt exakten Abgleich, alten Präfix-Abgleich (npm:*) und reguläre Platzhalter. Das System fügt hier eine raffinierte Besonderheit hinzu: Wenn das Muster mit einem Leerzeichen plus einem Platzhalter endet (wie in git *), kompiliert das System das Ende als optionale Übereinstimmung, so dass die Regel sowohl auf die git add Auch kompatibel mit einfachen Befehlen git。
Um die Probleme der Nutzer zu lösen, hat dieshadowedRuleDetection.ts Die Erkennung von Regelmaskierungen erfolgt in der Konfigurationsdatei. Wenn ein Benutzer den Wert deny: ["Bash"] hineingelegt allow:["Bash(ls:*)"] Zuvor konnte letzteres aufgrund der Reihenfolge der Auswertungspipeline nie erreicht werden, und die Benutzeroberfläche zeigte sofort eine rote Warnung an, die den Benutzer aufforderte, die Reihenfolge anzupassen.
5.4 Drei Handler für die Weitergabe von Privilegien in mehreren Agenten
Der Genehmigungsprozessor teilt drei Pfade für verschiedene Arten von untergeordneten Agenten auf:
interactiveHandlerEin standardorientiertes Interaktionsmodell, das über ein Pop-up-Fenster aufgerufen wird.coordinatorHandlerArbeiten Sie mit Classifiers & Hooks, um stille Genehmigungen zu priorisieren und manuell einzugreifen, wenn sie fehlschlagen.swarmWorkerHandler: ZusammenarbeitbubbleEin Bubbling-Mechanismus, der prozessübergreifende Anfragen an die Leader Permission Bridge des Mainline-Endpunkts sendet.
Wenn der Agent eine Datei mit demshouldAvoidPermissionPrompts: trueDa es sich um eine asynchrone Aufgabe handelt, hat es keine Schnittstelle, die sich öffnet, wenn es auf eine Bestätigungsanfrage stößt, und es wird einfach ein stilles Veto (automatische Ablehnung) gegen die Aufgabe einlegen.
Multi-Agenten-Zusammenarbeit: Aufbau von Schwarmintelligenz
Angesichts komplexer Entwicklungsaufgaben mit langen Vorlaufzeiten entwickelt das System eine robuste Multi-Agenten-Architektur durch Aufgabenteilung und Isolierung von Arbeitsbereichen.
6.1 Dreischichtige Abstraktionsgrenze

- SubagentExtrem leichtgewichtige untergeordnete Knoten, die in der Regel synchron oder asynchron vom übergeordneten Knoten abgerufen werden, um atomare Aufgaben auszuführen, die den von der Abruffunktion definierten Aufgaben ähneln.
- Team/SwarmEine Team-Topologie mit einem vollständigen Lebenszyklus. Die Mitglieder sind in "Leader" und "Teammate" eingeteilt und verfügen über Peer-to-Peer-Kommunikationsmöglichkeiten, was sie ideal für paralleles Refactoring in Front- und Back-Ends macht.
- CoordinatorEin reiner Aufgaben-Orchestrator. Knoten in diesem Modus können die zugrundeliegenden Lese-/Schreibwerkzeuge nicht aufrufen und konzentrieren sich ausschließlich auf das Parsen von Berichten der untergeordneten Knoten und die Ausgabe von Befehlen.
6.2 Einheitliches Routing mit AgentTool
Alle ausgelösten Aktionen gegen Unterprozesse im System konvergieren auf den eindeutigen AgentTool. Durch diese Initiative wird der kognitive Aufwand für Modellaufrufe erheblich reduziert.

Agent wird als eine große dreistufige föderierte Typdefinition abstrahiert, die Folgendes enthält: eingebaute Knoten (BuiltIn), Benutzerüberschreibung (Custom) als auch externe Plug-ins (Plugin). Konflikte folgen built-in < plugin < userSettings < projectSettings < flagSettings < policySettings das Prinzip des hierarchischen Überschreibens.
6.3 Extrem anpassungsfähiger integrierter Agent
Mehrere Agenten mit speziellen Funktionen sind im System fest programmiert:
Erkunden (suchspezifisch)Es ist gezwungen, das Haiku-Modell (das billigste und schnellste) zu verwenden, wodurch die Bearbeitungs- und Schreibrechte vollständig deaktiviert werden. Noch extremer ist, dass die Kommentare im Quellcode zeigen, dass es aktiv die CLAUDE.md(Konfiguration der Projektspezifikation) und der Git-Status sind zwei große Datenmengen, die nur gelesen werden können. Bei einer groß angelegten Bereitstellung mit 34 Millionen abgeleiteten Aufrufen pro Woche spart das Weglassen nur dieser beiden Informationen 5-15 Gtok/week Die schreckliche Dosis.
ÜberprüfungDer Prompt ist der längste Prompt: mit fast 120 Zeilen soll er der selbstzerstörerischen Illusion entgegenwirken, zu der LLM neigt, dass “der Code gut aussieht und der Test bestehen sollte”, indem er die Ausgabe spezifischer Testausführungsanweisungen sowie des Standardausgabeprotokolls verlangt, bevor eine Schlussfolgerung gezogen wird. Darüber hinaus enthält es background: true Markierungen, die immer asynchron im Hintergrund berechnet werden.
6.4 Feinkörnige Steuerung von Unterknoten-Ausführungsmaschinen
runAgent() trägt die Last der Ausführung durch den Kindknoten. Seine Kernlogik ist die vollständige Wiederverwendung des Master-Knotens query() Zyklischer Rahmen.
Für die Aufhebung von Erlaubnissen führt das System eine obligatorische Sicherheitslogik ein: Untergeordnete Knoten dürfen sich selbst deklarieren permissionModeaber es ist niemals zulässig, die bypassPermissions、acceptEdits 和 auto Der übergeordnete Knoten des Musters wird in die default Modus. Kurz gesagt, Subsysteme können den globalen Vertrauensflussmechanismus nicht brechen, indem sie sich als eine höhere Sicherheitsstufe ausgeben.
Die Filterung der Werkzeuge wurde in drei Stufen streng geprüft:
- Die globale Deaktivierungstabelle (ALL_AGENT_DISALLOWED_TOOLS) ist durchgängig gesperrt.
- Die nicht eingebaute Agentendeaktivierungstabelle (CUSTOM_AGENT_DISALLOWED_TOOLS) blockiert illegale Tools.
- Asynchrone agentenspezifische Whitelist-Kontrolle (ASYNC_AGENT_ALLOWED_TOOLS).
Es ist erwähnenswert, dass alle Produkte, die mitmcp__Externe MCP-Tools mit Präfix-Namen werden vollständig freigegeben, wobei alle oben genannten Regeln ignoriert werden, so dass externe Erweiterungen nicht durch den internen Topologietyp eingeschränkt werden.
Am Ende des Lebenszyklus muss die Aufräumphase genau acht Aufräumarbeiten durchführen: proprietäre MCP-Verknüpfungen auflösen, Sitzungshaken-Listener bereinigen, zugewiesenen Prompt-Cache zwangsweise löschen, Dateizustands-Cache-Wörterbuch freigeben, Perfetto-Leistungsverfolgungs-Handles deregistrieren, Transcript-Zuordnungstabelle leeren, verwaiste ToDo-Aufgaben durchsuchen, die bash-residente Prozesse im Hintergrund, die noch nicht beendet sind.
6.5 Fork Subagent: Extreme Ausnutzung der Cache-Trefferraten
Als experimentelles Modell zielt Fork darauf ab, den Speicherkontext und die Dialogprotokolle des Hauptknotens vollständig zu übernehmen.
Seine Hauptaufgabe besteht darin, die Trefferquote des Prompt-Cache zu maximieren. Alle eingehenden historischen Nachrichtenstrukturen und tool_use Die Platzhalter müssen auf Bitebene konsistent gehalten werden, indem nur eine für den aktuellen Kindknoten spezifische Anweisung ganz am Ende des Datenstroms angehängt wird. Wenn mehrere Forks gleichzeitig initiiert werden, treffen sie aufgrund der vollständigen Überlappung der Datensequenzen des ersten 99% direkt auf das äußerste Ende des Hochgeschwindigkeits-Präfix-Cache.
Der Entwurf gegen rekursionsbedingte Explosionen ist ebenso anspruchsvoll: Das System implementiert einen Mechanismus zur doppelten Überprüfung. Es stützt sich auf die querySource (eine Anti-Kompressions-Prüfung) und das Scannen des Nachrichtenstroms nach dem <fork-boilerplate> Etiketten wirken wie eine doppelte Versicherungspolice gegen unendliche Ableitungen.
Im letzten Injektionsbefehl wird der extrem harte, in Großbuchstaben geschriebene Befehl “STOP. READ THIS FIRST.” verwendet, um die Aufmerksamkeit des LLM zwangsweise abzulenken und ihn zu veranlassen, die alte Identität, die er geerbt hat, zu ignorieren und die neu zugewiesenen Aufgaben zu übernehmen.
6.6 Zweigleisiger Team/Swarm-Backend-Mechanismus
Um die Teamarbeit zu unterstützen, ist das System mit zwei völlig unterschiedlichen Architekturen ausgestattet:

Das System führt eine Erkennung und Degradierung auf der Grundlage des Zustands der Umgebung durch: wenn in tmux, aktiviere TmuxBackend; wenn in iTerm2, aktiviere ITermBackend; wenn weder das eine noch das andere, aber das System als tmuxhaltend erkannt wird, rufe eine externe Tmux-Sitzung auf; wenn nichts, erzwinge einen fehlerhaften Abbruch und fordere den Benutzer auf, die Umgebung zu konfigurieren. Im reinen SDK-gesteuerten Modus wird das System mit In-process gesperrt.
Diese beiden Backends werden konsequent TeammateExecutor Die Schnittstellenspezifikation schirmt die Unterschiede ab, und die APIs, die der obersten Ebene zur Verfügung stehen, sind alle einfach spawn()、sendMessage() 和 terminate()。
6.7 Äußerst komplexe In-Prozess-Motoren
Mit fast 1.400 Codezeilen ist die src/utils/swarm/inProcessRunner.ts Sie ist der komplexeste Knotenpunkt des Kooperationsnetzes.

Privilege Escape Protection für gemeinsam genutzten Speicher.createInProcessCanUseTool() Es wurde ein verfeinertes dreistufiges Genehmigungsverfahren entwickelt:
- Führen Sie die üblichen Erlaubnis-/Verweigerungsprüfungen durch.
- Im Falle einer Anfrage wird diese zuerst vom Backend-Klassifikator geprüft.
- Aktivieren Sie Kernkomponenten, wenn ein manueller Eingriff erforderlich ist Leader Permission Bridge(Überbrückung des Master-Knotenprivilegs).
Die Hintergrundaufgabe verwendet die Brücke, um die exponierten REPL-Prozesse des Vordergrundprozesses in umgekehrter Richtung aufzurufensetToolUseConfirmQueueDie Genehmigungsergebnisse werden mit dem Abzeichen des Teamkollegen an den Teamkollegen zurückgesendet, der auf dem Startbildschirm ein Bestätigungsfeld mit dem Abzeichen des jeweiligen Teamkollegen anzeigt. Die Genehmigungsergebnisse werden zurückgesendet mitpreserveMode: trueFlagge, wodurch die Subsysteme vollständig davon abgehalten werden, die globalen Berechtigungsmuster des Hauptsystems über diesen Pfad zu untersuchen.
Der Idle-Standby-Zustand wird in der Lebenszykluskontrolle eingeführt. Anstatt den Prozess physisch zu zerstören, wenn der Teammate seine Aufgabe beendet, bleibt er hängen und sendet eine Idle-Nachricht an den Master-Knoten, die einen Peer-to-Peer-Kommunikations-Digest (Peer-DM-Digest) enthält.
Für eine unkontrollierte Speichererweiterung hat die Komponente die TEAMMATE_MESSAGES_UI_CAP = 50 Aus den Quellcode-Notizen geht hervor, dass das System während eines katastrophalen “Whale Session”-Stresstests 292 verknüpfte Agenten in 2 Minuten erzeugte. Diese physikalische Grenze ist eine Lehre aus einem katastrophalen "Whale Session"-Stresstest, bei dem das System 292 Linked Agents in 2 Minuten erzeugte und der Speicherverbrauch sofort 36,8 GB überstieg.
6.8 Netzübergreifende Mailboxen und Koordinatorenkonzepte
Die kollaborative Kommunikation zwischen unabhängigen physischen Prozessen ist in das lokale Dateisystem integriert ~/.claude/teams/<teamName>/mailbox/<agentName>/ Über dem Pfad. Einheitliche Nutzung SendMessageTool Montieren Sie die Route.

Das Kommunikationsprotokoll enthält strukturierte Kontrollrahmen (z. B. shutdown_request、shutdown_response 及 plan_approval_request), wodurch das Netz in der Lage ist, sich selbst zu erholen und den Antwortfluss zu verarbeiten.
Weiter oben auf der Ebene.coordinatorMode.ts Enthält die Gestaltungsrichtlinien für Supreme Commander. Es enthält nur sechs Befehlswerkzeuge wie TeamCreate, TaskStop, SendMessage usw. Sein eigener Prompt von 260 Zeilen definiert eine Vier-Phasen-Logik, die Synthese und Analyse, Befehlsausgabe usw. umfasst.
Hier ist ein zentrales Anti-Muster-Tabu versteckt:“Delegiere niemals den Prozess des Verstehens”.”Der Koordinator darf keine vagen Anweisungen wie “Beheben Sie den Fehler auf der Grundlage Ihrer Analyse” an die untergeordneten Knoten senden, sondern muss den gesamten Kontext selbst durcharbeiten und in Ausführungsanweisungen mit eindeutigen Datei- und Zeilennummern übersetzen.
Um die Unfähigkeit des Koordinators, Dateien zu bearbeiten, zu kompensieren, verfügt er über ein spezielles Scratchpad-Verzeichnis. Alle Arbeiter können unabhängig von den regulären Lese-/Schreibgenehmigungen Zwischenergebnisse der Analyse in diesem Verzeichnis ablegen. Darüber hinaus schließt sich dieses Modell vollständig mit Fork aus - einem Commander, der keine wirkliche Macht über den Zustand einer Datei hat und keine gültige Vererbung erzeugen kann.
6.9 Infrastruktur für asynchrones Arbeiten: Das Aufgabensystem
Jede Logik, die die Hauptschnittstelle für längere Zeit blockiert, wird in die AppState.tasks Die Verwahrung wird zentralisiert durchgeführt.

LocalAgentTask Bietet eine extrem genaue Skalierung: Echtzeitberichte über die Gesamtzahl der aufgerufenen Tools, ein globales Token-Overhead-Ledger mit Ein- und Ausgaben und eine Textbeschreibung der letzten 5 Aufrufe.
InProcessTeammateTask Die Kontrollarchitektur des dualen AbortControllers wird beibehalten: der Haupt abortController für die physische Extraktion der gesamten Maschine verantwortlich, und die currentWorkAbortController Klemmen Sie einfach die Werkzeugabfrage ab, die gerade ansteht.
DreamTask (Das spezifischste dieser Konzepte ist die Dream Organiser Task. Bei Inaktivität des Terminals wird diese Aufgabe automatisch als Dämon gestartet, der die jüngsten Gesprächsdaten ausspuckt und in einer Speicherdatei zusammenfasst. Im Falle einer unvorhergesehenen Unterbrechung wird sie kill() Die Routine führt automatisch die Zeitstempel-Rollback-Technik der Sperrdatei mtime durch, um eine nahtlose Neuübertragung beim nächsten Neustart zu gewährleisten.
6.10 Weitergabe des vollständigen Satzes von Berechtigungen zwischen mehreren Knotenpunkten
Diese sechs Übertragungsketten halten sich strikt an die “Mindestexposition + Verhinderung der Verbreitung über die Grenzen der Behörde hinaus”.

VII. das Projekt System Prompt: Umgestaltung des Kontextes
gehen in src/constants/prompts.ts 与 src/context.tsDie Logik hier ist eine völlige Absage an auswendig gelernte Prompts. Das System führt ein extrem ausgeklügeltes Context Engineering durch.
7.1 Memoisierung segmentiertes Cache-System
Anstatt zu einer einzigen riesigen Zeichenkette zusammengesetzt zu werden, wird die riesige Schlagwortbank in einzelne string[] Segmentierte Container. Der Kerntreiber geht direkt zur API-Schicht des Prompt Cache Optimieren.

SYSTEM_PROMPT_DYNAMIC_BOUNDARY wie eine Wasserscheide. Darüber befinden sich statische Konstanten, die die scope: 'global' Die Cache-Kennungen werden von allen Benutzern weltweit gemeinsam genutzt. Wenn eine große Anzahl von Anfragen auf dieselbe Präfixkonstante trifft, sinken nicht nur die API-Kosten drastisch, sondern auch die Antwortzeit wird extrem verkürzt.
Das Überschreiten dieser Grenze ist ausschließlich dem Benutzer vorbehalten. Der Quellcode ermöglicht Funktionen, die diese Grenze überschreiten wollen, mit dem DANGEROUS_uncachedSystemPromptSection Warn-Präfix, um Entwickler zu zwingen, die _reason Literale Mengenparameter für die Codeüberprüfung.
7.2 Statische Verfassung und Spezialisierungsstrategien
Der Grundsatz der “Einfachheit des Codes” wird in der Doing Tasks-Spezifikation mehrfach betont: “Three similar lines of code is better than a premature abstraction. eine verfrühte Abstraktion.”. Dies ist im Wesentlichen eine defensive Richtlinie zur Unterdrückung der dem LLM innewohnenden Tendenz zum “over-engineer and show off”.
Der Abschnitt über die Kontrolle von Aktionen erklärt ausdrücklich den Grundsatz der Isolierung von Berechtigungen: “Die einmal erteilte Berechtigung eines Benutzers bedeutet nicht, dass sie in allen Kontexten freigegeben ist”.
Für die interne Version der privilegierten Konfiguration gibt es sogar die eigentümliche Einschränkung “standardmäßig keine Code-Kommentare schreiben”. Anmerkungen bestätigten, dass in einer frühen Evaluierung des Capybara v8-Modells, bei der die modellgenerierte hypothetische Logik zu einer Falschaussagequote von 29-30% führte, die völlige Deaktivierung von Anmerkungen der schnellste vorläufige Kompromiss war.
Für den Bereich Werkzeuge ist das Modell genau spezifiziert, um spezialisierte Werkzeuge anstelle der Bash-Befehlskette zu verwenden (z. B. FileRead anstelle von cat), und die strukturierte Ausgabe und die kontrollierte Umgebung, die von spezialisierten Werkzeugen bereitgestellt werden, können Überraschungen erheblich reduzieren.
7.3 Umwelterkennung und dynamische inkrementelle Injektion
Während der Initialisierungsphase der Sitzung wird diesrc/context.ts wird die Schichten nachträglich erkennen und nach oben zusammenführen. CLAUDE.md Die Datei wird in die Datei userContext ein. Dies wird hier übernommen --bare Pure Start unterbricht zwar die automatische Erkundung, hält sich aber dennoch strikt an die gleichen Regeln, die für das Programm --add-dir Die Regel für manuelle Montagen, d.h. “ohne” bedeutet, dass nicht aktiv etwas hinzugefügt wird, dass keine Eingaben angenommen werden".
Dadurch wird sogar die interne Sackgasse des Klassifizierers mit unterbrochen:yoloClassifier → claudemd → filesystem → permissions → yoloClassifier。CLAUDE.md Festcodiert auf das erste Mal nach dem Laden bootstrap/state.ts Bietet Cache-Blockierung.
Bei der Git-Statusinjektion werden fünf Informationsströme gleichzeitig abgefragt (aktueller Zweig, Master-Zweig, Arbeitsbereichstatus, die letzten fünf Übertragungen und Operator). Um eine Informationsüberlastung zu vermeiden, ist der Arbeitsbereichsstatus auf 2000 Zeichen beschränkt, und das Prompt-Modell erhält das vollständige Protokoll vom BashTool, wenn es dieses benötigt.
Wenn Sie mit einem externen MCP-Server kommunizieren.isMcpInstructionsDeltaEnabled Die Switches steuern die Befehle so, dass sie nur dann inkrementell nachgelagert werden, wenn sich die Topologie ändert, und verhindern so die unnötige Übertragung von doppelten Bytes.
7.4 Komprimierung und Wiederaufbau der vier Verteidigungslinien
Wenn die begrenzten Token-Kontexte kurz vor der Erschöpfung stehen, ermöglicht das System vier verschiedene Stufen der Komprimierungsabwehr:

AutoCompact-StrategieDie verwendete Boot-Eingabeaufforderung ist extrem feinkörnig und erzwingt die Speicherung von neun Kategorien von Informationen, einschließlich der Fehlerweiterleitung. Das Hauptaugenmerk liegt auf “alle ursprünglichen Benutzerbefehlsmeldungen, die nicht in Werkzeugausgaben umgewandelt werden, müssen aufbewahrt werden”. LLM neigt dazu, zusätzliche Benutzeranfragen wie “Ich habe gerade gesagt, kein Redux” in der Zusammenfassungsphase zu verlieren, was im Wesentlichen eine Anti-Vergessens-Technik ist. Die Technik ist im Wesentlichen eine Anti-Vergessens-Technik.
Nach Abschluss der Komprimierung und der Rekonstruktionsphase extrahiert das System erneut bis zu 5 Kerndateien (mit einer Obergrenze von je 5000 Token) und 25000 Token-Fragmente von Skill-Befehlen für die Reverse-Reinjektion, um sicherzustellen, dass es den Überblick über die Details der Dateien nicht vollständig verloren hat.
Da AutoCompact so zerstörerisch ist, schließt es natürlich Context Collapse, ein leicht progressives Faltschema, aus - AutoCompact wird zwangsweise unterdrückt, wenn der Faltmodus aktiviert ist.
Terminal UI: Reacts erweiterte Rendering-Engine umgestalten
Die gesamte CLI-Schnittstelle besteht aus den Daten, die in der Datei src/ink/ 90 Dateien im Verzeichnis, fast 20.000 Zeilen React-Code übernommen. Dies verändert das Bild der CLI als grobe Ausgabe komplett.
8.1 Level 5 Rendering-Pipeline mit TS Yoga

- React Reconciler: Anruf
react-reconcilerReact setzen<Box>Analysiert das Endpunkt-DOM mit der unten angebrachten Yoga-Engine.ink-box. ConcurrentRoot mit Unterstützung für React 19 Gleichzeitigkeitsfunktionen. - Pure TS Refactored Yoga: eliminiert die Berechnungslogik der WASM-Datei, auf die sich die ursprüngliche Ink bezieht, um zu vermeiden, dass
await loadYoga()Verzögerung auf dem ersten Bildschirm und lineare Speicheraufblähung nach einem langen Durchlauf, Verlagerung aller Rendering-Schnittstellen in die IsolierungsschichtLayoutNodeAusrichtung. - Pool residenter ObjekteASCII-Zeichen werden in einem Int32Array abgerufen.
CharPoolDer O(1)-Index-Treffer in derStylePoolDifferentialsequenzen vor und nach der Konvertierung werden direkt zwischengespeichert; enthält Linkwrites für spezielle OSC 8-ProtokolleHyperlinkPool. Zeitgesteuerte Scavenger, die alle fünf Minuten ausgeführt werden, verlassen sich auf diemigrateScreenPoolsMethode zur Rückgewinnung und Migration noch aktiver zellulärer Einheiten (Cells).
8.2 Ultimative Anti-Flicker-Optimierung auf Hardware-Ebene
Das System durchläuft nur das Vorkommen von dirty Markiert den durch Bewegung oder Verschiebung erzeugten Ansichtsbereich. Dies macht den CPU-Overhead einer Uhr-Animation oder einer Fortschrittsbalken-Rotationskomponente nur von ihrem Bereich abhängig.
Anstatt angesichts großer Text-Scrolling-Ausgaben mit roher Gewalt ein Redrawing durchzuführen, wird der zugrunde liegende DECSTBM-Scrolling-Mechanismus auf Hardware-Treiber-Ebene simuliert (siehe unten). CSI top;bot r 及 CSI n S Anweisung), während gleichzeitig die interne prev.screen Das Displacement Mapping wird so durchgeführt, dass der Diff-Algorithmus nur mit der einzigen neuen Zeile, die auf den Bildschirm rollt, zu tun hat.
Der Double Buffering-Mechanismus wird verwendet, um die beiden Frames des vorderen und hinteren Kanals beizubehalten, ergänzt durch die Lodash-Hochfrequenzdrosselung (16 ms bei 60 fps). leading + trailing (DEC 2026-Modus), und durch das DEC 2026-Protokoll werden die BSU (Begin Synchronised Update) und ESU vor und nach den vollständigen Aktualisierungsdaten gekapselt, wodurch die bildsynchrone atomare Auffrischung des Terminalbildschirms vollständig realisiert und das stroboskopische Flackern beseitigt wird. Durch das Inline-Parsing wird außerdem Folgendes eingeführt charCache Erzwingt einen Treffer auf das berechnete ANSI-Ergebnis, um die zeitaufwändige Operation zu überspringen.
8.3 Erfassen des Bubbling-Mechanismus ohne Redux-Status
Ein ausgeklügelter Ereignisabfangdienst (Dispatcher) auf DOM-Ebene ist integriert. Tastatureingaben erhalten die absolute DiscreteEventPriority(unmittelbare Plug-in-Bearbeitungsrechte), während das Morphing von Fenstern (Resize) usw. im ContinuousEventPriority Führen Sie das Dithering und die Zusammenführung durch.
Durch den Verzicht auf das schwere und redundante Redux wird die DeepImmutable-basierte AppState Enthält etwa 50 Core State Dictionaries, die mit der nativen React Context Injection zusammenarbeiten. Im Großen und Ganzen verlässt es sich nur auf die onChangeAppState Haken erfassen Nebeneffekte mit hoher Priorität, wie z. B. das Umschalten des Berechtigungsmodus, und leiten sie in Echtzeit an die entsprechenden Komponenten weiter.
IX. die MCP-Integration: Standardisierte Fähigkeitssteckmodule
konfrontiert mit Model Context Protocol (MCP), einem Protokoll, das sich zu einem Industriestandard entwickelt, werden die Module in den src/services/mcp/ Mitte.

Boden (eines Stapels) config.ts Abrufen von Netzwerkkonfigurationen aus sechs verschiedenen Quellen wie Unternehmensrichtlinien, lokalen Projektspezifikationen usw. Wenn Sie auf die Sync-Liste der Claude.ai-Cloud-Umgebung stoßen, wird diededupClaudeAiMcpServers Übernimmt die De-Duplizierung und überlässt die Kontrolle mit hoher Priorität der lokalen Konfiguration.
Neu entdeckte externe Tools werden zum Zeitpunkt des Zugriffs neu erfasst, wobei eine obligatorische Namenskonvertierung in mcp__<serverName>__<toolName> Dieses spezielle Format verhindert Überschreibungskonflikte, und seine JSON-Schemadefinition wird in das systemeigene Zod-Schutzvalidierungsnetzwerk umgewandelt. refreshTools() um die letzten funktionalen Änderungen an externen Knoten zu erfassen.
eingebaut McpAuthTool Für Server, die eine sekundäre Authentifizierung erfordern, sind spezielle Schnittstellen vorgesehen. Wenn ein Modellvorgang blockiert wird, kann der Prozess unterbrochen werden, so dass der Benutzer den OAuth-Handshake auf der Browserseite durchläuft und mit den Anmeldeinformationen zurückkehrt, um den Benutzer erneut zu instruieren.
X. Architektonische Inspiration und technische Reflexionstiefe
Die Zerlegung dieser riesigen Menge an technischem Code hat zu den folgenden wertvollen Entwurfsmustern für jeden Entwickler geführt, der versucht, ein agentenähnliches System zu entwickeln:
AsyncGenerator als absoluter EckpfeilerDer asynchrone Generator handhabt die gesamte Ausführungskette und demonstriert die beispiellose Systemdominanz von Promise-Ketten bei der Lösung von Modell-Streaming-Concurrency, der Unterdrückung von Rückstau, der Kaskadierung von sicheren Widerrufssignalen und kombinatorischen Aufrufen.
Extreme Fail-closed SicherheitshaubeDie Nichtregistrierung eines Gleichzeitigkeitsattributs bedeutet, dass Gleichzeitigkeit verboten ist, und die Nichtangabe eines Lese-/Schreibattributs bedeutet, dass es als böswilliges Schreiben behandelt wird. Diese Art von Entwurf, bei dem Schwachstellen als Verweigerungen durch die Rahmenschicht vorprogrammiert sind, sollte in den darunter liegenden Schichten aller Systeme nachgebildet werden.
Endgültige Abschaffung der if-else-Isolierung bei der Erstellung:feature() Makros [7] auf der physischen Ebene verhindern, dass unfertige Funktionen in die Produktionsumgebung gelangen, und vermeiden so mögliche Laufzeitanomalien oder Dekompilierungslecks.
Alles für den Prompt Cache Service Refactoring DesignVon der sehr sorgfältigen Rückwärts- und Vorwärtsreihenfolge der Tool-Listen über das systemkonforme Boundary Slicing bis hin zum sehr seltsamen Suffix-Replenishment von Fork-Operationen. Große Systemarchitekturen sollten Cache-Trefferraten als “Bürger erster Klasse” und nicht als nachträgliche Überlegung betrachten.
Technische Gegenmaßnahmen zur Behebung von LLM-MängelnZum Beispiel schreibt die Vorgeschichte der Komprimierung vor, dass “kein nicht instrumentierter Rückgabewert der ursprünglichen Anweisung verworfen werden darf”, wobei die Technik eingesetzt wird, um die allgemeine Härte des großen Sprachmodells zu kompensieren, das dazu neigt, kleine Benutzeranforderungen zu verwerfen und zu Amnesie zu führen.
Gefahren der alten ArchitekturAuch wenn sie sehr streng ist, in bootstrap/state.ts Die Warnung “DO NOT ADD MORE STATE HERE” bleibt bei einem globalen Objekt mit über 200 im System gepflegten Wörterbuchfeldern bestehen. Bei einem komplexen System mit 500.000 Zeilen ist das Fehlen einer auf Dependency Injection basierenden granularen Zustandsverwaltung ein Warnsignal.
Auch.BashTool Der Code ist zwar gut durchdacht, aber aufgrund des 8-stufigen Isolationsvalidierungsmechanismus zu umfangreich und komplex. Die Erweiterbarkeit des Frameworks würde erheblich verbessert, wenn die Validierungslogik herausgenommen und durch eine deklarative Engine-Konfiguration im Stil von OPA (Open Policy Agent) oder Rego ersetzt werden könnte.
Auf der Ebene der Datenpersistenz liegt das Toolflow-Feedback noch in Form von flachen Strings vor. Wenn sie in einen Datenlayer-Speicher mit strukturierter Abrufmöglichkeit umkonfiguriert werden kann, wird dies dem Langzeitspeichersystem und Context Collapse helfen, präzisere Falteingabepunkte zu erhalten.
Da Anthropic die Kernmodule in eine Open-Source-SDK-Distribution extrahiert, wird die künftige Entwicklung entkoppelt und pluginisiert sein.
Anhang: Kerntriebwerk und Steuerflächenindex
| Systembaustein | Zugrundeliegende Terminplanung und Implementierungsdokumentation | Bewertung des Codevolumens |
|---|---|---|
| Agent Loop Engine Kern | src/QueryEngine.ts, src/query.ts |
3.024 Zeilen |
| Tool Triage und Concurrency Scheduler | src/services/tools/StreamingToolExecutor.ts, toolExecution.ts |
2.275 Zeilen |
| Abstrakte Methoden und Werkzeugmontage | src/Tool.ts, src/tools.ts |
1.181 Zeilen |
| Physikalische Sandbox-Kontrollfläche der Bash | src/tools/BashTool/ Katalog (18 Dateien) |
Ca. 5.000 Zeilen |
| Global Security Authorisation Audit Centre | src/utils/permissions/permissions.ts |
Ca. 1.400 Zeilen |
| Maskierung von Regeln und Bewertung von Abhörnetzen | src/utils/permissions/ Katalog (24 Dateien) |
Ca. 5.000 Zeilen |
| Subagententask Topologie Netzwerk | src/tools/AgentTool/ Katalog (20 Dateien) |
Ca. 6.000 Zeilen |
| Swarm Teamübergreifende Konnektivität und Postfächer | src/utils/swarm/ Katalog (22 Dateien) |
Ca. 5.000 Zeilen |
| System-Eingabeaufforderung Eingebaute Konstanten | src/constants/prompts.ts |
914 Reihe |
| Global Information Compression Folding Module | src/services/compact/ Katalog (11 Dateien) |
3.960 Zeilen |
| React-Ink Hardware-Rendering-Komponente | src/ink/ Katalog (90 Dateien) |
19.842 Zeilen |
| MCP-Protokoll Konnektivität und Konvertierungsschicht | src/services/mcp/client.ts |
3.348 Zeilen |
| MCP Multi-Source-Konsolidierung und De-Layering | src/services/mcp/config.ts |
1.578 Zeilen |
| Boot-Systempuffer initialisieren | src/bootstrap/state.ts |
Ca. 800 Zeilen |
| React App Unveränderlicher Zustandsbaum | src/state/AppStateStore.ts |
Ca. 400 Zeilen |




























