SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-10-21

So sánh công cụ theo dõi chi phí Claude Code

Các tracker Claude Code trả lời những câu hỏi khác nhau. So sánh parser log cục bộ, màn hình usage tích hợp và stack OpenTelemetry tự xây để biết mỗi loại đếm gì.

Một công cụ theo dõi chi phí Claude Code thực sự đọc gì

Mỗi công cụ theo dõi chi phí Claude Code đọc một trong ba nguồn dữ liệu, và nguồn dữ liệu quyết định nó có thể trả lời câu hỏi nào. Bộ phân tích log đọc các file transcript của session trên chính disk của bạn. Dashboard đọc các bản ghi usage mà Anthropic lưu cho account hoặc tổ chức của bạn. Backend metrics đọc stream OpenTelemetry (OTel) do Claude Code phát ra khi bạn bật tính năng này. Cả ba có thể đồng thời đúng nhưng vẫn cho kết quả khác nhau, vì chúng đang đếm những thứ khác nhau.

Hướng dẫn này không giải thích lại token. cách Claude Code tính usage token giải thích input, output, cache writes và cache reads; bạn cần hiểu rõ phần đó trước khi xem dashboard. Nội dung ở đây hẹp hơn: với mỗi loại công cụ, nó nhìn thấy gì và không bao giờ nhìn thấy được gì.

Vì sao trong một ngày lại xuất hiện ba công cụ theo dõi chi phí Claude Code

Ba công cụ theo dõi chi phí Claude Code riêng biệt được đăng trong cùng một ngày. Chúng không phải là ba phiên bản của cùng một công cụ. Đây mới là điểm hữu ích. Một công cụ phân tích các session file cục bộ. Một công cụ bọc các màn hình usage của account. Công cụ còn lại là một tracing backend được host mà bạn tự vận hành.

Chúng xuất hiện cùng lúc vì chi phí của một agent session không còn dễ nhận biết. Một chat có chi phí gần bằng mức bạn thấy trên màn hình. Một agent đọc 20 file, chạy test suite và gửi lại toàn bộ cuộc hội thoại trong mỗi lượt, nên hóa đơn bị chi phối bởi context mà bạn chưa từng nhập. Với subscription, con số dollar của session mà Claude Code hiển thị chỉ là ước tính. Anthropic cho biết con số này không liên quan đến việc tính phí. Con số quan trọng là usage bar, vốn cạn nhanh hơn vào một số ngày. Ba công cụ này lần lượt giải quyết ba phần khác nhau của khoảng thiếu hụt đó.

Hình thức 1: trình phân tích log cục bộ cho biết hôm nay bạn đã tiêu tốn bao nhiêu

Claude Code lưu mỗi cuộc trò chuyện dưới dạng JSON Lines (JSONL) tại ~/.claude/projects/<project>/<session-id>.jsonl, trong đó <project> là đường dẫn thư mục làm việc của bạn, với các ký tự không phải chữ và số được thay thế bằng -. Mỗi lượt trả lời của assistant trong tệp đó đều có số lượng token của request. Trình phân tích log cộng các số này lại và tính chi phí.

ccusage là lựa chọn mà hầu hết mọi người dùng. Không cần cài đặt:

npx ccusage@latest daily
npx ccusage@latest daily --breakdown
npx ccusage@latest blocks
npx ccusage@latest session --json

daily tính tổng theo ngày. --breakdown tách từng dòng theo model; đây là cách bạn biết một buổi chiều dùng Opus chiếm phần lớn chi phí của cả tuần. blocks nhóm theo khung thời gian 5 giờ mà subscription được reset. session tính tổng theo từng cuộc trò chuyện, còn daily --instances nhóm theo project để bạn biết repository nào tốn kém. Thêm --since và --until để giới hạn phạm vi, rồi chạy npx ccusage@latest daily --help theo định dạng ngày mà phiên bản của bạn yêu cầu. Tính đến tháng 10 năm 2026, công cụ này cũng đọc được log của các agent CLI khác, bao gồm Codex và OpenCode. Điều này hữu ích khi bạn so sánh chúng.

