MXterm Pro

Token Meter

Token Meter đọc transcript mà Claude Code, Codex, Gemini CLI và omp ghi ra ổ đĩa rồi cộng tổng trên thanh tiêu đề. Nó cũng hiện được giới hạn gói và, với sáu nhà cung cấp API, số dư, hạn mức hoặc số tiền đã tiêu trong tài khoản. Giới hạn gói và hạn mức Codex trực tiếp có công tắc riêng; nhà cung cấp tài khoản bắt đầu chạy khi bạn lưu key. Bảng chi tiết liệt kê mọi nhà cung cấp bạn đã thiết lập, nhà bạn ghim nằm đầu.

Chip trên thanh tiêu đề

Thanh tiêu đề hiện đúng một chip. Bấm vào chip để mở bảng chi tiết, mỗi nhà cung cấp có gì để hiện thì có một dòng: Claude Code, Codex và Gemini khi tìm thấy thư mục transcript của chúng trên máy này, Agent khác khi omp đã tính vào một tài khoản không thuộc các nhà đó trong 30 ngày qua, và mỗi nhà cung cấp tài khoản bạn đã lưu key (Kimi cũng xuất hiện khi Kimi Code CLI đã đăng nhập trên máy này). Các dòng giữ thứ tự cố định: Claude Code, Codex, Gemini, Agent khác, DeepSeek, Moonshot, Kimi, MiniMax, OpenRouter, Z.ai, trừ nhà cung cấp bạn ghim được đưa lên đầu (xem mục về ghim bên dưới).

Chip nói thay cho nhà cung cấp đang sát giới hạn nhất. Nó hiện gì thì tuỳ vào cái app thật sự biết:

  • Một phần trăm khi có nhà cung cấp nào đó công bố hạn mức: lấy khung sát giới hạn nhất trong tất cả. Icon của nhà cung cấp nằm cạnh nó, và trỏ chuột vào chip sẽ thấy tên khung đó cùng thời điểm nó đặt lại.
  • Số token khi không nhà cung cấp nào công bố hạn mức: số token đã dùng trong 5 giờ qua, đọc từ transcript trên máy này, của nhà đầu tiên trong Claude Code, Codex, Gemini và Agent khác có dòng.
  • Số dư thấp nhất khi không có dòng transcript cục bộ nào (Claude Code, Codex, Gemini, Agent khác), không nhà cung cấp nào công bố hạn mức, và ít nhất một nhà cung cấp báo số dư bằng đô la Mỹ: số nhỏ nhất, hiện dưới dạng tiền (ví dụ $12.34), kèm icon của nhà cung cấp đó. Số dư không có trần, nên không bao giờ bị quy thành phần trăm, và số dư bằng nhân dân tệ không bao giờ được đổi sang đô la để so sánh.
  • Không con số nào khi không có dòng transcript cục bộ nào và các nhà cung cấp bạn đã thiết lập chỉ báo số tiền đã tiêu, hoặc chỉ có số dư bằng nhân dân tệ. Khi đó chip chỉ hiện một icon đồng hồ đo trơn.

Phần trăm hiện màu thường khi dưới 60%, màu hổ phách từ 60% và màu đỏ từ 85%. Cách tô màu này chỉ áp dụng cho phần trăm do nhà cung cấp công bố, không bao giờ áp cho số token hay số dư.

Chip ẩn hẳn khi không có gì để nói: máy không có thư mục transcript của agent nào và cũng chưa lưu key nhà cung cấp nào. Lần quét đầu bắt đầu 8 giây sau khi mở app, và số liệu đầu tiên xuất hiện khi nó xong.

Số liệu lấy từ đâu

AgentThư mụcFile được đọc
Claude Code~/.claude/projectsTranscript .jsonl trong thư mục và các thư mục con
Codex~/.codexFile phiên .jsonl trong thư mục và các thư mục con
Gemini CLI~/.gemini/tmpFile chat .jsonl trong thư mục và các thư mục con
omp~/.omp/agent/sessionsFile phiên .jsonl trong thư mục và các thư mục con

