Zum Artikel springen
HB CodeDocsApp herunterladen

HandbuchMitgelieferte Tools

Dokumente, Sprache, Video, Benachrichtigungen, Sessions und Session-Nachrichten

Der Rest des hbcode-Namensraums: Erklärvideos mit Sprechertext, Sprache und Videoanalyse mit Ihrem Gemini-Schlüssel, Push-Meldungen über den Relay, Session-Verwaltung und Nachrichten zwischen Sessions.

Gegen den Quellcode geprüft am 5. Oktober 2026

Auf dieser Seite

Die Tools, die der Agent aufrufen kann

Ein Codex-Thread behält seine erste Tool-Liste, und Claude bekommt bei jedem Run eine neue
Ein Codex-Thread behält seine erste Tool-Liste, und Claude bekommt bei jedem Run eine neueDie Zeit läuft über drei Runs von links nach rechts. Nach Run 1 wird ein Gemini-Schlüssel gespeichert und nach Run 2 gelöscht. Codex-Session A startet in Run 1 und behält in allen drei Runs 4 Tools. Codex-Session B startet in Run 2 und behält 7 Tools. In Run 3 schlagen ihre Gemini-Aufrufe fehl, weil der Schlüssel fehlt. Die Claude-Session erhält für jeden Run eine neue Liste: 4 Tools, dann 7 Tools, dann wieder 4 Tools.
Gemini-Schlüssel
Codex-Session AThread aus Run 1
Codex-Session BThread aus Run 2
Claude-Session Cneue Liste je Run
kein Schlüssel
Schlüssel gespeichert
Schlüssel gelöscht
Run 1
Run 2
Run 3
4 Tools, beim Thread-Start festgelegt
Schlüssel da, Liste unverändert
4 Tools + 3 Gemini-Tools
noch gelistet, Aufrufe scheitern
4 Tools
4 Tools + 3 Gemini-Tools
4 Tools
Die 4 Tools sind use_user_browser, maintain_sessions, manage_sessions und send_session_message. Das Benachrichtigungstool folgt auf die gleiche Weise der Benachrichtigungseinstellung.
  • Ein Katalogbuild_app_capabilities

    Fünf Tools stehen immer in der Liste: use_user_browser, maintain_sessions, manage_sessions und send_session_message. Ein gespeicherter Gemini-Schlüssel ergänzt synthesize_speech, create_explainer_video und extract_video_context. Desktop- und Telefon-Benachrichtigungen ergänzen send_mobile_notification.

  • Codex-ListedynamicTools

    Der Desktop sendet die Liste, wenn ein Thread startet. Die Anfrage thread/resume hat kein Feld dafür, deshalb behält eine fortgesetzte Session die Tools, mit denen sie begonnen hat.

  • Claude-ListeappCapabilities

    Der Desktop baut die Liste für jeden Run neu und sendet sie in der Anfrage open. Der Agent-Host registriert sie als SDK-MCP-Server hbcode.

  • Prüfung bei jedem Aufrufhas_gemini_api_key · show_notifications

    Ein Handler liest den Schlüssel oder die Einstellung bei jedem Aufruf neu. Ein Tool, das ein Codex-Thread noch auflistet, schlägt sofort fehl, nachdem Sie den Schlüssel gelöscht oder die Benachrichtigungen ausgeschaltet haben.

Codex und Claude teilen sich einen Tool-Katalog und einen Satz Desktop-Handler. Die Funktion build_app_capabilities erstellt die Liste. Fünf Tools stehen immer darin: use_user_browser, maintain_sessions, manage_sessions und send_session_message. Desktop- und Telefon-Benachrichtigungen ergänzen send_mobile_notification. Ein gespeicherter Gemini-Schlüssel ergänzt synthesize_speech, create_explainer_video und extract_video_context. Die volle Liste hat 8 Tools. Die Agenten unterscheiden sich darin, wann sie die Liste bekommen und wie ein Aufruf den Desktop erreicht.

