Haworthiasa/limiter/tree/main/limit-line
limit-line
Claude Code 的外挂:在提示列上方显示限制行(5 小时/每周、上下文、缓存命中),提供 /usage-plus 面板和用于 pytest 及长日志的 Bash 输出蒸馏器。
关于这个 mod
limit-line 是 Claude Code 的外挂(≥ 2.1.287),包含提示列上方的限制区段(5 小时、每周、上下文、缓存命中、上下文差值、蒸馏器截断级别)、每轮详细行、带有 Session/Week/Month 三个标签页的 /usage-plus 面板,以及 Bash 输出蒸馏器:长输出(≥ 8000 个字符)会在 Claude 读取前缩短到 ≤ 4000 个字符,完整版本保存到 <project>/.claude/distill/。它为 pytest 提供单独的过滤器(按签名合并错误),匹配列表的失败命令(pytest、python train、docker logs、pip install、make/ninja/cargo/npm build)会在执行前被包装。命令:/limits、/limits detail、/usage-plus、/distill on|off|stats|last。数据保存在 ~/.local/share/limit-line/。Claude Code 的 PATH 中需要 node ≥ 23.6。成本是依据 hooks/pricing.ts 计算的 API-equiv,不是订阅方案实际需要支付的金额。
安装
请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。
claude plugin marketplace add Haworthiasa/limiter claude plugin install limit-line
原文 / README
limit-line
Mod cho Claude Code (≥ 2.1.287): dòng hạn mức phía trên ô prompt, bảng /usage-plus, và bộ
chưng cất output Bash.
Tính năng
Band (phía trên prompt):
5h █░░░░░ 13% 2h19m | wk ██░░░░ 34% T2 10:00 | ctx ░░░░░░ 7% ▲+18k | cache 90% | dist -142k [+]
turn 4 req · in 61k (cache 55k · write 4k · new 2k) · out 2.3k · ~$0.42 · opus · ctx ▃▄▆█
5h/wk: hạn mức 5 giờ và tuần, thời điểm reset,!khi dự báo sẽ cạn trước khi reset. Có toast ở 80% và 95%.ctx: mức đầy context;▲+N/▼-N: context đổi bao nhiêu trong turn vừa xong (đỏ nếu quá 10% cửa sổ).cache N%: tỉ lệ cache hit của turn vừa xong (xanh ≥ 80, vàng 50–79, đỏ < 50).dist -N: số ký tự distiller đã cắt trong phiên.[+]//limits detail: dòng chi tiết turn (số request, token theo loại, chi phí API-equiv, model, biểu đồ ctx). Lựa chọn được nhớ giữa các phiên.- Màn hình hẹp: bỏ
dist, rồi▲, rồicache, rồi thu gọn thanh.
/usage-plus: pane ba tab, phím 1 Session, 2 Week, 3 Month, x đóng (cần focus pane: click hoặc ctrl+x tab).
Token theo loại mỗi ngày, cache hit, tiền tiết kiệm nhờ cache, các lần cache bust kèm nguyên nhân
(sau /compact, hết TTL, đổi model, không rõ), phân bổ theo model và project, lịch sử hạn mức và
dự báo tuần, thống kê distiller. Mỗi lần mở sẽ chạy indexer (đọc tăng dần ~/.claude/projects).
Distiller (hook trên Bash): output dài (≥ 8000 ký tự) được rút gọn còn ≤ 4000 trước khi Claude đọc;
bản đầy đủ luôn lưu ở <project>/.claude/distill/ (tự thêm vào .gitignore của repo git).
Có bộ lọc riêng cho pytest (gom lỗi theo chữ ký, traceback đầu của mỗi nhóm), các log khác dùng
bộ lọc chung (đầu, cuối và mọi dòng lỗi).
- Lệnh thành công: output được thay sau khi chạy.
- Lệnh thất bại: core không cho rút gọn sau khi chạy, nên các lệnh khớp danh sách (pytest,
python *train*,docker logs,pip install, make/ninja/cargo/npm build) được bọc trước khi chạy: output đầy đủ ghi ra file, in bản rút gọn, giữ đúng mã thoát. Vì vậy quy tắc permission sẽ thấy lệnh đã bọc.
Lệnh
| Lệnh | Việc |
|---|---|
| /limits | Ẩn / hiện band |
| /limits detail | Bật / tắt dòng chi tiết turn |
| /usage-plus | Mở bảng usage (nếu trùng tên: /usage-x) |
| /distill on / off | Bật / tắt distiller (nhớ giữa các phiên) |
| /distill stats | Số lần, ký tự đã cắt theo loại, tỉ lệ đọc lại |
| /distill last | Đường dẫn log đầy đủ của lần gần nhất |
Muốn xem output gốc của một lệnh: thêm NO_DISTILL=1 vào lệnh. Lệnh đọc file trong .claude/distill/ không bị chưng cất.
Dữ liệu
~/.local/share/limit-line/:
ledger/<ngày>.json mỗi request trực tiếp (token, model, project; không có nội dung)
measure/<tháng>.json các lần đọc hạn mức (thưa)
compact/<tháng>.json các lần compact
distill/<tháng>.json các lần chưng cất (kích thước, đường dẫn log)
index/state.json vị trí đã đọc của từng file JSONL
index/days/<ngày>.json tổng hợp theo ngày (giờ Asia/Bangkok)
Xóa dữ liệu: rm -rf ~/.local/share/limit-line (indexer sẽ đọc lại từ đầu lần sau),
và rm -rf <project>/.claude/distill. Đọc lại lịch sử từ đầu: node scripts/indexer.mjs --rebuild.
Giới hạn đã biết
- Chi phí là API-equiv theo bảng giá trong
hooks/pricing.ts(cập nhật 2026-09-25, cần xác nhận); với gói subscription đây không phải số tiền phải trả. - Usage trực tiếp không tách cache write 5m/1h: band và ledger tính như 1h; indexer dùng số tách trong JSONL.
- Lời gọi advisor nằm trong
usage.iterationscủa JSONL: indexer có tính, band và ledger trực tiếp thì không. - Dấu compact và subagent trong JSONL chưa được xác minh trên dữ liệu thật (chưa có phiên nào như vậy).
- Ước tính "ngoài máy này" chỉ hiện khi có ít nhất 2 cửa sổ 5h đầy đủ trong ledger.
- Distiller mới có bộ lọc pytest và chung; cuda, docker, train để sau.
- Cần
node≥ 23.6 trong PATH của Claude Code (indexer và wrapper của distiller chạy file.tstrực tiếp).
Phát triển
claude plugin validate --strict . # manifest + module
claude plugin test . # test của engine
node --test tests/indexer.node.mjs # test của indexer
npx -p typescript@5 tsc -p . # kiểu (sau khi Claude Code đã sinh .claude-plugin/types)
node scripts/build-fixtures.mjs # sau khi thêm log vào tests/fixtures/<loại>/
