Agent Dev Thai Academyprinciples · patterns · architecture

ลองเอาโจทย์เดียวกันไปรันกับ loop engineering 3 ค่าย บน bot signal ของตัวเอง

รันโจทย์เดียวบน Codex goal mode, Factory mission mode และ Claude ทั้ง 3 ค่ายกำลังไปหา shape เดียวกัน แตก subagent ลองหลายทาง ให้ verification agent คัด แล้วปิดด้วย test

ลองเอาโจทย์เดียวกันไปรันกับ loop engineering 3 ค่าย บน bot signal ของตัวเอง

สิ่งที่น่าสนใจไม่ใช่ว่าตัวไหนชนะ
แต่คือทั้ง 3 ค่ายกำลังเดินไปหา shape เดียวกัน

เกมมันเริ่มย้ายจาก prompt engineering ไปเป็น loop engineering แล้ว

คุณไม่ได้ prompt ทีละครั้งแล้วหวังให้มันตอบดี
แต่ตั้งเป้า ตั้งเงื่อนไขจบ แล้วปล่อยให้ agent วนทำเอง

Claude เรียก dynamic workflow
Factory เรียก mission mode
Codex เรียก goal mode

ชื่อคนละแบบ แต่นิสัยปลายทางเริ่มเหมือนกัน:

แตก subagent ไปลองหลายทาง → ให้ verification agent คัด → ปิดด้วย test

ไม่ใช่ให้ agent ตัวเดียวคิดแล้วจบ
แต่แตกหลายตัวไปลองคนละแนว
จากนั้นให้ agent ฝ่ายตรวจมาคัดว่าอันไหนรอดจริง
แล้วปิดท้ายด้วย test หรือ metric ที่วัดได้

โจทย์ที่ใช้วัดรอบนี้คือ:

เขียน test suite ให้ฟังก์ชันคำนวณ indicator ของบอท แล้ววนจนกว่า pytest จะเขียว

มีเส้นชัยชัด
วัดผลได้
รันค่ายละหนึ่งครั้ง

ต่างกันแค่ว่า shape นี้มันมาให้สำเร็จรูป หรือเราต้องประกอบเอง


  1. Codex goal mode: goal + verify มาแล้ว แต่ยังไม่เห็นการแตก subagent

ผมเปิด flag goals แล้วให้โจทย์เดียว:

promptเพิ่ม Bollinger Bands เข้าบอท จบเมื่อ pytest เขียว

มันไม่ได้ทำแค่งานเล็ก ๆ แบบแตะไฟล์เดียว
แต่มันต่อให้ครบทั้งเส้น:

เขียนฟังก์ชัน
ต่อเข้า composite signal
เพิ่ม /bb command
อัป README
เขียน test เพิ่ม 4 ตัว
แล้ววนจน pytest เขียวครบ 15 ตัว

ผมไม่ได้บอกให้แตะ README ด้วยซ้ำ แต่มันลากเองตาม goal

goal mode เปิดจริง ทำงานจริง
commit: 9c0da7e

ส่วนการแตก subagent ไปลองหลายทาง รอบนี้ยังไม่เห็น

Codex CLI มี flag enable_fanout จริง สถานะ under development และปิด default
ผมลองเปิดคู่กับ goal mode แล้ว รอบนี้มันยังเดินตัวเดียว ไม่ได้แตกหลาย agent มาแข่งกัน

อันนี้ผมพูดได้แค่เท่าที่เห็นจากรันนี้
เพราะไม่มี docs ชัด ๆ ว่า flag นี้ตั้งใจออกแบบมาเป็นการแตก subagent แบบ Factory หรือเปล่า

ที่ชัดคือวันนี้ผมยังไม่เห็นมันแตกตัว

บน plan ChatGPT ปกติ model สาย codex ใช้ไม่ได้ ต้อง fallback ไป gpt-5.5

คำตัดสิน:

ครึ่ง goal + verify มาเต็มแล้ว
ตั้งเป้าได้ วนได้ จบเมื่อเขียวได้

แต่ครึ่ง “แตก subagent ไปลองหลายทาง” ยังไม่เห็นในรันนี้
จุดนี้ Factory กับ ultracode ยังนำอยู่


  1. Factory mission mode: แตก subagent แบบ built-in

ของ Factory คือ shape นี้มาในตัวเลย

มี orchestrator แตกงานให้ worker หลายตัว
มี validator แยกมาคัด
การแตก subagent กับการ verify เป็น primitive ไม่ต้องประกอบเอง

แถมรันข้าม model ได้ด้วย

โจทย์ที่ให้คือเพิ่ม Stochastic Oscillator

มันไม่ได้รีบเขียนทันที
แต่วางแผนก่อน แตก feature เป็นชิ้นย่อย ตั้ง validation contract 15 ข้อ แต่ละข้อมีชื่อและเงื่อนไขผ่านชัดเจน แล้วค่อยแตก worker ไปทำ

จุดที่เซอร์ไพรส์คือมันแตก subagent สองชั้น

ชั้นเขียน แตก worker หลายตัวไปลองคนละทาง
ชั้นตรวจ แตก verification agent ขนานกันอีก

ผลลัพธ์คือได้ฟังก์ชัน ได้ test เพิ่ม 14 ตัว commit เองให้เสร็จ pytest เขียว 29 ตัว peak ที่ 10 process

งานเสร็จจริง
commit: 4c7914e

แต่มีจุดหนึ่งที่ควรรู้

มันไม่ปิด session เอง

ขั้นสุดท้ายมี stage ชื่อ user-testing-validator รอให้คนมา confirm ปิด loop
ผมรันแบบ headless ไม่มีใครกด มันเลยค้างรอจนชน cap

