Đưa Chi Phí Token Xuống Đáy - Từ Trung Bình Mỗi Ngày 200 NTD Đến Chỉ 15 NTD

Trong tuần chạy OpenClaw, khi kiểm tra lại trên giao diện của Anthropic, tôi nhận được bảng chi tiết sau:

Ngày Số Token Sử Dụng Chi Phí (USD)
Ngày 1 2.1 triệu $8.40
Ngày 2 3.7 triệu $14.80
Ngày 3 4.2 triệu $16.80
Ngày 4 5.1 triệu $20.40
Ngày 5 4.8 triệu $19.20
Ngày 6 3.9 triệu $15.60
Ngày 7 5.5 triệu $22.00
Tổng cộng 29.3 triệu $117.20 (≈ 850 NTD)

Với mức trung bình mỗi ngày là 121 NTD, tổng cộng trong một tháng sẽ lên đến hơn 3.600 NTD. Điều này chỉ đơn thuần là cho một Agent thực hiện các nhiệm vụ hàng ngày.

Vấn đề không nằm ở OpenClaw mà nằm ở việc bạn không biết rằng tiền mình đã trả cho những gì.

Bài viết này sẽ hướng dẫn tôi qua 6 phương pháp cụ thể giúp giảm chi phí từ 121 NTD xuống còn chỉ 11 NTD mỗi ngày (tỷ lệ giảm 91%) cùng với cấu hình và dữ liệu thực tế.

1. Hiểu rõ Token đã bị tiêu thụ ở đâu?

Trước khi tối ưu, bạn cần xác định rõ nguồn gốc của chi phí. Mỗi lần gọi LLM của OpenClaw sử dụng Token như sau:

┌──────────────────────────────────────────────────┐
│              Thành phần Token mỗi lần gọi LLM            │
├──────────────────────────────────────────────────┤
│  System Prompt (tự động tạo bởi OpenClaw)                │
│  ├── Mô tả Công cụ (Tool Descriptions)        ~2.000   │
│  ├── Các quy tắc an toàn (Safety Guardrails)         ~500    │
│  ├── Danh sách Skill + Đường dẫn                ~800     │
│  ├── Tiêm các tệp của khu vực làm việc                                │
│  │   ├── AGENTS.md                       ~1.500  │
│  │   ├── SOUL.md                          ~300   │
│  │   ├── USER.md                          ~200   │
│  │   └── HEARTBEAT.md                     ~400   │
│  ├── Metadata thời gian chạy                          ~200    │
│  └── Tổng cộng                              ~5.900     │
├──────────────────────────────────────────────────┤
│  Lịch sử cuộc trò chuyện (Conversation History)                  │
│  ├── Tất cả các tin nhắn user/assistant trước đó          ~3.000+ │
│  ├── Kết quả tất cả các cuộc gọi công cụ trước đó              ~5.000+  │
│  └── Tổng cộng (tăng tuyến tính theo số vòng trò chuyện)            ~8.000+    │
├──────────────────────────────────────────────────┤
│  Yêu cầu hiện tại                                        │
│  ├── Tin nhắn người dùng                              ~100   │
│  └── Nội dung tệp/dính kèm (nếu có)                ~2.000+ │
├─────────────────────────────────────────────┤
│  Đầu ra mô hình (Output Tokens)                       │
│  ├── Suy luận/think                            ~1.000  │
│  └── Phản hồi cuối cùng + Cuộc gọi công cụ                ~500   │
├─────────────────────────────────────────────┤
│  Tổng cộng (một nhiệm vụ đơn giản)                     ~15.500  │
│  Tổng cộng (một nhiệm vụ phức tạp đa vòng trong một lần gọi)             ~50.000+ │
└─────────────────────────────────────────────┘

Phát Hiện Khóa Chìa

Lời nhắc của bạn chỉ chiếm khoảng 1% tổng Token. Phần lớn chi phí đến từ System Prompt (được tiêm vào mỗi yêu cầu) và lịch sử cuộc trò chuyện liên tục mở rộng.