Chi phí được lấy từ bảng giá của model, và công cụ có 3 chế độ tính chi phí. --mode auto dùng giá trị costUSD mà Claude Code ghi vào tệp nếu giá trị này tồn tại, rồi tính từ số lượng token nếu không có. --mode calculate luôn tính từ token và bỏ qua chi phí đã được ghi nhận. --mode display chỉ hiển thị chi phí đã được ghi nhận và in $0.00 cho những dòng không có chi phí. Nếu tổng có vẻ không đúng, hãy chạy cùng một báo cáo với calculate, sau đó chạy lại với display. Chênh lệch lớn giữa hai kết quả nghĩa là phần lớn entry không có chi phí được ghi nhận, nên toàn bộ số liệu bạn đang xem chỉ là ước tính. Nếu bạn được áp dụng mức giá theo hợp đồng, pricingOverrides trong defaults của tệp cấu hình ccusage.json sẽ thay thế giá của từng model.

Bạn cũng có thể dùng cùng dữ liệu này cho prompt. ccusage statusline in một dòng ngắn gọn cho status bar của Claude Code, được nối vào ~/.claude/settings.json như mọi lệnh status line khác. Xem xây dựng statusline cho Claude Code để biết block cấu hình và các field mà nó nhận.

Trình phân tích log không thể thấy những việc không xảy ra trên máy này. Laptop thứ hai, session trên claude.ai hoặc công việc của đồng đội đều nằm trong transcript trên các máy tương ứng. Dữ liệu cũ cũng có thể đã mất, vì transcript mặc định được dọn sau 30 ngày theo setting cleanupPeriodDays. Vì vậy dữ liệu của quý trước sẽ không còn nếu bạn không lưu trữ trước.

Còn một rủi ro khác nằm ở cấu trúc dữ liệu. Tài liệu của Anthropic nêu rằng format của entry là nội bộ của Claude Code và thay đổi giữa các phiên bản. Vì vậy, các script đọc trực tiếp những tệp này có thể hỏng sau bất kỳ bản release nào. Điều này áp dụng cho mọi công cụ cùng loại. Đây cũng là lý do một dòng lệnh jq tự viết để xử lý JSONL có thể tệ hơn bạn nghĩ: các trình phân tích được duy trì sẽ theo kịp thay đổi format, còn one-liner của bạn sẽ báo một con số sai nhưng có vẻ rất chính xác ngay khi một field được đổi tên.

Cuối cùng, với subscription, con số tính theo dollar cần có một lưu ý. Mức sử dụng trong giới hạn của gói Pro hoặc Max không bị tính tiền theo token. Vì vậy, con số này cho biết token của bạn sẽ tốn bao nhiêu nếu tính theo giá niêm yết của API. Nó đo mức độ sử dụng của bạn, không phải hóa đơn. Ngoại lệ là usage credits: nếu bật tính năng này, phần sử dụng vượt giới hạn của plan sẽ được tính theo giá API tiêu chuẩn dưới dạng một khoản phí riêng, và claude.ai hiển thị chi phí của tháng đó tại Settings > Usage. Nếu câu hỏi thực sự là nên dùng plan nào, việc so sánh đó là một bài toán riêng: xem so sánh thanh toán API với subscription Claude.

Hình 2: màn hình usage tích hợp cho biết model nào đã tiêu tốn ngân sách

Claude Code có sẵn chức năng báo cáo nhưng hầu hết mọi người không bao giờ mở nó. Chạy /usage trong một session. Khối Session ở đầu màn hình hiển thị số token theo model và số tiền ước tính cho session hiện tại. Giá trị này được tính cục bộ từ số token theo bảng giá niêm yết tiêu chuẩn, trừ khi administrator đã đặt bảng modelPricing trong managed settings. Khi đó, dòng Total cost sẽ hiển thị at your organization's configured rates. Dù theo cách nào, đây vẫn chỉ là số ước tính và có thể khác invoice của bạn. Với gói Pro hoặc Max, Anthropic cho biết giá trị này không liên quan đến billing vì usage đó đã nằm trong plan. Tổng số được đặt lại khi /clear bắt đầu một cuộc hội thoại mới.

