Pipeline
- Markdown in IR analysieren (
markdownToIR) – Klartext plus Stilspannen (fett, kursiv, durchgestrichen, Code, Codeblock, Spoiler, Blockzitat, Überschrift 1–6) und Link-Spannen. Offsets sind UTF-16-Codeeinheiten, sodass Signal-Stilbereiche direkt mit dessen API übereinstimmen. Tabellen werden nur analysiert, wenn für den Kanal ein Tabellenmodus aktiviert ist. - IR segmentieren (
chunkMarkdownIR/renderMarkdownIRChunksWithinLimit)- Die Aufteilung erfolgt vor dem Rendern anhand des IR-Texts, sodass Inline-Stile und Links für jedes Segment zugeschnitten werden, statt an einer Grenze unterbrochen zu werden.
- Pro Kanal rendern (
renderMarkdownWithMarkers) – eine Zuordnung von Stilmarkierungen wandelt Spannen in das native Markup des Kanals um.
IR-Beispiel
Eingabe-Markdown:Tabellenverarbeitung
markdown.tables steuert pro Kanal und optional pro Konto, wie ein Kanal
Markdown-Tabellen konvertiert:
Plugin-Standardeinstellungen pro Kanal: Signal, WhatsApp und Matrix verwenden standardmäßig
bullets; Mattermost verwendet standardmäßig off; Telegram verwendet standardmäßig block (was
zu code aufgelöst wird, sofern für das Konto nicht richMessages aktiviert ist). Jeder
Kanal ohne explizite Plugin-Standardeinstellung verwendet als Fallback code.
Segmentierungsregeln
- Segmentgrenzen stammen aus den Kanaladaptern bzw. der Konfiguration und gelten für IR-Text, nicht für die gerenderte Ausgabe.
- Codeblöcke mit Fences werden als einzelner Block mit abschließendem Zeilenumbruch beibehalten, damit Kanäle die schließende Fence korrekt rendern.
- Listen- und Blockzitatpräfixe sind Teil des IR-Texts, sodass die Segmentierung niemals innerhalb eines Präfixes trennt.
- Inline-Stile werden niemals über mehrere Segmente getrennt; der Renderer öffnet einen offenen Stil am Anfang des nächsten Segments erneut.
Link-Richtlinie
- Slack:
[label](url)-><url|label>; reine URLs bleiben unverändert. - Telegram:
[label](url)-><a href="url">label</a>(HTML-Analysemodus). - Signal:
[label](url)->label (url), sofern die Beschriftung nicht bereits mit der URL übereinstimmt.
Spoiler
Spoiler-Markierungen (||spoiler||) werden für Signal analysiert (Zuordnung zu
SPOILER-Stilbereichen) und für Telegram (Zuordnung zu <tg-spoiler>). Andere Kanäle behandeln
||...|| als Klartext.
Kanalformatierer hinzufügen oder aktualisieren
- Einmal analysieren mit
markdownToIR(...)und dabei kanalgeeignete Optionen übergeben (autolink,headingStyle,blockquotePrefix,tableMode). - Rendern mit
renderMarkdownWithMarkers(...)und einer Zuordnung von Stilmarkierungen (oder benutzerdefinierter Stilbereichslogik für Transporte wie Signal). - Segmentieren mit
chunkMarkdownIR(...)oderrenderMarkdownIRChunksWithinLimit(...), bevor jedes Segment gerendert wird. - Adapter anbinden, sodass der neue Segmentierer und Renderer über den ausgehenden Sendepfad aufgerufen werden.
- Testen mit Formatierungstests sowie einem Test der ausgehenden Zustellung, wenn der Kanal segmentiert.
Häufige Fallstricke
- Slack-Tokens in spitzen Klammern (
<@U123>,<#C123>,<https://...>) müssen die Maskierung überstehen; unverarbeitetes HTML muss weiterhin sicher maskiert werden. - Telegram-HTML erfordert die Maskierung von Text außerhalb der Tags, um fehlerhaftes Markup zu vermeiden.
- Signal-Stilbereiche verwenden UTF-16-Offsets, nicht Codepunkt-Offsets.
- Behalten Sie abschließende Zeilenumbrüche bei Codeblöcken mit Fences bei, damit die schließende Markierung in einer eigenen Zeile steht.
Verwandte Themen
Streaming und Segmentierung
Verhalten beim ausgehenden Streaming, Segmentgrenzen und kanalspezifische Zustellung.
System-Prompt
Was das Modell vor der Unterhaltung sieht, einschließlich eingebundener Workspace-Dateien.