ไม่ใช่ค้าง ไม่ใช่พัง
แต่มันออกแบบมาให้มีคนปิดท้าย

คำตัดสิน:

แตก subagent แบบสำเร็จรูป ใช้งานจริง แต่หนัก และเหมาะกับ flow ที่มีมนุษย์คอยปิดท้าย

ดีมากสำหรับงานที่ต้องแตกหลายทางจริง ๆ
แต่ไม่ใช่ของเบา ๆ สำหรับ fire-and-forget


  1. Claude dynamic workflow: แตก subagent เองด้วย ultracode

Claude ไม่มีปุ่ม mission ให้กดแบบ Factory
แต่เราประกอบ shape เดียวกันเองได้

spawn subagent หลายตัวไปแก้โจทย์เดียวกันคนละทาง
แล้วตั้ง verification agent มาคัด

อันนี้คือที่ผมเรียกว่า ultracode

โจทย์คือให้เขียนฟังก์ชัน ATR หรือ Average True Range

ผม spawn 3 ตัวให้เขียนคนละแนว:

ตัวแรกใช้ Wilder smoothing ตามตำรา
ตัวที่สองใช้ SMA ของ True Range
ตัวที่สามใช้ EMA

ได้ 3 เวอร์ชันที่ต่างกันตรงแกนจริง ๆ
ไม่ใช่แค่ต่างกันที่หน้าตา code

จากนั้นให้ verification agent เขียน test โหด ๆ มายิงทั้ง 3 ตัว
รวมถึงเคส gap-up ที่ True Range ต้องใช้ราคาปิดก่อนหน้า

จุดที่ผมชอบที่สุดคือ verification agent ไม่เชื่อบรีฟผม

มันไปเปิด bot.py เอง
เช็ค convention เรื่องการปัดเศษและ return format เอง
เทียบกับ compute_rsi ที่มีอยู่เอง
ไม่ได้เชื่อแค่สิ่งที่ผมบอก

สุดท้าย SMA กับ EMA ตาย
Wilder รอด เพราะมันคือ ATR จริงตามนิยาม

commit: a05cba6

ตัวที่รอดถูกเอาเข้า bot.py
ต่อเข้า composite เป็น volatility context
เขียน test เพิ่ม
รัน pytest แล้วเขียวครบ 39 ตัว

อีก 2 เวอร์ชันถูกฆ่าทิ้ง

คำตัดสิน:

ได้ shape เดียวกับ Factory แต่ต้องประกอบเอง

ข้อดีคือคุมเองได้ทุกขั้น
และ verification agent ดีพอที่จะไม่เชื่อแม้แต่คำสั่งของผมเอง

ผมบอกผิด มันยังเช็คแล้วเถียงกลับด้วยหลักฐาน


สรุป: ทุกค่ายกำลัง converge ไปที่เดียวกัน

ชื่อต่างกัน นิสัยต่างกัน แต่ปลายทางเริ่มเหมือนกันหมด:

แตก subagent ไปลองหลายทาง → ให้ verification agent คัด → ปิดด้วย test

ครึ่ง verify มาครบทุกค่ายแล้ว

ตั้งเป้า → วน → จบเมื่อเขียว

แม้แต่ Codex goal mode ก็ทำได้แล้ว

ที่ยังต่างคือครึ่ง “แตก subagent ไปลองหลายทาง”

Factory ทำมาให้เป็นปุ่ม
Claude ประกอบเองได้
Codex รอบนี้ยังเดินตัวเดียว แม้จะมี enable_fanout ใน CLI แต่ยังเป็น under development และผมยังไม่เห็นมันแตกตัวจริง

convergence นี้ไม่ได้อยู่แค่ในหัวเรา
มันเริ่มโผล่อยู่ใน CLI ของแต่ละค่ายแล้วจริง ๆ

ที่น่าสนใจคือมันลามไปถึงฝั่ง model ด้วย

OpenRouter เพิ่งออก Fusion API
หน้าเพจเขียนเองว่า “turns your prompt into a small multi-model deliberation”

แปลตรง ๆ คือยิง prompt เดียว แล้วมันแตกไปหลาย model ให้คิด ให้เถียงกัน แล้วรวมคำตอบกลับมา

นี่ก็คือ:

แตกหลาย model ไปลอง → ให้ระบบคัด → รวมคำตอบ

แต่ย้ายลงไปอยู่ใต้ชั้น model แล้ว

ผมลองยิงจริงวันนี้ยังเจอ 500 อยู่
ของเพิ่งเปิดได้ 2 วัน ยังไม่นิ่ง
แต่ทิศทางบนหน้าเพจชัดมาก

model เริ่มกลายเป็นของถอดเปลี่ยนได้
loop ต่างหากที่กลายเป็นของจริง

norm ใหม่เลยไม่ใช่การเขียน prompt เดียวให้สวยที่สุด

แต่คือการออกแบบ loop ที่มี agent ฝ่ายตรวจคอยคัด
และมีเส้นชัยที่วัดได้ตอนจบ

เลือกค่ายตามว่างานของคุณต้องการแตกหลายทางแค่ไหน
แต่ทิศมันไปทางเดียวกันหมดแล้ว

โค้ดทั้งหมดอยู่บน GitHub:somnus0x/macd-botGitHub ↗อ่านคำอธิบาย repo นี้เป็นภาษาไทย →

Bollinger จาก Codex: 9c0da7e
Stochastic จาก Factory: 4c7914e
ATR จาก Claude: a05cba6

ไปเปิด diff ดูเองได้

อ้างอิง Fusion API:โพสต์ของ @openrouterx.com ↗