Trên gói Pro, Max, Team hoặc Enterprise tính theo seat, màn hình này cũng cho biết bạn đã dùng bao nhiêu trong giới hạn của plan. Enterprise tính theo usage không có allowance đi kèm để cạn kiệt, vì mọi token đều được tính phí theo API rate. Trên các plan này, màn hình cũng phân bổ usage gần đây cho skills, subagents, plugins và từng MCP server theo phần trăm tổng usage. Màn hình đánh dấu các hành vi chiếm từ 10% usage gần đây trở lên, chẳng hạn context dài hoặc cache miss. Nhấn d hoặc w để chuyển đổi giữa 24 giờ gần nhất và 7 ngày gần nhất. Các số liệu này là giá trị xấp xỉ và được tính từ lịch sử session cục bộ trên máy này, nên không tính thiết bị thứ hai. Khi thanh này trống thay vì chỉ ở mức thấp, màn hình cho biết window đã đóng nhưng không cho biết cách tiếp tục làm việc. Việc cần làm sau khi đã chạm giới hạn là một quyết định riêng về model, context và plan.

Khi có nhiều hơn một developer, các số liệu được chuyển lên account. Một API organisation có trang usage trong Console, dashboard Claude Code hiển thị spend và số dòng được chấp nhận của từng member, cùng Claude Code Analytics API trả về các metric hằng ngày theo từng user bằng admin key. Plan Team và Enterprise có báo cáo spend trong admin console, hỗ trợ export CSV và được cập nhật hằng ngày. Tuy nhiên, báo cáo này chỉ bao phủ khoản chi từ usage credit: usage trong seat allowance không được đo bằng dollar. Enterprise có thêm analytics API. Bạn thấy báo cáo nào còn tùy thuộc vào cách từng developer đăng nhập, vì vậy một organisation hỗn hợp phải đọc 2 báo cáo rồi tự cộng lại.

Để ước tính ngân sách, con số được công bố trong tài liệu chi phí của Anthropic tính đến tháng 10 năm 2026 là trung bình gần $13 cho mỗi developer trong một ngày active và $150 đến $250 cho mỗi developer mỗi tháng, với 90% user dưới $30 mỗi ngày active. Hãy xem đây là benchmark được công bố từ các deployment Enterprise, không phải dự báo cho team của bạn. Chạy pilot với một nhóm rồi đo lường trước khi ngoại suy.

Dashboard không thể thấy chi tiết dưới mức ngày và người dùng. Dashboard cho biết Opus chiếm phần lớn usage vào thứ Ba. Nhưng dashboard không cho biết prompt nào, repository nào hoặc CI job nào gây ra usage đó. Dữ liệu cũng có độ trễ vì báo cáo của organisation được cập nhật hằng ngày. Do đó, dashboard phù hợp để review hơn là phát hiện một agent chạy vượt kiểm soát trong chiều nay. Muốn phát hiện agent chạy vượt kiểm soát cần có limit, không phải báo cáo. Đây là nội dung của cách giới hạn chi phí agent trên VPS.

Hình thức 3: OpenTelemetry stack của bạn cho biết prompt nào bị hồi quy

Claude Code phát OpenTelemetry metrics và events sau khi bạn đặt một biến môi trường. Đây là lựa chọn duy nhất stream dữ liệu token và chi phí theo từng user vào hệ thống do bạn kiểm soát, gần như theo thời gian thực. Các metrics bao gồm claude_code.cost.usage tính bằng USD, claude_code.token.usage tính bằng token, claude_code.session.count và claude_code.active_time.total.

Metric token là phần đáng chú ý vì có các attributes này. Mỗi data point chứa type, có giá trị là input, output, cacheRead hoặc cacheCreation, cùng với model và query_source, có giá trị là main, subagent hoặc auxiliary. Nó cũng chứa agent.name, skill.name, mcp_server.name và mcp_tool.name. Tên các MCP server do bạn tự cấu hình và các subagent tùy chỉnh của bạn xuất hiện dưới dạng custom, trừ khi bạn đặt OTEL_LOG_TOOL_DETAILS=1. Tùy chọn này cũng bổ sung các lệnh Bash và tool input vào tool events. Như vậy là đủ để trả lời những câu hỏi mà không dashboard nào trả lời được: bao nhiêu phần trong hóa đơn đến từ subagent thay vì các lượt prompt của chính bạn, một MCP server có làm số input token tăng gấp đôi không, và cache read có giảm mạnh sau khi ai đó chỉnh sửa CLAUDE.md không. Cache thường là nơi ẩn chứa bất ngờ, và khi nào prompt caching bắt đầu có lợi giải thích cách đọc dữ liệu này.