Mức dùng được tính theo từng lượt và gom theo giờ và theo model. File không thay đổi trong 30 ngày qua bị bỏ qua, dữ liệu cũ hơn 30 ngày bị loại bỏ. omp chạy trên nhiều nhà cung cấp, nên mỗi lượt của omp được ghi vào dòng của tài khoản đã bị tính tiền: Anthropic vào Claude Code, OpenAI vào Codex, Google vào Gemini, còn lại (DeepSeek, MiniMax và các nhà khác) vào Agent khác. Lượt omp nhập từ một phiên Claude Code hoặc Codex không bị đếm hai lần. OpenCode và các agent khác không được tính: app chỉ đọc bốn thư mục ở trên.

MXterm Pro ghi ~/.codex/config.toml để kết nối Codex với MCP server của nó (xem Coding agent và Control Room, trước đây là War Room), việc này tạo ra thư mục ~/.codex. Vì vậy từ lần mở app sau, dòng Codex có thể hiện 0 trong bảng chi tiết dù bạn chưa cài Codex.
Token Meter tìm thư mục transcript trong thư mục home của bạn: HOME nếu có, không thì USERPROFILE, không thì HOMEDRIVE cộng HOMEPATH. App Windows mở từ Explorer thường chỉ có USERPROFILE. Bản Windows chưa ký số, và việc quét transcript chỉ mới được xác minh trên macOS.

Bảng chi tiết: mỗi nhà cung cấp một dòng

Mỗi dòng mang con số chính của nó: tối đa ba thanh nhỏ (5h, Tuần và Tháng, Hạn mức hoặc tên giới hạn riêng của model) cho các khung nó công bố, hoặc một dòng chữ với số dư và số tiền đã tiêu. Dòng đầu nêu lúc đặt lại của khung sát giới hạn nhất: Đặt lại sau … cho khung 5 giờ, hoặc Tuần đặt lại sau … cho khung khác. Khung đã qua giờ đặt lại mà chưa có số đọc mới hiện thanh trống và dấu gạch, không hiện số cũ (Đã đặt lại, chưa có số đọc mới khi mở rộng hoặc trỏ chuột). Dòng Claude Code ghi Không làm mới được · số đọc gần nhất khi số đọc giới hạn gói cũ hơn 15 phút.

Mỗi dòng có nhãn cho biết số liệu của ai. Tài khoản nghĩa là nhà cung cấp báo cho cả tài khoản của bạn, gồm cả phần dùng trên máy khác: thanh giới hạn gói, số dư và số tiền đã tiêu của tài khoản. Máy Mac này nghĩa là chỉ đếm từ transcript trên máy này: dòng không có giới hạn hiện số tiền hôm nay và số token, ví dụ $1.20 hôm nay · 3.4M token. Dòng Gemini và Agent khác luôn hiện dòng cục bộ này, vì app không đọc hạn mức của chúng.

Bảng chi tiết liệt kê mọi nhà cung cấp có dòng, nhà được ghim nằm đầu và các nhà còn lại theo thứ tự cố định. Chip có thể nói thay cho một nhà cung cấp không nằm đầu.

Nhà cung cấp bạn chưa thiết lập được liệt kê sau các dòng đó với nhãn Thiết lập trong Cài đặt; từ hai cái trở lên chúng gộp thành một dòng Nhà cung cấp khác… kèm icon của chúng, bấm vào để hiện ra. Bấm vào dòng Thiết lập trong Cài đặt nào cũng mở Cài đặt → Token Meter.