Dùng một ví dụ thực tế - yêu cầu Agent tìm lịch trình hôm nay và gửi thông báo qua Feishu:

Nguồn Token Số Token Tỷ lệ Có thể tối ưu hóa?
System Prompt 5.900 38% Có thể cắt ngắn đáng kể
Lịch sử cuộc trò chuyện (vòng 10) 6.200 40% Nén/giảm ngay lập tức
Kết quả Tool (API Notion trả về) 2.800 18% Cắt ngắn kết quả
Tin nhắn người dùng 80 0.5% Đã rất ngắn gọn
Đầu ra mô hình 520 3.5% Có thể kiểm soát mức độ

Kết luận: Điểm tối ưu hóa chính là System Prompt + Lịch sử cuộc trò chuyện + Kết quả Tool, chứ không phải lời nhắc của bạn.

2. Sáu Phương Pháp Tối Ưu Hóa - Mỗi Bước Có Mã Cấu Hình Và Dữ Liệu Thực Tế

Phương Pháp 1: Reset Session Đúng Thời Gian - Tiết kiệm 40%-60%

Nguyên lý: Lịch sử cuộc trò chuyện của OpenClaw tăng tuyến tính theo mỗi vòng tương tác, sau 10 vòng, lịch sử có thể chiếm từ 8.000 đến 20.000 Token. API LLM là không trạng thái - mỗi yêu cầu đều phải gửi lại toàn bộ lịch sử.

Phương pháp 1: Reset Session trong cuộc trò chuyện (hiệu quả trực tiếp nhất)

Gửi lệnh gạch chéo bất kỳ kênh trò chuyện nào (WhatsApp / Telegram / Discord / Feishu v.v.):

# Reset session hiện tại, xóa lịch sử cuộc trò chuyện, bắt đầu từ đầu
/reset

# Hoặc sử dụng /new, hiệu quả tương tự, có thể chuyển đổi mô hình cùng lúc
/new
/new haiku          # Reset và chuyển sang mô hình Haiku

Phương pháp 2: Thực thi một vòng của Agent thông qua CLI (tự phân cách)

Lệnh agent của OpenClaw có thể thực thi các nhiệm vụ một lần thông qua Gateway:

# Thực thi một vòng của agent thông qua Gateway, có thể chọn gửi kết quả đến kênh trò chuyện
openclaw agent --message "Tìm lịch trình hôm nay và gửi thông báo Feishu" --deliver

# Chỉ định kênh đích
openclaw agent --to +15555550123 --message "Tóm tắt công việc hôm nay" --deliver

Phương pháp 3: Tạo Cron Job tự động reset Session

Các công việc Cron của OpenClaw tự động tạo một sessionId mới cho mỗi lần chạy (theo tài liệu chính thức: "Công việc Cron bị cô lập luôn tạo ra một sessionId mới mỗi lần chạy"), do đó công việc định kỳ sẽ không tích lũy lịch sử:

# Quản lý Cron job thông qua CLI
openclaw cron --help

Phương pháp 4: Xóa các Session hết hạn thông qua CLI

# Xem tất cả các Session
openclaw sessions --verbose

# Xem trước việc xóa (không thực hiện xóa)
openclaw sessions cleanup --dry-run

# Thực hiện xóa
openclaw sessions cleanup --enforce

Dữ liệu thực tế:

Trường hợp Không reset (vòng 15) Reset mỗi nhiệm vụ Tiết kiệm
Tìm lịch trình 18.200 token 7.800 token 57%
Gửi thông báo Feishu 22.500 token 9.100 token 60%
Tóm tắt tệp 35.000 token 15.200 token 57%

Phương Pháp 2: Tối Ưu Hóa System Prompt - Tiết kiệm 15%-25%

Nguyên lý: System Prompt tự động tạo bởi OpenClaw chứa nhiều thông tin bạn có thể không sử dụng - mô tả tất cả các công cụ đã đăng ký, đường dẫn của tất cả các kỹ năng, thậm chí cả các tệp khu vực làm việc mà bạn chưa từng sử dụng.

