Agent Dev Thai Academyprinciples · patterns · architecture

โมเดลใหม่ไม่ได้โง่ลง setup คุณยังเขียนไว้ให้ตัวเก่า

อัพโมเดลแล้วรู้สึกว่ามันโง่ลง ผมไล่ตรวจ setup แล้วเจอ skill ที่โมเดลมองไม่เห็น คำกล่อมที่เขียนให้รุ่นเก่า ชื่อรุ่นเก่าค้าง และกฎที่ขัดกันเอง อัพโมเดลแล้วต้องอัพของรอบๆ ด้วย

เปลี่ยนมาใช้โมเดลรุ่นใหม่แล้วรู้สึกว่ามันโง่ลง ปัญหาอาจไม่ได้อยู่ที่โมเดล

หลายคนเจอเหมือนกัน อัพเป็นรุ่นใหม่แล้วรู้สึกว่ามันงี่เง่าลง สั่งง่ายๆ กลับไม่ทำ หรือทำเกินที่บอกไว้

ผมก็เป็น เลยไล่ตรวจ setup ตัวเองทั้งเครื่อง โฟลเดอร์ที่สะสมมาเจ็ดเดือน เขียนไว้ตอนใช้รุ่นก่อนทั้งนั้น

ผลออกมาคือปัญหาส่วนใหญ่ไม่ได้อยู่ที่โมเดล อยู่ที่ของที่เขียนทิ้งไว้ให้โมเดลตัวเก่าอ่าน

ตรวจยังไง

ให้ agent ไล่อ่าน skill settings hook ทั้งหมด แล้วให้อีกชุดเถียงทุกข้อที่เจอ ข้อไหนรอดจากการถูกเถียงถึงจะนับ

เจอ 162 ข้อ รอด 81 ข้อ อีก 81 ข้อถูกตีตก

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

หนึ่ง skill ที่โมเดลมองไม่เห็น

อันนี้ใหญ่สุด และไม่มีอะไรเตือนเลย

ในเครื่องมี skill อยู่ 146 อัน คำอธิบายรวมกัน 83,616 ตัวอักษร

แต่ Claude Code หยิบคำอธิบายไปแสดงให้โมเดลเห็นราว 18,000 ตัวอักษรเท่านั้น ที่เหลือขึ้นแค่ชื่อ

แปลว่า skill 105 อัน โมเดลหยิบมาใช้เองไม่ได้ เพราะมันไม่รู้ว่าอันนั้นเอาไว้ทำอะไร

ลำดับที่มันเลือกมาแสดงคือ อันที่เคยถูกเรียกใช้มาก่อนได้ขึ้นก่อน ที่เหลือเรียงตามตัวอักษร
ซึ่งแปลว่า skill ที่เพิ่งเขียนเสร็จเมื่อวาน มีสิทธิ์ไม่ถูกมองเห็นเลยสักครั้ง

ค่าที่คุมเรื่องนี้มีสองตัว skillListingBudgetFraction กับ skillListingMaxDescChars

ตัดทิ้งไป 120 อัน เหลือ 26 อัน คำอธิบายรวม 11,400 ตัวอักษร เข้างบแล้ว
เกณฑ์ที่ใช้ตัดคืออันที่ไม่เคยเรียกใช้จริง ไม่ใช่อันที่รู้สึกว่าไม่สำคัญ

สอง คำกล่อมที่เขียนไว้ให้รุ่นเก่า

โมเดลรุ่นก่อนต้องกล่อม ต้องกดดัน ต้องบอกย้ำๆ ถึงจะยอมคิดให้ลึก ของพวกนั้นยังค้างอยู่ในไฟล์ทั้งหมด

คำว่า Ultrathink. ห้อยท้าย skill อยู่ห้าอัน
ประโยค MANDATORY PREPARATION you MUST run the interview first ถูกก๊อปไปวางใน skill งานออกแบบสิบสี่อัน
มีคำสั่งให้ emphasize craftsmanship REPEATEDLY
และมีคำพูดของ user ปลอมๆ ที่แต่งขึ้นเอง เอาไว้บังคับให้มันตรวจงานรอบสอง

รุ่นใหม่มันเชื่อฟังและอ่านตามตัวอักษรมากกว่าเดิม

ของที่เคยใช้ดันให้มันคิดหนักขึ้น ตอนนี้กลายเป็นดันให้มันทำผิด

สาม ชื่อรุ่นเก่าที่ยังค้างอยู่

skill commit hardcode ชื่อโมเดลรุ่นเก่าไว้ใน trailer ทุก commit ที่ผ่านมาเลยให้เครดิตผิดรุ่นหมด

settings.json ยังมีชื่อรุ่นเก่าค้าง

และมี skill เก่าอันหนึ่งยังส่ง parameter ที่รุ่นใหม่ไม่รับแล้ว ยิงไปได้ 400 กลับมาอย่างเดียว

ที่เจอพ่วงมาคือ skill ซ้ำกันสองชุด ชุดที่ก๊อปมาเองตอนเดือนมีนา กับชุดใหม่ที่ระบบ sync มาให้
ตัวที่ถูกเรียกใช้จริงคือชุดเก่า