Bấm vào dòng Claude Code, Codex, Gemini hoặc Agent khác để mở phần chi tiết. Giới hạn của chính nhà cung cấp nằm trước, dưới nhãn Tài khoản, rồi tới phần đã đếm tại máy này, dưới nhãn Máy Mac này:

  • Thanh Phiên và Tuần, cùng các giới hạn theo model mà nhà cung cấp trả về, kèm thời điểm đặt lại. Chỉ có với Claude Code và Codex, và chỉ hiện khi giới hạn đó có sẵn, xem hai mục bên dưới.
  • Token: đã dùng trong 5 giờ qua, 7 ngày qua và 30 ngày qua. Khoảng 5 giờ và 7 ngày được tính theo từng giờ tròn, nên mỗi khoảng có thể gồm thêm một phần của một giờ.
  • Chi phí: ước tính cho hôm nay, 7 ngày qua và 30 ngày qua. Con số không định giá được ghi giá chưa có, và con số bỏ sót một phần token chưa có giá thì bắt đầu bằng ≥.
  • 24 giờ qua: mỗi giờ một cột.
  • 30 ngày qua: mỗi ngày một cột. Chuyển giữa Token và Chi phí, trỏ chuột hoặc focus vào một ngày để xem tổng và ba model dùng nhiều token nhất.
  • 7 ngày qua chia thành Input mới, Output, Ghi cache, Đọc cache và Lượt.
  • Số liệu được tính cách đây bao lâu, kèm dòng Đọc từ chính transcript của từng agent trên máy Mac này. Không gửi đi đâu cả.

Ở cuối bảng chi tiết, dòng Tất cả agent cộng Hôm nay, 7 ngày qua và 30 ngày qua của mọi agent, token ở trên, chi phí ở dưới. Dòng này hiện khi có từ hai agent trở lên đã dùng token trong 30 ngày qua, và bấm vào sẽ thấy phần chia theo từng agent.

Ghim một nhà cung cấp lên đầu

Mặc định nhà cung cấp nằm đầu bảng chi tiết là Claude Code. Để đổi, mở Cài đặt → Token Meter và chọn nhà khác ở mục Ghim lên đầu, hoặc chọn Không ghim (thứ tự cố định).

Ghim chỉ dời một dòng lên đầu. Mọi nhà cung cấp bạn đã thiết lập vẫn được liệt kê, và chip vẫn theo giới hạn gần hết nhất. Nếu nhà được ghim không có dòng (không tìm thấy Codex, chưa lưu key), không có gì bị dời.

Số liệu chi phí

Chi phí là số token nhân với giá API công khai của từng model, theo bảng giá có sẵn trong app. Khi omp tự ghi chi phí của một lượt, số đó được dùng cho các token ấy thay cho bảng giá. Bảng chi tiết ghi rõ Theo giá API, không phải số tiền gói đăng ký đã bị trừ và hiện ngày của bảng giá. Nếu bạn dùng gói đăng ký, đây không phải số tiền bạn đã trả.

  • Hôm nay tính từ nửa đêm theo giờ máy. 7 ngày qua và 30 ngày qua là các khoảng trượt tính ngược từ hiện tại; app chỉ giữ lịch sử 30 ngày.
  • Model không có trong bảng giá vẫn được tính vào số token nhưng không vào chi phí. Khi đó con số ghi rõ đây là mức tối thiểu, nêu tên các model đó và cho biết bao nhiêu phần trăm token đã được định giá.
  • Chi phí hiện — khi không có mục nào trong khoảng đó có giá.
  • Bảng giá chưa được đối chiếu với trang giá của chính OpenAI cho các model OpenAI, nên hãy xem chi phí Codex là con số ước tính.

