วิธีสร้าง AI Agent Loop แรกของคุณด้วย Kimi K3 (พร้อมขั้นตอนการตั้งค่าแบบละเอียด)

@zodchiii
อังกฤษ3 วันที่ผ่านมา · 20 ก.ค. 2569
167K
78
15
16
238

TL;DR

คู่มือเชิงเทคนิคสำหรับการสร้าง AI agent loop แบบอัตโนมัติโดยใช้ Kimi K3 โดยเน้นที่ความคุ้มค่าผ่านการทำ context caching และเวิร์กโฟลว์ที่มุ่งเน้นผลลัพธ์อย่างมีประสิทธิภาพ

นี่คือลูปของ Agent คือความแตกต่างระหว่างการขอความช่วยเหลือจาก AI กับการตื่นมาเจองานที่เสร็จเรียบร้อย คนส่วนใหญ่ไม่เคยสร้างลูปขึ้นมา เพราะการวนซ้ำหลายร้อยครั้งบนโมเดลระดับแนวหน้านั้นต้องใช้เงินจริง

ภายใน: รูปแบบของลูปอธิบายด้วยแผนภาพเดียว, ตั้งค่าให้พร้อมใช้งานสองแบบ (Claude Code และ API ดิบ), และคณิตศาสตร์ของแคชที่ทำให้ K3 กลายเป็นเครื่องจักรแห่งลูป

ลูปแรกของคุณจะทำงานคืนนี้ในราคาประมาณ $0.39 ต่อรอบ

นี่คือการตั้งค่าฉบับเต็ม 👇

ก่อนที่เราจะลงรายละเอียด ผมแชร์โน้ตรายวันเกี่ยวกับ AI และการเขียนโค้ดแบบ Vibe Coding ในช่อง Telegram ของผม: https://t.me/zodchixquant 🧠

darkzodchi - inline image

ลูปจริง ๆ แล้วคืออะไร

ตัด hype ออกไป ลูปก็คือสี่ขั้นตอนที่วนซ้ำ:

text
1เป้าหมาย → พยายาม → ตรวจสอบ → (ดีกว่า? เก็บ : ลองใหม่)
2 ↑__________________________|
  • เป้าหมาย: เส้นชัยที่วัดผลได้ ไม่ใช่แค่ความรู้สึก เช่น "การทดสอบทั้งหมดผ่าน", "หน้าโหลดต่ำกว่า 1 วินาที", "คะแนนมากกว่า 90"
  • พยายาม: โมเดลทำงานหนึ่งหน่วยเพื่อไปสู่เป้าหมาย
  • ตรวจสอบ: มีอะไรบางอย่างตรวจสอบผลลัพธ์เทียบกับเป้าหมาย เช่น ชุดทดสอบ, linter, หรือโมเดลที่สอง
  • วนซ้ำ: นำผลการตรวจสอบกลับเข้าไป ทำอีกครั้ง หยุดเมื่อถึงเป้าหมายหรืองบประมาณหมด

เท่านั้นแหละ ที่เหลือ (หน่วยความจำ, เอเจนต์ย่อย, การรันข้ามคืน) เป็นเพียงของตกแต่งบนวงจรนี้

ทำไมต้อง K3 โดยเฉพาะ: เศรษฐศาสตร์ของลูป

ลูปจะอ่าน context เดิมซ้ำทุกครั้ง: ฐานโค้ด, เป้าหมาย, ประวัติการทำงาน ในโมเดลส่วนใหญ่ คุณต้องจ่ายเต็มราคาสำหรับการอ่านซ้ำนั้น แต่บน K3 คุณไม่ต้อง:

text
1ต้นทุนต่อรอบ = fresh_tokens × $3/ล้าน + cached_tokens × $0.30/ล้าน
2
3รูปแบบจริง (800K context คงที่ + 50K fresh ต่อรอบ):
4K3: $0.24 + $0.15 = $0.39/รอบ
5Fable 5: 850K × $10/ล้าน = $8.50/รอบ

ลูปข้ามคืน 50 รอบ: ประมาณ $20 บน K3, ประมาณ $425 บน Fable 5 นั่นไม่ใช่แค่ส่วนลด แต่เป็นความแตกต่างระหว่าง "ปล่อยให้มันทำงาน" กับ "ต้องจับตาดูตลอดเวลา"

