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. หน้าต่างฐานจะถูกกำหนดตามลำดับนี้:
- การ override ของ
models.providers.*.models[].contextWindow. - ค่า
contextWindowในคำจำกัดความโมเดล (จาก registry ของโมเดล). - ค่าเริ่มต้น
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รองรับไวลด์การ์ด*.-
- การปฏิเสธมีผลเหนือกว่า
-
- การจับคู่ไม่แยกตัวพิมพ์เล็ก/ใหญ่
- รายการอนุญาตว่าง => อนุญาตทุกเครื่องมือ.
Interaction with other limits¶
- เครื่องมือที่มีมาให้จะตัดเอาต์พุตของตนเองอยู่แล้ว; session pruning เป็นชั้นเพิ่มเติมที่ป้องกันไม่ให้แชตที่รันนานสะสมเอาต์พุตเครื่องมือมากเกินไปในบริบทของโมเดล.
- Compaction เป็นคนละเรื่อง: compaction จะสรุปและบันทึกถาวร ส่วน pruning เป็นแบบชั่วคราวต่อคำขอ ดู /concepts/compaction. 36. ดู /concepts/compaction
Defaults (when enabled)¶
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ 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