Cách số liệu được cập nhật

  • Lần quét đầu bắt đầu 8 giây sau khi mở app. Nếu transcript lớn, lần quét này có thể mất một lúc.
  • Sau đó app quét lại mỗi 60 giây và chỉ đọc phần mới được ghi thêm vào từng file kể từ lần quét trước.
  • Thanh tiêu đề lấy kết quả quét transcript mới nhất mỗi 30 giây, và hỏi giới hạn gói Claude, hạn mức Codex trực tiếp và số đọc tài khoản mỗi 60 giây. Mỗi nhà cung cấp đó vẫn áp dụng mức tối thiểu 5 phút của riêng nó.
  • Nút làm mới ở đầu bảng chi tiết (Kiểm tra lại tất cả nhà cung cấp) lấy số đọc mới nhất của mọi nhà cung cấp cùng lúc thay vì chờ lần lấy đó. Nó không bắt đầu một lượt quét transcript mới và không rút ngắn mức tối thiểu 5 phút với Anthropic, hạn mức Codex trực tiếp và các nhà cung cấp tài khoản: nhà cung cấp vừa được hỏi gần hơn mức đó thì trả lời bằng số đọc gần nhất của nó.
  • Tiến độ quét được lưu vào token-meter-cache.json trong thư mục cấu hình của app (trên macOS là ~/Library/Application Support/com.mxterm.desktop), nên sau khi khởi động lại, app chỉ đọc phần thay đổi trong lúc app tắt.

Giới hạn gói thật của Claude

Transcript của Claude Code không ghi giới hạn của gói, nên mặc định Token Meter hiện số token chứ không hiện phần trăm. Để xem phần trăm do Anthropic báo, mở Cài đặt → Token Meter, tìm mục Giới hạn gói và bật Hiện phần trăm giới hạn thật của Claude. Tùy chọn này tắt sẵn và chỉ áp dụng cho Claude Code.

Khi bạn bật:

  1. App đọc mục keychain Claude Code-credentials của Claude Code qua công cụ security của macOS. Claude Code ghi mục này bằng chính công cụ đó, nên macOS thường không hiện hộp thoại hỏi.
  2. App lấy token đăng nhập của Claude Code từ mục đó và gọi GET https://api.anthropic.com/api/oauth/usage kèm token này. Token được giữ trong bộ nhớ của app cho tới khi hết hạn hoặc bị Anthropic từ chối, nên keychain chỉ được đọc một lần cho mỗi token. Nó không bao giờ được ghi ra đĩa hay ghi log.
  3. Chip và bảng chi tiết hiện phần trăm giới hạn 5 giờ, giới hạn tuần và thời điểm đặt lại.

App gọi endpoint này tối đa một lần mỗi 300 giây và hiện số đọc gần nhất ở giữa các lần gọi. Nếu bị giới hạn tần suất (HTTP 429), app chờ 900 giây rồi mới thử lại. Nếu không kết nối được Anthropic, số đọc gần nhất vẫn giữ trên màn hình.

Nếu macOS từ chối việc đọc (keychain đang khóa, hoặc bạn từ chối hộp thoại hệ thống), tính năng bị chặn cho tới khi bạn tắt rồi bật lại công tắc hoặc khởi động lại app. Nếu Claude Code chưa đăng nhập, panel sẽ bảo bạn chạy claude để đăng nhập. Giới hạn gói chỉ hoạt động trên macOS; trên hệ điều hành khác app không đọc được thông tin đăng nhập và panel hiện cùng thông báo chưa đăng nhập. Để cấm đọc keychain (mục của Claude Code và các key tài khoản do MXterm Pro lưu) trên máy Mac do tổ chức quản lý, khởi động MXterm Pro với biến môi trường MXTERM_DISABLE_KEYCHAIN=1.

Hạn mức Codex, từ ổ đĩa hoặc trực tiếp

Codex không cần công tắc và cũng không cần mạng để có hạn mức. Nó ghi luôn các header rate-limit mà server trả về vào chính file phiên của nó, nên phần trăm 5 giờ và phần trăm tuần mà giao diện Codex hiện đã nằm sẵn trong những file Token Meter vẫn quét. Dòng Codex khi mở rộng ghi chú Theo Codex báo … trước, vì con số chỉ mới bằng lượt Codex gần nhất của bạn trên máy này.