Tệp cốt lõi: AGENTS.md

OpenClaw sẽ tiêm tệp AGENTS.md trong thư mục làm việc vào mỗi System Prompt. Đây là điểm truy cập trực tiếp để kiểm soát System Prompt của bạn.

<!-- AGENTS.md —— Phiên bản tinh gọn -->
<!-- ❌ Không nên viết như thế này -->
# Mô tả dự án
Đây là một dự án tự động hóa toàn diện, bao gồm các module sau:
- Module A: Xử lý các yêu cầu truy vấn lịch trình của người dùng, hỗ trợ nhiều định dạng lịch trình...
- Module B: Gửi thông báo đến Feishu, hỗ trợ tin nhắn văn bản, card, hình ảnh...
- Module C: Đồng bộ dữ liệu, hỗ trợ Notion, Airtable, Google Sheets...
(v.v... bỏ qua 1.200 Token)

<!-- ✅ Nên viết như thế này -->
# Hướng dẫn hoạt động của Agent
- Sử dụng tiếng Việt để phản hồi
- Tìm kiếm ưu tiên sử dụng API Notion
- Gửi thông báo bằng webhook Feishu
- Hoạt động nhạy cảm cần xác nhận

Tối ưu hóa các tệp được tiêm vào System Prompt (show-system-token.sh):

# Xem tất cả các tệp sẽ được tiêm vào System Prompt
ls -la AGENTS.md SOUL.md TOOLS.md IDENTITY.md USER.md HEARTBEAT.md 2>/dev/null

# Tính toán số lượng Token của mỗi tệp (ước lượng thô: 1 chữ cái Trung Quốc ≈ 2 Token)
for f in AGENTS.md SOUL.md TOOLS.md IDENTITY.md USER.md HEARTBEAT.md; do
  if [ -f "$f" ]; then
    chars=$(wc -c < "$f")
    tokens=$((chars * 2 / 3))  # ước lượng thô
    echo "$f: ~${tokens} token"
  fi
done

Danh sách đề xuất tối ưu hóa:

Tệp Mục đích Chiến lược tối ưu hóa Số lượng Token mục tiêu
AGENTS.md Hướng dẫn hoạt động Chỉ giữ các quy tắc cơ bản, xóa mô tả dư thừa < 300
SOUL.md Tính cách/Nghệ thuật ngôn ngữ Một câu định nghĩa giọng điệu, không viết tiểu phẩm < 50
USER.md Hồ sơ người dùng Chỉ giữ thông tin quan trọng ảnh hưởng đến việc thực hiện nhiệm vụ < 100
HEARTBEAT.md Danh sách công việc định kỳ Chỉ liệt kê các công việc đang hoạt động, xóa các công việc đã hoàn thành < 200
TOOLS.md Mô tả bổ sung công cụ Nếu không có công cụ đặc biệt, xóa tệp này 0
IDENTITY.md Định danh của Agent Nếu không cần đóng vai, xóa tệp này 0

Hiệu quả thực tế: System Prompt từ 5.900 Token giảm xuống còn 2.100 Token, tiết kiệm 3.800 Token mỗi yêu cầu.

Phương Pháp 3: Model Router - Sử dụng Mô hình Lớn để Quyết Định, Mô hình Nhỏ để Thực Thi

Lý do chính gây ra chi phí cao nhất. Ý tưởng chính: không phải mọi nhiệm vụ đều cần một mô hình cấp độ Opus/Sonnet.

OpenClaw hỗ trợ lệnh /model để chuyển đổi mô hình, nhưng việc chuyển đổi thủ công quá phức tạp. Chúng ta cần một cách tự động hóa.

Scheme A: Cấu hình đa mô hình trong openclaw.json

{
  "providerChính": "anthropic",
  "mô hình": "claude-sonnet-4-5",
  "nhàCungCấp": {
    "anthropic": {
      "apiKey": "sk-ant-xxx"
    },
    "ollama": {
      "baseUrl": "http://127.0.0.1:11434"
    }
  },
  "ghi đèMô hình": {
    "heartbeat": "ollama/qwen3-8b",
    "classification": "ollama/qwen3-8b",
    "simple_lookup": "ollama/qwen3-8b"
  }
}

