Skip to main content

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.

OpenClaw ใช้ การแก้ไขเฉพาะผู้ให้บริการ กับบันทึกบทสนทนาก่อนการรัน (การสร้างบริบทของโมเดล) ส่วนใหญ่เป็นการปรับแต่ง ในหน่วยความจำ เพื่อให้ตรงตามข้อกำหนดที่เข้มงวดของผู้ให้บริการ นอกจากนี้ยังอาจมีรอบการซ่อมแซมไฟล์เซสชันแยกต่างหากที่เขียน JSONL ที่จัดเก็บไว้ใหม่ก่อนโหลดเซสชัน แต่จะทำเฉพาะกับบรรทัดที่มีรูปแบบผิดพลาดหรือเทิร์นที่บันทึกถาวรไว้ซึ่งไม่ใช่ระเบียนถาวรที่ถูกต้อง คำตอบของผู้ช่วยที่ส่งแล้วจะถูกเก็บรักษาไว้บนดิสก์ การลบ assistant-prefill เฉพาะผู้ให้บริการจะเกิดขึ้นเฉพาะขณะสร้างเพย์โหลดขาออกเท่านั้น เมื่อเกิดการซ่อมแซม ไฟล์เดิมจะถูกสำรองไว้ข้างไฟล์เซสชัน ขอบเขตรวมถึง:
  • บริบทพรอมป์ต์เฉพาะรันไทม์ไม่เข้าไปอยู่ในเทิร์นบันทึกบทสนทนาที่ผู้ใช้เห็น
  • การทำให้ 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.ts
  • sanitizeContentBlocksImages ใน 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"
OpenClaw ยังเติม marker [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
  • ไม่มีการลบลายเซ็นความคิด
OpenAI-compatible Chat Completions
  • บล็อก thinking/reasoning ของผู้ช่วยในอดีตจะถูกลบก่อนเล่นซ้ำ เพื่อให้เซิร์ฟเวอร์ที่เข้ากันได้กับ OpenAI แบบโลคัลและแบบพร็อกซีไม่ได้รับฟิลด์ reasoning ของเทิร์นก่อนหน้า เช่น reasoning หรือ reasoning_content
  • การต่อเนื่องของการเรียกเครื่องมือในเทิร์นเดียวกันปัจจุบันจะคงบล็อก reasoning ของผู้ช่วยแนบกับการเรียกเครื่องมือจนกว่าผลลัพธ์เครื่องมือจะถูกเล่นซ้ำแล้ว
  • ข้อยกเว้นที่ผู้ให้บริการเป็นเจ้าของสามารถเลือกไม่ใช้ได้เมื่อโปรโตคอล wire ของตนต้องการเมทาดาทา reasoning ที่เล่นซ้ำ
Google (Generative AI / Gemini CLI / Antigravity)
  • การทำให้ id ของการเรียกเครื่องมือปลอดภัย: ตัวอักษรและตัวเลขอย่างเข้มงวด
  • การซ่อมแซมการจับคู่ผลลัพธ์เครื่องมือและผลลัพธ์เครื่องมือสังเคราะห์
  • การตรวจสอบความถูกต้องของเทิร์น (การสลับเทิร์นสไตล์ Gemini)
  • การแก้ไขลำดับเทิร์นของ Google (เติม bootstrap ผู้ใช้ขนาดเล็กไว้ข้างหน้าหากประวัติเริ่มด้วยผู้ช่วย)
  • Antigravity Claude: ปรับลายเซ็น thinking ให้เป็นมาตรฐาน; ตัดบล็อก thinking ที่ไม่มีลายเซ็นออก
Anthropic / Minimax (เข้ากันได้กับ Anthropic)
  • การซ่อมแซมการจับคู่ผลลัพธ์เครื่องมือและผลลัพธ์เครื่องมือสังเคราะห์
  • การตรวจสอบความถูกต้องของเทิร์น (รวมเทิร์นผู้ใช้ที่ต่อเนื่องกันเพื่อให้ตรงตามการสลับอย่างเข้มงวด)
  • เทิร์น assistant prefill ท้ายสุดจะถูกลบออกจากเพย์โหลด Anthropic Messages ขาออกเมื่อเปิดใช้ thinking รวมถึงเส้นทาง Cloudflare AI Gateway
  • บล็อก thinking ที่มีลายเซ็นสำหรับเล่นซ้ำหายไป ว่าง หรือเป็นช่องว่างจะถูกลบก่อนแปลงสำหรับผู้ให้บริการ หากทำให้เทิร์นผู้ช่วยว่าง OpenClaw จะคงรูปทรงเทิร์นไว้ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง
  • เทิร์นผู้ช่วย thinking-only รุ่นเก่าที่ต้องถูกลบจะถูกแทนที่ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง เพื่อให้อะแดปเตอร์ผู้ให้บริการไม่ตัดเทิร์นเล่นซ้ำออก
Amazon Bedrock (Converse API)
  • เทิร์นข้อผิดพลาดสตรีมของผู้ช่วยที่ว่างจะถูกซ่อมแซมเป็นบล็อกข้อความสำรองที่ไม่ว่างก่อนเล่นซ้ำ Bedrock Converse ปฏิเสธข้อความผู้ช่วยที่มี content: [] ดังนั้นเทิร์นผู้ช่วยที่บันทึกถาวรไว้ซึ่งมี stopReason: "error" และเนื้อหาว่างจะถูกซ่อมแซมบนดิสก์ก่อนโหลดด้วย
  • เทิร์นข้อผิดพลาดสตรีมของผู้ช่วยที่มีเฉพาะบล็อกข้อความว่างจะถูกตัดออกจากสำเนาเล่นซ้ำในหน่วยความจำ แทนที่จะเล่นซ้ำบล็อกว่างที่ไม่ถูกต้อง
  • บล็อก thinking ของ Claude ที่มีลายเซ็นสำหรับเล่นซ้ำหายไป ว่าง หรือเป็นช่องว่างจะถูกลบก่อนเล่นซ้ำ Converse หากทำให้เทิร์นผู้ช่วยว่าง OpenClaw จะคงรูปทรงเทิร์นไว้ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง
  • เทิร์นผู้ช่วย thinking-only รุ่นเก่าที่ต้องถูกลบจะถูกแทนที่ด้วยข้อความ omitted-reasoning ที่ไม่ว่าง เพื่อให้การเล่นซ้ำ Converse คงรูปทรงเทิร์นอย่างเข้มงวด
  • การเล่นซ้ำกรองเทิร์นผู้ช่วยที่เป็น delivery-mirror ของ OpenClaw และเทิร์นผู้ช่วยที่ Gateway แทรกเข้ามา
  • การทำให้รูปภาพปลอดภัยใช้ผ่านกฎสากล
Mistral (รวมถึงการตรวจจับตาม model-id)
  • การทำให้ id ของการเรียกเครื่องมือปลอดภัย: strict9 (ตัวอักษรและตัวเลข ความยาว 9)
OpenRouter Gemini
  • การล้างลายเซ็นความคิด: ลบค่า thought_signature ที่ไม่ใช่ base64 (คง base64 ไว้)
OpenRouter Anthropic
  • เทิร์น 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 ไม่แตะต้อง นอกเหนือจากการทำให้รูปภาพปลอดภัย

ที่เกี่ยวข้อง