Nếu bạn muốn con số đúng ngay lúc này, Cài đặt → Token Meter có mục Hạn mức Codex trực tiếp. Mặc định tắt. Khi bật, app đọc thông tin đăng nhập ChatGPT của chính Codex từ ~/.codex/auth.json và chỉ gửi nó tới chatgpt.com để lấy hạn mức hiện tại; app không bao giờ sửa hay làm mới thông tin đăng nhập đó. Việc kiểm tra chạy tối đa một lần mỗi 5 phút. Một số đọc trực tiếp dưới 15 phút sẽ thay cho số đọc từ ổ đĩa, và dòng đó đổi thành Trực tiếp từ OpenAI, cập nhật … trước.

Thông tin đăng nhập lưu trong keychain hệ thống thay vì trong ~/.codex/auth.json sẽ không được đọc: khi đó panel báo Không thấy thông tin đăng nhập ChatGPT của Codex trong ~/.codex/auth.json. Chạy `codex login`. Nếu OpenAI giới hạn tần suất, app chờ 15 phút rồi mới thử lại.

Số dư tài khoản từ API key của bạn

Sáu nhà cung cấp có thể báo trạng thái tài khoản của bạn: số dư, hạn mức, hoặc số tiền đã tiêu. Mỗi nhà cung cấp được đọc bằng một API key bạn dán vào Cài đặt → Token Meter, mục Tài khoản nhà cung cấp. Chưa lưu key thì app không gọi keychain và không gọi mạng, trừ Kimi khi Kimi Code CLI đã đăng nhập trên máy này (xem ghi chú bên dưới).

Nhà cung cấpCần key nàoDòng đó hiện gì
DeepSeekAPI key từ nền tảng DeepSeek (trang API keys)Số dư, tách thành phần đã trả tiền và phần được tặng
MoonshotAPI key từ Moonshot / Kimi Open Platform, kèm Khu vực Quốc tế hoặc Trung QuốcSố dư
KimiAPI key của Kimi CodeHạn mức: khung 7 ngày và khung rate-limit 5 giờ
MiniMaxKey gói MiniMax Coding Plan, bắt đầu bằng sk-cp-, kèm Khu vực Toàn cầu hoặc Trung QuốcHạn mức đã dùng của gói, tính bằng phần trăm
OpenRouterAPI key từ openrouter.ai/keys, không phải management keyHạn mức nếu key có đặt trần chi tiêu, còn không thì là số tiền đã tiêu
Z.aiAPI key gói coding của Z.ai / BigModel, kèm Khu vực Toàn cầu hoặc Trung QuốcHạn mức của gói GLM coding

Mỗi key nằm trong kho mật khẩu hệ điều hành (macOS Keychain; Windows dùng Credential Manager, chưa được kiểm tra) và chỉ gửi tới API nhà cung cấp đó, trừ hai ngoại lệ ở Dữ liệu nào rời khỏi máy. Panel ghi rõ, gọi tên macOS Keychain trên cả hai hệ: Key được lưu trong macOS Keychain và chỉ gửi tới đúng nhà cung cấp đó. File của app không chứa bí mật, chỉ ghi trạng thái thiết lập, khu vực và bốn ký tự cuối của key, để panel hiện được Đã lưu key · …abcd. Nếu macOS từ chối Keychain, dòng nhà cung cấp đã thiết lập ghi macOS Keychain đã chặn truy cập tới khi bạn lưu hoặc xóa key hay mở lại app, không chờ mãi.

Định dạng phản hồi của sáu nhà cung cấp này chưa được đối chiếu với phản hồi thật, nên một dòng có thể không hiện con số nào, hoặc hiện sai, cho tới khi được kiểm chứng. Hãy xem các số đọc này là chưa kiểm chứng.

Mỗi nhà cung cấp được làm mới tối đa một lần mỗi 5 phút. Nhà cung cấp bị giới hạn tần suất sẽ bị tạm dừng 15 phút; nhà cung cấp báo Key bị từ chối, cập nhật trong Cài đặt thì dừng cho tới khi bạn đổi key. Khi một lần làm mới thất bại vì không kết nối được nhà cung cấp hoặc bị giới hạn tần suất, sau khi đã có số đọc tốt, dòng đó giữ số cũ và đánh dấu Không làm mới được · số đọc gần nhất. Key bị từ chối hoặc phản hồi không đọc được thì bỏ số cũ.

