Alur pemrosesan
- Uraikan Markdown menjadi IR (
markdownToIR) - teks biasa beserta rentang gaya (tebal, miring, coret, kode, blok kode, spoiler, kutipan blok, judul 1-6) dan rentang tautan. Offset menggunakan unit kode UTF-16 agar rentang gaya Signal selaras langsung dengan API-nya. Tabel hanya diuraikan jika kanal mengaktifkan mode tabel. - Potong IR (
chunkMarkdownIR/renderMarkdownIRChunksWithinLimit)- pemisahan dilakukan pada teks IR sebelum perenderan, sehingga gaya sebaris dan tautan dipotong per potongan alih-alih terputus pada batas.
- Render per kanal (
renderMarkdownWithMarkers) - peta penanda gaya mengubah rentang menjadi markup asli kanal.
Contoh IR
Markdown masukan: OC_I18N_900000 IR (skematis): OC_I18N_900001Penanganan tabel
markdown.tables mengontrol cara kanal mengonversi tabel Markdown, per
kanal dan secara opsional per akun:
Nilai bawaan Plugin per kanal: Signal, WhatsApp, dan Matrix menggunakan
bullets secara bawaan; Mattermost menggunakan off secara bawaan; Telegram menggunakan block secara bawaan (yang
ditetapkan menjadi code kecuali akun mengaktifkan richMessages). Setiap
kanal tanpa nilai bawaan Plugin eksplisit menggunakan code sebagai cadangan.
OC_I18N_900002
Aturan pemotongan
- Batas potongan berasal dari adaptor/konfigurasi kanal dan berlaku untuk teks IR, bukan keluaran yang telah dirender.
- Blok kode berpagar dipertahankan sebagai satu blok dengan baris baru di akhir agar kanal merender pagar penutup dengan benar.
- Awalan daftar dan kutipan blok merupakan bagian dari teks IR, sehingga pemotongan tidak pernah membagi di tengah awalan.
- Gaya sebaris tidak pernah terbagi di antara potongan; perender membuka kembali gaya yang masih aktif di awal potongan berikutnya.
Kebijakan tautan
- Slack:
[label](url)-><url|label>; URL polos tetap polos. - Telegram:
[label](url)-><a href="url">label</a>(mode penguraian HTML). - Signal:
[label](url)->label (url)kecuali label sudah cocok dengan URL.
Spoiler
Penanda spoiler (||spoiler||) diuraikan untuk Signal (dipetakan ke rentang gaya SPOILER)
dan Telegram (dipetakan ke <tg-spoiler>). Kanal lain memperlakukan
||...|| sebagai teks biasa.
Menambahkan atau memperbarui pemformat kanal
- Uraikan sekali dengan
markdownToIR(...), dengan meneruskan opsi yang sesuai untuk kanal (autolink,headingStyle,blockquotePrefix,tableMode). - Render dengan
renderMarkdownWithMarkers(...)dan peta penanda gaya (atau logika rentang gaya khusus untuk transportasi seperti Signal). - Potong dengan
chunkMarkdownIR(...)ataurenderMarkdownIRChunksWithinLimit(...)sebelum merender setiap potongan. - Hubungkan adaptor agar memanggil pemotong dan perender baru dari jalur pengiriman keluar.
- Uji dengan pengujian format serta pengujian pengiriman keluar jika kanal melakukan pemotongan.
Kendala umum
- Token kurung sudut Slack (
<@U123>,<#C123>,<https://...>) harus tetap utuh saat pengodean; HTML mentah tetap harus dikodekan dengan aman. - HTML Telegram memerlukan pengodean teks di luar tag untuk menghindari markup yang rusak.
- Rentang gaya Signal menggunakan offset UTF-16, bukan offset titik kode.
- Pertahankan baris baru di akhir blok kode berpagar agar penanda penutup berada pada baris tersendiri.
Terkait
Streaming dan pemotongan
Perilaku streaming keluar, batas potongan, dan pengiriman khusus kanal.
Prompt sistem
Hal yang dilihat model sebelum percakapan, termasuk berkas ruang kerja yang disuntikkan.