สี่ CLAUDE.md ที่เถียงกับตัวเอง

ไฟล์กลางขัดกับ prompt ของตัว harness อยู่เจ็ดจุด

มีกฎจำกัดความยาวตอนปิดงาน ซึ่งทำให้ผลเทสต์ถูกตัดหายไป
มีคำว่างานความเสี่ยงสูง นิยามไว้สี่แบบคนละที่
มีกฎห้ามอ่าน repo ข้างเคียง อยู่คู่กับกฎที่บอกให้ตรวจสอบกับต้นทางเสมอ

ทุกข้อเคยสมเหตุสมผลตอนที่เขียน ปัญหาคือมันถูกเขียนคนละเดือนกัน แล้วไม่เคยถูกอ่านพร้อมกันอีกเลย

prompt ที่ใช้จริง สองอัน

อันแรกคือ prompt ที่เริ่มทั้งหมด ตัวที่ผมพิมพ์จริงตอนนั้นสั้นกว่านี้มาก
อันนี้คือเวอร์ชันที่เขียนให้ครบแล้ว ก๊อปไปวางได้เลย แก้จำนวนเดือนกับชื่อรุ่นเป็นของตัวเอง

My global Claude Code config has been growing for about seven months. Almost all
of it was written while I was on an older model, and I am now on a newer one. I do
not want a rewrite. I want to know which parts of my own setup are now working
against the model.

Read everything in the config directory: every skill, the settings file, the hooks,
and the global instruction file. Look for four things as you go.

First, skill descriptions that are too long in total for the model to actually see,
and skills I have never invoked. Second, prompt scaffolding written to push an older
model harder, such as thinking incantations, pressure words, all-caps mandates,
invented user quotes, and forced multi-step preambles. Third, anything that
hardcodes a model name, a version suffix, or a parameter the current model no longer
accepts. Fourth, rules that contradict each other or contradict the harness,
including duplicated or shadowed copies of the same skill.

For every finding, argue both sides before you report it. Prove it against the
actual file contents and the current model's documented behaviour, then make the
strongest case you can for leaving the text exactly as it is. Report only the
findings that survive both. Tell me how many you discarded.

Change nothing. Report only. Rank by blast radius, and for each one give me the file
path, the exact line, and what it breaks in practice. Be thorough.

สองย่อหน้าท้ายคือส่วนที่สำคัญที่สุด

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

ส่วนคำว่า change nothing คือตัวที่กันไม่ให้มันเริ่มแก้ไฟล์ระหว่างที่ยังอ่านไม่จบ

อันที่สอง อันนี้คืออันที่เปลี่ยนงานทั้งวัน

let use https://github.com/mattpocock/skills/blob/main/docs/engineering/grill-with-docs.md
for getting to know what i optimize for

ของ Matt Pocock เป็น skill ที่ให้ AI สัมภาษณ์เรากลับ ถามทีละข้อว่าเราจะเอาแบบไหน
พร้อมเสนอคำตอบที่มันแนะนำมาให้เลือก แล้วเขียนสิ่งที่ตกลงกันได้ลงไฟล์

ทำไมต้องมีอันนี้ เพราะผลตรวจกับสิ่งที่เราต้องการจริงไม่ใช่อันเดียวกัน

ตัวอย่างจริงในวันนั้น ผลตรวจบอกให้ย้าย skill กลุ่มหนึ่งไปไว้ระดับโปรเจกต์
พอถูกถามกลับถึงรู้ว่าย้ายไม่ได้ เพราะ skill ชุดนั้นใช้กับสี่ repo พร้อมกัน

ถ้าเอาผลตรวจไปลงมือเลยโดยไม่ถูกถามกลับ วันนั้นคือวันที่ผมพังเครื่องตัวเองอย่างเป็นระบบ

ถ้าอยากเช็คเองแบบเร็วๆ ก่อน ดูสามอย่างนี้

นับจำนวน skill กับความยาวคำอธิบายรวม ถ้ามีเกินสี่สิบอัน มีสิทธิ์สูงที่โมเดลมองไม่เห็นเกินครึ่ง

grep หาคำกล่อมโมเดลในไฟล์ตัวเอง ultrathink, MANDATORY, REPEATEDLY, you MUST

grep หาชื่อโมเดลรุ่นเก่าที่ hardcode ไว้ตามไฟล์

ที่ควรรู้

ตัวเลขงบคำอธิบายกับชื่อ setting ข้างบน วัดจากเครื่องตัวเองที่เวอร์ชันปัจจุบัน
ของพวกนี้เปลี่ยนได้ตามเวอร์ชัน เช็กกับเครื่องตัวเองก่อนเชื่อตัวเลขผม

ปิดท้าย

โมเดลใหม่ไม่ได้โง่ลง มันแค่เชื่อฟังสิ่งที่คุณเขียนไว้ให้ตัวเก่าอ่าน

setup ที่ดีที่สุดเมื่อเจ็ดเดือนก่อน ตอนนี้คือสิ่งที่ฉุดมันอยู่

อัพโมเดลแล้วอัพของรอบๆ มันด้วย