CTX: หน่วยความจำข้ามเซสชันของ Claude Code — ติดตั้งด้วย `pip install` หรือ `/plugin install`
(github.com/jaytoone)Claude Code จะสูญเสียคอนเท็กซ์ทั้งหมดเมื่อปิดเซสชัน CTX แก้ปัญหานี้ด้วย Claude Code hooks
วิธีการทำงาน: ในเหตุการณ์ UserPromptSubmit จะมีการฉีดคอนเท็กซ์ 3 ประเภทโดยอัตโนมัติภายในไม่ถึง 1ms
- G1: ไทม์ไลน์การตัดสินใจที่อิงจาก
git log(ทำไมเมื่อวานถึงตัดสินใจแบบนั้น) - G2: การค้นหาโค้ด/เอกสารด้วย BM25 (ฉีดไฟล์ที่เกี่ยวข้องให้อัตโนมัติ)
- CM: คลังบทสนทนาเก่า (SQLite FTS5 + เวกเตอร์แบบเลือกใช้)
ตัวเลขที่วัดได้จริง:
- ความแม่นยำในการเรียกคืนหน่วยความจำ: 0.880 [0.762, 0.944] (MAB N=50, Wilson CI)
- ค่าพื้นฐาน (ไม่มี): 0.00
- อัตราการใช้งานจากการใช้งานจริง 10,000+ เทิร์น: 39.6%
ไม่มีการเรียกใช้ LLM ไม่มีคลาวด์ ทำงานแบบโลคัลทั้งหมด
การติดตั้ง:
pip install ctx-retriever && ctx-install
หรือภายใน Claude Code: /plugin install ctx@jaytoone
9 ความคิดเห็น
พอติดตั้งด้วย
/pluginก็ขึ้นแบบนี้ ⎿ ไม่พบ Marketplace "jaytoone"เป็นแนวทางที่น่าสนใจมากครับ ผมชอบไอเดียการทำ routing ด้วยการจัดประเภท trigger มาก
มีอยู่จุดหนึ่งที่ผมสงสัย: ดูเหมือนว่าจะไม่ได้ระบุ tokenizer ของเลเยอร์ BM25 ไว้ใน README อยากทราบว่ามีแผนจัดการภาษาเกาหลีอย่างไรครับ? ถ้าใช้ tokenizer แบบเว้นวรรคพื้นฐาน
"검색하다"/"검색하는"ก็จะกลายเป็นคนละโทเค็น ทำให้ recall ในการค้นหาคอมเมนต์โค้ดและ docstring ภาษาเกาหลีลดลงมากแม้จะมี
multilingual-e5-smallเป็น fallback อยู่ แต่ผมก็ยังสงสัยถึงแผนการรองรับภาษาเกาหลีของเลเยอร์ BM25 เอง (รวมถึง CJK) ครับ (ผมเองตอนทำแอป llm wiki ชื่อ seCall ก็เคยเจอปัญหาเรื่องการค้นหา CJK เลยแก้ด้วยการต่อ Lindera ko-dic + Kiwi-rs เข้าไป แต่ CTX เป็นโครงสร้างแบบ trigger routing เลยคิดว่าน่าจะมีแนวทางอื่นได้ครับ)ชี้ประเด็นได้ตรงมากครับ ตอนนี้
tokenize()ของเลเยอร์ BM25 จะแยกด้วยช่องว่าง+เครื่องหมายวรรคตอนก่อน แล้วค่อยแยกอักขระเกาหลี/CJK เพิ่มเป็นรายตัวอักษรอีกที'검색하다'→['검','색','하','다']+ โทเค็นคำเต็ม'검색하다'ครับ จึงทำ partial matching ได้ แต่ก็จริงที่หน่วยความหมายระดับมอร์ฟีมจะถูกทำให้แตกกระจายเรากำลังมองการเชื่อมต่อ Kiwi/Lindera เป็นตัวเลือกในขั้นถัดไป โดย CTX มีการตรวจจับภาษาก่อนทำ trigger routing อยู่แล้ว จึงน่าจะใส่การแตกแขนงไปยังตัววิเคราะห์มอร์ฟีมเมื่อพบว่าเป็นภาษาเกาหลีได้ค่อนข้างสะอาดครับ
น่าสนใจมากเลยที่ใน seCall คุณแก้ปัญหาด้วยชุดผสม Lindera ko-dic + Kiwi-rs ถ้าไม่เป็นการรบกวน อยากรบกวนแชร์หน่อยได้ไหมครับว่าจัดการข้อความ CJK แบบผสม (เกาหลี+คอมเมนต์โค้ดภาษาอังกฤษ) อย่างไร?
อัปเดต v0.3.19 — ส่งอัตโนมัติเมื่อจบเซสชัน:
การเปลี่ยนแปลงที่ใหญ่ที่สุด: ตอนนี้หลังจากติดตั้ง ctx แล้ว แม้จะใช้งานตามปกติโดยไม่ต้องรันคำสั่งใด ๆ เมื่อจบเซสชัน สถิติจะถูกส่งไปยัง Turso โดยอัตโนมัติ
ฟิลด์ที่เพิ่มในสคีมา v1.7:
การปิดส่งข้อมูล: สร้างไฟล์
~/.claude/ctx-telemetry-revokeเพื่อหยุดการส่งอัปเดต v0.3.16 และเพิ่มไลฟ์เดโม:
ไลฟ์แดชบอร์ด (HF Space): https://be2jay-ctx-dashboard-demo.hf.space
utility_rate, การแสดงผล knowledge graphการเปลี่ยนแปลงหลัก (v0.3.16):
session_aggregateแบบ k-anonymity)ctx-installการวัดอัตราการใช้งานจริง (n=1054 เซสชัน):
utility_rateโดยรวม: 39.6%ประกาศอัปเดต (v0.3.13):
ลำดับความสำคัญของวิธีติดตั้ง:
[แนะนำ] ปลั๊กอิน Claude Code (ขั้นตอนเดียว):
/plugin install ctx@jaytoone
[ทางเลือก] pip:
pip install ctx-retriever && ctx-install
v0.3.13 การเปลี่ยนแปลง: แยก venv ของ vec-daemon (ป้องกันการชนกันของ numpy/ABI), ตัวจัดอันดับใหม่ BGE แบบ opt-in (CTX_BGE_ENABLE=1)
วิดีโอการทำงานของแดชบอร์ด (39 วินาที): https://drive.google.com/file/d/…
รายละเอียดเพิ่มเติม: https://dev.to/jaewon_jang_d63fddcf69ac2/…
อัปเดต v0.3.28 (2026-05-20): ทำได้ถึง 6 ⭐ บน GitHub และ 2,726 ดาวน์โหลดต่อเดือนบน PyPI ในรีลีสนี้ได้เพิ่มความโปร่งใสด้านความเป็นส่วนตัว — เพิ่ม
PRIVACY.md(พิสูจน์ว่าไม่สามารถย้อนรอยแฮชได้ พร้อมเหตุผลอ้างอิงตาม GDPR/CCPA/PIPA), แจ้งเตือนเทเลเมทรี 1 ครั้งเมื่อรันครั้งแรก และเพิ่มคำสั่งctx-telemetry disable/enableผู้ใช้เวอร์ชันเก่า (v0.3.25 หรือต่ำกว่า) แนะนำให้ใช้pip install --upgrade ctx-retrieverอัปเดต v0.3.27: ตอนนี้เชื่อมต่อ Claude Code hook อัตโนมัติได้ด้วยคำสั่งเดียว
pip install ctx-retriever(ไม่ต้องรัน ctx-install แยกอีกต่อไป) ภายในใช้ไฟล์.pthใน site-packages เพื่อติดตั้ง hook อัตโนมัติเมื่อรัน Python ครั้งแรก และมีการเพิ่ม SessionStart hook + retry queue ทำให้ความเสถียรของการเก็บข้อมูลดีขึ้นจากประมาณ 70% → 93% ติดตั้ง v0.3.27 ได้โดยตรงบน PyPI.