กฎ唯一ข้อ: ต้องทำให้ stable context ของคุณเป็น prefix ที่เหมือนกันทุกประการในทุก ๆ รอบ โดยมีงานต่อท้าย เพื่อให้ cache ทำงานจริง

darkzodchi - inline image

การตั้งค่า A: Claude Code (เส้นทาง 5 นาที)

ถ้าคุณใช้ Claude Code อยู่แล้ว ลูปมีในตัว และ K3 สามารถเสียบใต้มันได้ผ่านการตั้งค่าอย่างเป็นทางการของ Moonshot:

bash
1export ANTHROPIC_BASE_URL=https://api.moonshot.ai/anthropic
2export ANTHROPIC_AUTH_TOKEN=${YOUR_MOONSHOT_API_KEY}
3export ANTHROPIC_MODEL=kimi-k3
4export ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k3
5export ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k3
6export ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k3
7export CLAUDE_CODE_SUBAGENT_MODEL=kimi-k3
8export ENABLE_TOOL_SEARCH=false
9export CLAUDE_CODE_AUTO_COMPACT_WINDOW=1048576
10claude

จากนั้นลูปก็ใช้แค่สองคำสั่ง:

  • /goal ตั้งเส้นชัย: "การทดสอบทั้งหมดใน tests/ ผ่าน และ coverage ยังคงสูงกว่า 80%" Claude Code จะทำงานเพื่อไปให้ถึงเป้าหมายนั้นแทนที่จะหยุดที่คำตอบแรก
  • /loop ทำให้มันเกิดขึ้นซ้ำ: เซสชันจะทำงานซ้ำตามตารางเวลาหรือจนกว่าเป้าหมายจะคงอยู่

ยืนยันว่าคุณใช้ K3 ผ่าน /status (เมนู /model จะไม่แสดง) หน้าต่าง auto-compact ขนาด 1M ในการตั้งค่าหมายความว่าลูปยาว ๆ จะ compact น้อยครั้ง ซึ่งช่วยให้ประวัติการวนซ้ำยังคงอยู่

การตั้งค่า B: ลูป API ดิบ (ควบคุมเต็มที่)

สำหรับลูปภายนอก Claude Code นี่คือลูปขั้นต่ำที่สมบูรณ์แบบ รองรับ OpenAI:

python
1from openai import OpenAI
2
3client = OpenAI(
4 api_key=MOONSHOT_API_KEY,
5 base_url="https://api.moonshot.ai/v1",
6)
7
8# คำนำหน้าคงที่: เหมือนกันทุกรอบ = cache hits ที่ $0.30/ล้าน
9STABLE = f"""คุณคือเอเจนต์การเขียนโค้ดในลูป
10เป้าหมาย: ทำให้การทดสอบทั้งหมดผ่านในโปรเจกต์ด้านล่าง
11โปรเจกต์:
12{project_dump}
13กฎ:
14- เปลี่ยนแปลงทีละจุดต่อรอบ
15- อธิบายสิ่งที่คุณเปลี่ยนและเหตุผลใน 2 บรรทัด
16- ถ้าการทดสอบผ่าน ให้ตอบว่า: GOAL_REACHED
17"""
18
19history = []
20MAX_TURNS = 30
21
22for turn in range(MAX_TURNS):
23 result = run_tests() # การตรวจสอบของคุณ: pytest, npm test, ฯลฯ
24 if result.passed:
25 print(f"เสร็จใน {turn} รอบ")
26 break
27
28 response = client.chat.completions.create(
29 model="kimi-k3",
30 messages=[
31 {"role": "system", "content": STABLE},
32 *history[-6:], # 3 การแลกเปลี่ยนล่าสุด, จำกัดไว้
33 {"role": "user", "content":
34 f"รอบที่ {turn}. ผลลัพธ์การทดสอบ:\n{result.output}\n"
35 f"แก้ไขความล้มเหลวถัดไป"},
36 ],
37 )
38 change = response.choices[0].message.content
39 apply_change(change) # เขียนการแก้ไข, commit ไปยัง branch
40 history += [
41 {"role": "user", "content": f"รอบที่ {turn} ให้ผลลัพธ์การทดสอบแล้ว"},
42 {"role": "assistant", "content": change},
43 ]

