Fehlerbehebung
Fang hier an, wenn etwas nicht funktioniert. Die ersten Abschnitte sind die Prüfungen, die für fast alles gelten. Die Tabellen danach führen von dem, was du siehst, zu der Seite mit der Lösung. Die meisten dieser Seiten enden mit einem eigenen Abschnitt zur Fehlerbehebung; diese Seite wiederholt sie nicht.
Erste Schritte #
Auf dem Rechner des Relays, in einem Terminal:
oar status
oar doctor
oar statussagt, ob das Relay antwortet. Lies die ersten Zeilen anhand der Tabelle unten.oar doctorgibt die Installation, die Config und die Provider-CLIs aus, die es findet. Es ändert nichts und endet immer mit 0, lies also die Zeilen.- Schau in den Browser. Der Statuspunkt und die Banner zeigen, ob das Problem zwischen Browser und Relay liegt oder hinter dem Relay.
- Lies das Log, das zum Problem gehört (Logs).
- Starte das Kleinste neu, das helfen könnte (Neu starten).
Beide Befehle sind unter Der Befehl oar beschrieben.
oar status lesen #
| Zeile | Worauf sie hinweist |
|---|---|
Not set up yet — run: oar setup |
Keine Config in dieser Installation. Führ oar setup aus. Erster Start |
The relay is running on port <port> (<access>): <url> |
Das Relay ist in Ordnung. Öffne die URL; oar url gibt sie mit dem Token aus. Ein Problem liegt dann im Browser, bei der Anmeldung oder in einer Session |
The relay is stopped (port <port>, <access>). Start it with: oar start |
Auf dem Port antwortet nichts. Führ oar start aus und lies Installieren und starten, wenn es fehlschlägt |
Port <port> is held by another program, or by a relay with another token. |
Ein anderes Programm nutzt den Port, oder ein altes Relay mit einem früheren Token läuft noch. Siehe Wenn es nicht startet |
The relay runs with its earlier settings; restart it to apply the new ones. |
Du hast Port, Token oder Zugriff mit oar setup geändert. Führ oar restart aus |
Service: <state> |
Der Dienst für den Start bei der Anmeldung. Siehe Start bei der Anmeldung |
Tunnel: <state> |
Der eingebaute Cloudflare-Tunnel. Siehe Cloudflare-Tunnel |
Exit-Code 3 heißt, dass das Relay nicht läuft, der Port von etwas anderem belegt ist oder es keine Config gibt. Exit-Code 0 heißt, dass das Relay läuft.
oar doctor lesen #
| Zeile | Was sie dir sagt |
|---|---|
OAR <version> und node |
Die OAR-Version und das Node.js, auf dem oar läuft. Nimm beides in einen Bericht auf |
mode |
git checkout: oar update und oar service verweigern dort die Arbeit. global install ist der Normalfall |
state root und config |
Welche Installation der Befehl betrachtet. Zwei Installationen auf einem Rechner haben von beidem zwei. (missing — run: oar setup) hinter dem Config-Pfad heißt, dass es keine Config gibt; port, auth token und tunnel fehlen dann |
port |
Der Port und wer ihn erreicht. localhost heißt nur dieser Rechner; andere Geräte brauchen oar setup --lan oder einen Tunnel |
auth token |
MISSING heißt, dass kein Token gesetzt ist. Führ oar setup aus |
tunnel |
disabled, managed (cloudflared: <path>) oder managed, cannot start: <reason>. Der Grund nennt, was falsch ist, zum Beispiel ein fehlendes cloudflared |
database |
Die Datenbank, die diese Installation nutzt, mit ihrer Größe. (not created yet) heißt, dass das Relay nie aus dieser Installation lief. Fehlen deine Konversationen oder bleiben Nachrichten ausstehend, prüf, ob das die Datenbank ist, die du erwartest (Ein Relay pro Datenordner) |
provider CLIs |
gh (Copilot), claude und grok zeigen ihre Version oder not found. Doctor sucht mit dem PATH deines Terminals; ein Dienst hat den PATH von seiner Installation (Start bei der Anmeldung). cursor zeigt immer bundled (@cursor/, ob ein Key gespeichert ist oder nicht |
warning |
In WSL belegt Windows den Port des Relays. Wähl mit oar setup --port <port> einen anderen |
Doctor gibt den Zustandsordner aus, nicht den Log-Ordner, und sagt nicht, ob
das Relay läuft: Das macht oar status. Wo die Logs liegen, steht unter
Dateien und Ordner.
Logs #
| Problem | Lies |
|---|---|
| Das Relay startet nicht oder stoppt | server- im Log-Ordner, aber nur, wenn oar start das Relay selbst im Hintergrund gestartet hat. Unter dem Linux-Dienst stehen die Startfehler im Journal (journalctl --user -u oar), nicht in server-; siehe Status und Logs |
| Alles, was das Relay getan hat: Previews, Tunnel, Updates, Neustarts | relay-. Es zeigt dein Zugriffstoken als [token] |
| Eine Konversation antwortet nicht, oder ihr Agent stoppt | worker-<session>., der Worker dieser Konversation. Die Copilot-Extension-Engine hat keines; siehe ext- und das Copilot-Terminal |
| Der Dienst startet nicht | systemctl --user status oar, dann journalctl --user -u oar |
Alle Log-Dateien, ihre Rotation und den Ordner bei einem git-Checkout findest du unter Dateien und Ordner.
Im Browser #
- Der Statuspunkt oben in der Konversationsliste: Grau ist Web relay unreachable (Web-Relay nicht erreichbar; der Browser erreicht das Relay nicht), Grün ist Web relay reachable (Web-Relay erreichbar), Bernstein ist das Relay, erreicht über einen verbundenen Cloudflare-Tunnel. Der Tooltip sagt mehr, zum Beispiel wie viele Worker beschäftigt sind. Der Statuspunkt
- Das Banner
CLI is offline — messages will queue until it reconnectsund CLI offline in der Seitenleiste heißen, dass sich 10 Sekunden lang kein Session-Worker gemeldet hat. Bei einem untätigen Relay ist das normal: Schick eine Nachricht, und das Banner verschwindet. Bleibt es, lies das Worker-Log. Wenn der Agent nicht erreichbar ist
Neu starten #
| Was | Wann | Wie |
|---|---|---|
| Der Agent einer Konversation | Eine Konversation hängt, Stop (Stoppen) wirkt nicht, oder der Agent soll neue Einstellungen übernehmen | ☠️ Kill session (Session beenden) im ⋯-Menü. Verlauf und Queue bleiben; die nächste Nachricht startet einen frischen Worker. Kill session |
| Das Relay | Eine neue Version, eine geänderte Config, eine neu installierte Provider-CLI | oar restart auf dem Rechner des Relays oder 🌄 Restart web relay (Web-Relay neu starten) im ⋯-Menü. Beide warten auf laufende Turns, außer unter dem Linux-Dienst, wo oar restart sie beendet. Das Relay neu starten |
Symptome #
Installieren und starten #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
npm install -g @oar- schlägt mit EACCES fehl |
Der globale Ordner von npm braucht Root-Rechte | Nutze den Installer, nicht sudo. Installation |
Node.js zu alt oder nicht gefunden; oar: command not found; oar in PowerShell blockiert |
Node.js unter 22.13, oder der PATH ist nicht neu geladen |
Installation |
| Die Installation schlägt mit Fehlern von node-gyp oder prebuild fehl | Kein vorgebautes better- für deine Plattform |
Installation |
Das Relay startet nach einer Installation mit npm 12 nicht, mit einem Fehler von better- |
npm 12 hat die Installationsskripte übersprungen | Installiere neu mit --allow-, nie mit --ignore-. Installation. Der Fehler steht in server-, wenn oar start das Relay gestartet hat, sonst im Journal |
Port 3333 is in use by another program ... |
Ein anderes Programm oder ein altes Relay belegt den Port | Wenn es nicht startet |
The relay did not come up — see …/ |
Das Relay ist gestartet und hat sich beendet | Wenn es nicht startet |
Relay already running oder Relay appears to be owned by another live process, Exit-Code 78 |
Ein zweites Relay auf demselben Datenordner | Folg dem Hinweis am Ende der Zeile (oar stop, or end process <pid>). Ein Relay pro Datenordner |
[data] Not starting: each database has changes newer than the other's |
Neu in 0.9.14 Das Relay hat eine frühere Datenbank gefunden, auf der es lief, und beide enthalten Arbeit | Behalte eine, verschieb copilot., -wal und -shm der anderen in einen eigenen Ordner, dann oar start. Upgrade-Hinweise für 0.9.14 |
[oar] The relay … is bringing over the database it ran on until now … |
Neu in 0.9.14 Der erste Start nach dem Update kopiert eine große Datenbank | Warte; es antwortet, sobald das erledigt ist. Starte kein zweites Relay. Upgrade-Hinweise für 0.9.14 |
Nach dem Update sind die Konversationen eines Relays aus dem Windows-Autostart oder von gh copilot weg |
Vor 0.9.14 hielt dieses Relay seine Daten im Paket | Upgrade-Hinweise für 0.9.14 |
[startup] Cannot create … oder … is a file, not a folder, Exit-Code 78 |
Neu in 0.9.14 Der Daten- oder Upload-Ordner kann nicht angelegt werden, zum Beispiel weil sein Laufwerk fehlt | Mach das Laufwerk oder den Ordner verfügbar. Warten auf TEMP und das Datenlaufwerk |
No systemd user session here, Could not enable lingering, das Relay ist nach einem Neustart weg |
Keine systemd-Benutzersitzung, oder Lingering ist aus | Start bei der Anmeldung |
| WSL: Der Windows-Browser zeigt eine andere Seite oder lehnt das Token ab | Windows belegt den Port | oar setup --port <port>. Wenn es nicht startet |
Unter dem Dienst wird ein Tool oder node in Sessions nicht gefunden |
Der Dienst behält den PATH von seiner Installation |
Start bei der Anmeldung |
Nothing changed: OAR does not delete or overwrite an autostart entry it did not make. (Windows) |
Neu in 0.9.15 Ein Autostart-Eintrag, Start-Task oder Launcher, von Hand angelegt oder bearbeitet, steht dem Wechsel im Weg | Entferne ihn selbst, oder führ den Wechsel mit --replace aus, das eine Kopie behält. Einträge, die OAR nicht angelegt hat |
Nothing changed: the boot task could not be read (…) (Windows) |
Neu in 0.9.15 Der Task ist da, aber OAR kann ihn nicht lesen, oft Access is denied, weil er das Passwort eines anderen Kontos speichert | Sieh ihn dir in der Aufgabenplanung als Administrator an. Einträge, die OAR nicht angelegt hat |
oar uninstall stoppt mit Not done: … |
Neu in 0.9.15 Ein Schritt ist fehlgeschlagen: Das Relay hat nicht gestoppt, eine Administrator-Abfrage wurde abgelehnt, ein Ordner ließ sich nicht löschen | Kläre die Zeile davor und führ denselben Befehl erneut aus. oar uninstall |
Ein versteckter Ordner . bleibt neben dem entfernten Paket zurück |
Neu in 0.9.15 Ein Session-Worker lief noch aus dem Paket, während npm es entfernte | Lösch den Ordner, sobald diese Programme beendet sind, spätestens nach einem Neustart. oar uninstall |
Anmelden und das Relay erreichen #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
| Invalid token (Ungültiges Token) im Anmeldefeld | Ein altes oder falsches Token | Nutze das Token aus oar url. Wenn es nicht startet |
| Too many failed sign-in attempts. Try again in … seconds. (Zu viele fehlgeschlagene Anmeldeversuche. Versuch es in … Sekunden erneut.) | Zehn falsche Tokens von dieser Adresse innerhalb einer Minute | Warte, bis die Minute um ist, und nutze dann das richtige Token. Hinter einem Proxy auf einem anderen Rechner setz trust, sonst teilen sich alle Besucher eine Sperre. Schutz bei der Anmeldung |
Ein Skript bekommt 401 auf API- oder Dateiadressen mit ?token= |
Seit 0.9.11 meldet ?token= nur die Seite an |
Schick Authorization: Bearer <token>. Wie du es vorzeigst |
| Jedes Gerät fragt erneut nach dem Token | oar setup --new- meldet alle Geräte ab |
Wenn du das Token verlierst |
| Der Statuspunkt ist grau: Web relay unreachable | Das Relay ist gestoppt, oder die Adresse ist falsch | Führ oar status auf dem Rechner des Relays aus. Der Statuspunkt |
| Ein Handy kann die Adresse nicht öffnen | Der Zugriff ist this machine only (nur dieser Rechner) | oar setup --lan oder ein Tunnel. Vom Handy aus |
Der Tunnel ist aus (cloudflared is not installed) oder verbindet sich ständig neu |
cloudflared fehlt, das Token ist falsch, oder die SSH-Anmeldung schlägt fehl |
Cloudflare-Tunnel, SSH-Tunnel |
| Nachrichten bleiben eingereiht, und die Queue ist pausiert | Der Tunnel ist als required eingestellt und nicht verbunden |
Dieselben zwei Abschnitte |
| Hinter Caddy oder nginx verbindet sich die Seite endlos neu, ist unter einem Präfix leer oder fragt immer wieder nach dem Token | Der Proxy blockiert WebSockets, entfernt ein Präfix oder braucht mehr Einstellungen | Reverse Proxy |
Hinter einem Proxy lädt die Seite, aber nichts aktualisiert sich live, und das Relay-Log sagt Refused a handshake from origin |
Der Proxy schreibt den Header Host um |
Trag die öffentliche Herkunft in allowed ein. allowed |
Eine Konversation startet nicht, oder der Agent antwortet nicht #
Jede Provider-Seite endet mit den Fehlern, die dieser Provider erzeugen kann. Eine fehlgeschlagene Antwort nennt meist ihre Ursache und hat oft einen Button, der sie behebt.
| Provider | Typische Fehler | Lösung |
|---|---|---|
| GitHub Copilot | Speichern von SDK wird abgewiesen (COPILOT_SDK_PATH did not resolve), die Runtime konnte sich nicht authentifizieren, kein KI-Guthaben mehr, oar copilot sagt, dass die GitHub CLI fehlt |
GitHub Copilot, Wenn das Speichern von SDK abgewiesen wird |
| OpenAI | Open, die Modellerkennung ist fehlgeschlagen, Open |
OpenAI |
| Claude | Fehlt in New Chat (Neuer Chat), Not logged in, eine Antwort, die auf die Abrechnung verweist, Neu in 0.9.18 relay. |
Claude |
| Claude API | Neu in 0.9.18 Der Key liegt außerhalb eines Workspace (HTTP 400), das Monatslimit ist erreicht, erkennbar an relay. oder daran, dass New Chat Start on subscription (Mit Abo starten) anbietet, der Key wird nicht akzeptiert (relay.), das Guthaben- oder Ausgabenlimit des Kontos (relay., relay.), die Karte zeigt no price known für ein Modell |
Claude API, Fehler |
| Claude Cloud | Die Anmeldung ist abgelaufen, GitHub ist nicht verbunden, keine Cloud-Umgebung | Claude Cloud |
| Cursor | Cursor API key is not configured, Cursor model "…" is not available |
Cursor |
| Grok | Grok CLI was not found on PATH, Grok authentication failed |
Grok |
| DeepSeek | Neu in 0.9.17 Das Guthaben ist aufgebraucht (relay.), der Key wird nicht akzeptiert (relay.), zu viele Anfragen gleichzeitig (relay.); andere Fehler erscheinen als relay., zum Beispiel relay. |
DeepSeek, Fehler |
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
| Ein Provider fehlt in New Chat | Er ist abgeschaltet oder hat keinen Key oder keine Anmeldung | Die Seite des Providers oben; Ein abgeschalteter Provider |
| Set up a provider (Provider einrichten) auf dem ersten Bildschirm | Kein Provider ist bereit | Der erste Blick |
| Die Modellliste ist alt oder falsch | Die Erkennung muss noch einmal laufen | 🤗 Select Models → Refresh (Modelle auswählen → Aktualisieren); pro Provider auf seiner Seite oben |
| Keine Verbrauchszeile unter einer Antwort | Nur Copilot-Turns zeichnen Plan-Verbrauch auf | GitHub Copilot |
| Eine Karte in Check Usage (Verbrauch prüfen) zeigt Error (Fehler), Unavailable (Nicht verfügbar) oder nur Schätzungen | Das Live-Auslesen ist fehlgeschlagen; die Karte greift auf das zurück, was sie hat | Aktualisieren und wie frisch die Zahlen sind |
Ein Turn hängt, schlägt fehl oder startet neu #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
Das Banner CLI is offline |
Kein Worker hat sich gemeldet | Wenn der Agent nicht erreichbar ist |
| Ein langer Turn geht zurück in die Queue und startet neu | Max turn duration (Maximale Turn-Dauer) (standardmäßig 60 Minuten) oder das Inaktivitätsfenster (10 Minuten) ist abgelaufen | Erhöhe oder leere Max turn duration in Settings → General (Einstellungen → Allgemein). Wenn ein Turn hängt |
System note: the … runtime sent nothing for Ns ... |
Die Stille-Überwachung der Copilot-SDK-Engine, von Cursor oder Grok hat den Turn beendet | Schick die Nachricht erneut. Wenn ein Turn fehlschlägt |
Relay timeout after 5 attempts oder Relay recovery limit reached |
Der Turn wurde neu eingereiht, bis die Versuche aufgebraucht waren | Wenn ein Turn fehlschlägt |
| Eine Konversation scheint festzustecken; Stop tut nichts | Der Worker hängt | ☠️ Kill session, dann schick die Nachricht erneut. Kill session |
| Nachrichten bleiben ausstehend | Ein Neustart ist eingereiht und hält neue Nachrichten zurück, oder ein anderes Relay nutzt die Datenbank | Der Neustart wartet, Ein Relay pro Datenordner |
| Neue Nachrichten bleiben eingereiht, und ein Banner sagt Relay restart queued — waiting for N sessions | Ein Neustart ist eingereiht und wartet auf die laufenden Turns der Sessions, die er nennt; bis dahin wird keine Nachricht an eine Session übergeben | Warte, oder drück Restart now (Jetzt neu starten) oder Cancel restart (Neustart abbrechen) im Banner. Nach Ask after a queued relay restart has waited (Nachfragen, nachdem ein eingereihter Relay-Neustart gewartet hat) (standardmäßig 30 Minuten) fragt das Banner, statt weiter zu warten. Der Neustart wartet |
| Nachrichten an eine Konversation bleiben nach einem Neustart des Relays eingereiht | Ihr Worker hat sich noch nicht wieder verbunden. Er versucht es von selbst erneut, höchstens 8 Sekunden auseinander, und seit 0.9.13 auch, wenn sein Verbindungsaufbau hängt | Ihr worker-<session>. hat pro fehlgeschlagenem Versuch eine Zeile worker ws disconnected (die ersten drei, dann eine pro Minute), die sagt, warum. ☠️ Kill session startet einen neuen Worker. Wenn der Agent nicht erreichbar ist |
| Nach einem Neustart des Relays hat eine Session mitten im Turn aufgehört und nichts mehr getan | Ihr Turn konnte nicht erneut laufen: Der Agent hatte die Nachricht schon übernommen | Schick ein kurzes „carry on“, oder schalte After a relay restart, tell interrupted sessions to carry on (Nach einem Relay-Neustart unterbrochene Sessions weitermachen lassen) in Settings → General ein. Eine Zeile relay, die sagt, dass das Relay neu gestartet ist, ist diese Notiz. Einer unterbrochenen Session sagen, dass sie weitermachen soll |
| Ein Senden schlägt fehl mit This conversation's model "…" is no longer available. Choose a model and send again. | Das Senden nannte kein Modell, und das Copilot-Modell, auf das die Konversation eingestellt war, ist aus dem Katalog verschwunden. Seit 0.9.13 wechselt das Relay nicht mehr von selbst auf ein anderes Modell | Wähl im Eingabebereich ein Modell und sende erneut. Modelle und Reasoning |
| Restart web relay oder Empty queue (Queue leeren) zeigt einen Fehler | Das Relay hat die Anfrage abgewiesen und nennt den Grund, oder es hat nicht geantwortet | Restart web relay, Empty queue |
| Eine für das Relay gesetzte Variable wirkt nicht auf die Agents | Unter tmux erreicht sie nur eine feste Liste von Variablen | Welche Variablen die Agents erreichen |
| Eine Antwort hat mit einer Notiz Paused (Pausiert) aufgehört | Ein Nutzungslimit | Wenn ein Nutzungslimit erreicht ist |
| Ein Hintergrund-Agent oder eine Shell hat von selbst aufgehört | Er hat den Background task timeout (Timeout für Hintergrund-Tasks) erreicht (standardmäßig 4 Stunden) | Timeout für Hintergrund-Tasks |
Eine Task-Zeile zeigt in Bernstein no output for N min |
Der Befehl hat länger als Mark a background task as quiet after (Hintergrund-Task als still markieren nach) (standardmäßig 10 Minuten) nichts geschrieben | Öffne seine Konsole, um die letzten Zeilen zu sehen. Manche Schritte sind lange still; erhöhe die Einstellung, oder stoppe den Task mit Stop, wenn er hängt. Stille Tasks |
| Die Konsole eines Befehls sagt This session did not report an output file for this task. | Eine Session, deren Agent vor dem Update auf 0.9.12 gestartet ist, oder eine Shell ohne Stop auf der SDK-Engine von Copilot | Im zweiten Fall ☠️ Kill session auf einer untätigen Session; die nächsten Befehle haben eine Konsole. Nach Provider |
| Eine Konsole sagt This task's output is no longer available. | Der Task ist vor mehr als einer Stunde zu Ende gegangen, oder er lief vor dem Update auf 0.9.13, und das Relay hat seitdem neu gestartet | Abgeschlossene Befehle, Nach einem Neustart des Relays |
| Eine Konsole endet bei Output stops here: this command pipes into tail | Ein Befehl, der in tail geleitet wird, schreibt nichts, bis er endet; die Ausgabe kommt dann |
Um einen solchen Lauf live zu verfolgen, lass ihn in eine Datei loggen (> run.) und verfolge diese Datei. Befehle, die in tail geleitet werden |
| Nach einem Neustart des Relays sagt eine Konsole, dass sie auf ihren Worker wartet, ohne Stop | Das Relay hat die Ausgabe des Befehls behalten, aber nur sein Worker kann sagen, ob er noch läuft | Warte ein paar Sekunden. Ein Befehl, dessen Worker nicht zurückgekommen ist, wird nach etwa anderthalb Minuten als beendet markiert. Nach einem Neustart des Relays |
| Der Wechsel zurück zu einer langen Konversation bringt nicht alle älteren Nachrichten zurück, die du geladen hattest | Nur Messages kept per conversation for switching back (Pro Konversation behaltene Nachrichten fürs Zurückwechseln) (standardmäßig 200) bleiben um deine Stelle herum erhalten, für die letzten acht Konversationen | Erhöhe den Wert in Settings → General. Neu laden, wechseln, drehen |
| Eine Konversation lässt sich nicht löschen oder archivieren | Ein Turn oder ein Hintergrund-Task läuft noch | Löschen |
| Eine fehlgeschlagene Antwort zeigt einen Button | Das Relay kennt die Lösung | Buttons an einer fehlgeschlagenen Antwort |
| Das Relay hat angehalten oder neu gestartet, und sein Log sagt JavaScript heap out of memory | Neu in 0.9.19 Der Speicher des Relays hat sein Heap-Limit erreicht | Das Relay startet von selbst wieder. Das Relay hatte keinen Speicher mehr |
Fragen und Freigaben #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
| Der Agent wartet, und nichts passiert | Eine Rückfrage- oder Freigabekarte ist offen, vielleicht auf einem anderen Gerät. Ein Turn, der auf eine Karte wartet, gilt nie als hängend | Beantworte die Karte oder drück Stop. Während eine Karte offen ist |
| Eine Freigabekarte nimmt deine getippte Antwort nicht an | Getippter Text ist kein Weg, Ja zu sagen | Nutze Allow (Erlauben) oder Deny (Ablehnen). Freigabekarten |
| Die Karte ist verschwunden, und der Agent hat weitergemacht | Niemand hat in 8 Stunden geantwortet (2 auf der Extension-Engine von Copilot), oder Stop hat sie geschlossen | Während eine Karte offen ist |
| Der Senden-Button lautet Queue (Einreihen) | Eine Karte ist offen; die Nachricht geht hinein, nachdem du geantwortet hast | Während eine Karte offen ist |
You are offline. Answer queued |
Keine Verbindung, als du geantwortet hast | Von woanders antworten |
| Ein Grok-Agent stellt eine Frage, und keine Karte erscheint | Grok hat keine Karten | Antworte im Eingabebereich. Grok |
| In einer Benachrichtigung fehlt ein Antwort-Button | Die Frage hat keine Auswahlmöglichkeiten, oder sie sind zu lang | Benachrichtigungen |
Agents, die mit anderen Sessions und Relays arbeiten #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
Der Agent hat kein Tool für Sessions oder meldet REMOTE_, REMOTE_ oder REMOTE_ |
Der Schalter ist aus, oder ein Limit greift | Agent-Sessions |
REMOTE_ |
Du hast das Relay in dieser Konversation nicht erwähnt | Gekoppelte Relays |
| Ein Relay zeigt Offline oder Token not accepted (Token nicht akzeptiert) | Das andere Relay ist aus, oder sein Token hat sich geändert | Gekoppelte Relays |
Die Agents eines anderen Relays können hier keine Prompts senden (REMOTE_) |
Accept prompts from other relays' agents (Prompts von Agents anderer Relays annehmen) ist aus | Gekoppelte Relays |
| Das Beobachten einer Session auf einem gekoppelten Relay sagt, dass es ein Update braucht | Das andere Relay läuft mit einem älteren OAR | Sessions auf einem gekoppelten Relay |
REMOTE_ |
Der Agent hat ein Modell genannt, das das Ziel-Relay für den Provider nicht listet, zum Beispiel gpt- für gpt- |
Die Antwort nennt die ähnlichen Treffer und die gültigen IDs. Welche Modelle akzeptiert werden |
| Ein beobachtender Agent wird nicht mehr geweckt, wenn ein Shell-Befehl endet | Seit 0.9.13 lassen die Standard-Ereignisse Shell-Befehle weg, die gut geendet haben; Fehler wecken ihn weiterhin | Abonniere mit task_ in events. Die Standard-Ereignisse |
Jeder andere Code REMOTE_ |
Fehler |
Dateien, Previews und Teilen #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
| File not found (Datei nicht gefunden) beim Klick auf einen Pfad in einer Antwort | Ein absoluter Pfad außerhalb des Workspace wird als Workspace-Pfad gelesen | Wohin ein Link in einer Antwort führt, Was der Viewer öffnen kann |
| Ein Dateilink schlägt fehl, oder eine Datei öffnet sich nicht | Die Datei liegt außerhalb dessen, was der Viewer lesen darf | Was der Viewer öffnen kann |
| Ein Ordner im Dateibrowser öffnet sich leer | Das Relay kann ihn nicht lesen | Grenzen |
| Der Agent soll committen, rückgängig machen oder pushen, aber Git changes (Git-Änderungen) hat keinen Button | Diese Ansicht zeigt nur Änderungen | Was es nicht tut |
Ein Preview-Link öffnet sich nicht, zeigt No such preview oder Preview upstream unreachable, oder die Seite ist leer |
Die Lane ist aus, der Dev-Server ist gestoppt, oder die App schreibt absolute Pfade | Previews |
Preview lane is disabled oder Preview lane failed its startup checks |
Die Lane ist aus, oder eine Prüfung ist fehlgeschlagen | Wenn die Lane nicht starten will |
Too many live previews (max 8) |
Das Limit | Previews |
| Ein geteilter Link verlangt vom Betrachter eine Anmeldung, zeigt einen alten Stand oder lässt sich von niemand anderem öffnen | Cloudflare Access, eine Cache-Regel oder ein Relay, das nur auf diesem Rechner lauscht | Das Relay erreichen |
Ein geteilter Link antwortet 404 |
Das Teilen wurde beendet, der Link erneuert oder die Konversation gelöscht | Settings → Sharing (Einstellungen → Teilen) listet die Links, die funktionieren. Deine geteilten Links |
| Ein Pfad erscheint noch in einer geteilten Ansicht | Ein relativer Pfad oder einer in einem Bild | Pfade und Dateinamen |
| Eine Preview erscheint in Settings → Previews (Einstellungen → Previews) als nicht ausgeliefert | Das Relay konnte sie bei seinem Start nicht prüfen | Sie wird alle 15 Sekunden erneut geprüft. Previews nach einem Neustart |
Benachrichtigungen und die installierte App #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
| Der Schalter für Benachrichtigungen ist ausgegraut | Die Seite läuft nicht über HTTPS oder localhost |
Benachrichtigungen |
| Benachrichtigungen haben aufgehört oder kommen nur auf einem Gerät an | Im Browser blockiert, Gerät deaktiviert, oder ein anderes Gerät hat OAR im Vordergrund offen | Benachrichtigungen |
| Der Browser bietet keine Installation an | Das Relay läuft nicht über HTTPS oder localhost |
Was es braucht |
| Die App zeigt Enter your access token to connect (Gib dein Zugriffstoken ein, um dich zu verbinden) | Keine gültige Anmeldung in der App | In der App anmelden |
| Suspend host (Host in den Ruhezustand versetzen) fehlt oder tut nichts | Seine Einstellung ist aus, das Relay läuft nicht unter Windows, oder es läuft noch etwas | Den Host in den Ruhezustand versetzen |
Updates #
| Was du siehst | Übliche Ursache | Lösung |
|---|---|---|
| Update (Aktualisieren) fehlt, oder die Prüfung findet nichts | Ein git-Checkout, eine ausgeblendete Version, oder keine neuere Version bekannt | Wenn es nicht funktioniert |
| Check for updates (Nach Updates suchen) ist ausgegraut | OAR_ ist beim Relay gesetzt |
Wenn es nicht funktioniert |
oar update endet mit 1 und Could not fetch … oder verweist auf --to |
Das Manifest lässt sich nicht abrufen, oder die Prüfung ist abgeschaltet | oar update --to X. funktioniert weiterhin. Wenn es nicht funktioniert |
oar update --to= installiert das neueste Release |
--to= wird ignoriert |
Schreib --to 0. mit Leerzeichen. oar update |
Ein Update schlägt mit EACCES fehl |
npm kann nicht in den Ordner des Pakets schreiben | Wenn es nicht funktioniert |
| Nach einem Update läuft noch die alte Version | Der Neustart wartet auf laufende Turns, oder das Update wurde nicht angewendet | Der Neustart wartet, Wenn es nicht funktioniert |
| Die installierte App zeigt eine alte Seite | Sie wechselt beim Start auf die neue Version | Updates |
Das Relay hatte keinen Speicher mehr Neu in 0.9.19 #
Das Relay startet mit einem festen Heap-Limit: 60 % des RAM des Rechners, in Schritten von 64 MB, mindestens 2.048 MB und höchstens 8.192 MB, und nie unter dem eigenen Standard von Node.js, aber nie über dem vorhandenen Speicher. In einem Container mit Speicherlimit zählt dieses Limit statt des RAM. Auf einem Rechner mit 4 GB sind das etwa 2,3 GB. Jeder Start schreibt das Limit und seine Herkunft ins Log:
[relay] heap limit 2368 MB (default: 60% of 3.9 GB RAM)
Beim Start und alle 10 Minuten bekommt das Log eine Zeile wie [relay] memory rss=, und eine zusätzliche Zeile [relay] memory high: …, wenn der belegte Heap 80 % des Limits überschreitet.
Hat das Relay keinen Speicher mehr, startet es von selbst wieder, wie nach jedem Absturz: bis zu 2-mal hintereinander, und der 3. Absturz in Folge beendet es mit Exit-Code 1, worauf der systemd-Dienst unter Linux es wieder startet. Ein Lauf von 10 Minuten oder mehr setzt die Zählung zurück. Vor 0.9.19 blieb ein Relay, dem der Speicher ausging, gestoppt. Nach einem Update von einer früheren Version wirken das Heap-Limit und dieser Neustart erst, wenn oar selbst einmal gestoppt und wieder gestartet wurde (Upgrade-Hinweise für 0.9.19).
Um das Limit selbst zu setzen, trag heap (ganze MB, mindestens 512) in config. ein und starte das Relay neu. Ein --max- in NODE_ oder auf der node-Befehlszeile, die server. startet, hat Vorrang vor heap. Anders als heap geht ein in einer Shell gesetztes NODE_ verloren, wenn etwas anderes das Relay neu startet.
Der Heap-Snapshot #
Nähert sich der Heap seinem Limit, schreibt Node.js einen Heap-Snapshot (Heap.<date>.<time>.<pid>.) in den Ordner diagnostics im Datenordner des Relays (Dateien und Ordner). Das Relay legt den Ordner an und schreibt beim Start seinen Pfad ins Log; unter Linux und macOS kannst nur du ihn öffnen.
- Datenträger: Ein Snapshot ist etwa so groß wie der belegte Heap, also bis zum Limit groß. Hat das Laufwerk des Datenordners weniger als das Doppelte des Heap-Limits frei, startet das Relay ohne Snapshot und schreibt ins Log, warum.
- Speicher: Das Schreiben kann bis zu etwa das Doppelte des belegten Heaps brauchen, und das Relay antwortet währenddessen nicht. Auf einem kleinen Rechner kann das Schreiben scheitern oder dazu führen, dass der Prozess beendet wird; das Relay endet dann so, wie es ohne Snapshot geendet hätte.
- Lesen: Kopier ihn vom Rechner, öffne ihn in Chrome DevTools unter Memory → Load (Speicher → Laden) und sortier nach Retained size (beibehaltene Größe), um zu sehen, was den Speicher belegt. Ein Snapshot aus einem früheren, gesunden Lauf zeigt, was gewachsen ist.
Ein Snapshot enthält deine Geheimnisse
Ein Heap-Snapshot enthält alles, was im Speicher des Relays war, auch das Zugriffstoken und die API-Keys der Provider. Teile nie einen unverändert, und lösch ihn, sobald er gelesen ist: Das Relay löscht Snapshots nie.
Ein Problem melden #
Wenn nichts von oben hilft, eröffne ein Issue unter github.com/oar-sh/oar/issues. Gib an:
- die Ausgabe von
oar --version; - die Ausgabe von
oar doctorund vonoar status; - was du getan hast, was du erwartet hast und was passiert ist, mit der genauen Meldung;
- die relevanten Zeilen des Logs, das zum Problem passt (Logs), nicht die ganze Datei.
Entferne zuerst Geheimnisse
Bevor du etwas postest, entferne Zugriffstokens (auch den Teil ?token= einer
Adresse), API-Keys und Tunnel-Tokens, und ersetze persönliche Pfade, Hostnamen
und Kontonamen. Das Issue ist öffentlich.