SchrittCodexClaude
Die Liste trifft einAls dynamicTools im Namespace hbcode, wenn ein Thread startet. Die Anfrage thread/resume hat kein Feld dafür.Als appCapabilities in der Anfrage open jedes Runs. Der Agent-Host registriert sie als SDK-MCP-Server mit dem Namen hbcode.
Eine Einstellung ändert sich späterDer Thread behält seine erste Liste. Nur eine neue Codex-Session sieht die Änderung.Der nächste Run derselben Session sieht die Änderung.
Ein Aufruf trifft einDie Anfrage item/tool/call mit threadId, turnId und callId.Das Host-Ereignis toolCall mit requestId, tool, arguments und der toolUseId von Claude. Der Desktop antwortet mit der Anfrage toolResult.
Session und Run des AufrufsDer Desktop liest threadId und schlägt den dauerhaften Session-Link nach. Der Link deckt auch einen abgezweigten Sub-Agenten ab. Der Run ist der aktive Run dieser Session.Der Desktop bindet die Session, den Run und das Projektverzeichnis des Runs, dem der Host gehört. Ein Ereignis, das sessionId, runId oder projectDirectory nennt, lehnt er ab.
Identität des AufrufscallId.toolUseId. Ein Aufruf ohne sie verwendet requestId.

Die Argumente des Modells wählen nie die Session oder den Run. Ein Codex-Thread ohne Session-Link erhält den Tool-Fehler „is not linked to a HB Code session yet. Try the call again.“ Codex-Threads aus älteren Versionen senden noch sessionId, runId und projectDirectory als Argumente. Das Browser-Tool ignoriert sie.

Der Desktop führt Tool-Aufrufe von Claude als eigene Tasks neben dem Leser der Host-Ereignisse aus. Ein langsames Tool blockiert weder Stop noch Freigaben, Timeline-Updates oder andere Tool-Ergebnisse. Bricht Claude einen Aufruf ab, sendet der Host das Ereignis toolCancel, der Desktop bricht den Task ab, und Claude erhält das Ergebnis „Run stopped.“ Das Ende eines Runs bricht jeden noch offenen Aufruf ab.

Ein Handler prüft seine Einstellung oder seinen Schlüssel bei jedem Aufruf neu. Ein Tool, das ein Codex-Thread noch auflistet, stoppt sofort, wenn Sie den Gemini-Schlüssel löschen oder die Benachrichtigungen ausschalten.

Wer einen Tool-Aufruf freigibt

Codex fragt Sie vor dem Aufruf eines HB-Code-Tools nicht, auf keiner Zugriffsstufe. Codex sendet die Anfrage item/tool/call, und der Desktop startet den Handler sofort. Claude fragt vor einem Tool-Aufruf, wie es die Zugriffsstufe der Session vorgibt. Der Desktop gibt jedem Tool für Claude eine von drei Freigabeklassen, und die Funktion tool_approval enthält die Regel. Die Klasse gelangt im Feld approval jedes Tools zum Claude-Host.

  • Klasse read-only: maintain_sessions. Beide Agenten führen es sofort aus. Für Claude steht das Tool in allowedTools und hat die Annotation readOnlyHint.
  • Klasse desktop: send_session_message. Beide Agenten führen es sofort aus, und für Claude steht das Tool in allowedTools. Die Desktop-Regel im Tool kann die Nachricht in der Warteschlange des Empfängers zurückhalten.
  • Klasse agent: use_user_browser, manage_sessions, send_mobile_notification, synthesize_speech, create_explainer_video und extract_video_context. Codex führt sie sofort aus. Claude fragt Sie gemäß der Zugriffsstufe.

Der Host bildet allowedTools aus jedem Tool, dessen Klasse nicht agent ist. Das SDK nennt ein Tool mcp__hbcode__ plus den Tool-Namen. Ein Tool, das nicht in allowedTools steht, nimmt denselben Freigabeweg wie Claudes eigene Tools.

HTML-Dokumente

Ein angefordertes HTML-Dokument kann mit den nativen Agent-Tools erstellt werden, auch durch einen Subagenten. Der Autor wählt den Speicherort, schreibt Stile und Skripte und prüft das Ergebnis im Browser. Die letzte Nachricht verlinkt die gespeicherte Datei.