Có một điểm cần đính chính vì nó xuất hiện trong mọi cuộc thảo luận về chủ đề này. Langfuse là tracing backend self-hosted tốt, và cách chạy nó trên VPS được trình bày trong self-hosting Langfuse để tracing agent. OTLP endpoint của nó chỉ nhận traces. Theo mặc định, Claude Code export metrics và log events, không export spans. Vì vậy, nếu trỏ OTEL_EXPORTER_OTLP_ENDPOINT đến Langfuse, project sẽ trống và bạn không nhận được lỗi nào hữu ích để đọc. Span export có tồn tại, nhưng đang ở dạng beta và vẫn tắt cho đến khi bạn đặt CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 và OTEL_TRACES_EXPORTER. Tích hợp Claude Code riêng của Langfuse dùng cách khác: một Stop hook, hoặc một plugin cài Stop hook, đọc session transcripts sau mỗi response rồi chuyển chúng thành traces. Vì vậy, cách này có cùng giới hạn local-only như log parser. Langfuse phù hợp với các agent do bạn tự xây dựng trên API, nơi code của bạn tạo từng span cùng prompt, model và chi phí tương ứng. Nếu cần tổng hợp chi phí từ Claude Code CLI, metrics store mới là lựa chọn phù hợp.

Thiết lập theo dõi chi phí Claude Code trên VPS của bạn

Chỉ cần 2 service: một collector để nhận metrics và Prometheus để lưu chúng. Không cho cả 2 service này truy cập Internet công cộng, vì một cổng OTLP mở sẽ nhận dữ liệu ghi từ bất kỳ ai tìm thấy nó. Ghi /opt/ccmetrics/compose.yaml:

services:
  collector:
    image: otel/opentelemetry-collector-contrib:latest
    command: ["--config=/etc/otel/config.yaml"]
    volumes:
      - ./collector.yaml:/etc/otel/config.yaml:ro
    ports:
      - "10.8.0.1:4318:4318"
    restart: unless-stopped
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prom-data:/prometheus
    ports:
      - "127.0.0.1:9090:9090"
    restart: unless-stopped

volumes:
  prom-data:

10.8.0.1 là địa chỉ của server bên trong tunnel WireGuard. Nhờ đó, collector có thể được truy cập từ các máy của bạn và không nơi nào khác. Địa chỉ đứng trước cổng có tác dụng thực tế ở đây, vì các cổng Docker được publish không bị ufw lọc: xem vì sao các cổng Docker được publish vượt qua ufw. Cách thiết lập tunnel được mô tả trong VPN WireGuard trên VPS của bạn.

/opt/ccmetrics/collector.yaml:

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:

exporters:
  prometheus:
    endpoint: 0.0.0.0:8889

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [prometheus]

/opt/ccmetrics/prometheus.yml. Cổng 8889 không bao giờ được publish lên host, vì Prometheus truy cập collector qua Compose network bằng service name:

global:
  scrape_interval: 30s

scrape_configs:
  - job_name: claude-code
    static_configs:
      - targets: ["collector:8889"]
cd /opt/ccmetrics
docker compose up -d
docker compose logs collector

Log của collector phải kết thúc bằng Everything is ready. Begin running and processing data.. Nếu log dừng do lỗi cấu hình, YAML không được phân tích đúng và container sẽ restart liên tục.

Bây giờ trỏ Claude Code đến collector. Trên mỗi máy chạy Claude Code, thêm nội dung sau vào ~/.claude/settings.json:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "none",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://10.8.0.1:4318",
    "OTEL_METRIC_EXPORT_INTERVAL": "10000"
  }
}

Bắt đầu một session, gửi một prompt, chờ đến interval export (10 giây ở đây, mặc định là 60 giây), rồi hỏi Prometheus xem nó đã nhận được gì:

curl -s http://localhost:9090/api/v1/label/__name__/values | grep -o 'claude_code[a-z_]*'

Bạn sẽ nhận được một số tên bắt đầu bằng claude_code_. Exporter thay dấu chấm bằng dấu gạch dưới và thêm unit, nên chuỗi chính xác phụ thuộc vào phiên bản collector của bạn. Kết quả rỗng nghĩa là chưa có dữ liệu nào đến. Kiểm tra protocol và cổng có khớp nhau không, vì http/protobuf sử dụng cổng 4318 còn grpc sử dụng cổng 4317; nếu không khớp thì lỗi xảy ra mà không có thông báo rõ ràng. Chạy claude --debug-file /tmp/claude-debug.log và tìm các dòng [3P telemetry] trong file đó. Đây là nơi Claude Code báo lỗi export OTel.

