{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreibztta2mkwjreeyq5wipz3coeekckrcgzttvpz66avqe64lwpe23e",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mpijmoglowq2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreifzqxozjsmret2xa75nu6kfjrkvoqqe6ykjzxf3sfh54sbcu7be4m"
},
"mimeType": "image/webp",
"size": 44676
},
"path": "/gophernment/aider-pair-programming-cchringcchangkab-ai-ain-terminal-27a2",
"publishedAt": "2026-06-30T07:24:56.000Z",
"site": "https://dev.to",
"tags": [
"ai",
"programming",
"tools",
"git",
"Aider"
],
"textContent": "## Aider — Pair Programming จริงจังกับ AI ใน Terminal\n\nผมเชื่อในสองเรื่อง:\n\n 1. **Pair Programming** — มีใครสักคนนั่งข้าง ๆ คอยถาม คอยทัก คอยเสนอไอเดีย — มันทำให้โค้ดออกมาดีกว่าเขียนคนเดียวเงียบ ๆ\n 2. **Atomic Commit** — แต่ละ commit ควรทำเรื่องเดียว จบในตัว — `git log` อ่านแล้วรู้เรื่อง ไม่ใช่ commit เดียวยาว 500 บรรทัดที่แก้ทุกอย่างตั้งแต่ database schema ยัน CSS\n\n\n\nปัญหาคือหาคนมานั่ง pair ด้วยตลอดเวลามันไม่ง่าย — และการจะรักษา atomic commit ให้สะอาดทุกครั้งก็ต้องใช้ความตั้งใจสูง\n\n**Aider** คือเครื่องมือที่แก้ปัญหาสองเรื่องนี้ได้ในคราวเดียว\n\n## Aider คืออะไร\n\nAider เป็น AI pair programming tool ที่ทำงานใน terminal — คุณเปิด terminal, `cd` เข้า project, แล้วพิมพ์ `aider`\n\nสิ่งที่เกิดขึ้น:\n\n\n\n $ aider\n ──────────────────────────────────────────────────\n Aider v0.80.0\n Model: claude-sonnet-4-20250514 (Claude Sonnet 4.6)\n Git repo: .git with 142 files\n Repo map: using 1024 tokens\n ──────────────────────────────────────────────────\n >\n\n\nจากนั้นคุณก็... **คุยกับมันเหมือนคุยกับคนที่นั่งข้าง ๆ**\n\n> \"help me add rate limiting to the API — per-user, 100 requests per minute, using Redis\"\n\nAider จะ:\n\n 1. อ่านโค้ดที่เกี่ยวข้อง (มันมี repo map — แผนที่ว่าไฟล์ไหนทำอะไร)\n 2. เสนอวิธีแก้ — \"I'll add middleware in `api/middleware/` and a Redis client in `pkg/redis/`\"\n 3. เขียนโค้ด — คุณเห็น diff ทุกบรรทัด\n 4. **Commit ให้** — atomic, descriptive commit message\n\n\n\nนี่คือสิ่งที่ผมชอบที่สุด: **มัน commit ให้อัตโนมัติ**\n\n## Atomic Commit — อัตโนมัติ ไม่ใช่ Afterthought\n\nลองดู `git log` หลังจาก pair กับ Aider สักพัก:\n\n\n\n $ git log --oneline\n a3f2c1 Add rate limiting middleware with Redis backend\n 8b7d4e Refactor auth middleware to use context-based user extraction\n 2c1e9f Add user repository with FindByEmail method\n f4a8b2 Create initial project structure with Go modules\n\n\nทุก commit:\n\n * ทำเรื่องเดียว — เพิ่ม middleware → commit / refactor → commit / เพิ่ม repo → commit\n * Message อ่านรู้เรื่อง — ไม่ใช่ \"fix stuff\" หรือ \"update\"\n * แต่ละ commit รัน test ผ่าน — Aider จะรัน test ก่อน commit ให้ (ถ้ามันพัง มันจะแก้จนกว่าจะผ่าน)\n\n\n\nเปรียบเทียบกับการทำงานคนเดียว:\n\n\n\n - ❌ \"เขียน API ใหม่\" → แก้ 15 ไฟล์ → commit เดียว \"implement new API\"\n + ✅ คุยกับ Aider ทีละ feature → 15 commits เล็ก ๆ → แต่ละอันเข้าใจได้ใน 30 วิ\n\n\n## ตัวอย่างการทำงานจริง\n\nสมมติเรามี Go API ง่าย ๆ แล้วอยากเพิ่ม feature \"search users by email prefix\"\n\n### 1. เริ่ม session — เล่า requirement\n\n\n > I need a search endpoint that finds users by email prefix.\n GET /users/search?q=jo should return users whose email starts with \"jo\"\n Use existing UserRepo, add the query method there\n\n\nAider ตอบ:\n\n\n\n I'll add:\n 1. A `SearchByEmailPrefix` method to `UserRepo` in `internal/repo/user.go`\n 2. A search handler in `internal/handler/user.go`\n 3. Register the route in `cmd/server/main.go`\n\n Let me start with the repository method.\n\n\n### 2. Aider แก้ไฟล์ — คุณเห็น diff ทันที\n\n\n // internal/repo/user.go\n +func (r *UserRepo) SearchByEmailPrefix(ctx context.Context, prefix string) ([]User, error) {\n + rows, err := r.db.QueryContext(ctx,\n + \"SELECT id, name, email FROM users WHERE email LIKE $1\",\n + prefix+\"%\")\n + // ...\n +}\n\n\nคุณเห็น diff → กด `y` (yes) → Aider commit → ไปต่อข้อถัดไป\n\n### 3. แก้ไป คุยไป — เหมือน pair จริง\n\n\n > add input validation — prefix must be at least 2 chars\n\n\nAider เพิ่ม validation → commit\n\n\n\n > wait, the SQL query should use parameterized LIKE properly\n > it's $1 || '%' in PostgreSQL, not prefix+\"%\"\n\n\nAider แก้ query → commit\n\n\n\n > now add a test file for the search handler using httptest\n\n\nAider สร้าง test → รัน test → test ผ่าน → commit\n\n4 commits — ทุกอันทำเรื่องเดียว — `git log` สวย\n\n## ทำไม Aider ถึงพิเศษ — ไม่ใช่แค่ AI chatbot\n\n### 1. Repo Map — มัน \"รู้จัก\" codebase ของคุณ\n\nAider สร้าง **repo map** — index ว่าแต่ละไฟล์ define อะไร, ถูก import โดยใคร, ใช้ symbol อะไร — ทำให้มันรู้ว่าต้องอ่านไฟล์ไหนแก้ feature นี้ โดยที่คุณไม่ต้องบอก\n\nไม่ต้อง copy-paste โค้ดให้ AI อ่าน — Aider รู้เองว่าต้องดู `user.go`, `handler.go`, `main.go`\n\n### 2. Edit Formats — แก้โค้ดตรง ๆ ไม่ใช่ generate มาให้ copy\n\nAider ไม่ได้ print โค้ดให้คุณ copy-paste — มันใช้ **edit format** — ภาษาที่บอกว่า \"ค้นหา block นี้, แล้วแทนที่ด้วย block นี้\" — เหมือน `sed` แต่ฉลาดกว่า\n\nข้อดี: เร็วกว่าการ generate ไฟล์ใหม่ทั้งหมด และแม่นยำกว่า — แก้เฉพาะตรงที่ต้องแก้\n\n### 3. Model-Agnostic — ใช้ Claude วันนี้, DeepSeek พรุ่งนี้\n\n\n $ aider --model deepseek/deepseek-chat\n $ aider --model openai/gpt-4o\n $ aider --model anthropic/claude-sonnet-4-20250514\n\n\nงานง่ายใช้ DeepSeek (ถูก) — งานยากใช้ Claude Opus (เก่ง) — ไม่ต้องเปลี่ยน tool\n\n### 4. Voice Coding — พูดแทนพิมพ์\n\n\n $ aider --voice\n\n\nคุยกับ AI เหมือนคุยโทรศัพท์ — \"add error handling for database connection failures\" — Aider เขียนโค้ดให้\n\n## Aider vs Copilot vs Cursor vs Antigravity\n\n| Aider | Copilot | Cursor | Antigravity\n---|---|---|---|---\n**Philosophy** | Pair programming + atomic commit | Autocomplete + chat | AI-first IDE | Agentic platform\n**Interface** | Terminal | IDE plugin | IDE (forked VS Code) | IDE, CLI, SDK\n**Atomic Commit** | ✅ อัตโนมัติ | ❌ | ❌ | ❌\n**Model Choice** | เปลี่ยนได้ทุกค่าย | จำกัด | จำกัด | Gemini-focused\n**Repo Map** | ✅ | ❌ | ใช้ codebase index | ❌\n**ราคา** | API key ตัวเอง | $10/月 | $20/月 | Free/Paid\n\nAider ไม่ใช่คู่แข่งโดยตรง — มันคือ **เครื่องมืออีกแบบ** — สำหรับคนที่:\n\n * ถนัด terminal มากกว่า IDE\n * เชื่อใน atomic commit\n * อยาก pair จริงจัง — คุยไปแก้ไป commit ไป\n * อยากเลือกโมเดลเองตามงาน\n\n\n\n## เริ่มต้นใน 5 นาที\n\n\n # ติดตั้ง\n pip install aider-chat\n\n # หรือใช้ uv\n uv tool install aider-chat\n\n # ตั้ง API key (เลือกค่ายที่ใช้)\n export ANTHROPIC_API_KEY=\"sk-ant-...\"\n export DEEPSEEK_API_KEY=\"sk-...\"\n\n # เข้า project ที่มี git แล้ว\n cd ~/my-go-project\n aider\n\n # เริ่มคุย!\n > add health check endpoint at /healthz\n\n\n**Pro tip:** ใช้ DeepSeek V4 Flash ($0.14/M input) สำหรับงาน routine — แล้วเปลี่ยนเป็น Claude Sonnet ($3/M) ตอนงานซับซ้อน — Aider รองรับ `/model deepseek/deepseek-chat` เปลี่ยนกลาง session ได้เลย\n\n## ข้อเสียตามตรง\n\n * **Terminal-only** — ไม่มี GUI (แต่มี `--browser` โหมดทดลอง)\n * **ต้องใช้ Git** — project ที่ไม่ใช้ Git ใช้ Aider ไม่ได้ (แต่นั่นก็ดี — เราควรใช้ Git อยู่แล้ว)\n * **เรียนรู้ช่วงแรก** — edit format ต้องเข้าใจว่า AI คิดยังไง แต่ผ่านไป 1-2 session ก็ชิน\n\n\n\n## สรุป\n\nAider คือสิ่งที่เกิดขึ้นเมื่อคุณเอา philosophy ของ **pair programming** + **atomic commit** มารวมกับ LLM — ผลลัพธ์คือ AI ที่นั่ง pair กับคุณใน terminal, เขียนโค้ด, โชว์ diff, และ commit ให้ — เหมือนมี senior dev นั่งข้าง ๆ ที่ `git commit` เก่งเป็นบ้า\n\nและใช่ — ผมกำลังเชียร์ให้คุณลองใช้\n\n\n\n pip install aider-chat && cd project && aider\n\n\n> 📚 **Source:** Aider — AI pair programming in your terminal",
"title": "Aider — Pair Programming จริงจังกับ AI ใน Terminal"
}