sessionhub เป็นเครื่องมือที่รวบรวมและค้นหาเซสชัน Claude Code · Codex ที่กระจัดกระจายอยู่ในหลายเครื่องไว้ในที่เดียว
ผมสลับทำงานระหว่างเดสก์ท็อปกับแล็ปท็อป และบางครั้งก็พัฒนาบนเซิร์ฟเวอร์ด้วย เลยมักสับสนบ่อย ๆ ว่างานที่รู้สึกว่า “เคยทำอันนี้มาก่อน” อยู่บนเครื่องไหนกันแน่ เซสชันของ Claude Code กับ Codex ก็สะสมเป็น JSONL อยู่ที่ ~/.claude/projects, ~/.codex/sessions ในแต่ละเครื่องอยู่แล้ว แต่ถึงไฟล์จะมีครบ พอค้นหาไม่ได้ สุดท้ายก็ต้อง SSH เข้าไปหลายเครื่องแล้วไล่หาเองทีละเครื่อง
เวลาต้องการหา ก็ค้นด้วยคีย์เวิร์ด ใช้ sessionhub search "connection pool" เพื่อหา แล้วใช้ sessionhub raw <id> เพื่อดูบทสนทนาตอนนั้น
สิ่งที่ผมใช้สะดวกที่สุดช่วงนี้คือการเชื่อมกับเอเจนต์ เมื่อติดตั้งแล้ว สกิลจะถูกติดตั้งไปพร้อมกันใน Claude Code และ Codex ดังนั้นระหว่างทำงาน เมื่อมีจังหวะที่ต้องการรู้ว่า “เมื่อก่อนทำอันนี้ยังไงนะ” เอเจนต์จะค้นหาเซสชันที่เกี่ยวข้องแล้วดึงมาเป็นคอนเท็กซ์ให้
# Claude Code
/sessionhub 저번에 커넥션 풀 터지던거 어떻게 고쳤더라
# Codex
$sessionhub 저번에 커넥션 풀 터지던거 어떻게 고쳤더라
การทำงานเรียบง่ายมาก เมื่อกำหนดเครื่องหนึ่งเป็นฮับ เซสชันจากเครื่องอื่น ๆ จะถูกรวบรวมผ่าน SSH ทุก 15 นาที และเมื่อค้นหาจากเครื่องอื่นที่ไม่ใช่ฮับ ฮับจะค้นหาแทนให้ ไม่ต้องคัดลอกล็อกขนาดใหญ่ไปมาหลายที่
ขนาดข้อมูลก็เบาเช่นกัน พอลองแกะล็อกของผมดู พบว่า 99.7% เป็นข้อมูลสำหรับเครื่อง เช่น การเรียก tool, เฟรมสตรีมมิง, การคำนวณโทเคน ส่วนบทสนทนาที่ต้องกลับมาค้นจริง ๆ มีแค่ประมาณ 0.3% เท่านั้น ดังนั้นจึงดึงเฉพาะบทสนทนาออกมา บีบอัด แล้วใส่เข้าอินเด็กซ์ ในกรณีของผม ต้นฉบับประมาณ ~10GB ลดเหลือไม่กี่ร้อย MB ส่วนต้นฉบับทั้งหมดก็ยังอยู่บนเครื่องเดิมตามเดิม ถ้าจำเป็นค่อยเปิดดูตอนนั้นได้
เมื่อติดตั้งแล้ว setup จะช่วยแนะนำตั้งแต่การตั้งค่าฮับไปจนถึงการติดตั้งสกิล
uv tool install git+https://github.com/esc5221/sessionhub
sessionhub setup
ช่วงนี้มีความพยายามจำนวนมากที่จะใส่ long-term memory ให้เอเจนต์ วิธีหนึ่งคือสรุป·สกัดบทสนทนาก่อนหน้า แล้วเก็บไว้ในหน่วยความจำแยกเพื่อให้เซสชันถัดไปใช้อ้างอิง ผมเองก็ชอบแนวทางนี้ แต่มีสองเรื่องที่ติดใจอยู่เสมอ คือทันทีที่สรุป บริบทเดิมก็จะถูก削ลงทีละน้อย และหน่วยความจำที่สะสมไว้เมื่อเวลาผ่านไปก็จะ stale ทำให้ต้องคอยดูแลปรับปรุงต่อเนื่อง ซึ่งรู้สึกว่ายุ่งยาก
ดังนั้นผมจึงไม่สร้างสรุปแยกไว้ แต่เก็บต้นฉบับไว้ตามเดิม แล้วเมื่อจำเป็นก็ค่อยดึงบทสนทนาตอนนั้นกลับมาดู เป็นแนวทางที่ใกล้กับ compute-centric มากกว่า memory-centric
ผมก็อยากรู้เหมือนกันว่ามีใครกำลังแก้ปัญหานี้—การให้คอนเท็กซ์ในอดีตแก่เอเจนต์แบบไม่เก่าและไม่สูญเสียข้อมูล—ด้วยวิธีอื่น หรือมีวิธีที่ดีกว่านี้ไหม ถ้ามีความเห็น ช่วยคอมเมนต์กันมาเยอะ ๆ จะขอบคุณมากครับ
ยังไม่มีความคิดเห็น