Dokumentlinks öffnen sich in den Dateibetrachtern auf Desktop, iOS und Android. Die Vorschau stellt das App-Design über --hb-*-CSS-Variablen bereit. Natives Erstellen ergänzt weder automatisch ein Dokument-Stylesheet noch eine Interaktionslaufzeit, eine Abschlussprüfung oder einen verwalteten Revisionsverlauf.

Antwortstil und Textüberarbeitung

Settings → Agents → Reply style wählt einen Stil für den Desktop und beide Mobil-Apps. Anfangs ist Simplified Technical English gewählt. Mit Default verwendet jeder Agent seinen eigenen Stil. Der Desktop verwaltet diese Einstellung und ihre Anweisungen.

Claude liest eine Stiländerung mit Ihrer nächsten Nachricht. Codex liest sie in neuen Sitzungen; eine ältere Sitzung kann sich nach der Kontextkomprimierung ändern. Simplified Technical English ergänzt die Anweisungen beider Agenten um die Regeln von ASD-STE100. Default ergänzt keinen Antworttext.

Jeder neue Video-Worker verwendet ebenfalls den aktuellen Stil. Er erhält den Abschnitt Narration des Stils: kurze gesprochene Sätze und keine Wörter über die Seite, den Bildschirm oder das Layout.

Die Eingabeaktion Rewrite in STE überarbeitet Ihren Entwurf in Simplified Technical English. Bedeutung, Fakten, Code, Pfade und Markdown bleiben erhalten. Der Desktop verwendet dafür eine separate Codex-Anfrage.

Beide Agenten erhalten in jedem Antwortstil auch die Regel für Anweisungen. agents/session_rules.rs verwaltet diesen Text. Der Desktop setzt ihn vor den Antworttext des Stils.

Die Regel für Anweisungen, genau so, wie jeder Agent sie erhält
Directions. When the user or another agent gives you an explicit direction, do one of these three things:
1. Do it. Do all of it. Report each part as done. If you cannot do a part, say which part and why.
2. Ask. If the direction has two or more meanings that give different results, ask one short question. If a normal default is clear, use that default. Say which default you used.
3. Object. A direction is wrong when it causes a fault, when it conflicts with a fact or a rule, or when a better way exists. If the direction is wrong, say why. Give the evidence. Then wait for a decision. If the user already confirmed the direction, do it.
Do not do a different thing without saying so. Do not stop after only a part of the direction. Do not move a part to "later" or "out of scope" without asking. Permission and safety rules always apply. An unsafe or unpermitted direction gets an objection.

Erklärvideos mit Sprechertext

Bitten Sie den Agenten um ein kurzes Erklärvideo. Geben Sie ihm die Frage, die Fakten und die Quellen. Das Tool create_explainer_video startet einen privaten Worker mit dem Agenten und Modell der Session. Der Worker erstellt animierte SVG-Szenen und prüft gerenderte Bilder vom Anfang und Ende jeder Szene. Seine privaten Entwürfe erscheinen nicht im Hauptchat.

Wenn der Worker fertig ist, erstellt der Desktop mit Ihrem Gemini-Schlüssel den Sprechertext und passt jede Szene an den gesprochenen Text an. Das vertonte Video muss 30–120 Sekunden dauern. Wenn nicht, scheitert der Abschluss mit der gemessenen Länge, und der Worker überarbeitet den Sprechertext und schließt erneut ab. Dann rendert der Desktop eine 1080p-MP4 mit 30 Bildern pro Sekunde. SVG-Rendering und Videokodierung laufen auf Ihrem Computer. Der Worker verwendet das Konto der Session, und der Sprechertext geht an Gemini.

Die Timeline zeigt Phase, Revision, Szenenzahl, Dauer und gerenderte Bilder. Eine fertige Zeile öffnet das gespeicherte Video. Die Prüfung nennt die Kontrollen und Einschränkungen. Übergeben Sie den gespeicherten videoPath bei einem späteren Aufruf, um dieselbe Datei zu überarbeiten. Bei einem Fehler oder Abbruch bleibt das vorige Video verfügbar.