Kimi là nhà cung cấp duy nhất chạy được mà không cần dán key: nếu Kimi Code CLI đã đăng nhập trên máy này và token của nó chưa hết hạn, app đọc token đó từ ~/.kimi-code/credentials/kimi-code.json rồi gửi tới api.kimi.com để đọc hạn mức, không có công tắc nào để bật. App chỉ đọc file đó và không bao giờ làm mới token, và key bạn tự dán luôn được ưu tiên hơn.

Trong pane và trên tab

Số token của riêng một pane nằm ở dòng của nó trong thanh bên trái, không còn ở header của pane hay trên tab. Dòng thứ hai của hàng đó hiện tên agent và phiên của pane đã dùng bao nhiêu trên máy Mac này (tối đa 30 ngày qua), ví dụ Claude Code · 1.7M · $0.41, tính theo giá niêm yết chứ không phải số tiền bạn bị trừ. Hàng của workspace hiện tổng của các pane có phiên đã biết. Pane chưa biết phiên thì không hiện gì, pane Gemini cũng vậy: không có con số nào được đoán.

Trên pane chạy Claude Code hoặc Codex, một thông báo hiện khi phần trăm do chính gói công bố chạm 80% (nên chuẩn bị dừng) và lần nữa ở 95% (nên dừng). Thông báo chỉ đến từ một phần trăm thật, nên cần các hạn mức nói ở phần trên đang có sẵn; agent khác không bao giờ có thông báo này. Nó chỉ để thông tin: đóng bằng ✕, không tạm dừng agent và không gõ gì vào pane. Khi dòng cuối của một phiên Claude Code là chạm hạn mức gói và giờ đặt lại còn ở phía trước, header của pane hiện Đang chờ gói được đặt lại kèm giờ đó.

Các mục này lấy từ code và test của nó. Chúng chưa được thử trên máy thật.

Dữ liệu nào rời khỏi máy

Số token và chi phí được tính ngay trên máy bạn, transcript không bao giờ được gửi đi. Hạn mức Codex đọc từ ổ đĩa cũng là dữ liệu cục bộ. Một điện thoại đã ghép đọc được phần trăm gói của bạn từ máy Mac này, không bao giờ đọc số dư. Có ba thứ có thể gọi mạng, và mỗi thứ chỉ gọi tới nhà cung cấp của chính nó:

  • Hiện phần trăm giới hạn thật của Claude → api.anthropic.com, dùng chính token đăng nhập của Claude Code.
  • Hạn mức Codex trực tiếp → chatgpt.com, dùng chính thông tin đăng nhập của Codex.
  • Tài khoản nhà cung cấp → API của đúng nhà cung cấp đó, dùng key bạn đã lưu cho nó. Có hai trường hợp vượt ra ngoài đó. Với Kimi, nếu bạn không lưu key và Kimi Code CLI đã đăng nhập trên máy này, app gửi token của CLI tới api.kimi.com, không cần key và không có công tắc. Key MiniMax bị từ chối ở khu vực Global sẽ được thử lại trên máy chủ Trung Quốc của MiniMax, api.minimaxi.com. App từ chối mọi chuyển hướng, nên một key chỉ có thể đi tới một máy chủ của nhà cung cấp mà nó được lưu cho.

Các kết nối mạng khác của app có ở Telemetry: app gửi những gì.

Hỏi AI về MXterm Pro

Mở câu trả lời trực tiếp trong ChatGPT, Claude hoặc Perplexity, dựa trên trang này. Trợ lý AI tự viết, không phải chúng tôi, nên hãy kiểm tra nguồn nó trích dẫn.

Câu hỏi được gửiToken Meter lấy số liệu từ đâu, và đọc chip trên thanh tiêu đề cùng popover thế nào?