สไตล์เอาต์พุตของ Claude Code ไม่ถูกสืบทอดไปยัง subagent — สเปกทางการ และการตรวจสอบด้วยการใช้งานจริง
บทนำ
ฉันอยากให้ทุกการสนทนากับผู้ช่วย AI เขียนโค้ดเป็นไปตามรูปแบบของฉันเอง: พูดประเด็นก่อน จัดสิ่งต่าง ๆ เป็นตาราง ไม่พูดเรื่องเดิมซ้ำด้วยถ้อยคำอื่น ความต้องการนั้นถูกตอบสนองด้วยการสร้างการตั้งค่าแยกต่างหากที่สั่งเฉพาะรูปแบบและความหนาแน่นของการตอบ (สไตล์เอาต์พุต)
ตอนที่สร้างมัน ฉันคิดคลุมเครือว่า “นี่เปลี่ยนวิธีที่ผู้ช่วยตอบไปทั้งหมดแล้ว” แต่ความจริงคือ คำสั่งนั้นไม่เคยไปถึง AI ลูกน้อง (subagent) ที่ฉันส่งงานให้เลย นี่คือบันทึกของการยืนยันสเปกทางการ และการวัดว่าการตั้งค่าของฉันเองตกอยู่ในสถานะค่าตั้งต้นที่อันตรายหรือไม่
ข้อตั้งต้น — ถือว่าบริบทคือทรัพยากรที่มีจำกัด
ทำไมเรื่องนี้ถึงสำคัญ ต้องวางฐานไว้ก่อนด้วยหลักการออกแบบที่ Anthropic เผยแพร่เอง
Studies on needle-in-a-haystack style benchmarking have uncovered the concept of context rot: as the number of tokens in the context window increases, the model’s ability to accurately recall information from that context decreases.
LLMs have an “attention budget” … Every new token introduced depletes this budget by some amount.
ยิ่งอัดข้อมูลลงในบทสนทนามากเท่าไหร่ ความน่าจะเป็นที่โมเดลจะระลึกมันได้อย่างแม่นยำก็ยิ่งต่ำลง ดังนั้นการเอากฎที่คุณอยากให้มีผลทุกเทิร์น — อย่างคำสั่งเรื่องสไตล์การตอบ — ไปใส่กับทุกอย่างอย่างไม่ระวัง ก็เท่ากับวางกฎนั้นเองไว้ในฝั่งที่บริโภคทรัพยากรอันมีจำกัดนี้ เอกสารฉบับเดียวกันยังเขียนว่า:
good context engineering means finding the smallest possible set of high-signal tokens that maximize the likelihood of some desired outcome.
Note that minimal does not necessarily mean short; you still need to give the agent sufficient information up front to ensure it adheres to the desired behavior.
“น้อยที่สุด” ไม่ได้แปลว่า “สั้น” อย่าตัดคำสั่งที่คุณต้องการ แต่ก็อย่าทำซ้ำโดยไม่จำเป็น — การตัดสินใจเชิงออกแบบว่าสไตล์การตอบควรมีผลตรงไหนและไม่ควรมีผลตรงไหน คือกรณีที่เป็นรูปธรรมของหลักการนั้น
ค่าตั้งต้นที่ฉันมองข้ามไป
อย่างแรกฉันยืนยันกลไกของสไตล์การตอบเองกับสเปกทางการ
Custom output styles leave out Claude Code’s built-in software engineering instructions, such as how to scope changes, write comments, and verify work, unless
keep-coding-instructionsis set totrue.
รายการค่าตั้งต้นเป็นดังนี้
| การตั้งค่า | ค่าตั้งต้น |
|---|---|
keep-coding-instructions | false |
วินาทีที่คุณสร้างสไตล์การตอบของตัวเอง กฎมาตรฐานสำหรับงานอิมพลีเมนต์ (การกำหนดขอบเขตการเปลี่ยนแปลง การเขียนคอมเมนต์ การตรวจสอบงาน) จะหลุดออกไปทั้งหมดโดยค่าตั้งต้น สิ่งที่คุณตั้งใจให้เป็นการเปลี่ยนรูปแบบการตอบ ถ้าไม่ระบุเป็นอย่างอื่น มันถูกออกแบบมาให้ถอดคำสั่งที่ค้ำประกันคุณภาพของการอิมพลีเมนต์ออกไปด้วย
วัดการตั้งค่าของตัวเอง
แทนที่จะพอใจกับการสันนิษฐาน ฉันตรวจเนื้อหาไฟล์ตั้งค่าของตัวเอง
---
name: <ชื่อสไตล์การตอบของฉันเอง>
description: สไตล์การตอบของฉันเอง สั่งให้พูดประเด็นก่อน จัดโครงสร้างเป็นตาราง เลี่ยงความซ้ำซ้อน และนำเสนอทั้งสองด้าน
keep-coding-instructions: true
---
keep-coding-instructions ถูกตั้งเป็น true อย่างชัดเจน (วัดเมื่อ 2026-08-14) ไม่เข้าข่าย — กฎมาตรฐานของการอิมพลีเมนต์ยังถูกเก็บไว้ และมีเพียงรูปแบบกับความหนาแน่นของการตอบเท่านั้นที่ถูกเขียนทับด้วยคำสั่งของฉันเอง ถ้าปล่อยไว้ที่ค่าตั้งต้น การตอบก็จะดูเป็นระเบียบ ในขณะที่คำสั่งซึ่งค้ำประกันคุณภาพการอิมพลีเมนต์ได้หายไปเงียบ ๆ
มันไปไม่ถึง subagent ตั้งแต่แรกอยู่แล้ว
มีอีกเรื่องที่ต้องยืนยัน สไตล์การตอบนี้มีผลกับ AI ลูกน้องที่ฉันส่งงานให้หรือไม่ สเปกทางการเขียนว่า:
Output styles apply to the main conversation only: a subagent runs its own system prompt, so styles don’t change how subagents respond. A fork is the exception, because it inherits the parent’s full system prompt.
เพราะ subagent ทำงานบนพรอมป์ตระบบของตัวเอง สไตล์การตอบจึงไปไม่ถึงมัน ข้อยกเว้นเดียวคือโหมดการทำงานพิเศษที่เรียกว่า “fork” ซึ่งยกบทสนทนาแม่ข้ามมาทั้งดุ้น ส่วนการมอบหมายงานตามปกติ (การส่งงานให้ subagent ที่มีชื่อ) ไม่เข้าข่ายข้อยกเว้นนั้น
การสันนิษฐานของฉันที่ว่า “สไตล์การตอบของฉันคงมีผลกับ subagent ด้วย” ถูกแก้ตรงนี้ สิ่งที่ AI ลูกน้องได้รับมีเพียงสิ่งที่เขียนไว้ในไฟล์นิยามของมัน บวกข้อมูลสภาพแวดล้อมขั้นต่ำ — ไม่ใช่สไตล์การตอบ และไม่ใช่แม้แต่พรอมป์ตระบบของบทสนทนาปกติทั้งก้อน
Subagents receive only this system prompt plus basic environment details like the working directory, not the full Claude Code system prompt.
แผนภาพ — ไปถึงตรงไหน และไปไม่ถึงตรงไหน
ตั้งสไตล์การตอบของตัวเอง
│
├─▶ บทสนทนาหลัก
│ └─ ถูกต่อท้ายพรอมป์ตระบบ (ทางการ)
│ └─ มีการเตือนให้ "ยึดตามสไตล์นี้" ทุกเทิร์น (ทางการ)
│
├─▶ subagent ที่มีชื่อ (AI ลูกน้องที่งานถูกส่งไปให้)
│ └─ ⛔ ไปไม่ถึง (ทางการ) ── เพราะพวกมันทำงานบนพรอมป์ตระบบของตัวเอง
│ │
│ └─▶ ข้อยกเว้นเดียว: fork (โหมดการทำงานที่ยกบทสนทนาแม่ข้ามมา)
│ └─ เฉพาะตรงนี้เท่านั้นที่สไตล์การตอบของแม่ถูกสืบทอดไปด้วย
│
└─▶ ตรวจค่าตั้งต้นที่มีผลในวินาทีที่สร้างสไตล์ของตัวเอง
└─ ค่าตั้งต้นของ keep-coding-instructions คือ false (ทางการ)
└─ ถ้าไม่ทำอะไรเลย กฎของการอิมพลีเมนต์ก็หลุดไปด้วย
└─(เส้นย้อนกลับ)→ วัดไฟล์ตั้งค่าของตัวเอง
└─ ยืนยันว่าตั้งเป็น true ไว้แล้ว (2026-08-14)
การไหลแนวตั้งคือ “จากการสร้างสไตล์การตอบ ไปถึงการยืนยันว่ามันมีผลตรงไหน” กิ่งแนวนอนคือปลายทาง 3 แห่ง “บทสนทนาหลัก, subagent และข้อยกเว้น” และการซ้อนที่ด้านล่างคือวงวนของ “สงสัยค่าตั้งต้นที่อันตราย แล้วยืนยันด้วยการวัดการตั้งค่าของตัวเอง”
อะไรที่ชัดเจนแล้ว และอะไรที่ยังไม่
การตรวจครั้งนี้ทำให้ชัดเจน 2 เรื่อง
| สิ่งที่ตรวจ | ผล |
|---|---|
| สไตล์การตอบของตัวเองได้กวาดกฎของการอิมพลีเมนต์ออกไปด้วยหรือไม่ | ไม่เข้าข่าย (ยืนยันด้วยการวัด: keep-coding-instructions: true) |
| สไตล์การตอบมีผลกับ AI ลูกน้องที่งานถูกส่งไปให้หรือไม่ | ไม่มีผล (ระบุในสเปกทางการ ยกเว้น fork; เรื่องนี้เคยเป็นการสันนิษฐาน) |
ในทางกลับกัน ฉันยังไม่ได้วัดว่า “การเตือนให้ปฏิบัติตาม” ที่สไตล์การตอบเองยกขึ้นมาทุกเทิร์นนั้น กินพื้นที่ในบทสนทนามากแค่ไหน
All output styles trigger reminders for Claude to adhere to the output style instructions during the conversation.
เรื่องนี้ไม่ได้จำกัดอยู่แค่สไตล์การตอบ มันแย่งทรัพยากรอันมีจำกัดเดียวกันกับกลไกอื่น ๆ ทุกตัวที่ถูกฉีดเข้าบทสนทนาในแต่ละเทิร์น ฉันยืนยันได้ว่า “มันไปถึงหรือไม่” แต่ยังไม่ได้ยืนยันว่า “พอไปถึงแล้วมันหนักแค่ไหน” — เรื่องนั้นจะเขียนลงไปก็ต่อเมื่อวัดแล้วเท่านั้น
คำสั่งที่คุณเขียนไปถึงไกลแค่ไหนจริง ๆ นั้น มองไม่เห็นจากจุดที่คุณเขียนมัน ถ้าไม่ยืนยันระยะที่มันไปถึงกับสเปก คุณจะอ่านเอาต์พุตของฝ่ายที่คำสั่งไปไม่ถึง ว่าเป็นเอาต์พุตที่เพิกเฉยต่อคำสั่งของคุณ — การอ่านผิดแบบนั้นคือสิ่งที่ฉันอยากเลี่ยงมากที่สุดในครั้งนี้