Sprache und Video mit Ihrem Gemini-Schlüssel

Speichern Sie einen Gemini-API-Schlüssel unter Einstellungen → API Keys. Drei weitere Tools erscheinen in der Liste. Eine Claude-Session erhält sie beim nächsten Run. Eine Codex-Session erhält sie nur beim Start ihres Threads. Jedes Tool liest den Schlüssel bei jedem Aufruf. Wenn Sie ihn löschen, stoppt das Tool auch in Sessions, die es noch auflisten. Ohne Schlüssel scheitern synthesize_speech und create_explainer_video mit „Add a Gemini API key in Settings > API Keys.“ Der Schlüssel bleibt auf dem Desktop. Anfragen für Sprache und Videoanalyse gehen von Ihrem Computer direkt an Gemini.

  • Sprachausgabe. Der Desktop teilt den Text an Satzgrenzen in Blöcke von höchstens 1.800 Zeichen, synthetisiert drei gleichzeitig mit gemini-3.1-flash-tts-preview, wiederholt jeden Block zweimal mit wachsendem Backoff und fügt die 24-kHz-Mono-16-Bit-PCM-Teile mit 180 ms Stille dazwischen zu einer WAV-Datei unter agent-speech im Cache-Verzeichnis zusammen. Regieanweisungen bleiben außerhalb des gesprochenen Transkripts, und ein mehrteiliger Prompt weist das Modell an, die Teilnummer nicht vorzulesen. Dreißig vorgefertigte Stimmen stehen bereit, und Kore ist die Voreinstellung.
  • Videokontext. Die Quelle ist eine öffentliche YouTube-URL, eine öffentliche https-Video-URL oder eine lokale Aufnahme, mit der Absicht Tutorial oder Meeting. Eine YouTube-ID muss 11 Zeichen haben, und ein Playlist-Parameter wird abgelehnt. gemini-3.1-pro-preview läuft mit Temperatur 0,2 gegen ein JSON-Schema, das zu Markdown gerendert wird. Der Tutorial-Modus extrahiert Konzepte, Abläufe, Befehle, Code, Bildschirmtext und Vorbehalte; der Meeting-Modus extrahiert Entscheidungen, Anforderungen, Blocker, Aufgaben und offene Fragen. Das Ergebnis sind Notizen mit Zeitstempeln, auf Ihr Ziel zugeschnitten, mit benannten Lücken.

Videoquellen sind genau eine von youtube_url, local_file oder video_url. Eine entfernte URL braucht einen von zwölf unterstützten Video-MIME-Typen wie video/mp4, video/webm, video/quicktime oder video/mpeg, und Gemini muss sie direkt abrufen können. Es gibt keine Rückfallpfade: Eine private, unerreichbare oder mehrdeutige Quelle scheitert ausdrücklich.

Vom Agenten geschriebene Benachrichtigungen

