Mit großen Projekten arbeiten
Verwalte große Codebasen in Bob Shell. Verstehe die Optimierung des Kontextfensters, die Dateiverarbeitung und Best Practices für Projekte im Enterprise-Maßstab.
Kontextlimits bei großen Projekten
Bob verwendet große Sprachmodelle mit einem begrenzten Kontextfenster. Dies ist die maximale Textmenge (gemessen in Tokens), die Bob auf einmal verarbeiten kann. Wenn der Kontext zu groß ist, kann Bob deine Anfrage möglicherweise nicht verstehen oder genaue Antworten generieren.
Das Kontextfenster umfasst:
- Den System-Prompt (Anweisungen für Bob)
- Den Gesprächsverlauf
- Den Inhalt von Dateien, die du in deinen Chat-Prompt einschließt
- Die Ausgabe von Befehlen oder Tools, die Bob verwendet
Strategien zur Kontextverwaltung
- Präzise sein: Wenn du auf Dateien oder Code verweist, verwende spezifische Dateipfade und Funktionsnamen. Vermeide vage Referenzen wie „die Hauptdatei".
- Dateien präzise referenzieren: Gib spezifische Dateien in deinem Chat-Prompt mit ihrem Pfad an (z. B.
src/components/MyComponent.tsx), oder verweise auf einen Commit-Hash, um Bob auf einen bestimmten Git-Zustand hinzuweisen. - Aufgaben aufteilen: Teile große Aufgaben in kleinere, handhabbare Teilaufgaben auf. Dies hilft, den Kontext fokussiert zu halten.
- Bei Bedarf zusammenfassen: Wenn du auf eine große Menge Code verweisen musst, erwäge, die relevanten Teile in deinem Prompt zusammenzufassen, anstatt den gesamten Code einzufügen.
- Aktuellen Verlauf priorisieren: Bob kondensiert automatisch ältere Nachrichten im Gesprächsverlauf, um innerhalb des Kontextfensters zu bleiben. Sei dir dessen bewusst und füge wichtigen Kontext bei Bedarf erneut ein.
- MCP-Tool-Nutzung verwalten: Du kannst bestimmte Tools in einem MCP-Dienst deaktivieren und aktivieren, um nur das zu verwenden, was du benötigst, und so den Kontextverbrauch durch ungenutzte Tool-Definitionen zu reduzieren.
- Subagenten oder Subtasks für isolierte Arbeit verwenden: Für große, in sich geschlossene Arbeiten erwäge die Verwendung eines Subagenten oder Subtasks. Beide laufen in ihrem eigenen separaten Kontextfenster, was die Haupt-Terminal-Sitzung schlank hält. Weitere Details findest du unter Tools zu
spawn_subagentundstart_subtask.
Beispiel: Refaktorierung einer großen Datei
Wenn du eine große TypeScript-Datei (src/components/MyComponent.tsx) refaktorieren musst, ist hier ein effektiver Ansatz:
- Einen ersten Überblick verschaffen:
Liste die Funktionen und Klassen in src/components/MyComponent.tsx auf - Auf spezifische Funktionen abzielen:
Refaktoriere die Funktion `processData` in src/components/MyComponent.tsx, um async/await statt Promises zu verwenden. - Iterative Änderungen vornehmen: Mache kleine, inkrementelle Änderungen und überprüfe und genehmige jeden Schritt.
Durch die Aufteilung der Aufgabe und die Bereitstellung spezifischen Kontexts kannst du effektiv mit großen Dateien innerhalb der Kontextfenster-Limits arbeiten.
Wie ist dieses Thema?