pordee
kerlos · kerlos/pordee
Enables your Claude Code agent to respond in concise Thai, cutting polite words and fillers to reduce output tokens by 60-75%.
ตอบสั้นๆ ก็เข้าใจแบบพอดีๆ
Preview
What you can do with it
- Reduce output token usage by Claude Code agents when communicating in Thai.
- Get direct and concise answers from an agent in Thai, without polite formalities or fillers.
- Summarize complex technical information in Thai efficiently, saving context window space.
Safety check
Usable, but read the notes first.
- ●Installer downloads a remote script and pipes it to the shell.
install.sh
Automated scan of the repo files. Always review code you run.
From the README
pordee (พอดี)
ทำไมใช้คำเยอะ ตอบสั้นๆ ก็เข้าใจ
ได้แรงบันดาลใจมาจาก caveman — pordee เป็นรุ่นภาษาไทยที่ลดเฉพาะ output token โดยไม่เสียความถูกต้องทาง technical
pordee คือ Claude Code plugin สั่งให้ agent ตอบภาษาไทยกระชับ — ตัดคำสุภาพ (ครับ/ค่ะ/นะคะ), คำลังเล (อาจจะ/น่าจะ), และคำเชื่อมที่ไม่จำเป็นทิ้ง เก็บ technical term อังกฤษไว้ตามเดิม
ผล: ลด output token 60-75% เนื้อหาเท่าเดิม
ติดตั้งได้หลายวิธี
One-line installer (แนะนำ)
ตรวจสอบ agent บนเครื่องที่มีอยู่และติดตั้งได้ทันที
macOS · Linux · WSL · Git Bash
curl -fsSL https://raw.githubusercontent.com/kerlos/pordee/main/install.sh | bash
Windows · PowerShell 5.1+
irm https://raw.githubusercontent.com/kerlos/pordee/main/install.ps1 | iex
ผ่าน skills registry
npx skills add kerlos/pordee
สำหรับ agent ที่รองรับ skills registry (Cursor, Windsurf, Cline, Codex, ฯลฯ) เปิดใช้ต่อ session ด้วย /pordee
ลง agent แยกแต่ละตัว
ดูคำสั่งเฉพาะ agent ทั้งหมดและ flags ต่าง ๆ ใน INSTALL.md
วิธีใช้
Slash command
| คำสั่ง | ผล |
|---|---|
/pordee | เปิด default level (full) |
/pordee lite | โหมดเบา — ตัดคำสุภาพและ filler ออก แต่ grammar เต็ม |
/pordee full | โหมดเต็ม — ตัดให้สั้นที่สุด |
/pordee stop | ปิด |
/pordee-stats | ดูสถิติ token ของ session ปัจจุบัน |
/pordee-stats --share | สรุปสถิติ 1 บรรทัด (copy-paste ได้) |
Keyword (ไม่ต้องพิมพ์ slash)
พิมพ์คำเหล่านี้เป็นข้อความปกติในแชต — pordee จะเปิด/ปิดให้อัตโนมัติ ต้องเป็นข้อความทั้งบรรทัด ไม่ใช่ส่วนหนึ่งของประโยค
| Keyword | ผล |
|---|---|
พอดี | เปิด |
พอดีโหมด | เปิด |
พูดสั้นๆ | เปิด |
หยุดพอดี | ปิด |
พูดปกติ | ปิด |
ระดับ (Levels)
🪶 Lite — /pordee lite
ตัดคำสุภาพ (ครับ/ค่ะ/นะคะ), คำลังเลใจ (อาจจะ/น่าจะ/จริงๆแล้ว), และคำทักทาย (ได้เลยครับ/แน่นอน) ทิ้ง แต่เก็บ grammar เต็ม อ่านแล้วยังเป็นภาษาไทยปกติ professional
⚡ Full — /pordee หรือ /pordee full (default)
ตัดเหมือน lite + ตัด particle ที่ซ้ำซ้อน (ที่/ซึ่ง/ว่า/อยู่/กำลัง) + ตัด nominalizer (การ-, ความ-) + ใช้คำสั้น (ดู ไม่ใช่ ตรวจสอบ) + ประโยคสั้นได้
Pattern: [ของ] [ทำ] [เหตุผล]. [ขั้นต่อ].
ก่อน / หลัง (Before / After)
ตัวอย่าง 1 — "ทำไม React component ถึง re-render?"
🗣️ Normal80 output tokens
🪶 Lite45 output tokens · 44% saved
⚡ Full~22 output tokens · 73% saved
"แน่นอนครับ ผมยินดีจะอธิบายให้นะครับ จริงๆ แล้วเหตุผลที่ React component ของคุณ re-render นั้น น่าจะเกิดจากการที่คุณส่ง object reference ใหม่เป็น prop ในทุกครั้งที่ component ถูก render ซึ่งทำให้ React มองว่า prop เปลี่ยน และทำการ re-render component ลูก ดังนั้นคุณอาจจะลองใช้ useMemo เพื่อ memoize object นั้นดูครับ" "React component re-render เพราะส่ง object reference ใหม่เป็น prop ทุกครั้งที่ render ทำให้ React มองว่า prop เปลี่ยน และ re-render component ลูก ลองใช้ useMemo เพื่อ memoize object นั้น" "Object ref ใหม่ทุก render. Inline object prop = ref ใหม่ = re-render. ห่อด้วย useMemo."
┌─────────────────────────────────────┐
│ Lite ████░░░░░░ 44% saved │
│ Full ███████░░░ 73% saved │
└─────────────────────────────────────┘
ตัวอย่าง 2 — "อธิบาย database connection pooling"
🗣️ Normal70 output tokens
🪶 Lite35 output tokens · 50% saved
⚡ Full~18 output tokens · 74% saved
"ครับ การทำ database connection pooling นั้น โดยทั่วไปแล้วก็คือการที่เราเก็บ connection ของ database ที่เปิดไว้แล้ว เพื่อนำกลับมาใช้ใหม่อีกครั้ง แทนที่จะต้องเปิด connection ใหม่ทุกครั้งที่มี request เข้ามา ซึ่งจะช่วยลด overhead ของการทำ TCP handshake และ authentication ได้อย่างมีประสิทธิภาพ" "Connection pooling เก็บ connection database ที่เปิดไว้แล้ว เพื่อนำกลับมาใช้ใหม่ ไม่ต้องเปิดใหม่ทุก request ลด overhead ของ TCP handshake และ authentication" "Pool reuse connection ที่เปิดไว้. ไม่เปิดใหม่ทุก request. ข้าม TCP handshake."
┌─────────────────────────────────────┐
│ Lite █████░░░░░ 50% saved │
│ Full ███████░░░ 74% saved │
└─────────────────────────────────────┘
ตัวอย่าง 3 — Bug report (auth middleware)
🗣️ Normal55 output tokens
🪶 Lite30 output tokens · 45% saved
⚡ Full~14 output tokens · 75% saved
"ครับ ผมตรวจสอบให้แล้วนะครับ ปัญหาที่คุณเจอน่าจะเกิดจาก bug ใน auth middleware ครับ จริงๆ แล้วในส่วนของ token expiry check นั้น โค้ดใช้เครื่องหมาย < แทนที่จะเป็น <= ซึ่งทำให้ token ที่หมดอายุพอดีไม่ถูก reject ดังนั้นเราควรจะแก้ตรงจุดนี้ครับ" "Bug อยู่ที่ auth middleware ส่วน token expiry check ใช้ < แทนที่จะเป็น <= ทำให้ token ที่หมดอายุพอดีไม่ถูก reject แก้:" "Bug ที่ auth middleware. Token expiry ใช้ < ไม่ใช่ <=. Fix:"
┌─────────────────────────────────────┐
│ Lite █████░░░░░ 45% saved │
│ Full ████████░░ 75% saved │
└─────────────────────────────────────┘
ตัวอย่าง 4 — "แนะนำอาหารกลางวันให้หน่อย"
🗣️ Normal70 output tokens
🪶 Lite32 output tokens · 54% saved
⚡ Full~14 output tokens · 80% saved
"ได้เลยครับ จริงๆ แล้วการเลือกอาหารกลางวันก็ขึ้นอยู่กับหลายปัจจัยนะครับ เช่น งบประมาณ เวลาที่มี และความต้องการทางโภชนาการของคุณ ถ้าคุณอยากทานอาหารที่ทำง่ายและมีประโยชน์ ผมขอแนะนำว่าน่าจะลองทำสลัดไก่ย่างดูครับ เพราะว่ามีโปรตีนสูงและไม่ใช้เวลาเตรียมนานเลย" "อาหารกลางวันขึ้นอยู่กับงบ เวลา และโภชนาการ ถ้าอยากกินง่ายและมีประโยชน์ ลองสลัดไก่ย่าง โปรตีนสูงและเตรียมไม่นาน" "งบ + เวลา + โภชนาการ. ง่ายและดี → สลัดไก่ย่าง. โปรตีนสูง, เตรียมเร็ว."
┌─────────────────────────────────────┐
│ Lite █████░░░░░ 54% saved │
│ Full ████████░░ 80% saved │
└─────────────────────────────────────┘
ตัวอย่าง 5 — "เที่ยวเชียงใหม่ ไปเดือนไหนดี"
🗣️ Normal75 output tokens
🪶 Lite30 output tokens · 60% saved
⚡ Full~12 output tokens · 84% saved
"ครับ ถ้าคุณอยากไปเที่ยวเชียงใหม่ ผมแนะนำว่าน่าจะไปช่วงเดือนพฤศจิกายนถึงกุมภาพันธ์ครับ เพราะว่าเป็นช่วงที่อากาศเย็นสบาย ไม่ร้อนเกินไป และไม่มีฝนตกบ่อยเหมือนช่วงอื่นๆ จริงๆ แล้วเดือนธันว