6.2 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Referensi: aturan sanitasi dan perbaikan transkrip khusus provider | Kebersihan Transkrip |
|
Kebersihan Transkrip (Perbaikan Provider)
Dokumen ini menjelaskan perbaikan khusus provider yang diterapkan pada transkrip sebelum sebuah run (membangun konteks model). Ini adalah penyesuaian dalam memori yang digunakan untuk memenuhi persyaratan provider yang ketat. Langkah kebersihan ini tidak menulis ulang transkrip JSONL tersimpan di disk; namun, pass perbaikan file sesi yang terpisah dapat menulis ulang file JSONL yang malformed dengan membuang baris yang tidak valid sebelum sesi dimuat. Saat perbaikan terjadi, file asli dicadangkan di samping file sesi.
Cakupan meliputi:
- Sanitasi id tool call
- Validasi input tool call
- Perbaikan pairing hasil alat
- Validasi / pengurutan giliran
- Pembersihan signature thought
- Sanitasi payload gambar
- Penandaan provenance input pengguna (untuk prompt yang dirutekan antar-sesi)
Jika Anda memerlukan detail penyimpanan transkrip, lihat:
Tempat ini berjalan
Semua kebersihan transkrip dipusatkan di embedded runner:
- Pemilihan kebijakan:
src/agents/transcript-policy.ts - Penerapan sanitasi/perbaikan:
sanitizeSessionHistorydisrc/agents/pi-embedded-runner/replay-history.ts
Kebijakan menggunakan provider, modelApi, dan modelId untuk memutuskan apa yang akan diterapkan.
Terpisah dari kebersihan transkrip, file sesi diperbaiki (jika perlu) sebelum dimuat:
repairSessionFileIfNeededdisrc/agents/session-file-repair.ts- Dipanggil dari
run/attempt.tsdancompact.ts(embedded runner)
Aturan global: sanitasi gambar
Payload gambar selalu disanitasi untuk mencegah penolakan sisi provider akibat batas ukuran (downscale/recompress gambar base64 yang terlalu besar).
Ini juga membantu mengendalikan tekanan token yang dipicu gambar untuk model yang mampu vision. Dimensi maksimum yang lebih rendah umumnya mengurangi penggunaan token; dimensi yang lebih tinggi mempertahankan detail.
Implementasi:
sanitizeSessionMessagesImagesdisrc/agents/pi-embedded-helpers/images.tssanitizeContentBlocksImagesdisrc/agents/tool-images.ts- Sisi maksimum gambar dapat dikonfigurasi melalui
agents.defaults.imageMaxDimensionPx(default:1200).
Aturan global: tool call malformed
Blok tool-call asisten yang tidak memiliki input dan arguments akan dibuang
sebelum konteks model dibangun. Ini mencegah penolakan provider dari tool call yang
tersimpan sebagian (misalnya, setelah kegagalan rate limit).
Implementasi:
sanitizeToolCallInputsdisrc/agents/session-transcript-repair.ts- Diterapkan di
sanitizeSessionHistorypadasrc/agents/pi-embedded-runner/replay-history.ts
Aturan global: provenance input antar-sesi
Saat sebuah agen mengirim prompt ke sesi lain melalui sessions_send (termasuk
langkah reply/announce agen-ke-agen), OpenClaw menyimpan giliran pengguna yang dibuat dengan:
message.provenance.kind = "inter_session"
Metadata ini ditulis pada saat append transkrip dan tidak mengubah role
(role: "user" tetap dipertahankan demi kompatibilitas provider). Pembaca transkrip dapat menggunakan
ini untuk menghindari memperlakukan prompt internal yang dirutekan sebagai instruksi yang ditulis oleh pengguna akhir.
Selama pembangunan ulang konteks, OpenClaw juga menambahkan marker singkat [Inter-session message]
ke giliran pengguna tersebut di dalam memori agar model dapat membedakannya dari
instruksi pengguna akhir eksternal.
Matriks provider (perilaku saat ini)
OpenAI / OpenAI Codex
- Hanya sanitasi gambar.
- Buang signature reasoning yatim (item reasoning mandiri tanpa blok konten sesudahnya) untuk transkrip OpenAI Responses/Codex.
- Tidak ada sanitasi id tool call.
- Tidak ada perbaikan pairing hasil alat.
- Tidak ada validasi atau pengurutan ulang giliran.
- Tidak ada hasil alat sintetis.
- Tidak ada penghapusan signature thought.
Google (Generative AI / Gemini CLI / Antigravity)
- Sanitasi id tool call: alfanumerik ketat.
- Perbaikan pairing hasil alat dan hasil alat sintetis.
- Validasi giliran (alternasi giliran gaya Gemini).
- Perbaikan pengurutan giliran Google (tambahkan bootstrap pengguna kecil jika riwayat dimulai dengan asisten).
- Antigravity Claude: normalkan signature thinking; buang blok thinking tanpa signature.
Anthropic / Minimax (kompatibel Anthropic)
- Perbaikan pairing hasil alat dan hasil alat sintetis.
- Validasi giliran (gabungkan giliran pengguna berurutan agar memenuhi alternasi ketat).
Mistral (termasuk deteksi berbasis id model)
- Sanitasi id tool call: strict9 (alfanumerik panjang 9).
OpenRouter Gemini
- Pembersihan signature thought: hapus nilai
thought_signatureyang bukan base64 (pertahankan yang base64).
Semua yang lain
- Hanya sanitasi gambar.
Perilaku historis (pra-2026.1.22)
Sebelum rilis 2026.1.22, OpenClaw menerapkan beberapa lapisan kebersihan transkrip:
- Sebuah ekstensi transcript-sanitize berjalan pada setiap pembangunan konteks dan dapat:
- Memperbaiki pairing penggunaan/hasil alat.
- Menyanitasi id tool call (termasuk mode non-ketat yang mempertahankan
_/-).
- Runner juga melakukan sanitasi khusus provider, yang menduplikasi pekerjaan.
- Mutasi tambahan terjadi di luar kebijakan provider, termasuk:
- Menghapus tag
<final>dari teks asisten sebelum persistensi. - Membuang giliran error asisten yang kosong.
- Memangkas konten asisten setelah tool call.
- Menghapus tag
Kompleksitas ini menyebabkan regresi lintas provider (terutama pairing
call_id|fc_id pada openai-responses). Pembersihan 2026.1.22 menghapus ekstensi tersebut, memusatkan
logika di runner, dan membuat OpenAI tanpa sentuhan selain sanitasi gambar.