Concept internals
การติดตามการใช้งาน
คืออะไร
- ดึงข้อมูลการใช้งาน/โควตาของผู้ให้บริการโดยตรงจากปลายทางการใช้งานของผู้ให้บริการแต่ละราย ไม่มีการประมาณค่าบริการของผู้ให้บริการ แสดงเฉพาะชื่อแผน ช่วงเวลาโควตา ยอดคงเหลือ ค่าใช้จ่าย งบประมาณ ประวัติค่าใช้จ่ายรายวัน การแจกแจงตามโทเค็น/โมเดล หรือสรุปสถานะบัญชีที่ผู้ให้บริการรายงาน
- เอาต์พุตช่วงเวลาโควตาที่มนุษย์อ่านได้จะถูกทำให้เป็นรูปแบบมาตรฐาน
เหลือ X%แม้ว่าผู้ให้บริการจะรายงานโควตาที่ใช้ไป โควตาที่เหลือ หรือเพียงจำนวนดิบก็ตาม ผู้ให้บริการที่ไม่มีช่วงเวลาโควตาซึ่งรีเซ็ตได้จะแสดงข้อความสรุปจากผู้ให้บริการแทน (เช่น ยอดคงเหลือ) /statusระดับเซสชันและเครื่องมือsession_statusจะใช้บันทึกทรานสคริปต์ของเซสชันเป็นทางเลือกสำรอง เมื่อสแนปช็อตเซสชันปัจจุบันไม่มีข้อมูลโทเค็น/โมเดล ทางเลือกสำรองนี้จะเติมตัวนับโทเค็น/แคชที่ขาดหายไป สามารถกู้คืนป้ายชื่อโมเดลรันไทม์ที่ใช้งานอยู่ และจะเลือกผลรวมที่เน้นพรอมป์ซึ่งมีค่ามากกว่า เมื่อเมทาดาทาของเซสชันไม่มีอยู่หรือมีค่าน้อยกว่า (totalTokensFresh !== true, เป็นศูนย์ หรือต่ำกว่าค่าที่ได้จากทรานสคริปต์) ค่าปัจจุบันที่ไม่เป็นศูนย์จะมีลำดับความสำคัญเหนือทางเลือกสำรองเสมอ
แสดงที่ใดบ้าง
/statusในแชต: การ์ดสถานะพร้อมโทเค็นของเซสชันและค่าใช้จ่ายโดยประมาณ (เฉพาะโมเดลที่ใช้คีย์ API) เมื่อมีข้อมูล จะแสดงการใช้งานของ ผู้ให้บริการโมเดลปัจจุบัน เป็นช่วงเวลาเหลือ X%ที่ปรับรูปแบบแล้ว หรือข้อความสรุปจากผู้ให้บริการ/usage off|tokens|fullในแชต: ส่วนท้ายแสดงการใช้งานสำหรับแต่ละการตอบกลับ/usage costในแชต: สรุปค่าใช้จ่ายภายในเครื่องที่รวบรวมจากบันทึกเซสชันของ OpenClaw- CLI:
openclaw status --usageพิมพ์รายละเอียดการใช้งาน/โควตาแบบเต็มแยกตามผู้ให้บริการ - CLI:
openclaw models statusแสดงรายการโปรไฟล์การยืนยันตัวตนด้วย OAuth/โทเค็น และแสดงสรุปช่วงเวลาการใช้งานถัดจากผู้ให้บริการแต่ละรายที่มีข้อมูลดังกล่าว - Control UI: Usage แสดงการ์ดแผนและการเรียกเก็บเงินของผู้ให้บริการเหนือการวิเคราะห์โทเค็นและค่าใช้จ่ายโดยประมาณที่ได้จากเซสชันของ OpenClaw ข้อมูลประจำตัว Anthropic และ OpenAI Admin API จะเพิ่มข้อมูลค่าใช้จ่ายวันนี้ ช่วง 7 วัน และช่วง 30 วันที่ผู้ให้บริการรายงาน รวมถึงแนวโน้มรายวัน ยอดรวมโทเค็น โมเดลที่ใช้มากที่สุด และหมวดหมู่ค่าใช้จ่าย
- Control UI: ป๊อปโอเวอร์วงแหวนบริบทของช่องเขียนแชตแสดง การใช้งานแผน สำหรับผู้ให้บริการแบบสมัครสมาชิก โดยมีแถบแยกตามช่วงเวลา (5 ชั่วโมง รายสัปดาห์ และเฉพาะโมเดล) พร้อมเวลารีเซ็ต แผนของผู้ให้บริการเมื่อทราบ (เช่น
Max (20x)) และเครดิตการใช้งานเพิ่มเติม เซสชันที่เรียกเก็บผ่านแผนจะซ่อนค่าประมาณเป็นดอลลาร์ต่อโทเค็น ส่วนเซสชันที่เรียกเก็บผ่าน API จะยังแสดงEst. costและรายละเอียดค่าใช้จ่ายแยกตามประเภท การตั้งค่า Claude Code CLI (claude-cli) จะใช้ข้อมูลการใช้งานการสมัครสมาชิก Anthropic ชุดเดียวกัน - แถบเมนู macOS: ส่วน "Usage" ระดับรากจะปรากฏใต้ Context เมื่อมีสแนปช็อตการใช้งานของผู้ให้บริการ ดู แถบเมนู
openclaw channels list จะไม่พิมพ์ข้อมูลการใช้งานของผู้ให้บริการอีกต่อไป แต่จะแนะนำผู้ใช้ไปยัง openclaw status หรือ openclaw models list แทน
ประวัติค่าใช้จ่ายของ Anthropic และ OpenAI
โควตาการสมัครสมาชิกและการเรียกเก็บเงินผ่าน API เป็นพื้นผิวข้อมูลคนละส่วนของผู้ให้บริการ:
- ข้อมูลประจำตัวสำหรับการสมัครสมาชิก/การตั้งค่า Anthropic จะยังคงแสดงช่วงเวลาโควตาของ Claude และงบประมาณการใช้งานเพิ่มเติมซึ่งกำหนดหรือไม่ก็ได้ ตั้งค่า
ANTHROPIC_ADMIN_KEYหรือANTHROPIC_ADMIN_API_KEYเพื่อแสดงประวัติจาก Usage and Cost API ขององค์กรแทน ระบบจะตรวจพบข้อมูลประจำตัวของผู้ให้บริการ Anthropic ที่ขึ้นต้นด้วยsk-ant-adminโดยอัตโนมัติ - OAuth ของ OpenAI ChatGPT/Codex จะยังคงแสดงแผน ช่วงเวลาโควตา และยอดเครดิตคงเหลือ ตั้งค่า
OPENAI_ADMIN_KEYเพื่อแสดงประวัติค่าใช้จ่ายและการใช้งานคอมพลีชันขององค์กรแทน และอาจตั้งค่าOPENAI_PROJECT_IDเพื่อจำกัดขอบเขตไว้ที่โครงการเดียว OpenClaw จะไม่ส่งข้อมูลประจำตัวสำหรับการอนุมานจากOPENAI_API_KEYการกำหนดค่าผู้ให้บริการ หรือโปรไฟล์การยืนยันตัวตนไปยัง API ขององค์กร เพราะคีย์เหล่านั้นอาจเป็นของปลายทางแบบกำหนดเอง
ข้อมูลประจำตัวผู้ดูแลระบบมีลำดับความสำคัญสูงกว่า เพราะให้ข้อมูลการเรียกเก็บเงินจริงขององค์กร OpenClaw จะไม่รวมยอดรวมที่ผู้ให้บริการรายงานเหล่านี้เข้ากับค่าประมาณจากเซสชันภายในเครื่อง เนื่องจากทั้งสองส่วนตั้งใจตอบคำถามที่แตกต่างกัน
โหมดส่วนท้ายแสดงการใช้งานเริ่มต้น
/usage off|tokens|full กำหนดส่วนท้ายสำหรับเซสชันและจะจดจำค่านั้นไว้สำหรับ
เซสชันดังกล่าว messages.responseUsage กำหนดค่าเริ่มต้นของโหมดนี้ให้เซสชันที่ยังไม่ได้
เลือกโหมด ดังนั้นจึงสามารถเปิดส่วนท้ายไว้เป็นค่าเริ่มต้นได้โดยไม่ต้องพิมพ์ /usage ทุกครั้ง
กำหนดโหมดเดียวสำหรับทุกช่องทาง หรือใช้แมปแยกตามช่องทางพร้อม default เป็นค่าทางเลือกสำรอง:
{ "messages": { "responseUsage": "tokens", // or: { "default": "off", "discord": "full" } },}ค่าที่รองรับ: "off", "tokens", "full" และนามแฝงแบบเดิม "on" (ถือเป็น "tokens")
สถานะเซสชันสามแบบที่แตกต่างกัน
ฟิลด์ responseUsage ของเซสชันมีสถานะที่แทนค่าได้สามแบบ โดยแต่ละแบบมี
ความหมายแตกต่างกัน:
| สถานะ | ค่าที่จัดเก็บ | โหมดที่มีผล |
|---|---|---|
| ไม่ได้ตั้งค่า / สืบทอด | undefined (ไม่มีค่า) |
ใช้ค่าเริ่มต้นจากการกำหนดค่า messages.responseUsage แล้วจึงใช้ off |
| ปิดอย่างชัดเจน | "off" (จัดเก็บไว้) |
ปิดเสมอ ค่าเริ่มต้นในการกำหนดค่าที่ไม่ใช่ปิดไม่สามารถเปิดส่วนท้ายอีกครั้งได้ |
| เปิดอย่างชัดเจน | "tokens" หรือ "full" (จัดเก็บไว้) |
ใช้โหมดนั้นโดยไม่ขึ้นกับค่าเริ่มต้นในการกำหนดค่า |
ลำดับความสำคัญ
โหมดที่มีผล = ค่าที่เซสชันกำหนดทับ → รายการกำหนดค่าของช่องทาง → default → off
คำสั่ง /usage off ที่ระบุอย่างชัดเจนจะถูก จัดเก็บถาวร เป็นค่าตรงตัว "off" ใน
เซสชัน ซึ่งไม่เหมือนกับ "ไม่ได้ตั้งค่า" ค่าเริ่มต้น messages.responseUsage
ที่ไม่ใช่ปิดจะไม่สามารถเปิดส่วนท้ายกลับมาได้หลังจากผู้ใช้ปิดไว้อย่างชัดเจน
การรีเซ็ตเทียบกับการปิด
/usage offบังคับปิดส่วนท้ายและจัดเก็บตัวเลือกนั้นไว้ ค่าเริ่มต้นที่กำหนดไว้ ซึ่งไม่ใช่ปิดไม่สามารถแทนที่ค่านี้ได้/usage reset(นามแฝง:default,inherit,inherited,clear,unpin) ล้างค่าที่เซสชัน กำหนดทับ จากนั้นเซสชันจะ สืบทอด ค่าเริ่มต้นที่มีผลจากการกำหนดค่า (messages.responseUsage) หากไม่ได้กำหนดค่าเริ่มต้นไว้ ส่วนท้ายจะยังคงปิดอยู่- การรีเซ็ตเซสชันแบบเต็ม (
/resetหรือ/new) หรือการเปลี่ยนรอบเซสชันจะ คงไว้ ซึ่งการตั้งค่าโหมดการใช้งานอย่างชัดเจน เพื่อให้ตัวเลือกการแสดงผลของผู้ใช้คงอยู่ ข้ามการเปลี่ยนรอบเซสชัน มีเพียง/usage reset(และนามแฝงของคำสั่งนี้) เท่านั้นที่ล้างค่าที่กำหนดทับ
พฤติกรรมการสลับ
/usage ที่ไม่มีอาร์กิวเมนต์จะวนลำดับ: ปิด → โทเค็น → เต็ม → ปิด จุดเริ่มต้น
ของการวนคือโหมดปัจจุบันที่ มีผล (ค่าที่เซสชันกำหนดทับ หรือค่าเริ่มต้น
จากการกำหนดค่าเมื่อไม่ได้ตั้งค่าไว้) ดังนั้นลำดับการวนจะตรงกับสิ่งที่
ผู้ใช้เห็นอยู่ในส่วนท้ายเสมอ
การกำหนดค่า
หากไม่มีการกำหนดค่า พฤติกรรมเดิมจะยังคงอยู่ (ส่วนท้ายปิดจนกว่าจะใช้ /usage) ใช้
/usage reset เพื่อล้างค่าที่เซสชันกำหนดทับและกลับไปสืบทอดค่าเริ่มต้นที่กำหนดไว้
ส่วนท้าย /usage full แบบกำหนดเอง
/usage tokens จะแสดงบรรทัดธรรมดา Usage: X in / Y out เสมอ (พร้อมส่วนต่อท้าย
เกี่ยวกับแคชและค่าใช้จ่ายโดยประมาณเมื่อมีข้อมูล) เฉพาะ /usage full เท่านั้นที่แสดง
ส่วนท้ายแบบละเอียดกว่าซึ่งอธิบายไว้ด้านล่าง
/usage full แสดงส่วนท้ายขนาดกะทัดรัดในตัว พร้อมโมเดล การใช้เหตุผล โหมดเร็ว/ช้า
ขนาดหน้าต่างบริบท และค่าใช้จ่ายเมื่อมีฟิลด์เหล่านี้ ส่วนท้ายในตัวไม่จำเป็นต้องใช้
ไฟล์เทมเพลต
messages.usageTemplate มีไว้สำหรับเค้าโครงแบบกำหนดเองขั้นสูงเท่านั้น ค่าสามารถเป็น
พาธไฟล์ JSON (รองรับ ~) หรือออบเจ็กต์แบบอินไลน์ และเมื่อถูกต้องจะใช้แทนส่วนท้าย
ในตัว ระบบจะเฝ้าดูพาธไฟล์และโหลดใหม่แบบสดเมื่อมีการเปลี่ยนแปลง
{ "messages": { "usageTemplate": "~/.openclaw/usage-footer.json" }}เทมเพลตที่ไม่มีอยู่หรือว่างเปล่าจะกลับไปใช้ส่วนท้ายในตัวโดยไม่มีข้อความรบกวน เทมเพลต ที่กำหนดค่าไว้แต่ไม่สามารถอ่านได้หรือไม่ถูกต้อง (JSON ผิดรูปแบบ หรือมีโครงสร้างที่ไม่มี ส่วนเอาต์พุตที่แสดงผลได้) จะกลับไปใช้ส่วนท้ายในตัวเช่นกัน และแสดงคำเตือนแก่ผู้ดูแลระบบ
เริ่มสร้างเทมเพลตแบบกำหนดเองจากโครงสร้างในตัว แล้วแก้ไขส่วนที่ต้องการ เปลี่ยนแปลง:
{ "schema": "openclaw.usageBar.v1", "scales": { "braille": "⠐⡀⡄⡆⡇⣇⣧⣷⣿", "block": "░▏▎▍▌▋▊▉█", "shade": "░▒▓█", "moon": "🌑🌘🌗🌖🌕", "level": "▁▂▃▄▅▆▇█", "weather": ["🥶", "☁️", "🌥", "⛅️", "🌤", "☀️"], "plants": ["", "🍂", "🌱", "☘️", "🍀", "🌿"], "moons6": ["🌑", "🌚", "🌘", "🌗", "🌖", "🌝"], }, "aliases": { "models": { "claude-opus-4-6": "opus46", "claude-opus-4-8": "opus48", "claude-sonnet-4-6": "sonnet46", "claude-haiku-4-5": "haiku45", "gpt-5.5": "gpt5.5", }, "reasoning": { "off": "🌑", "minimal": "🌚", "low": "🌘", "medium": "🌗", "high": "🌕", "xhigh": "🌝", }, }, "output": { "sep": "", "default": [ { "text": "{model.provider}{identity.emoji|🤖}{model.display_name|alias:models}" }, { "map": "model.is_fallback", "cases": { "true": "🔄" } }, { "map": "model.is_override", "cases": { "true": "📌" } }, { "when": "model.reasoning", "text": "{model.reasoning|alias:reasoning}" }, { "map": "state.fast_mode", "cases": { "true": "⚡️", "false": "🐌" } }, { "when": "context.max_tokens", "text": " | 📚[{context.pct_used|meter:5:braille}]{context.max_tokens|num}", }, { "when": "cost.turn_usd", "text": " 💰{cost.turn_usd|fixed:4}" }, ], "surfaces": { "discord": [ { "text": "-# -\n" }, { "text": "-# {model.provider}{identity.emoji|🤖}{model.display_name|alias:models}" }, { "map": "model.is_fallback", "cases": { "true": "🔄" } }, { "map": "model.is_override", "cases": { "true": "📌" } }, { "when": "model.reasoning", "text": "{model.reasoning|alias:reasoning}" }, { "map": "state.fast_mode", "cases": { "true": "⚡️", "false": "🐌" } }, { "when": "context.max_tokens", "text": " | 📚[{context.pct_used|meter:5:braille}]{context.max_tokens|num}", }, { "when": "cost.turn_usd", "text": " 💰{cost.turn_usd|fixed:4}" }, ], }, },}โครงสร้าง
{ "schema": "openclaw.usageBar.v1", "scales": { "<name>": "low-to-high glyphs" }, // string (1 glyph/char) or array "aliases": { "<table>": { "<value>": "<label>" } }, "output": { "sep": "", // joins surviving pieces "default": [/* pieces */], // fallback for any surface "surfaces": { "discord": [/* pieces */], "telegram": [/* pieces */], }, },}แต่ละพื้นผิวเป็นรายการ ชิ้นส่วน ที่เรียงตามลำดับ กลไกจะแสดงผลแต่ละชิ้น ตัดชิ้นที่
ว่างออก และเชื่อมชิ้นที่เหลือด้วย sep พื้นผิวที่ไม่มีรายการกำหนดไว้จะใช้
output.default
พาธตามสัญญา
ชิ้นส่วนจะอ่านค่าจากสัญญาของแต่ละรอบผ่านพาธแบบจุด ค่าที่ไม่มีอยู่จะถือเป็น
ค่าว่าง (ดังนั้นตัวป้องกัน when หรือ |fallback จะช่วยให้ชิ้นส่วนนั้นเรียบร้อย)
| พาธ | ความหมาย |
|---|---|
surface |
รหัสช่องทาง (discord/telegram/ฯลฯ) |
agentId / chat_type |
รหัสเอเจนต์เจ้าของ / ชนิดพื้นผิวแชต |
model.id / model.display_name / model.provider |
รหัสโมเดล / ชื่อที่แสดง / รหัสผู้ให้บริการ |
model.actual, model.resolved_ref |
การอ้างอิงผู้ให้บริการ/โมเดลที่ใช้จริงสำหรับรอบสนทนา |
model.requested |
การอ้างอิงผู้ให้บริการ/โมเดลที่ร้องขอ (ก่อนใช้ทางเลือกสำรอง) |
model.reasoning |
ระดับความพยายาม (off ถึง xhigh) |
model.is_fallback / model.is_override |
ค่าบูลีน: ใช้ทางเลือกสำรอง / ตรึงโมเดล |
model.override_source / model.auth_mode |
ป้ายกำกับแหล่งที่มาของการแทนที่ / โหมดข้อมูลประจำตัว (oauth, api-key, token, mixed, aws-sdk, unknown) |
state.fast_mode |
ค่าบูลีน: เร็วเทียบกับช้า |
state.compactions |
จำนวน Compaction สำหรับเซสชัน |
context.max_tokens / context.used_tokens / context.pct_used |
งบประมาณหน้าต่าง / โทเค็นที่ใช้ไป / เปอร์เซ็นต์ที่ใช้ 0-100 |
usage.input_tokens / usage.output_tokens / usage.total_tokens |
ยอดรวมของรอบสนทนา |
usage.cache_read_tokens / usage.cache_write_tokens |
โทเค็นที่อ่านจากแคชและเขียนลงแคชสำหรับรอบสนทนา |
usage.has_tokens / usage.has_split_tokens / usage.has_total_only_tokens |
เงื่อนไขควบคุมการแสดงโทเค็น |
usage.cache_hit_pct |
สัดส่วนการอ่านจากแคชต่อโทเค็นพรอมต์ทั้งหมด |
usage.last.input_tokens / usage.last.output_tokens / usage.last.cache_hit_pct |
เฉพาะการเรียกโมเดลครั้งสุดท้าย (มี cache_read_tokens, cache_write_tokens, total_tokens ด้วย) |
cost.turn_usd / cost.available |
ค่าใช้จ่ายโดยประมาณของรอบสนทนา / ตารางค่าใช้จ่ายได้รับการแก้ไขสำเร็จหรือไม่ |
timing.duration_ms |
ระยะเวลาจริงตามนาฬิกาของรอบสนทนา |
identity.name / identity.emoji / identity.avatar |
ชื่อข้อมูลประจำตัวเอเจนต์ / อีโมจิ / อวตาร |
session.id |
รหัสเซสชัน |
(หน้าต่างขีดจำกัดอัตราของผู้ให้บริการ ไม่ อยู่ในสัญญานี้ ปัจจุบันไม่มีพาธที่มีค่าเป็นอาร์เรย์ ดังนั้นส่วน each จึงไม่มีสิ่งใดให้วนซ้ำ)
คำสั่งแปลงค่า
ส่งค่าผ่านคำสั่งแปลงจากซ้ายไปขวา ส่วนที่ไม่ใช่คำสั่งแปลงจะเป็นค่าทางเลือกสำรอง
| คำสั่งแปลง | ผลลัพธ์ | ตัวอย่าง |
|---|---|---|
num |
ย่อจำนวนให้อยู่ในรูปแบบกระชับ | 272000 -> 272k |
fixed:N |
ทศนิยม N ตำแหน่ง (ค่าเริ่มต้น 2) | 0.0377 |
dur |
แปลงวินาทีเป็นระยะเวลา | 14820 -> 4h07m |
pct |
เติม % ต่อท้าย |
96 -> 96% |
inv |
100 - x |
แปลงค่าที่ใช้ไปเป็นค่าคงเหลือ |
alias:TABLE |
ค้นหาใน aliases และคืนค่าเดิมหากไม่มีในรายการ |
medium -> 🌗 |
meter:W:SCALE |
แถบสัญลักษณ์กว้าง W ช่องสำหรับค่า 0-100 | [⣿⣿⠐⠐⠐] (meter:1 = หนึ่งสัญลักษณ์) |
รูปแบบส่วนประกอบ
{ "text": "📚 {context.max_tokens|num}" }: ข้อความตามตัวอักษร + การแทรกค่า{ "when": "<path>", "text": "..." }: แสดงผลเฉพาะเมื่อค่าที่พาธเป็นจริง{ "map": "<path>", "cases": { "true": "⚡", "false": "🐌" } }: แปลงค่าเป็นสัญลักษณ์ (กรณี_defaultครอบคลุมค่าที่ไม่ตรงกับกรณีใด){ "each": "<array-path>", "item": "{label}" }: วนซ้ำพาธที่มีค่าเป็นอาร์เรย์ (ปัจจุบันไม่มีพาธในสัญญาที่เป็นอาร์เรย์)
ตัวอย่าง
{ "schema": "openclaw.usageBar.v1", "scales": { "braille": "⠐⡀⡄⡆⡇⣇⣧⣷⣿" }, "aliases": { "reasoning": { "medium": "🌗", "high": "🌕" } }, "output": { "surfaces": { "discord": [ { "text": "{model.display_name}" }, { "when": "model.reasoning", "text": " {model.reasoning|alias:reasoning}" }, { "map": "state.fast_mode", "cases": { "true": " ⚡", "false": " 🐌" } }, { "when": "context.max_tokens", "text": " | 📚 [{context.pct_used|meter:5:braille}]{context.max_tokens|num}", }, ], }, },}แสดงผล เช่น claude-sonnet-4-6 🌗 🐌 | 📚 [⣿⣿⣿⣿⣧]272k
ผู้ให้บริการ + ข้อมูลประจำตัว
การใช้งานจะถูกซ่อนเมื่อไม่สามารถระบุการยืนยันตัวตนสำหรับการใช้งานของผู้ให้บริการที่ใช้ได้ OpenClaw
ค้นพบ Plugin ผู้ให้บริการที่เปิดใช้งานและประกาศ
contracts.usageProviders พร้อมทั้งใช้งาน resolveUsageAuth และ
fetchUsageSnapshot โดยอัตโนมัติ จึงไม่มีรายการอนุญาตผู้ให้บริการแยกต่างหากในแกนหลัก สัญญาแบบคงที่
จำกัดขอบเขตการค้นพบโดยไม่ต้องนำเข้า Plugin ผู้ให้บริการทุกราย แต่ละ
Plugin เป็นเจ้าของปลายทางต้นทางและการแมปการตอบกลับของตนเอง
สแนปช็อตที่ใช้ร่วมกันทำให้ชื่อแผน หน้าต่างโควตา ยอดคงเหลือ ยอดใช้จ่าย และงบประมาณ
เป็นกลางต่อผู้ให้บริการสำหรับผู้ใช้งาน CLI, แอป และ Control UI
- Anthropic (Claude): โทเค็น OAuth ในโปรไฟล์การยืนยันตัวตน หากโทเค็น OAuth ไม่มี
ขอบเขต
user:profileระบบจะใช้เซสชันเว็บclaude.aiเป็นทางเลือกสำรอง (CLAUDE_AI_SESSION_KEY,CLAUDE_WEB_SESSION_KEYหรือคุกกี้sessionKey=ในCLAUDE_WEB_COOKIE) เมื่อตั้งค่าไว้ ระบบจะรวมขีดจำกัดเฉพาะโมเดลและยอดใช้จ่าย/งบประมาณรายเดือนของการใช้งานเพิ่มเติมที่เปิดใช้งาน เมื่อ Anthropic รายงานข้อมูลเหล่านี้ ส่วนคีย์ Anthropic Admin API ที่ระบุไว้อย่างชัดเจน หรือ โปรไฟล์ผู้ให้บริการsk-ant-admin...ที่ตรวจพบโดยอัตโนมัติ จะแสดงค่าใช้จ่ายระดับองค์กรย้อนหลัง 30 วัน และประวัติ Messages API แทน - ClawRouter: คีย์ API (
CLAWROUTER_API_KEY) แสดงหน้าต่างงบประมาณรายเดือน และงบประมาณ USD ที่ระบุชนิดเมื่อกำหนดค่าไว้ มิฉะนั้นจะแสดงยอดใช้จ่ายรวมและ สรุปคำขอ/โทเค็น/ค่าใช้จ่าย - DeepSeek: คีย์ API ผ่านตัวแปรสภาพแวดล้อม/การกำหนดค่า/ที่เก็บการยืนยันตัวตน (
DEEPSEEK_API_KEY) แสดงยอดคงเหลือของแต่ละสกุลเงินที่ผู้ให้บริการรายงาน - GitHub Copilot: โทเค็น OAuth ในโปรไฟล์การยืนยันตัวตน
- Gemini CLI: โทเค็น OAuth ในโปรไฟล์การยืนยันตัวตน
- MiniMax: คีย์ API หรือโปรไฟล์การยืนยันตัวตน MiniMax OAuth OpenClaw ถือว่า
minimax,minimax-cnและminimax-portalเป็นพื้นผิวโควตา MiniMax เดียวกัน โดยให้ความสำคัญกับ MiniMax OAuth ที่จัดเก็บไว้เมื่อมี และมิฉะนั้นจะใช้MINIMAX_CODE_PLAN_KEY,MINIMAX_CODING_API_KEYหรือMINIMAX_API_KEYเป็นทางเลือกสำรอง การสำรวจการใช้งานจะอนุมานโฮสต์ Coding Plan จากmodels.providers.minimax-portal.baseUrlหรือmodels.providers.minimax.baseUrlเมื่อกำหนดค่าไว้ มิฉะนั้นจะใช้ โฮสต์ MiniMax CN ฟิลด์ดิบusage_percent/usagePercentของ MiniMax หมายถึงโควตา คงเหลือ ดังนั้น OpenClaw จะกลับค่าก่อนแสดงผล โดยฟิลด์ที่อิงจำนวนจะมีลำดับความสำคัญสูงกว่า เมื่อมี- ป้ายกำกับหน้าต่างมาจากฟิลด์ชั่วโมง/นาทีของผู้ให้บริการเมื่อมี จากนั้น
จึงใช้ช่วง
start_time/end_timeเป็นทางเลือกสำรอง - หากปลายทางแผนการเขียนโค้ดส่งคืน
model_remainsOpenClaw จะให้ความสำคัญกับ รายการโมเดลแชต อนุมานป้ายกำกับหน้าต่างจากการประทับเวลาเมื่อไม่มีฟิลด์window_hours/window_minutesที่ระบุไว้อย่างชัดเจน และรวมชื่อโมเดล ไว้ในป้ายกำกับแผน
- ป้ายกำกับหน้าต่างมาจากฟิลด์ชั่วโมง/นาทีของผู้ให้บริการเมื่อมี จากนั้น
จึงใช้ช่วง
- OpenAI (แผน Codex/ChatGPT): โทเค็น OAuth ในโปรไฟล์การยืนยันตัวตน (ส่งส่วนหัว
ChatGPT-Account-Idเมื่อมีรหัสบัญชี) แสดงแผน ChatGPT หน้าต่าง Codex ที่รีเซ็ตได้ และยอดคงเหลือเครดิตเมื่อมีการรายงาน เครดิตยังคงเป็นเครดิตของผู้ให้บริการ OpenClaw จะไม่ระบุว่าเป็นดอลลาร์OPENAI_ADMIN_KEYเพิ่ม ค่าใช้จ่ายระดับองค์กรย้อนหลัง 30 วันและประวัติการใช้งานการเติมข้อความ เมื่อคีย์มีสิทธิ์เข้าถึง Usage Dashboard ข้อมูลประจำตัวสำหรับการอนุมานจะไม่ถูกส่งต่อไปยัง API ระดับองค์กรโดยเด็ดขาด - OpenRouter: คีย์ API หรือคีย์ API ที่รองรับด้วย OAuth (
OPENROUTER_API_KEYหรือโปรไฟล์ การยืนยันตัวตน) รวมปลายทางเครดิตของบัญชีเข้ากับปลายทางโควตาของคีย์ เพื่อให้ยอดคงเหลือ/ยอดใช้จ่ายของบัญชี งบประมาณคีย์ และการใช้งานรายวัน/รายสัปดาห์/รายเดือนปรากฏ เมื่อข้อมูลประจำตัวสามารถเข้าถึงได้ ปลายทางใดปลายทางหนึ่งสามารถเพิ่มข้อมูลให้สแนปช็อต ได้อย่างเป็นอิสระ - Venice: คีย์ API ผ่านตัวแปรสภาพแวดล้อม/การกำหนดค่า/ที่เก็บการยืนยันตัวตน (
VENICE_API_KEY) แสดงยอดคงเหลือ USD และ DIEM รวมถึงการใช้การจัดสรรตามยุคของ DIEM เมื่อมีการรายงาน - Xiaomi MiMo: พื้นผิวการใช้งานแยกกันสองแบบ การชำระตามการใช้งานใช้คีย์ API
(
XIAOMI_API_KEY) ส่วน Token Plan ใช้คีย์แยกต่างหาก (XIAOMI_TOKEN_PLAN_API_KEY) ปัจจุบันทั้งสองแบบไม่รายงานหน้าต่างโควตา - z.ai: คีย์ API ผ่านตัวแปรสภาพแวดล้อม/การกำหนดค่า/ที่เก็บการยืนยันตัวตน (
ZAI_API_KEYหรือZ_AI_API_KEY)