OpenClaw ใช้ การแก้ไขเฉพาะผู้ให้บริการ กับบันทึกบทสนทนาก่อนการรัน (การสร้างบริบทของโมเดล) ส่วนใหญ่เป็นการปรับแต่ง ในหน่วยความจำ เพื่อให้ตรงตามข้อกำหนดที่เข้มงวดของผู้ให้บริการ นอกจากนี้ยังอาจมีรอบการซ่อมแซมไฟล์เซสชันแยกต่างหากที่เขียน JSONL ที่จัดเก็บไว้ใหม่ก่อนโหลดเซสชัน แต่จะทำเฉพาะกับบรรทัดที่มีรูปแบบผิดพลาดหรือเทิร์นที่บันทึกถาวรไว้ซึ่งไม่ใช่ระเบียนถาวรที่ถูกต้อง คำตอบของผู้ช่วยที่ส่งแล้วจะถูกเก็บรักษาไว้บนดิสก์ การลบ assistant-prefill เฉพาะผู้ให้บริการจะเกิดขึ้นเฉพาะขณะสร้างเพย์โหลดขาออกเท่านั้น เมื่อเกิดการซ่อมแซม ไฟล์เดิมจะถูกสำรองไว้ข้างไฟล์เซสชัน ขอบเขตรวมถึง:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- บริบทพรอมป์ต์เฉพาะรันไทม์ไม่เข้าไปอยู่ในเทิร์นบันทึกบทสนทนาที่ผู้ใช้เห็น
- การทำให้ id ของการเรียกเครื่องมือปลอดภัย
- การตรวจสอบอินพุตของการเรียกเครื่องมือ
- การซ่อมแซมการจับคู่ผลลัพธ์เครื่องมือ
- การตรวจสอบความถูกต้อง / การจัดลำดับเทิร์น
- การล้างลายเซ็นความคิด
- การล้างลายเซ็นการคิด
- การทำให้เพย์โหลดรูปภาพปลอดภัย
- การล้างบล็อกข้อความว่างก่อนเล่นซ้ำกับผู้ให้บริการ
- การติดแท็กแหล่งที่มาของอินพุตผู้ใช้ (สำหรับพรอมป์ต์ที่กำหนดเส้นทางข้ามเซสชัน)
- การซ่อมแซมเทิร์นข้อผิดพลาดผู้ช่วยว่างสำหรับการเล่นซ้ำ Bedrock Converse
กฎสากล: บริบทรันไทม์ไม่ใช่บันทึกบทสนทนาของผู้ใช้
บริบทรันไทม์/ระบบสามารถเพิ่มเข้าไปในพรอมป์ต์ของโมเดลสำหรับเทิร์นหนึ่งได้ แต่ไม่ใช่เนื้อหาที่ผู้ใช้ปลายทางเขียน OpenClaw เก็บเนื้อหาพรอมป์ต์สำหรับมุมมองบันทึกบทสนทนาแยกต่างหากสำหรับการตอบกลับของ Gateway, followup ที่อยู่ในคิว, ACP, CLI และการรัน Pi แบบฝัง เทิร์นผู้ใช้ที่มองเห็นได้ซึ่งถูกจัดเก็บจะใช้เนื้อหาบันทึกบทสนทนานั้นแทนพรอมป์ต์ที่เติมบริบทรันไทม์แล้ว สำหรับเซสชันดั้งเดิมที่เคยบันทึก wrapper รันไทม์ไว้แล้ว พื้นผิวประวัติ Gateway จะใช้การฉายภาพเพื่อแสดงผลก่อนคืนข้อความให้กับไคลเอนต์ WebChat, TUI, REST หรือ SSEตำแหน่งที่ทำงาน
สุขอนามัยบันทึกบทสนทนาทั้งหมดถูกรวมศูนย์ไว้ในรันเนอร์แบบฝัง:- การเลือกนโยบาย:
src/agents/transcript-policy.ts - การใช้งานการทำให้ปลอดภัย/การซ่อมแซม:
sanitizeSessionHistoryในsrc/agents/pi-embedded-runner/replay-history.ts
provider, modelApi และ modelId เพื่อเลือกว่าจะใช้อะไร
แยกจากสุขอนามัยบันทึกบทสนทนา ไฟล์เซสชันจะถูกซ่อมแซม (ถ้าจำเป็น) ก่อนโหลด:
repairSessionFileIfNeededในsrc/agents/session-file-repair.ts- เรียกจาก
run/attempt.tsและcompact.ts(รันเนอร์แบบฝัง)
กฎสากล: การทำให้รูปภาพปลอดภัย
เพย์โหลดรูปภาพจะถูกทำให้ปลอดภัยเสมอเพื่อป้องกันการถูกปฏิเสธฝั่งผู้ให้บริการเนื่องจากขีดจำกัดขนาด (ย่อขนาด/บีบอัดรูปภาพ base64 ที่ใหญ่เกินไปใหม่) สิ่งนี้ยังช่วยควบคุมแรงกดดันด้านโทเค็นจากรูปภาพสำหรับโมเดลที่รองรับวิชัน ขนาดสูงสุดที่ต่ำกว่ามักลดการใช้โทเค็น ส่วนขนาดที่สูงกว่าจะรักษารายละเอียดไว้ การใช้งาน:sanitizeSessionMessagesImagesในsrc/agents/pi-embedded-helpers/images.tssanitizeContentBlocksImagesในsrc/agents/tool-images.ts- ด้านสูงสุดของรูปภาพกำหนดค่าได้ผ่าน
agents.defaults.imageMaxDimensionPx(ค่าเริ่มต้น:1200) - บล็อกข้อความว่างจะถูกลบขณะที่รอบนี้เดินผ่านเนื้อหาสำหรับเล่นซ้ำ เทิร์นผู้ช่วยที่กลายเป็นว่างจะถูกตัดออกจากสำเนาสำหรับเล่นซ้ำ ส่วนเทิร์นผู้ใช้และผลลัพธ์เครื่องมือที่กลายเป็นว่างจะได้รับ placeholder เนื้อหาที่ถูกละไว้ซึ่งไม่ว่าง
กฎสากล: การเรียกเครื่องมือที่มีรูปแบบผิดพลาด
บล็อกการเรียกเครื่องมือของผู้ช่วยที่ขาดทั้งinput และ arguments จะถูกตัดออกก่อนสร้างบริบทโมเดล วิธีนี้ป้องกันการถูกปฏิเสธจากผู้ให้บริการจากการเรียกเครื่องมือที่ถูกบันทึกถาวรไว้บางส่วน (ตัวอย่างเช่น หลังความล้มเหลวจาก rate limit)
การใช้งาน:
sanitizeToolCallInputsในsrc/agents/session-transcript-repair.ts- ใช้ใน
sanitizeSessionHistoryในsrc/agents/pi-embedded-runner/replay-history.ts
กฎสากล: แหล่งที่มาของอินพุตข้ามเซสชัน
เมื่อ agent ส่งพรอมป์ต์เข้าไปยังอีกเซสชันผ่านsessions_send (รวมถึงขั้นตอนตอบกลับ/ประกาศระหว่าง agent) OpenClaw จะบันทึกเทิร์นผู้ใช้ที่สร้างขึ้นพร้อมกับ:
message.provenance.kind = "inter_session"
[Inter-session message ... isUser=false] ในเทิร์นเดียวกันไว้ก่อนข้อความพรอมป์ต์ที่ถูกกำหนดเส้นทาง เพื่อให้การเรียกโมเดลที่กำลังทำงานแยกแยะเอาต์พุตจากเซสชันอื่นออกจากคำสั่งผู้ใช้ปลายทางภายนอกได้ marker นี้รวมเซสชันต้นทาง ช่องทาง และเครื่องมือเมื่อมี บันทึกบทสนทนายังคงใช้ role: "user" เพื่อความเข้ากันได้กับผู้ให้บริการ แต่ทั้งข้อความที่มองเห็นได้และเมทาดาทาแหล่งที่มาจะระบุว่าเทิร์นนั้นเป็นข้อมูลข้ามเซสชัน
ระหว่างสร้างบริบทใหม่ OpenClaw จะใช้ marker เดียวกันกับเทิร์นผู้ใช้ข้ามเซสชันที่บันทึกถาวรไว้เก่ากว่าซึ่งมีเฉพาะเมทาดาทาแหล่งที่มา
ตารางผู้ให้บริการ (พฤติกรรมปัจจุบัน)
OpenAI / OpenAI Codex- ทำให้รูปภาพปลอดภัยเท่านั้น
- ตัดลายเซ็น reasoning กำพร้าออก (รายการ reasoning เดี่ยวที่ไม่มีบล็อกเนื้อหาตามมา) สำหรับบันทึกบทสนทนา OpenAI Responses/Codex และตัด reasoning ของ OpenAI ที่เล่นซ้ำได้หลังสลับเส้นทางโมเดล
- รักษาเพย์โหลดรายการ reasoning ของ OpenAI Responses ที่เล่นซ้ำได้ รวมถึงรายการสรุปว่างที่เข้ารหัสไว้ เพื่อให้การเล่นซ้ำแบบแมนนวล/WebSocket คงสถานะ
rs_*ที่จำเป็นไว้คู่กับรายการเอาต์พุตผู้ช่วย - Native ChatGPT Codex Responses ทำตามความเท่าเทียมของ wire กับ Codex โดยเล่นซ้ำเพย์โหลด reasoning/message/function ของ Responses ก่อนหน้าโดยไม่มี ID รายการก่อนหน้า ขณะคง
prompt_cache_keyของเซสชันไว้ - ไม่มีการทำให้ id ของการเรียกเครื่องมือปลอดภัย
- การซ่อมแซมการจับคู่ผลลัพธ์เครื่องมืออาจย้ายเอาต์พุตจริงที่จับคู่ได้และสังเคราะห์เอาต์พุต
abortedสไตล์ Codex สำหรับการเรียกเครื่องมือที่ขาดไป - ไม่มีการตรวจสอบความถูกต้องหรือจัดลำดับเทิร์นใหม่
- เอาต์พุตเครื่องมือในตระกูล OpenAI Responses ที่ขาดหายไปจะถูกสังเคราะห์เป็น
abortedเพื่อให้ตรงกับการปรับรูปแบบการเล่นซ้ำของ Codex - ไม่มีการลบลายเซ็นความคิด
- บล็อก thinking/reasoning ของผู้ช่วยในอดีตจะถูกลบก่อนเล่นซ้ำ เพื่อให้เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI แบบโลคัลและแบบพร็อกซีไม่ได้รับฟิลด์ reasoning ของเทิร์นก่อนหน้า เช่น
reasoningหรือreasoning_content - การต่อเนื่องของการเรียกเครื่องมือในเทิร์นเดียวกันปัจจุบันจะคงบล็อก reasoning ของผู้ช่วยแนบกับการเรียกเครื่องมือจนกว่าผลลัพธ์เครื่องมือจะถูกเล่นซ้ำแล้ว
- ข้อยกเว้นที่ผู้ให้บริการเป็นเจ้าของสามารถเลือกไม่ใช้ได้เมื่อโปรโตคอล wire ของตนต้องการเมทาดาทา reasoning ที่เล่นซ้ำ
- การทำให้ id ของการเรียกเครื่องมือปลอดภัย: ตัวอักษรและตัวเลขอย่างเข้มงวด
- การซ่อมแซมการจับคู่ผลลัพธ์เครื่องมือและผลลัพธ์เครื่องมือสังเคราะห์
- การตรวจสอบความถูกต้องของเทิร์น (การสลับเทิร์นสไตล์ Gemini)
- การแก้ไขลำดับเทิร์นของ Google (เติม bootstrap ผู้ใช้ขนาดเล็กไว้ข้างหน้าหากประวัติเริ่มด้วยผู้ช่วย)
- Antigravity Claude: ปรับลายเซ็น thinking ให้เป็นมาตรฐาน; ตัดบล็อก thinking ที่ไม่มีลายเซ็นออก
- การซ่อมแซมการจับคู่ผลลัพธ์เครื่องมือและผลลัพธ์เครื่องมือสังเคราะห์
- การตรวจสอบความถูกต้องของเทิร์น (รวมเทิร์นผู้ใช้ที่ต่อเนื่องกันเพื่อให้ตรงตามการสลับอย่างเข้มงวด)
- เทิร์น assistant prefill ท้ายสุดจะถูกลบออกจากเพย์โหลด Anthropic Messages ขาออกเมื่อเปิดใช้ thinking รวมถึงเส้นทาง Cloudflare AI Gateway
- บล็อก thinking ที่มีลายเซ็นสำหรับเล่นซ้ำหายไป ว่าง หรือเป็นช่องว่างจะถูกลบก่อนแปลงสำหรับผู้ให้บริการ หากทำให้เทิร์นผู้ช่วยว่าง OpenClaw จะคงรูปทรงเทิร์นไว้ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง
- เทิร์นผู้ช่วย thinking-only รุ่นเก่าที่ต้องถูกลบจะถูกแทนที่ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง เพื่อให้อะแดปเตอร์ผู้ให้บริการไม่ตัดเทิร์นเล่นซ้ำออก
- เทิร์นข้อผิดพลาดสตรีมของผู้ช่วยที่ว่างจะถูกซ่อมแซมเป็นบล็อกข้อความสำรองที่ไม่ว่างก่อนเล่นซ้ำ Bedrock Converse ปฏิเสธข้อความผู้ช่วยที่มี
content: []ดังนั้นเทิร์นผู้ช่วยที่บันทึกถาวรไว้ซึ่งมีstopReason: "error"และเนื้อหาว่างจะถูกซ่อมแซมบนดิสก์ก่อนโหลดด้วย - เทิร์นข้อผิดพลาดสตรีมของผู้ช่วยที่มีเฉพาะบล็อกข้อความว่างจะถูกตัดออกจากสำเนาเล่นซ้ำในหน่วยความจำ แทนที่จะเล่นซ้ำบล็อกว่างที่ไม่ถูกต้อง
- บล็อก thinking ของ Claude ที่มีลายเซ็นสำหรับเล่นซ้ำหายไป ว่าง หรือเป็นช่องว่างจะถูกลบก่อนเล่นซ้ำ Converse หากทำให้เทิร์นผู้ช่วยว่าง OpenClaw จะคงรูปทรงเทิร์นไว้ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง
- เทิร์นผู้ช่วย thinking-only รุ่นเก่าที่ต้องถูกลบจะถูกแทนที่ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง เพื่อให้การเล่นซ้ำ Converse คงรูปทรงเทิร์นอย่างเข้มงวด
- การเล่นซ้ำกรองเทิร์นผู้ช่วยที่เป็น delivery-mirror ของ OpenClaw และเทิร์นผู้ช่วยที่ Gateway แทรกเข้ามา
- การทำให้รูปภาพปลอดภัยใช้ผ่านกฎสากล
- การทำให้ id ของการเรียกเครื่องมือปลอดภัย: strict9 (ตัวอักษรและตัวเลข ความยาว 9)
- การล้างลายเซ็นความคิด: ลบค่า
thought_signatureที่ไม่ใช่ base64 (คง base64 ไว้)
- เทิร์น assistant prefill ท้ายสุดจะถูกลบออกจากเพย์โหลดโมเดล Anthropic ของ OpenRouter ที่เข้ากันได้กับ OpenAI และได้รับการยืนยันแล้วเมื่อเปิดใช้ reasoning ให้ตรงกับพฤติกรรมการเล่นซ้ำของ Anthropic โดยตรงและ Cloudflare Anthropic
- ทำให้รูปภาพปลอดภัยเท่านั้น
พฤติกรรมในอดีต (ก่อน 2026.1.22)
ก่อนรีลีส 2026.1.22 OpenClaw ใช้สุขอนามัยบันทึกบทสนทนาหลายชั้น:- ส่วนขยาย transcript-sanitize ทำงานทุกครั้งที่สร้างบริบทและสามารถ:
- ซ่อมแซมการจับคู่การใช้เครื่องมือ/ผลลัพธ์
- ทำให้ id ของการเรียกเครื่องมือปลอดภัย (รวมถึงโหมดไม่เข้มงวดที่คง
_/-ไว้)
- รันเนอร์ยังทำการทำให้ปลอดภัยเฉพาะผู้ให้บริการด้วย ซึ่งทำงานซ้ำซ้อน
- มีการกลายพันธุ์เพิ่มเติมเกิดขึ้นนอกนโยบายผู้ให้บริการ รวมถึง:
- ลบแท็ก
<final>ออกจากข้อความผู้ช่วยก่อนบันทึกถาวร - ตัดเทิร์นข้อผิดพลาดผู้ช่วยที่ว่างออก
- ตัดเนื้อหาผู้ช่วยหลังการเรียกเครื่องมือ
- ลบแท็ก
call_id|fc_id ของ openai-responses) การล้างใน 2026.1.22 ลบส่วนขยายออก รวมตรรกะไว้ในรันเนอร์ และทำให้ OpenAI ไม่แตะต้อง นอกเหนือจากการทำให้รูปภาพปลอดภัย