{
  "$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"
}