ข้ามไปยังเนื้อหาหลัก
ผลงานทั้งหมด

โปรเจกต์ส่วนตัว·2026·Desktop App · Open Source

Claude Codex Usage Companion

โปรแกรมบนเดสก์ท็อป Linux ที่ติดตามโควตาของ Claude, Codex และ Antigravity ในแผงเดียว — ผมต่อยอดจากพอร์ต Linux โอเพนซอร์ส

Claude Codex Usage Companion
บทบาท
ผู้ร่วมพัฒนา (Contributor) — ต่อยอดบน fork
ทีม
โอเพนซอร์ส: ต้นฉบับโดย gkfriend, พอร์ต Linux โดย ychsieh95, ส่วนต่อยอดโดยผม
ระยะเวลา
ก.ย. – ต.ค. 2026
ปี
2026

ตัวเลขสำคัญ

62
คอมมิตของผม (จากทั้งหมด 69)
+18,827
บรรทัดที่เพิ่มหลังพอร์ตต้นทาง (83 ไฟล์)
303
test methods (เดิม 169)
3
ผู้ให้บริการที่รองรับ
4
หน้าต่างใหม่: ประวัติ · วิเคราะห์ · efficiency · timeline

Claude Codex Usage Companion เป็นโปรแกรมโอเพนซอร์สที่แสดงโควตาการใช้งาน (รอบ 5 ชั่วโมงและรายสัปดาห์) ของ Claude Code, Codex และ Google Antigravity ไว้ในแผงเดียวที่ลอยอยู่บนเดสก์ท็อป Linux พร้อม CLI และไอคอนถาดระบบ ต้นฉบับเป็นแอป Windows (WPF) ของ gkfriend ซึ่ง ychsieh95 พอร์ตมาเป็น Linux ด้วย Avalonia ผมแตก fork ต่อจากเวอร์ชัน 0.1.2 แล้วเพิ่ม Antigravity เป็นผู้ให้บริการรายที่สาม สร้างส่วนขยาย GNOME top bar ทำหน้าประวัติและวิเคราะห์การใช้งาน ธีมสว่าง โหมดกะทัดรัด และแปลหน้าจอเพิ่ม — ส่วนที่ผมเขียนอยู่บน branch feature/antigravity

โจทย์และปัญหา

  1. 01โควตาของเครื่องมือ AI สำหรับเขียนโค้ดมี 2 รอบซ้อนกัน (5 ชั่วโมงและรายสัปดาห์) ถ้าไม่เปิดดู จะรู้ตัวตอนโควตาหมดไปแล้ว
  2. 02แต่ละผู้ให้บริการแสดงโควตาคนละที่ คนละรูปแบบ และ Antigravity ไม่มี API สาธารณะสำหรับดึงโควตา
  3. 03แอปเดิมแสดงสถานะปัจจุบันและบันทึกลงไฟล์ได้ แต่ยังไม่มีหน้าดูย้อนหลัง จึงตอบไม่ได้ว่าใช้เร็วแค่ไหน หรือใช้โควตาคุ้มก่อนรีเซ็ตหรือเปล่า
  4. 04Linux มีหลายเดสก์ท็อปและหลายระบบหน้าต่าง (KDE/GNOME, X11/Wayland) ที่แสดงแถบสถานะและหน้าต่างลอยต่างกัน