Ein erfolgreicher Benachrichtigungsaufruf heißt nur, dass der Desktop sie für das Relay eingereiht hat
Ein erfolgreicher Benachrichtigungsaufruf heißt nur, dass der Desktop sie für das Relay eingereiht hatDer Aufruf send_mobile_notification des Agenten kehrt zurück, sobald der Desktop das Event in seinen Device-Link einreiht. Ist ein bereits gestarteter Link nicht bereit, startet der Desktop ihn neu und versucht es 8 weitere Male im Abstand von 250 ms, sodass der Agent nach etwa 2 Sekunden einen Fehler erhält. Hinter dem Relay meldet nichts mehr zurück: Ein Server ohne APNs oder FCM, ein Konto ohne registriertes Telefon und ein abgelehntes Token werden nur protokolliert, und ein Telefon ohne Benachrichtigungsberechtigung zeigt nichts an. Das Tool steht nur in der Liste, solange Desktop- und Telefonbenachrichtigungen eingeschaltet sind. Ein Codex-Thread legt die Liste fest, wenn er startet, und Claude bekommt die Liste bei jedem Run. Das Tool sendet nichts mehr, sobald die Einstellung ausgeschaltet ist.
Das Tool steht nur in der Liste, solange Benachrichtigungen an sind. Codex legt die Liste beim Thread-Start fest, Claude bei jedem Run.
angefordert, sobald eingereiht
Agent-Turnsend_mobile_notification
Desktop-LaufzeitDevice-Link
ab hier meldet nichts zurück
Regionaler Serverjedes Telefon im Konto
APNs · FCM
Telefone
kein APNs oder FCM oder kein Telefon registriert: protokolliert
Token abgelehnt: protokolliert
Benachrichtigungen nicht erlaubt: nichts angezeigt
Nicht bereit: Neustart, 8 Versuche alle 250 ms
0 s
2 s
konnte nicht angefordert werden
  • Angefordertagent-notification-requested

    Der Aufruf kehrt zurück, sobald das Event in einem verbundenen Device-Link eingereiht ist. Der Server verteilt es und sendet die Pushes danach selbstständig.

  • Sichtbarer Fehlerinitialize_connection

    Ist der Link nicht bereit, startet der Desktop ihn neu und versucht es 8 weitere Male. Mit ausgeschaltetem Allow Remote Access oder abgemeldet kommt er nie hoch, sodass der Fehler nach etwa 2 Sekunden eintrifft, oder sofort, wenn der Link seit dem App-Start nie gestartet wurde.

  • Stiller Verlustsend_agent_notification_push

    Hinter dem Relay kommt nichts zurück. Ein Server ohne APNs oder FCM, ein Konto ohne registriertes Telefon und ein abgelehntes Token werden nur protokolliert. Ein Telefon ohne Benachrichtigungsberechtigung zeigt nichts an.

Schalten Sie „Desktop and phone notifications“ unter Settings → General ein, und die Liste bekommt send_mobile_notification, ein Tool für eine Push-Meldung zur aktuellen Session pro Aufruf. Eine Claude-Session bekommt es bei ihrem nächsten Run. Eine Codex-Session bekommt es nur, wenn ihr Thread startet. Der Desktop prüft die Einstellung bei jedem Aufruf erneut. Schalten Sie sie aus, kommen sofort keine Meldungen mehr, auch aus Sessions, die das Tool noch haben. Jede Meldung nennt die Session und den Run, der aktiv ist, wenn der Agent das Tool aufruft. Die Zeile „Agent notifications“ darunter wählt die Anleitung in der Tool-Beschreibung: Important beschränkt es auf Ergebnisse und blockierende Fragen, Frequent ergänzt bedeutsame Meilensteine und Fehler, weist den Agenten aber weiterhin an, routinemäßige Fortschrittsmeldungen zu vermeiden. Beide Richtlinien stellen dasselbe Tool bereit. Der Titel fasst höchstens 60 Zeichen und der Text höchstens 180, das zwingt das Ergebnis nach vorn.

Session-Suche

maintain_sessions ist eine schreibgeschützte Sicht auf appdata.db mit drei Aktionen: guide, listSessions und resolveSession. Es verknüpft Sessions mit dem Workspace-Zustand des Projekts, der die aktive Session markiert, mit den Codex-Session-Links und mit der Tabelle claude_sessions. Es gibt den Agenten jeder Session aus, sortiert nach letzter Änderung, liefert standardmäßig 25 und höchstens 200 Zeilen und filtert nach dem Hash des Projektverzeichnisses. resolveSession liefert den Codex-Thread-Link oder die Claude-Session-ID einer Session. Das Tool kann weder Session-Metadaten noch den Zustand der aktiven Session ändern, und es ist kein SQL-Tool.

Nachrichten an eine andere Session

Mit send_session_message schreibt der Agent einer Session an eine andere HB-Code-Session. Der Empfänger kann mit Codex oder Claude laufen. Das Tool hat zwei Argumente: recipientSessionId und message. Die Absender-Session, ihr Run und die ID des Aufrufs kommen vom aufrufenden Agenten. Eine Empfänger-ID findet der Agent mit maintain_sessions.