Scheme B: claw-llm-router (tuyến doanh nội bộ)

claw-llm-router là một bộ định tuyến LLM nguồn mở hoạt động cục bộ, nó sẽ phân loại yêu cầu bằng một mô hình nhỏ trước đó định tuyến đến mô hình phù hợp:

# Cài đặt claw-llm-router
pip install claw-llm-router

# Khởi động dịch vụ định tuyến (chạy cục bộ, không gửi dữ liệu đến bên thứ ba)
claw-router start --config router_config.yaml

router_config.yaml:

# router_config.yaml
classifier:
  mô hình: "ollama/qwen3-1.7b"  # Mô hình phân loại nhỏ, gần như không mất phí
  endpoint: "http://127.0.0.1:11434"

tuyến_doanh:
  - tên: "đơn giản"
    mô tả: "Truy vấn đơn giản, lịch trình, thời tiết, dịch thuật"
    đích:
      nhàCungCấp: "ollama"
      mô hình: "qwen3-8b"
      endpoint: "http://127.0.0.1:11434"

  - tên: "trung_bình"
    mô tả: "Viết mã, soạn thảo tài liệu, phân tích dữ liệu"
    đích:
      nhàCungCấp: "anthropic"
      mô hình: "claude-haiku-3.5"

  - tên: "phức_tạp"
    mô tả: "Suy luận đa bước, thiết kế kiến trúc, gỡ lỗi phức tạp"
    đích:
      nhàCungCấp: "anthropic"
      mô hình: "claude-sonnet-4-5"

mặc_định:
  nhàCungCấp: "anthropic"
  mô hình: "claude-sonnet-4-5"

Bảng so sánh chi phí giữa các mô hình (mỗi 1 triệu Token):

Mô hình Giá Input Giá Output Ứng dụng
Claude Opus 4.6 $15.00 $75.00 Suy luận cực phức tạp (cố gắng tránh)
Claude Sonnet 4.5 $3.00 $15.00 Viết mã, soạn thảo tài liệu
Claude Haiku 3.5 $0.80 $4.00 Công việc trung bình, tóm tắt, phân loại
Qwen3-8B (cục bộ) $0.00 $0.00 Heartbeat, truy vấn đơn giản, phân loại

Dữ liệu thực tế:

Loại nhiệm vụ Trước tối ưu hóa (sử dụng Sonnet) Sau tối ưu hóa (tuyến doanh) Tiết kiệm
Kiểm tra heartbeat (mỗi 10 phút) $0.18/lần $0.00/lần (cục bộ) 100%
Tìm lịch trình $0.05/lần $0.00/lần (cục bộ) 100%
Gửi thông báo Feishu $0.08/lần $0.01/lần (Haiku) 87%
Review mã $0.35/lần $0.35/lần (Sonnet) 0%
Tổng cộng hàng ngày $17.20 $2.80 84%

Phương Pháp 4: Cắt ngắn Kết quả Tool - Tiết kiệm 10%-20%

Nguyên lý: Kết quả trả về của cuộc gọi Tool sẽ được giữ nguyên trong lịch sử cuộc trò chuyện. Một truy vấn API Notion có thể trả về hơn 3.000 Token JSON, nhưng bạn chỉ cần một vài trường.

Scheme: Tiền xử lý kết quả trong Script Skill

Tái cấu trúc lại query_notion.py từ bài viết #07, thêm một lớp cắt ngắn đầu ra:

#!/usr/bin/env python3
"""query_notion_slim.py —— Phiên bản tinh gọn truy vấn Notion, chỉ xuất các trường cần thiết"""
import json
import os
import sys
from urllib.request import Request, urlopen

TOKEN_NOTION = os.environ[

Thẻ: OpenClaw TokenOptimization CostReduction LLM Anthropic

Đăng vào ngày 13 tháng 8 lúc 13:12