Houston — mission structure + scoped fan-out for Codex (sequel to the harness review)
Codex spawn subagent ได้แต่ไม่มีโครงคุม Houston เก็บ mission เป็นไฟล์พร้อมเงื่อนไขจบ และ handoff ว่า subagent ถือส่วนไหน เป็นแค่ folder convention กับ script ไม่ใช่ของวิเศษ
โพสต์ที่แล้วลองรันโจทย์เดียวกันข้าม 3 ค่าย (Claude / Factory / Codex) แล้วสะดุดอยู่อย่างนึง: Factory กับ Claude มี orchestration infra มาให้พร้อม สั่ง agent หลักแตกงานไปให้ subagent ใครถืออะไร ส่งงานกลับยังไง มี convention รองรับหมด. ส่วน Codex spawn subagent ได้ก็จริง แต่ไม่มีโครงคุมรอบๆ มันให้ใช้ตรงๆ แตกงานได้แต่ไม่มีที่เก็บว่าใครถือส่วนไหน จบแล้วส่งมอบอะไร.
ก็เลยอยากลองว่า ถ้าจะให้ Codex แตกงานแบบมีระเบียบแล้วเก็บ mission เป็นโครงได้ ต้องเติมอะไรบ้าง เลยนั่งประกอบเล่นแล้วตั้งชื่อมันว่า Houston.
Houston ทำอะไร
มันคือ skill ของ Codex + script python ไม่กี่ตัว + ข้อตกลงเรื่องโฟลเดอร์. ไม่ใช่ของใหญ่ ประมาณ 200 บรรทัดที่ทำหน้าที่เป็นกาว. มันแก้สองเรื่องที่มักถูกปนกัน — mission state (เป้าคืออะไร เงื่อนไขจบคืออะไร ค้างตรงไหน) กับ orchestration (ใครถือส่วนไหน ส่งต่องานยังไง):
- mission ใหม่เก็บลง ~/.codex/missions/<ชื่องาน> ไม่ใช่ในหัว session
- ในนั้นมี mission.md (เป้า), validation-contract.md (เงื่อนไขจบ), features.json, state.json, progress log
- เป้า เงื่อนไขจบ ความคืบหน้า อยู่เป็นไฟล์ หยิบมาดูได้โดยไม่ต้องไล่อ่าน chat
- agent ตัวหลักแตกงานบางส่วนให้ subagent ถือได้ จบแล้วเขียน handoff บอกว่าใครถืออะไร ผลเป็นไง
- ของเดิมที่อยู่ใน Factory (.factory) ดึงเข้ามาเป็น import ได้ ไม่ต้องเริ่มใหม่
พูดง่ายๆ คือยืม shape ของ mission กับ orchestration แบบ Factory มาแปะให้ Codex ใช้ โดยให้ Codex ถือ state หลักเอง.
ลองจริงกับบอท
บอทตัวเดิม (macd-bot ตัวที่รัน Bollinger / Stochastic / ATR ในโพสต์ก่อน) คราวนี้เพิ่ม Kelly Criterion (สูตรคิดขนาด position). ตั้งเป็น mission ชื่อ kelly-criterion.
Codex ตัวหลักรับผิดชอบ logic คำนวณ + /kelly command + docs. ส่วน test แตกไปให้ subagent ถือ เขียน test_kelly.py วนจน 18 ตัวที่เกี่ยวข้องผ่าน แล้วเช็คทั้ง suite อีกที 57 ตัวเขียวหมด. จบแล้วมี handoff JSON เขียนไว้ว่า subagent ถือ role อะไร เป็นเจ้าของไฟล์ไหน ผลออกมาเป็นไง. เล็กแค่ worker ตัวเดียวถือเทสต์ ไม่ใช่ fan-out เต็มแบบโพสต์ก่อน แต่เป็นการแตกงานจริง ไม่ใช่ตัวเดียวเดินรวด.
แล้วทั้ง mission ก็ไม่ได้ฝังอยู่ในบทสนทนาอย่างเดียว มันอยู่ใน ~/.codex/missions/kelly-criterion ด้วย. เปิด mission.md ก็เห็นเป้า เปิด validation-contract ก็เห็นเงื่อนไขจบ เปิด progress log ก็เห็นว่า subagent ทำถึงไหน โดยไม่ต้องไล่อ่าน chat. resume ดึง session กลับมาได้อยู่แล้ว อันนี้แค่เพิ่มโครงให้ mission กับการแตกงานหยิบมาดูได้ตรงๆ.
ของที่ได้ ของที่ยังขาด แล้วก็สรุป
ที่ได้: Codex มีโครงให้ mission อยู่เป็นไฟล์ แล้วก็แตกงานให้ subagent ถือเป็นส่วนๆ ได้ ในระดับ folder convention + handoff ไม่ใช่ orchestration เต็มแบบ Factory แต่พอให้เป้า เงื่อนไขจบ และความเป็นเจ้าของงาน หยิบมาดูแยกจากบทสนทนาได้.
ที่ยังขาด: fan-out ที่ได้รอบนี้มันแค่ scoped worker ตัวเดียวถือเทสต์ ยังไม่ใช่หลายตัวขนานกัน ยังไม่มี subagent คอย red-team งานของตัวหลัก. Houston เติม structure + convention + การแตกงานแบบ scoped ไม่ใช่ทั้ง loop. แล้วมันก็แค่ folder convention + script ไม่ใช่ของวิเศษ.
Codex spawn subagent ได้ก็จริง แต่ไม่ได้วาง orchestration เป็นโครงสำเร็จมาให้ตั้งแต่แรก มันเลือกให้ agent ตัวเดียวเก่ง นั่นเป็นการเลือกของเขา ไม่ใช่ข้อเสีย. แต่ shape ของ mission กับการแตกงาน มัน portable พอจะแปะข้ามค่ายได้ ไม่ต้องรอ Codex ออกเอง. ถ้างานคุณอยากให้ Codex เก็บ mission เป็นไฟล์แล้วแตกงานให้ subagent ถือแบบมีระเบียบ เอา shape นี้ไปเติมเองได้เลย.
โค้ดอยู่บน GitHub:
- skill: github.com/agent-dev-thai/houston
- mission ที่รันจริง (Kelly): somnus0x/macd-bot branch feature/kelly-criterion