Der Aufruf wartet nicht auf den anderen Agenten. Der Desktop legt die Nachricht in die Outbox des Empfängers und gibt eine Quittung zurück. Ein Empfänger, der läuft, bekommt die Nachricht in seinen laufenden Turn, nach dem aktuellen Schritt des Agenten. Ein Empfänger, der nicht läuft, startet einen Turn für sie. Eine Antwort kommt später als neue Nachricht in der Absender-Session, und das Tool weist den Agenten an, nicht darauf zu warten und nicht nachzufragen.

Status der QuittungBedeutung
queuedDie Nachricht steht in der Outbox des Empfängers und geht ohne Ihr Zutun hinaus.
waiting-for-approvalDie Nachricht steht in der Warteschlange des Empfängers und bleibt dort, bis Sie sie aus dieser Session senden. Die Quittung nennt den Grund und weist den Agenten an, es Ihnen zu sagen.
already-sentEin früherer Versuch desselben Tool-Aufrufs hat die Nachricht schon eingereiht. Der Desktop speichert in chat_session_messages eine Zeile je Absender-Session und Aufruf-ID, deshalb sendet ein Aufruf nie zweimal.

In diesen Fällen lehnt der Desktop einen Aufruf ab, bevor er etwas einreiht.

GrenzeWert
NachrichtentextEine leere Nachricht schlägt fehl.
AbsenderDie Absender-Session muss einen aktiven Run haben.
EmpfängerEine vorhandene Session, die nicht der Absender ist. Dieselbe Aufruf-ID kann keinen zweiten Empfänger nennen.

Eine Nachricht darf Arbeit nur mit dem Zugriff starten, den ihr Absender hatte. Der Desktop hält eine Nachricht für Ihre Freigabe zurück, wenn eine von zwei Regeln zutrifft. Er prüft die Regeln, wenn der Aufruf ankommt, und noch einmal kurz vor der Zustellung, weil sich die Einstellungen des Empfängers ändern können, während die Nachricht wartet. Wenn der Empfänger einen Turn ausführt, vergleicht der Desktop den Zugriff dieses Turns. Der Turn läuft mit der Zugriffsstufe, die der Empfänger in diesem Moment hat.

HalteregelDetail
Der Empfänger hat mehr ZugriffDie vier Stufen bilden eine Skala für beide Agenten: read-only, full auto, full access, unrestricted. Ein Empfänger über der Stufe des Absenders wartet.
Ein anderes ProjektDie Projektverzeichnisse sind verschieden und der Empfänger ist nicht read-only.

Der Agent des Empfängers bekommt die Nachricht als Benutzernachricht in einem Umschlag. Die erste Zeile ist reiner Text, und das Tag nennt den Absender. Um zu antworten, sendet der Agent eine Nachricht an from_session_id. Die Operations-ID einer Session-Nachricht beginnt mit session-message-. Ein Client kann eine solche ID nicht einreichen, deshalb nennt ein Tag, das Sie selbst tippen, keinen Absender.

Umschlag, den der Agent des Empfängers liest
Message from another HB Code session. Answer this message in one of three ways: do it, ask one question, or object with the reason.
<session_message from_session_id="…" from_title="…" from_agent="codex">
…message…
</session_message>

Der Desktop gibt Claude eine Regel in dem Text, den Claude an seinen System-Prompt anhängt: send_session_message für eine andere HB-Code-Session verwenden, weil Claudes eigene Tools SendMessage und ListAgents HB-Code-Sessions nicht erreichen.

Die Timeline des Absenders zeigt den Aufruf als Nachrichtenzeile „Message to <recipient title>“ mit dem Signal Sent, Needs approval oder Not sent. Solange die Zustellung Sent ist, ist der Name des Empfängers in der Zeile ein Link zur User-Zeile der Nachricht in der Empfänger-Session. Diese User-Zeile hat den Link zurück.

Wohin die Daten gehen

Die Browsersteuerung bedient Ihr Chrome, Sprache und Video senden Text oder Video unter Ihrem Schlüssel an Gemini, und Meldungen laufen über den regionalen Server.