Concept internals
Theo dõi mức sử dụng
Đây là gì
- Lấy trực tiếp mức sử dụng/hạn mức của nhà cung cấp từ endpoint sử dụng của từng nhà cung cấp. Không ước tính hóa đơn của nhà cung cấp; chỉ hiển thị tên gói, khoảng thời gian hạn mức, số dư, mức chi tiêu, ngân sách, lịch sử chi phí hằng ngày, phân bổ theo token/mô hình hoặc bản tóm tắt trạng thái tài khoản do nhà cung cấp báo cáo.
- Đầu ra khoảng thời gian hạn mức dễ đọc được chuẩn hóa thành
còn X%, ngay cả khi nhà cung cấp báo cáo hạn mức đã dùng, hạn mức còn lại hoặc chỉ số đếm thô. Các nhà cung cấp không có khoảng thời gian hạn mức có thể đặt lại sẽ hiển thị văn bản tóm tắt của nhà cung cấp thay thế (ví dụ: số dư). /statusở cấp phiên và công cụsession_statusdùng dự phòng nhật ký bản chép lời của phiên khi ảnh chụp nhanh phiên trực tiếp thiếu dữ liệu token/mô hình. Cơ chế dự phòng đó điền các bộ đếm token/bộ nhớ đệm còn thiếu, có thể khôi phục nhãn mô hình thời gian chạy đang hoạt động và ưu tiên tổng số lớn hơn theo hướng prompt khi siêu dữ liệu phiên bị thiếu hoặc nhỏ hơn (totalTokensFresh !== true, bằng không hoặc thấp hơn giá trị suy ra từ bản chép lời). Các giá trị trực tiếp khác không luôn được ưu tiên hơn cơ chế dự phòng.
Xuất hiện ở đâu
/statustrong cuộc trò chuyện: thẻ trạng thái có số token của phiên và chi phí ước tính (chỉ với mô hình dùng khóa API). Mức sử dụng của nhà cung cấp được hiển thị cho nhà cung cấp mô hình hiện tại khi có sẵn, dưới dạng khoảng thời giancòn X%đã chuẩn hóa hoặc văn bản tóm tắt của nhà cung cấp./usage off|tokens|fulltrong cuộc trò chuyện: chân trang mức sử dụng cho mỗi phản hồi./usage costtrong cuộc trò chuyện: bản tóm tắt chi phí cục bộ được tổng hợp từ nhật ký phiên OpenClaw.- CLI:
openclaw status --usagein ra bảng phân tích đầy đủ về mức sử dụng/hạn mức theo từng nhà cung cấp. - CLI:
openclaw models statusliệt kê hồ sơ xác thực OAuth/token và hiển thị bản tóm tắt khoảng thời gian sử dụng bên cạnh mỗi nhà cung cấp có dữ liệu này. - Giao diện điều khiển: Mức sử dụng hiển thị các thẻ gói và hóa đơn của nhà cung cấp phía trên phần phân tích token và chi phí ước tính do OpenClaw suy ra từ phiên. Thông tin xác thực API quản trị của Anthropic và OpenAI bổ sung mức chi tiêu hôm nay, trong 7 ngày và 30 ngày do nhà cung cấp báo cáo, xu hướng hằng ngày, tổng số token, các mô hình hàng đầu và các danh mục chi phí.
- Giao diện điều khiển: cửa sổ bật lên vòng ngữ cảnh trong trình soạn tin nhắn trò chuyện hiển thị mức sử dụng gói cho các nhà cung cấp theo thuê bao — các thanh theo từng khoảng thời gian (5 giờ, hằng tuần, theo phạm vi mô hình) cùng thời gian đặt lại, gói của nhà cung cấp khi biết (ví dụ:
Max (20x)) và tín dụng sử dụng bổ sung. Các phiên được tính phí qua gói sẽ ẩn ước tính chi phí theo token; các phiên được tính phí qua API vẫn giữChi phí ước tínhvà bảng phân tích chi phí theo loại. Các thiết lập CLI Claude Code (claude-cli) sử dụng lại cùng dữ liệu mức sử dụng thuê bao Anthropic. - Thanh menu macOS: mục gốc "Mức sử dụng" xuất hiện bên dưới Ngữ cảnh khi có ảnh chụp nhanh mức sử dụng của nhà cung cấp. Xem Thanh menu.
openclaw channels list không còn in mức sử dụng của nhà cung cấp; thay vào đó, lệnh này hướng người dùng đến openclaw status hoặc openclaw models list.
Lịch sử chi phí Anthropic và OpenAI
Hạn mức thuê bao và hóa đơn API là hai bề mặt khác nhau của nhà cung cấp:
- Thông tin xác thực thuê bao/thiết lập Anthropic tiếp tục hiển thị các khoảng thời gian hạn mức Claude và ngân sách sử dụng bổ sung tùy chọn. Đặt
ANTHROPIC_ADMIN_KEYhoặcANTHROPIC_ADMIN_API_KEYđể hiển thị lịch sử API Mức sử dụng và Chi phí của tổ chức. Thông tin xác thực nhà cung cấp Anthropic bắt đầu bằngsk-ant-adminđược tự động phát hiện. - OAuth OpenAI ChatGPT/Codex tiếp tục hiển thị gói, các khoảng thời gian hạn mức và số dư tín dụng. Đặt
OPENAI_ADMIN_KEYđể hiển thị lịch sử chi phí và mức sử dụng lượt hoàn thành của tổ chức; tùy chọn đặtOPENAI_PROJECT_IDđể giới hạn trong một dự án. OpenClaw không bao giờ gửi thông tin xác thực suy luận từOPENAI_API_KEY, cấu hình nhà cung cấp hoặc hồ sơ xác thực đến các API tổ chức vì những khóa đó có thể thuộc về endpoint tùy chỉnh.
Thông tin xác thực quản trị được ưu tiên vì cung cấp dữ liệu hóa đơn thực tế của tổ chức. OpenClaw không kết hợp các tổng số do nhà cung cấp báo cáo này với ước tính phiên cục bộ; hai phần chủ ý trả lời các câu hỏi khác nhau.
Chế độ chân trang mức sử dụng mặc định
/usage off|tokens|full đặt chân trang cho một phiên và lựa chọn này được ghi nhớ cho phiên đó. messages.responseUsage khởi tạo chế độ này cho các phiên chưa chọn chế độ, nhờ đó chân trang có thể được bật theo mặc định mà không cần nhập /usage mỗi lần.
Đặt một chế độ cho mọi kênh hoặc một ánh xạ theo từng kênh với phương án dự phòng default:
{ "messages": { "responseUsage": "tokens", // hoặc: { "default": "off", "discord": "full" } },}Các giá trị được chấp nhận: "off", "tokens", "full" và bí danh cũ "on" (được xử lý như "tokens").
Ba trạng thái phiên riêng biệt
Trường responseUsage của một phiên có ba trạng thái có thể biểu diễn, mỗi trạng thái có ngữ nghĩa khác nhau:
| Trạng thái | Giá trị được lưu | Chế độ có hiệu lực |
|---|---|---|
| Chưa đặt / kế thừa | undefined (không có) |
Chuyển tiếp đến mặc định cấu hình messages.responseUsage, sau đó là off. |
| Tắt rõ ràng | "off" (được lưu) |
Luôn tắt; mặc định cấu hình khác off không thể bật lại chân trang. |
| Bật rõ ràng | "tokens" hoặc "full" (được lưu) |
Chế độ đó, bất kể mặc định cấu hình. |
Thứ tự ưu tiên
Chế độ có hiệu lực = ghi đè của phiên → mục cấu hình kênh → default → off.
Lệnh /usage off rõ ràng được lưu bền vững dưới dạng giá trị nguyên văn "off" trong phiên, không giống với trạng thái "chưa đặt". Mặc định messages.responseUsage khác off không thể bật lại chân trang sau khi người dùng đã tắt rõ ràng.
Đặt lại và tắt
/usage offbuộc tắt chân trang và lưu bền vững lựa chọn đó. Mặc định khácoffđã cấu hình không thể ghi đè lựa chọn này./usage reset(các bí danh:default,inherit,inherited,clear,unpin) xóa ghi đè của phiên. Sau đó, phiên kế thừa mặc định cấu hình có hiệu lực (messages.responseUsage). Nếu không cấu hình mặc định, chân trang vẫn tắt.- Việc đặt lại toàn bộ phiên (
/resethoặc/new) hay chuyển vòng phiên sẽ giữ nguyên tùy chọn chế độ mức sử dụng rõ ràng để lựa chọn hiển thị của người dùng được duy trì qua các lần chuyển vòng phiên. Chỉ/usage reset(và các bí danh của nó) mới xóa ghi đè.
Hành vi chuyển đổi
/usage không có đối số sẽ tuần tự chuyển đổi: tắt → token → đầy đủ → tắt. Điểm bắt đầu của chu kỳ là chế độ hiện tại có hiệu lực (ghi đè của phiên chuyển tiếp đến mặc định cấu hình khi chưa đặt), vì vậy chu kỳ luôn khớp với nội dung người dùng hiện thấy trong chân trang.
Cấu hình
Khi không có cấu hình, hành vi trước đây vẫn được giữ nguyên (chân trang tắt cho đến khi dùng /usage). Dùng /usage reset để xóa ghi đè của phiên và kế thừa lại mặc định đã cấu hình.
Chân trang /usage full tùy chỉnh
/usage tokens luôn kết xuất một dòng thuần túy Mức sử dụng: X vào / Y ra (cùng các hậu tố bộ nhớ đệm và chi phí ước tính khi có). Chỉ /usage full kết xuất chân trang phong phú hơn được mô tả bên dưới.
/usage full hiển thị chân trang nhỏ gọn tích hợp sẵn với mô hình, mức suy luận, nhanh/chậm, cửa sổ ngữ cảnh và chi phí khi các trường đó có sẵn. Chân trang tích hợp sẵn không yêu cầu tệp mẫu.
messages.usageTemplate chỉ dành cho bố cục tùy chỉnh nâng cao. Giá trị là đường dẫn tệp JSON (hỗ trợ ~) hoặc đối tượng nội tuyến và sẽ thay thế chân trang tích hợp sẵn khi hợp lệ. Đường dẫn tệp được theo dõi và tải lại trực tiếp khi có thay đổi.
{ "messages": { "usageTemplate": "~/.openclaw/usage-footer.json" }}Mẫu bị thiếu hoặc rỗng sẽ âm thầm dùng chân trang tích hợp sẵn làm phương án dự phòng. Mẫu đã cấu hình nhưng không thể đọc hoặc không hợp lệ (JSON lỗi hoặc cấu trúc không có phần đầu ra nào có thể kết xuất) cũng sẽ dùng chân trang tích hợp sẵn làm phương án dự phòng và phát cảnh báo cho người vận hành.
Hãy bắt đầu mẫu tùy chỉnh từ cấu trúc tích hợp sẵn, sau đó chỉnh sửa các phần bạn muốn thay đổi:
{ "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}" }, ], }, },}Cấu trúc
{ "schema": "openclaw.usageBar.v1", "scales": { "<name>": "low-to-high glyphs" }, // chuỗi (1 ký hiệu/ký tự) hoặc mảng "aliases": { "<table>": { "<value>": "<label>" } }, "output": { "sep": "", // nối các phần còn lại "default": [/* các phần */], // phương án dự phòng cho mọi bề mặt "surfaces": { "discord": [/* các phần */], "telegram": [/* các phần */], }, },}Mỗi bề mặt là một danh sách các phần có thứ tự; bộ máy kết xuất từng phần, loại bỏ các phần rỗng và nối các phần còn lại bằng sep. Bề mặt không có mục tương ứng sẽ dùng output.default.
Đường dẫn hợp đồng
Một phần đọc các giá trị từ hợp đồng theo từng lượt bằng đường dẫn dấu chấm. Các giá trị không có được xem là rỗng (vì vậy điều kiện bảo vệ when hoặc |fallback giữ cho phần đó gọn gàng).
| Đường dẫn | Ý nghĩa |
|---|---|
surface |
mã định danh kênh (discord/telegram/v.v.) |
agentId / chat_type |
mã định danh tác nhân sở hữu / loại bề mặt trò chuyện |
model.id / model.display_name / model.provider |
mã định danh mô hình / tên hiển thị / mã định danh nhà cung cấp |
model.actual, model.resolved_ref |
tham chiếu nhà cung cấp/mô hình thực sự được dùng cho lượt |
model.requested |
tham chiếu nhà cung cấp/mô hình được yêu cầu (trước khi dự phòng) |
model.reasoning |
mức độ (off đến xhigh) |
model.is_fallback / model.is_override |
bool: đã dùng phương án dự phòng / mô hình đã được ghim |
model.override_source / model.auth_mode |
nhãn nguồn ghi đè / chế độ thông tin xác thực (oauth, api-key, token, mixed, aws-sdk, unknown) |
state.fast_mode |
bool: nhanh hay chậm |
state.compactions |
số lần Compaction trong phiên |
context.max_tokens / context.used_tokens / context.pct_used |
hạn mức cửa sổ / số token đã chiếm dụng / tỷ lệ đã dùng từ 0-100 |
usage.input_tokens / usage.output_tokens / usage.total_tokens |
tổng hợp theo lượt |
usage.cache_read_tokens / usage.cache_write_tokens |
số token đọc bộ nhớ đệm và ghi bộ nhớ đệm cho lượt |
usage.has_tokens / usage.has_split_tokens / usage.has_total_only_tokens |
các điều kiện bảo vệ hiển thị token |
usage.cache_hit_pct |
tỷ lệ phần đọc bộ nhớ đệm trong tổng số token của lời nhắc |
usage.last.input_tokens / usage.last.output_tokens / usage.last.cache_hit_pct |
chỉ lệnh gọi mô hình cuối cùng (cũng có cache_read_tokens, cache_write_tokens, total_tokens) |
cost.turn_usd / cost.available |
chi phí ước tính của lượt / liệu có phân giải được bảng chi phí hay không |
timing.duration_ms |
thời lượng thực tế của lượt |
identity.name / identity.emoji / identity.avatar |
tên danh tính tác nhân / emoji / ảnh đại diện |
session.id |
mã định danh phiên |
(Các cửa sổ giới hạn tốc độ của nhà cung cấp không thuộc hợp đồng này; hiện không có đường dẫn nào có giá trị dạng mảng, vì vậy một phần tử each không có gì để lặp.)
Động từ
Truyền một giá trị qua các động từ từ trái sang phải; phân đoạn không phải động từ là giá trị dự phòng.
| Động từ | Tác dụng | Ví dụ |
|---|---|---|
num |
rút gọn số đếm | 272000 -> 272k |
fixed:N |
N chữ số thập phân (mặc định là 2) | 0.0377 |
dur |
chuyển số giây thành thời lượng | 14820 -> 4h07m |
pct |
thêm % |
96 -> 96% |
inv |
100 - x |
từ tỷ lệ đã dùng sang còn lại |
alias:TABLE |
tra cứu trong aliases, giữ nguyên nếu không có |
medium -> 🌗 |
meter:W:SCALE |
thanh ký tự W ô cho một giá trị từ 0-100 | [⣿⣿⠐⠐⠐] (meter:1 = một ký tự) |
Các dạng phần tử
{ "text": "📚 {context.max_tokens|num}" }: văn bản cố định + nội suy.{ "when": "<path>", "text": "..." }: chỉ kết xuất nếu đường dẫn có giá trị đúng.{ "map": "<path>", "cases": { "true": "⚡", "false": "🐌" } }: ánh xạ giá trị thành ký tự (trường hợp_defaultbao phủ các giá trị không khớp).{ "each": "<array-path>", "item": "{label}" }: lặp qua một đường dẫn có giá trị dạng mảng (không có đường dẫn nào trong hợp đồng hiện tại là mảng).
Ví dụ
{ "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}", }, ], }, },}kết xuất, chẳng hạn, thành claude-sonnet-4-6 🌗 🐌 | 📚 [⣿⣿⣿⣿⣧]272k.
Nhà cung cấp + thông tin xác thực
Thông tin sử dụng bị ẩn khi không thể phân giải được thông tin xác thực sử dụng hợp lệ của nhà cung cấp. OpenClaw tự động phát hiện các Plugin nhà cung cấp đã bật có khai báo contracts.usageProviders và triển khai cả resolveUsageAuth lẫn fetchUsageSnapshot; không có danh sách cho phép riêng dành cho nhà cung cấp trong lõi. Hợp đồng tĩnh giúp giới hạn phạm vi phát hiện mà không cần nhập mọi Plugin nhà cung cấp. Mỗi Plugin sở hữu điểm cuối thượng nguồn và ánh xạ phản hồi của mình. Ảnh chụp nhanh dùng chung giữ cho tên gói, cửa sổ hạn ngạch, số dư, chi tiêu và ngân sách không phụ thuộc vào nhà cung cấp để các thành phần CLI, ứng dụng và giao diện điều khiển sử dụng.
- Anthropic (Claude): Token OAuth trong hồ sơ xác thực. Nếu token OAuth thiếu phạm vi
user:profile, hệ thống chuyển sang dự phòng bằng phiên webclaude.ai(CLAUDE_AI_SESSION_KEY,CLAUDE_WEB_SESSION_KEYhoặc cookiesessionKey=trongCLAUDE_WEB_COOKIE) khi được thiết lập. Các giới hạn theo phạm vi mô hình và chi tiêu/ngân sách hằng tháng cho mức sử dụng bổ sung đã bật được đưa vào khi Anthropic báo cáo chúng. Thay vào đó, khóa Anthropic Admin API được chỉ định rõ ràng hoặc hồ sơ nhà cung cấpsk-ant-admin...được tự động phát hiện sẽ hiển thị chi phí tổ chức trong 30 ngày và lịch sử Messages API. - ClawRouter: Khóa API (
CLAWROUTER_API_KEY). Hiển thị cửa sổ ngân sách hằng tháng và ngân sách USD có kiểu khi được cấu hình; nếu không, hiển thị tổng chi tiêu cùng bản tóm tắt yêu cầu/token/chi phí. - DeepSeek: Khóa API qua biến môi trường/cấu hình/kho xác thực (
DEEPSEEK_API_KEY). Hiển thị từng số dư tiền tệ do nhà cung cấp báo cáo. - GitHub Copilot: Token OAuth trong hồ sơ xác thực.
- Gemini CLI: Token OAuth trong hồ sơ xác thực.
- MiniMax: Khóa API hoặc hồ sơ xác thực OAuth của MiniMax. OpenClaw coi
minimax,minimax-cnvàminimax-portallà cùng một bề mặt hạn ngạch MiniMax, ưu tiên OAuth MiniMax đã lưu khi có và nếu không thì chuyển sang dự phòng bằngMINIMAX_CODE_PLAN_KEY,MINIMAX_CODING_API_KEYhoặcMINIMAX_API_KEY. Việc thăm dò mức sử dụng lấy máy chủ Coding Plan từmodels.providers.minimax-portal.baseUrlhoặcmodels.providers.minimax.baseUrlkhi được cấu hình; nếu không, hệ thống sử dụng máy chủ MiniMax CN. Các trường thôusage_percent/usagePercentcủa MiniMax biểu thị hạn ngạch còn lại, vì vậy OpenClaw đảo ngược chúng trước khi hiển thị; các trường dựa trên số lượng được ưu tiên khi có.- Nhãn cửa sổ lấy từ các trường giờ/phút của nhà cung cấp khi có, sau đó chuyển sang dự phòng bằng khoảng thời gian
start_time/end_time. - Nếu điểm cuối của gói lập trình trả về
model_remains, OpenClaw ưu tiên mục mô hình trò chuyện, suy ra nhãn cửa sổ từ dấu thời gian khi không có các trườngwindow_hours/window_minutesrõ ràng và đưa tên mô hình vào nhãn gói.
- Nhãn cửa sổ lấy từ các trường giờ/phút của nhà cung cấp khi có, sau đó chuyển sang dự phòng bằng khoảng thời gian
- OpenAI (gói Codex/ChatGPT): Token OAuth trong hồ sơ xác thực (gửi tiêu đề
ChatGPT-Account-Idkhi có mã định danh tài khoản). Hiển thị gói ChatGPT, các cửa sổ Codex có thể đặt lại và số dư tín dụng khi được báo cáo. Tín dụng vẫn là tín dụng của nhà cung cấp; OpenClaw không gắn nhãn chúng là đô la.OPENAI_ADMIN_KEYbổ sung chi phí tổ chức trong 30 ngày và lịch sử sử dụng completions khi khóa có quyền truy cập Usage Dashboard. Thông tin xác thực suy luận không bao giờ được chuyển tiếp đến các API của tổ chức. - OpenRouter: Khóa API hoặc khóa API được OAuth hỗ trợ (
OPENROUTER_API_KEYhoặc hồ sơ xác thực). Kết hợp điểm cuối tín dụng tài khoản với điểm cuối hạn ngạch khóa để số dư/chi tiêu tài khoản, ngân sách khóa và mức sử dụng hằng ngày/hằng tuần/hằng tháng xuất hiện khi thông tin xác thực có thể truy cập chúng. Mỗi điểm cuối đều có thể bổ sung độc lập cho ảnh chụp nhanh. - Venice: Khóa API qua biến môi trường/cấu hình/kho xác thực (
VENICE_API_KEY). Hiển thị số dư USD và DIEM cùng mức sử dụng phân bổ theo kỷ nguyên DIEM khi được báo cáo. - Xiaomi MiMo: Hai bề mặt sử dụng riêng biệt. Hình thức trả theo mức sử dụng dùng khóa API (
XIAOMI_API_KEY); Token Plan dùng một khóa riêng (XIAOMI_TOKEN_PLAN_API_KEY). Hiện cả hai đều không báo cáo cửa sổ hạn ngạch. - z.ai: Khóa API qua biến môi trường/cấu hình/kho xác thực (
ZAI_API_KEYhoặcZ_AI_API_KEY).