Nếu chỉ dùng một máy và không cần server, bỏ qua toàn bộ phần trên. Thiết lập OTEL_METRICS_EXPORTER=prometheus, rồi Claude Code sẽ tự expose scrape endpoint tại http://localhost:9464/metrics. Khi prometheus là exporter duy nhất được khai báo, Claude Code loại bỏ các unit USD, tokens và s khỏi metrics đã export để scrape vẫn giữ đúng định dạng văn bản Prometheus. Tên metric không thay đổi. Một thiết lập kết hợp nhiều exporter, chẳng hạn otlp,prometheus, vẫn giữ các unit này.

Cách triển khai này đi kèm một quyết định về quyền riêng tư. Theo mặc định, chỉ count và metadata rời khỏi máy; không có nội dung prompt hoặc output của tool. OTEL_LOG_USER_PROMPTS=1 thêm nội dung prompt vào các event được export, còn OTEL_LOG_TOOL_CONTENT=1 thêm output của tool vào các trace span. Vì vậy, khi export một trong hai loại dữ liệu này, telemetry box của bạn sẽ chứa source code và mọi nội dung khác có trong context. Chỉ bật các tùy chọn đó khi thực sự cần, và đọc cách giữ bí mật ngoài context của agent trước.

Theo dõi chi phí cho các lần chạy bằng script và CI

Các lần chạy không tương tác thường gây bất ngờ vì không có ai theo dõi màn hình. claude -p cùng với --output-format json báo cáo chi phí của lần chạy đó trong payload kết quả:

claude -p "summarise the failing tests" --output-format json | jq '.total_cost_usd'

Payload chứa total_cost_usd cùng với bảng phân tích theo từng model, nên một CI job có thể tự ghi nhận chi phí mà không cần dashboard. Giống mọi số liệu cục bộ, đây chỉ là ước tính phía client. Một lần chạy tiếp tục cuộc hội thoại với --continue hoặc --resume sẽ báo cáo tổng chi phí của toàn bộ cuộc hội thoại, bao gồm cả các lần chạy trước đó. Ghi giá trị này vào một file hoặc đẩy nó dưới dạng metric đến collector ở trên. Đây là cách theo dõi chi phí hữu ích và tiết kiệm nhất, với chi phí một lệnh gọi jq cho mỗi lần chạy.

Các dạng lỗi và những gì bạn sẽ thấy

Báo cáo trống. npx ccusage@latest daily không in ra dòng nào nghĩa là nó không đọc đúng nơi Claude Code ghi dữ liệu. CLAUDE_CONFIG_DIR thay đổi vị trí đó, nên phải cấu hình parser sử dụng vị trí mới. Nếu có dòng dữ liệu nhưng chỉ dừng ở khoảng một tháng trước, đó là cleanupPeriodDays đang hoạt động đúng thiết kế: mặc định, transcript sẽ bị xóa sau 30 ngày.

Hai máy báo tổng số khác nhau. Đây là điều bình thường, không phải lỗi. Phần phân tích /usage và mọi log parser đều chỉ đọc lịch sử session cục bộ, nên usage từ thiết bị khác hoặc từ claude.ai không xuất hiện trong cả hai.

Tổng cục bộ không khớp với hóa đơn. Số liệu cục bộ được tính từ số lượng token theo bảng giá niêm yết tiêu chuẩn, trừ khi bạn cấu hình giá theo hợp đồng: một bảng modelPricing trong managed settings cho /usage, hoặc pricingOverrides cho ccusage. Với subscription, usage nằm trong giới hạn của plan không bị tính phí theo từng token; chỉ usage credits mới bị tính phí. Trang usage trong Console là nguồn chính thức để xác định phí API.

Chi phí tăng dù bạn vẫn làm cùng một việc. Trước tiên, hãy kiểm tra các cột cache. Một session dài sẽ gửi lại toàn bộ lịch sử trong mỗi lượt, tính theo mức giá cached khi cache còn hiệu lực và theo mức giá input đầy đủ khi cache hết hạn. Vì vậy, chỉ một lần tạm dừng lâu cũng khiến toàn bộ cuộc hội thoại được xử lý lại. Điều này hiện thành một số input lớn cạnh một số output nhỏ, và giá token input so với output giải thích vì sao hai số này thay đổi độc lập.