วิธีแก้

  1. 01Antigravity: ค้นหากระบวนการ language server ที่รันอยู่ผ่าน /proc (เฉพาะของผู้ใช้เอง) อ่านพอร์ตและ CSRF token แล้วเรียกบริการภายในเครื่องผ่าน loopback เพื่อดึงสรุปโควตา แปลงเป็น 2 pool ร่วม (Gemini และ Claude + ChatGPT) โดยไม่เก็บ token และไม่ส่งข้อมูลออกนอกเครื่อง
  2. 02หน้าจอใช้งาน: การ์ด Claude → Codex → Antigravity พร้อมนับถอยหลังถึงเวลารีเซ็ต โหมดกะทัดรัด ธีมสว่าง/มืด และหน้าตั้งค่าแบบหมวดหมู่ที่มีช่องค้นหา
  3. 03ส่วนขยาย GNOME top bar (GJS) ที่รับสถานะจากแอปผ่านตัวส่งต่อสถานะ พร้อมสคริปต์ติดตั้งที่จัดการส่วนขยายเวอร์ชันค้าง และชุดทดสอบฝั่ง JS
  4. 04ประวัติการใช้งาน: อ่านไฟล์ CSV ที่แอปบันทึก (รองรับทั้งสคีมาเก่าและใหม่) วาดกราฟโควตาคงเหลือ เลือกช่วง 24H/7D/30D/All กรองผู้ให้บริการ และมีเส้นประสีส้มบอกจุดรีเซ็ต
  5. 05การวิเคราะห์: อัตราการใช้ต่อชั่วโมง สัดส่วนโควตา 5 ชม. ต่อรายสัปดาห์ สถานะ runway และหน้า Reset efficiency — โดยนับเฉพาะโควตาที่ลดลง ไม่นับการฟื้นตัวตอนรีเซ็ต
  6. 06แปลหน้าจอใหม่เป็น 3 ภาษา (English, 繁體中文, 简体中文) และเพิ่มการทดสอบเดสก์ท็อปใน CI (ส่วนขยาย GNOME, วิดเจ็ต Plasma, ตัวติดตั้ง)

ผลลัพธ์

  1. 01เห็นโควตาของสามผู้ให้บริการพร้อมประวัติและการวิเคราะห์ในโปรแกรมเดียว แทนการเปิดหลายที่
  2. 02จำนวน test methods เพิ่มจาก 169 เป็น 303 และ CI รันทั้ง Debug/Release โดยถือคำเตือนเป็น error
  3. 03หน้าจอบอกข้อจำกัดของข้อมูลของตัวเอง เช่น “ประมาณจากตัวอย่างในเครื่อง” และ “กิจกรรมระหว่างรีเฟรชอาจไม่ถูกจับ”

สิ่งที่ส่งมอบ

  • ผู้ให้บริการ Antigravity (ค้นหากระบวนการ, client, parser, runtime provider) พร้อมชุดทดสอบ
  • ส่วนขยาย GNOME top bar และสคริปต์ติดตั้ง
  • หน้าต่างประวัติ วิเคราะห์ Reset efficiency และ Timeline
  • ธีมสว่าง โหมดกะทัดรัด และหน้าตั้งค่าใหม่
  • สคริปต์ install-desktop.sh และการทดสอบเดสก์ท็อปใน CI

ทบทวนโปรเจกต์

ความท้าทาย

  • Antigravity ไม่มีเอกสาร API จึงต้องแยก parser, client และการค้นหากระบวนการออกจากกัน มีชุดทดสอบ และแสดงข้อความ fallback เมื่อดึงโควตาร่วมไม่ได้
  • token และ CSRF token อยู่ในเครื่องผู้ใช้ จึงต้องไม่ถูก log: ข้อความ debug ระบุเพียงว่า “มี token” และบันทึกประวัติเฉพาะ pool รวม ไม่เก็บโมเดล บัญชี หรือแผนของผู้ใช้
  • ลอง hint ของหน้าต่าง X11 เพื่อให้ลอยบน XWayland แต่พบว่ากระทบความเข้ากันได้ จึงถอดออก
  • ส่วนขยาย GNOME ต้องเปลี่ยน UUID และเวอร์ชันหลายรอบ (v2–v4) และต้องจัดการส่วนขยายค้างในสคริปต์ติดตั้ง

สิ่งที่เรียนรู้

  • การต่อยอดโค้ดของคนอื่นให้ชัดว่าส่วนไหนเป็นของใคร: แยก branch, คงใบอนุญาตและเครดิตต้นฉบับไว้
  • ออกแบบการวิเคราะห์ให้ซื่อตรงกับข้อมูล บอกข้อจำกัดบนหน้าจอเลย ไม่อ้างเกินที่วัดได้
  • ตรวจเลย์เอาต์ UI ด้วย Avalonia.Headless และข้อมูลจำลอง ได้ภาพที่ทำซ้ำได้โดยไม่ต้องใช้บัญชีจริง

สนใจงานแนวนี้?

เล่าโจทย์ของคุณให้ผมฟัง ตอบกลับภายใน 24 ชั่วโมง

คุยเรื่องงาน