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>/