Một ngày có subagent cho kết quả không hợp lý. Mỗi subagent chạy trong context window riêng, nên lượng token sử dụng tăng theo số lượng subagent đã chạy và thời gian chạy của từng subagent. Với plan, phần phân bổ /usage cho biết tỷ lệ usage của subagent trên máy này. Để xem chi tiết theo từng request, dữ liệu OTel tách chúng thông qua attribute query_source trên claude_code.token.usage. Log parser chỉ hiển thị tổng số và không cho biết chi tiết để đối chiếu.

FAQ

ccusage có cho biết chính xác số tiền tôi bị tính trên gói Max không?

Không. Mức sử dụng nằm trong giới hạn của gói subscription không được tính tiền theo token. Vì vậy, log parser định giá token theo mức giá niêm yết tiêu chuẩn của API và cho biết cùng khối lượng công việc đó sẽ tốn bao nhiêu nếu thực hiện qua API. Đây là thước đo tương đối tốt để biết một ngày sử dụng nặng đến mức nào. Nó cũng hữu ích khi so sánh các project hoặc model với nhau. Để biết số tiền thực tế phải trả, trang sử dụng trong Console áp dụng cho thanh toán API, còn trang thanh toán của gói áp dụng cho subscription. Nếu đã bật usage credits, phần sử dụng vượt giới hạn sẽ được tính theo mức giá API tiêu chuẩn. claude.ai hiển thị khoản chi đó tại Settings > Usage.

Claude Code lưu các file session mà những tool này đọc ở đâu?

Trong ~/.claude/projects/<project>/<session-id>.jsonl, trong đó <project> là đường dẫn working directory với các ký tự không phải chữ và số được thay bằng -. Mỗi dòng là một JSON object cho một message, lần sử dụng tool hoặc mục metadata. CLAUDE_CONFIG_DIR di chuyển toàn bộ directory. cleanupPeriodDays trong settings.json kiểm soát thời gian lưu giữ 30 ngày. Anthropic công bố format của các entry là nội bộ và có thể thay đổi giữa các version. Vì vậy, hãy phân tích bằng một tool được duy trì thay vì tự viết script.

Tôi có thể gửi telemetry của Claude Code đến Langfuse không?

Không bằng telemetry mặc định. Endpoint OTLP của Langfuse nhận trace. Tuy nhiên, theo mặc định Claude Code xuất metrics và log event thay vì span, nên không có nơi để dữ liệu này được ghi nhận. Bạn phải bật span export vì tính năng này đang ở beta. Tích hợp Claude Code của Langfuse sử dụng một Stop hook để chuyển session transcript thành trace. Để tổng hợp chi phí, hãy gửi metrics của Claude Code đến một OpenTelemetry collector và lưu chúng trong Prometheus. Hãy dùng Langfuse cho các agent bạn tự xây dựng trên API, nơi code của bạn phát ra các span chứa prompt, model và chi phí.

Vì sao các con số trên máy local không khớp với trang sử dụng trong Console?

Vì chúng được tính theo cách khác nhau. /usage và log parser cộng các token count từ session file trên máy bạn đang sử dụng. Sau đó, chúng định giá theo mức giá niêm yết tiêu chuẩn, trừ khi đã cấu hình mức giá theo hợp đồng, thông qua modelPricing trong managed settings cho /usage hoặc pricingOverrides cho ccusage. Console báo cáo số tiền tổ chức của bạn thực sự bị tính, trên tất cả máy và key, sau khi áp dụng mọi khoản giảm giá. Chênh lệch là bình thường. Chênh lệch rất lớn thường có nghĩa là có một thiết bị thứ hai, một CI runner hoặc thành viên khác trong team đang tính phí vào cùng account.

Làm cách nào để theo dõi chi phí của một lần chạy claude -p trong CI?

Chạy bằng --output-format json và đọc total_cost_usd từ kết quả, chẳng hạn dùng claude -p "..." --output-format json | jq '.total_cost_usd'. Payload này cũng chứa breakdown theo từng model và session ID. Ghi lại giá trị đó cho mỗi job để có chi phí theo từng pipeline mà không cần agent, dashboard hoặc service bổ sung.

Bài viết này có hữu ích không?