Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

Session Pruning

Session pruning จะตัด ผลลัพธ์เครื่องมือเก่า ออกจากบริบทในหน่วยความจำก่อนการเรียก LLM แต่ละครั้ง โดย ไม่ เขียนทับประวัติเซสชันที่บันทึกบนดิสก์ (*.jsonl). 31. จะ ไม่ เขียนทับประวัติเซสชันบนดิสก์ (*.jsonl)

When it runs

  • เมื่อเปิดใช้งาน mode: "cache-ttl" และการเรียก Anthropic ล่าสุดของเซสชันเก่ากว่า ttl.
  • ส่งผลเฉพาะกับข้อความที่ส่งไปยังโมเดลสำหรับคำขอนั้นเท่านั้น.
  • ทำงานเฉพาะกับการเรียก Anthropic API (และโมเดล Anthropic บน OpenRouter).
  • เพื่อผลลัพธ์ที่ดีที่สุด ให้ตั้งค่า ttl ให้สอดคล้องกับ cacheControlTtl ของโมเดลของคุณ.
  • หลังจากมีการตัดแต่ง หน้าต่าง TTL จะรีเซ็ต ดังนั้นคำขอถัดไปจะเก็บแคชไว้จนกว่า ttl จะหมดอายุอีกครั้ง.

Smart defaults (Anthropic)

  • โปรไฟล์ OAuth หรือ setup-token: เปิดใช้การตัดแต่ง cache-ttl และตั้งค่า heartbeat เป็น 1h.
  • โปรไฟล์ API key: เปิดใช้การตัดแต่ง cache-ttl ตั้งค่า heartbeat เป็น 30m และตั้งค่าเริ่มต้น cacheControlTtl เป็น 1h สำหรับโมเดล Anthropic.
  • หากคุณตั้งค่าใดๆ เหล่านี้ด้วยตนเอง OpenClaw จะ ไม่ เขียนทับค่าเหล่านั้น.

What this improves (cost + cache behavior)

  • ทำไมต้องตัดแต่ง: การแคชพรอมป์ของ Anthropic ใช้ได้เฉพาะภายใน TTL หากเซสชันว่างเกิน TTL คำขอถัดไปจะต้องแคชพรอมป์ทั้งหมดใหม่ เว้นแต่คุณจะตัดแต่งก่อน. 32. หากเซสชันอยู่ว่างเกิน TTL คำขอถัดไปจะทำการแคชพรอมป์เต็มอีกครั้ง เว้นแต่คุณจะตัดทอนก่อน
  • อะไรที่ถูกลง: การตัดแต่งช่วยลดขนาด cacheWrite สำหรับคำขอแรกหลังจาก TTL หมดอายุ.
  • ทำไมการรีเซ็ต TTL จึงสำคัญ: เมื่อมีการตัดแต่ง หน้าต่างแคชจะรีเซ็ต ทำให้คำขอถัดไปสามารถใช้พรอมป์ที่เพิ่งแคชใหม่ได้ แทนที่จะต้องแคชประวัติทั้งหมดซ้ำอีก.
  • สิ่งที่มันไม่ทำ: การตัดแต่งไม่เพิ่มโทเคนหรือค่าใช้จ่าย “ซ้ำสอง”; มันเพียงเปลี่ยนสิ่งที่ถูกแคชในคำขอแรกหลัง TTL เท่านั้น.

What can be pruned

  • เฉพาะข้อความ toolResult เท่านั้น.
  • ข้อความผู้ใช้และผู้ช่วยจะ ไม่ ถูกแก้ไข.
  • ข้อความผู้ช่วยล่าสุดจำนวน keepLastAssistants จะได้รับการปกป้อง; ผลลัพธ์เครื่องมือหลังจุดตัดนี้จะไม่ถูกตัดแต่ง.
  • หากมีข้อความผู้ช่วยไม่เพียงพอเพื่อกำหนดจุดตัด การตัดแต่งจะถูกข้าม.
  • ผลลัพธ์เครื่องมือที่มี บล็อกรูปภาพ จะถูกข้าม (ไม่ถูกตัด/ล้าง).

Context window estimation

การตัดแต่งใช้การประมาณขนาดหน้าต่างบริบท (ตัวอักษร ≈ โทเคน × 4) โดยหน้าต่างฐานจะถูกกำหนดตามลำดับนี้: 33. หน้าต่างฐานจะถูกกำหนดตามลำดับนี้:

  1. การ override ของ models.providers.*.models[].contextWindow.
  2. ค่า contextWindow ในคำจำกัดความโมเดล (จาก registry ของโมเดล).
  3. ค่าเริ่มต้น 200000 โทเคน.

หากตั้งค่า agents.defaults.contextTokens ไว้ จะถูกใช้เป็นเพดาน (ค่า min) ของหน้าต่างที่คำนวณได้.

Mode

cache-ttl

  • การตัดแต่งจะทำงานเฉพาะเมื่อการเรียก Anthropic ล่าสุดเก่ากว่า ttl (ค่าเริ่มต้น 5m).
  • เมื่อทำงาน: ใช้พฤติกรรม soft-trim + hard-clear แบบเดียวกับก่อนหน้า.

Soft vs hard pruning

  • Soft-trim: ใช้เฉพาะกับผลลัพธ์เครื่องมือที่มีขนาดใหญ่เกิน.
  • เก็บส่วนหัวและส่วนท้าย แทรก ... และต่อท้ายหมายเหตุพร้อมขนาดเดิม.
  • ข้ามผลลัพธ์ที่มีบล็อกรูปภาพ.
  • Hard-clear: แทนที่ผลลัพธ์เครื่องมือทั้งหมดด้วย hardClear.placeholder.

Tool selection

  • tools.allow / tools.deny รองรับไวลด์การ์ด *.
    1. การปฏิเสธมีผลเหนือกว่า
    1. การจับคู่ไม่แยกตัวพิมพ์เล็ก/ใหญ่
  • รายการอนุญาตว่าง => อนุญาตทุกเครื่องมือ.

Interaction with other limits

  • เครื่องมือที่มีมาให้จะตัดเอาต์พุตของตนเองอยู่แล้ว; session pruning เป็นชั้นเพิ่มเติมที่ป้องกันไม่ให้แชตที่รันนานสะสมเอาต์พุตเครื่องมือมากเกินไปในบริบทของโมเดล.
  • Compaction เป็นคนละเรื่อง: compaction จะสรุปและบันทึกถาวร ส่วน pruning เป็นแบบชั่วคราวต่อคำขอ ดู /concepts/compaction. 36. ดู /concepts/compaction

Defaults (when enabled)

  • ttl: "5m"
  • keepLastAssistants: 3
  • softTrimRatio: 0.3
  • hardClearRatio: 0.5
  • minPrunableToolChars: 50000
  • softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }
  • hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" }

Examples

ค่าเริ่มต้น (ปิด):

{
  agent: {
    contextPruning: { mode: "off" },
  },
}

เปิดใช้การตัดแต่งแบบรับรู้ TTL:

{
  agent: {
    contextPruning: { mode: "cache-ttl", ttl: "5m" },
  },
}

จำกัดการตัดแต่งให้เฉพาะเครื่องมือที่ระบุ:

{
  agent: {
    contextPruning: {
      mode: "cache-ttl",
      tools: { allow: ["exec", "read"], deny: ["*image*"] },
    },
  },
}

ดูเอกสารอ้างอิงคอนฟิก: Gateway Configuration