Agent Dev Thai Academyprinciples · patterns · architecture

Loop Engineering — incentive setup (Axelrod ledger)

model ฉลาดขึ้นแต่ issue ใน review ไม่ลด เพราะเกมให้รางวัลการ flag มั่วกับการเมินเงียบ ใช้ ledger ให้การปัด flag ต้องมีเหตุผล และวัด precision ของตัวตรวจ

Fable 5 มา ทั้ง feed พูดเหมือนกัน: model ฉลาดขนาดนี้ ไม่ต้อง review แล้วมั้ง prompt ดีๆ ก็พอ — ผมก็อยากเชื่อแบบนั้น

แต่ ledger บอกอีกอย่าง — 10 รอบหลังสุด model ใหม่ขึ้น เก่งขึ้น แต่จำนวน issue ที่เจอใน review ไม่ลดเลย รอบ model ใหม่สุดเจอ 13 — เกือบสูงสุดเท่าที่เคยจดด้วยซ้ำ

เพราะปัญหาไม่ได้อยู่ที่ความฉลาด


ใน review loop (AI ตัวนึงเขียน อีกตัวตรวจ) พฤติกรรมแย่ๆ ที่เจอ: ตัวตรวจ flag มั่วเป็นสิบ — รอบนึง 14 flags, valid ไม่ถึงครึ่ง ตัวเขียนเมิน flag เงียบๆ แล้วรายงานว่าเรียบร้อย

มันไม่ได้โกง และมันไม่ได้โง่ — มันเล่นถูกตามเกมที่ผมตั้งให้มันเล่นเอง ลองดู incentive ในเกมนั้น:

  • flag มั่ว = ฟรี แถมมี upside (ดูขยัน ดูละเอียด)
  • เมิน flag เงียบ = ฟรี ไม่มีใครเห็น แถมประหยัดแรง
  • ตรวจประณีต แก้จริงจัง = แพงสุดในเกม และไม่มีใครจด

เกมแบบนี้ไม่ต้องมีใครนิสัยเสีย พฤติกรรมแย่ก็ชนะ — ระบบให้รางวัลอะไร ก็จะได้สิ่งนั้นกลับมา และ model ฉลาดขึ้นก็เล่นเกมเดิมได้แนบเนียนขึ้นเท่านั้น


นี่คือจุดที่ prompt engineering ช่วยไม่ได้

prompt คือการสั่งพฤติกรรม: "อย่าเมิน flag" "flag เฉพาะที่ชัวร์" — สั่งได้ ลืมได้ และ model รุ่นหน้าก็ต้องสั่งใหม่

loop engineering คือการตั้ง incentive ของพฤติกรรม — ไม่ต้องสั่ง แค่ทำให้ของดีถูกลง ของแย่แพงขึ้น แล้วให้ incentive ทำงานเองทุกรอบ ไม่ว่า model ไหนจะมานั่งเล่น


วิธีตั้ง incentive ยืมจาก game theory ตรงๆ — ปัญหานี้คือ prisoner's dilemma แบบเล่นซ้ำ ทางแก้มีตั้งแต่ปี 1980: tit-for-tat ใครร่วมมือ จำไว้ ใครเบี้ยว จำไว้ — แค่ต้องมีที่จด

ทุก post คือหนึ่งรอบเกม จดลง ledger:

flags ทั้งหมด: 7
แก้จริง: 5
ปัดพร้อมเหตุผล: 2   ← ถูกลง: นับเป็นความร่วมมือ
เมินเงียบ: 0        ← แพงขึ้น: จดเป็นการเบี้ยว เห็นทันที

incentive ที่เปลี่ยนจริง: flag ที่ผิด ปัดได้ แต่ต้องจดเหตุผลหนึ่งบรรทัด — ปัดพร้อมเหตุผลไม่เสียคะแนน เมินเงียบเสียคะแนน incentive เลยชี้ไปทาง "ตอบทุก flag" เองโดยไม่ต้องสั่งสักคำ

ฝั่งตัวตรวจก็โดนตั้ง incentive: precision = flags ที่ไม่โดนปัด ÷ flags ทั้งหมด ย้อนหลัง 5 รอบ ต่ำกว่า 0.7 โดนเตือนใน prompt รอบหน้า ต่ำกว่า 0.5 พักงาน สองตัวเถียงกันฟังตัวที่ precision สูงกว่า — flag มั่วเลิกฟรี ทุก flag ที่โดนปัดมี cost ติดตัวไปอีก 5 รอบ


ผลหลังเปลี่ยน incentive — พฤติกรรมเปลี่ยนทั้งที่ไม่ได้เปลี่ยน model:

  • เมิน flag เงียบ หายไป เพราะโผล่เป็นตัวเลขทันที
  • pattern เดิม (เขียนแล้วฟังดูอวด) โดนจับซ้ำ 3 รอบติด — ไม่มี ledger คงนึกว่าแก้ไปแล้ว
  • มีรอบนึง ตัวตรวจตัวนึง flag มา 7 โดนปัดด้วยเหตุผล 4 — precision 0.43 รอบหน้าโดนเตือนอัตโนมัติ

แล้วก็ตามที่เดาได้: โพสต์นี้ Fable 5 เป็นคน draft แล้วผ่าน loop เดียวกัน — 13 flags แก้ 7 ปัดพร้อมเหตุผล 6 เมินเงียบ 0 ตัวเลขอยู่ใน ledger ก่อนกดโพสต์ model ฉลาดสุดที่เคยใช้ ก็ยังต้องเล่นเกมนี้


เมื่อเช้าเพิ่งเติม reject-with-reason เข้าไปใน loop ตกเย็น shadcn ปล่อย improve ที่มี rejection memory แบบเดียวกันเป๊ะ — คิดคนละที่ ออกมาคล้ายกันโดยไม่ได้นัด อย่างน้อยก็เป็นสัญญาณว่าเกมนี้มีคนเจอเหมือนกัน


ใครอยากลองตั้ง incentive ใน loop ตัวเอง ผมมัดเป็น skill ไว้ให้แล้ว — round log format + วิธีคิด cooperation score + เกณฑ์ reviewer precision ต่อกับ reviewer ตัวไหนก็ได้

npx skills add somnus0x/agt-skill-pack

อยู่ใน agt-skill-pack — ฟรีหมด


model จะฉลาดขึ้นอีกทุกเดือน prompt ก็ให้ AI ช่วยเขียนได้แล้ว — สิ่งเดียวที่ยังไม่มีใครตั้งแทนคุณได้ คือ incentive ในเกมที่ AI ของคุณเล่นอยู่

เลิก engineer คำสั่ง มา engineer incentive