รายละเอียดสำคัญสามอย่าง:

  • การตรวจสอบคือโค้ด ไม่ใช่ความรู้สึก run_tests() เป็นตัวตัดสินความคืบหน้า โมเดลไม่เคยให้คะแนนตัวเอง
  • ประวัติถูกจำกัด แค่ 3 การแลกเปลี่ยนล่าสุดเท่านั้น prefix คงที่ carry ข้อมูลที่คงทนและเป็นมิตรกับ cache
  • ทุกการเปลี่ยนแปลงไปที่ branch ลูปอาจผิด 10 ครั้งก็ได้ ตราบใดที่ main ไม่เห็นมัน

อุปสรรคก่อนที่คุณจะเดินออกไป

  • ตัวหยุดงบประมาณ: นับ tokens ต่อรอบ, ฆ่าลูปเมื่อถึงขีดจำกัดราคา MAX_TURNS ยังไม่พอ เพราะรอบที่บวมหนึ่งรอบกินเงินเท่ากับสิบรอบปกติได้
  • ตัวหยุดความคืบหน้า: ถ้าการทดสอบเดียวกันล้มเหลว 3 รอบติดต่อกัน ให้หยุดและแจ้งเตือน ลูปที่ไม่สามารถลู่เข้าได้จะเผาเงินอย่างสุภาพ
  • ข้อจำกัดหนึ่งของ K3: การคิด (reasoning) ทำงานที่ max-only ในตอนนี้ ดังนั้นทุกรอบจะมี output การคิดเต็มที่ในราคา $15/ล้าน ให้แต่ละรอบโฟกัส, หนึ่งความล้มเหลวต่อรอบ, และฝั่ง output จะยังคงอยู่ในระดับที่จัดการได้

ข้อผิดพลาดทั่วไป

  • เป้าหมายคลุมเครือ "ปรับปรุงโค้ด" จะลูปตลอดกาล ลูปจะดีได้เท่ากับเส้นชัยที่ตรวจสอบได้เท่านั้น
  • ปล่อยให้โมเดลประเมินตัวเอง "ดูเหมือนถูกต้องนะ" คือวิธีที่ลูปส่งขยะออกมา ผู้ตรวจสอบต้องเป็นภายนอก: การทดสอบ, linter, หรือโมเดลที่สองพร้อมเกณฑ์
  • ทำลาย cache timestamp, ID สุ่ม, หรือไฟล์ที่เรียงลำดับใหม่ใน prefix ของคุณหมายถึงทุกรอบจะคิดเงิน $3/ล้านแทนที่จะเป็น $0.30/ล้าน เหมือนกันทุกประการหมายถึงเหมือนกันทุกประการ
  • ไม่มีวินัยเรื่อง branch ลูปที่ไม่มีการควบคุมและมีสิทธิ์เขียนไปยัง main คือเรื่องสยองขวัญที่มีขั้นตอนเพิ่มเติม
  • เริ่มต้นด้วยการรันข้ามคืน ให้รันลูปแรกของคุณในขณะที่ดูอยู่ 10-15 รอบ สร้างความเชื่อใจก่อนที่จะนอนทิ้งไว้

การตั้งค่าใน 15 นาที

  1. รับ Moonshot API key, เติมเงินในช่วงโบนัส 10-30%, ใช้งานได้ถึง 11 สิงหาคม (3 นาที)
  2. เลือกการตั้งค่า A หรือ B และเชื่อมต่อ (5 นาที)
  3. เขียนเป้าหมายที่ตรวจสอบได้หนึ่งข้อสำหรับงานเล็กจริง ๆ: การทดสอบที่ล้มเหลว, การผ่าน lint (2 นาที)
  4. รัน 10 รอบโดยมีคนดู, ดูว่าการตรวจสอบขับเคลื่อนงานอย่างไร (4 นาที)
  5. จดต้นทุน จากนั้นตัดสินใจว่าลูปถัดไปจะใหญ่แค่ไหน (1 นาที)

ลูปคือแนวคิดที่เก่าแก่ที่สุดในการเขียนโปรแกรมที่นำมาประยุกต์ใช้กับเครื่องมือล่าสุด K3 แค่ทำให้มันถูกลงพอที่จะใช้งานได้จริง

ขอบคุณที่อ่านนะครับ!

ผมแชร์โน้ตรายวันเกี่ยวกับ AI และการเขียนโค้ดแบบ Vibe Coding ในช่อง Telegram ของผม: https://t.me/zodchixquant 🧠

darkzodchi - inline image
สร้างต่อใน YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม