วิธีตั้งค่า Output Style ใน Claude Code ให้ใช้งานได้จริง
เรียนรู้วิธีปรับแต่ง Output Style ใน Claude Code เพื่อเปลี่ยนรูปแบบการตอบกลับผ่าน system prompt พร้อมวิธีแก้ไขปัญหาการตั้งค่าไม่แสดงผลเมื่อเปลี่ยนค่าระหว่างเซสชัน
รูปแบบเอาต์พุตใน Claude Code คืออะไร
รูปแบบเอาต์พุต (output style) ใน Claude Code คือชุดคำสั่งที่ Claude Code จะผนวกเข้ากับ system prompt ของคุณ ซึ่งจะเปลี่ยนวิธีการตอบคำถามของ Claude ทั้งในส่วนของบทบาทที่ใช้และรูปแบบของข้อความที่แสดงออกมา โดยรูปแบบนี้ไม่ได้เป็นการสอน Claude เกี่ยวกับ codebase ของคุณ และไม่สามารถให้สิทธิ์ Claude ในการรันคำสั่งใดๆ ได้
Claude Code มาพร้อมกับรูปแบบในตัว 5 รูปแบบ การตั้งค่าของคุณจะถูกเก็บไว้ในคีย์การตั้งค่าหนึ่งรายการคือ outputStyle ซึ่งคีย์นี้จะถูกอ่านเพียงครั้งเดียวเมื่อเริ่มต้นเซสชัน ข้อเท็จจริงนี้เป็นสาเหตุของความสับสนส่วนใหญ่เกี่ยวกับฟีเจอร์นี้ เนื่องจากหากคุณเปลี่ยนรูปแบบในระหว่างเซสชัน ระบบจะบันทึกค่าไว้แต่จะยังไม่นำไปใช้งานจนกว่าคุณจะล้างเซสชันนั้น
บน VPS เรื่องนี้ไม่ใช่แค่ความชอบส่วนบุคคลในเชิงความสวยงามเท่านั้น เนื่องจากบันทึกการสนทนา (transcript) คือสิ่งที่คุณอ่านผ่านการเชื่อมต่อ SSH (secure shell) ซึ่งมักจะอยู่ภายในหน้าต่าง tmux ดังนั้นทุกบรรทัดที่ Claude แสดงออกมาคือบรรทัดที่คุณต้องรอและเป็นบรรทัดที่ใช้พื้นที่ใน scrollback buffer ซึ่งมีขนาดจำกัด
ตำแหน่งของค่าการตั้งค่า outputStyle
เลือกรูปแบบจากเมนู /config ภายใต้หัวข้อ Output style โดย Claude Code จะบันทึกตัวเลือกของคุณลงใน .claude/settings.local.json ในโปรเจกต์ที่คุณกำลังทำงานอยู่
คำสั่ง /output-style แบบแยกเดี่ยวไม่มีอยู่อีกต่อไป คำสั่งนี้ถูกเลิกใช้งานใน v2.1.73 และถูกนำออกใน v2.1.91 ดังนั้นในรุ่นปัจจุบันคำสั่งนี้จะไม่มีผลใดๆ ทั้งสิ้น โปรดตรวจสอบเวอร์ชันที่คุณใช้งานอยู่ก่อนปฏิบัติตามคู่มือเก่า เวอร์ชันที่ระบุในหน้านี้ได้รับการตรวจสอบเมื่อเดือนสิงหาคม 2026
claude --versionคุณสามารถตั้งค่าคีย์นี้ด้วยตนเองได้ โดยมีไฟล์การตั้งค่า 4 ไฟล์ที่สามารถเก็บค่านี้ไว้ได้ และไฟล์ที่มีขอบเขตแคบกว่าจะมีผลเหนือกว่าไฟล์ที่มีขอบเขตกว้างกว่า
~/.claude/settings.jsonคือไฟล์ระดับผู้ใช้ของคุณ ซึ่งจะมีผลกับทุกโปรเจกต์บนเครื่องนั้น.claude/settings.jsonคือไฟล์ระดับโปรเจกต์ ซึ่งจะถูก commit ลงใน git ดังนั้นจึงมีผลกับทุกคนที่ clone repository นี้ไป.claude/settings.local.jsonคือไฟล์ระดับโปรเจกต์เฉพาะเครื่อง (local) ไฟล์นี้จะไม่ถูก commit และจะเขียนทับค่าจากทั้งสองไฟล์ข้างต้น นี่คือไฟล์ที่เมนู/configเขียนข้อมูลลงไป- การตั้งค่าแบบจัดการโดยทีม IT ซึ่งถูกปรับใช้จาก path ของระบบ เช่น
/etc/claude-code/บน Linux จะมีผลเหนือการตั้งค่าอื่นๆ ทั้งหมด
ค่าของคีย์นี้คือชื่อของรูปแบบ:
{
"outputStyle": "Concise"
}หากต้องการใช้เพียงเซสชันเดียว ให้ส่งคีย์เดียวกันผ่านบรรทัดคำสั่ง (command line) โดยแฟล็ก --settings จะรับค่าเป็น path หรือสตริง JSON แบบ inline ซึ่งค่าเหล่านี้จะเขียนทับคีย์เดียวกันในไฟล์การตั้งค่าสำหรับการรันครั้งนั้นๆ:
claude --settings '{"outputStyle": "Concise"}'ป้ายกำกับเมนูและคำสั่ง slash มีการเปลี่ยนแปลงอย่างน้อยหนึ่งครั้งในช่วงอายุของฟีเจอร์นี้ แต่คีย์ outputStyle ไม่มีการเปลี่ยนแปลง เมื่อภาพหน้าจอในคู่มือใดๆ ไม่ตรงกับสิ่งที่คุณเห็น ให้ตั้งค่าคีย์โดยตรงและยืนยันด้วย /status ซึ่งจะแสดงรายการแหล่งที่มาของการตั้งค่าที่มีผลอยู่ในขณะนั้น
เหตุใดรูปแบบเอาต์พุตใหม่ของคุณจึงไม่มีผลจนกว่าจะทำการ clear
Claude Code จะสร้าง system prompt ขึ้นมาเพียงครั้งเดียวเมื่อเริ่มเซสชัน และรูปแบบเอาต์พุตก็เป็นส่วนหนึ่งของ system prompt นั้น ดังนั้นการเปลี่ยนการตั้งค่าในขณะที่เซสชันกำลังทำงานอยู่จะเป็นเพียงการจัดเก็บค่าไว้โดยไม่ส่งผลให้เห็นความเปลี่ยนแปลง เนื่องจากเซสชันที่ทำงานอยู่จะยังคงส่ง prompt ที่สร้างไว้ตั้งแต่ตอนเริ่มต้นต่อไป รูปแบบใหม่จะถูกโหลดในการทำงานครั้งถัดไปของ /clear หรือในการเปิดใช้งานครั้งถัดไป
/clear
/context/context จะแสดงสิ่งที่กำลังใช้พื้นที่ใน context window อยู่ในขณะนี้ โดยแบ่งตามหมวดหมู่รวมถึง system prompt ด้วย ให้รันคำสั่งนี้ในเซสชันใหม่ภายใต้แต่ละรูปแบบ แล้วบรรทัด system prompt จะเป็นข้อมูลฝั่งอินพุตสำหรับการเปรียบเทียบของคุณ นอกจากนี้ยังเป็นวิธีที่เร็วที่สุดในการพิสูจน์ว่ารูปแบบที่กำหนดเองถูกโหลดเข้ามาจริงหรือไม่ สำหรับภาพรวมที่กว้างขึ้นว่ามีอะไรบ้างที่เติมเต็มหน้าต่างนั้น โปรดดู วิธีการที่ context ถูกเติมเต็มในเซสชันยาวของ Claude Code
มีเหตุผลที่การตั้งค่าต้องรอแทนที่จะนำไปใช้ทันที API จะให้บริการคำขอซ้ำจาก prompt cache ซึ่งจะจับคู่กับจุดเริ่มต้นของแต่ละคำขอ และ system prompt จะวางอยู่ที่จุดเริ่มต้นนั้นพอดี การเขียนทับ system prompt ในระหว่างการสนทนาจะทำให้ข้อมูลทั้งหมดที่อยู่เบื้องหลังไม่ถูกต้อง ดังนั้นการโต้ตอบครั้งถัดไปจะต้องประมวลผลประวัติทั้งหมดของคุณใหม่เสมือนเป็นอินพุตใหม่ การกำหนดรูปแบบไว้ตั้งแต่เริ่มเซสชันจะช่วยหลีกเลี่ยงต้นทุนดังกล่าว การสลับรูปแบบนั้นมีค่าใช้จ่ายต่ำ เพียงแค่ต้องทำการ clear เท่านั้น
รูปแบบเอาต์พุตในตัวแต่ละแบบส่งผลต่อการถอดความอย่างไร
- Default คือ system prompt ปกติของ Claude Code ซึ่งเขียนขึ้นสำหรับงานด้านวิศวกรรมซอฟต์แวร์
- Concise จะเน้นที่ผลลัพธ์เป็นหลัก โดยจะตัดส่วนเกริ่นนำและการบรรยายขั้นตอนการทำงานออก และรักษาคำตอบให้สั้นจนกว่าคุณจะสอบถามรายละเอียดเพิ่มเติม งานวิศวกรรมที่อยู่เบื้องหลังยังคงเหมือนเดิม รูปแบบนี้จะไม่ย่อรายงานข้อผิดพลาดหรือคำเตือนด้านความปลอดภัย และยังคงสอบถามคุณอย่างครบถ้วนก่อนดำเนินการใดๆ ที่อาจก่อให้เกิดความเสียหาย รูปแบบนี้จำเป็นต้องใช้ Claude Code v2.1.237 ขึ้นไป
- Explanatory จะเพิ่ม "ข้อมูลเชิงลึก" (Insights) เพื่อการเรียนรู้ระหว่างขั้นตอนของงาน โดยครอบคลุมถึงเหตุผลในการเลือกวิธีปฏิบัติและรูปแบบที่ codebase ของคุณใช้งานอยู่แล้ว ซึ่งจะทำให้การถอดความยาวขึ้นตามวัตถุประสงค์
- Learning จะไปไกลกว่านั้น โดย Claude จะแบ่งปันข้อมูลเชิงลึกเหล่านั้นแล้วขอให้คุณเขียนโค้ดส่วนเล็กๆ ด้วยตัวเอง พร้อมทั้งทำเครื่องหมายแต่ละจุดด้วยคอมเมนต์
TODO(human)ในไฟล์ - Proactive จะทำให้ Claude ลงมือทำแทนที่จะคอยถาม โดยจะทำการตัดสินใจที่สมเหตุสมผลในงานประจำวันแทนที่จะหยุดเพื่อรอการยืนยัน
โปรดอ่านข้อสุดท้ายนี้อย่างละเอียด เนื่องจากเป็นส่วนที่ผู้คนมักเข้าใจผิด Proactive เป็นเพียงคำแนะนำใน system prompt ซึ่งจะเปลี่ยนสิ่งที่ Claude พยายามจะทำ แต่โหมดการอนุญาต (permission mode) ของคุณยังคงเป็นตัวตัดสินว่าสิ่งใดจะทำงานโดยไม่ถามคุณ ซึ่งเป็นการตั้งค่าที่มีความสำคัญบนเซิร์ฟเวอร์ที่คุณปล่อยให้ทำงานโดยไม่มีผู้ดูแล โดยครอบคลุมอยู่ใน โหมดอัตโนมัติและโหมดการอนุญาตของ Claude Code
ความแตกต่างระหว่างรูปแบบเอาต์พุต, CLAUDE.md, hook และ subagent
ส่วนประกอบเหล่านี้ล้วนเป็นการกำหนดพฤติกรรมของ Claude แต่ทำงานในระดับชั้นที่แตกต่างกัน
- รูปแบบเอาต์พุต (Output style) จะถูกเพิ่มเข้าไปใน system prompt โดยจะมีผลกับทุกการตอบกลับในการสนทนาหลัก
- CLAUDE.md จะถูกเพิ่มเป็นข้อความจากผู้ใช้ต่อจาก system prompt ซึ่งเป็นที่สำหรับเก็บข้อตกลงของโปรเจกต์และข้อเท็จจริงเกี่ยวกับ codebase
--append-system-promptจะเป็นการผนวกข้อความเข้ากับ system prompt สำหรับการเรียกใช้งานเพียงครั้งเดียว โดยไม่มีการลบข้อมูลเดิมออก ถือเป็นรูปแบบเอาต์พุตแบบใช้ครั้งเดียว- Hook คือคำสั่ง shell ที่ Claude Code จะรันด้วยตัวเองเมื่อเกิดเหตุการณ์ที่กำหนด โดยจะถูกบังคับโดย harness ดังนั้นมันจะทำงานไม่ว่า Claude จะเลือกทำหรือไม่ก็ตาม ดูรายละเอียดเพิ่มเติมที่ สิ่งที่ Claude Code hook ทำได้และทำไม่ได้
- Subagent จะทำงานด้วย system prompt และชุดเครื่องมือของตัวเอง
การทดสอบสั้น ๆ ช่วยแยกสองกรณีแรกออกจากกัน ข้อเท็จจริงเกี่ยวกับโปรเจกต์ของคุณควรอยู่ใน CLAUDE.md เพราะ Claude จำเป็นต้องทราบข้อมูลเหล่านี้ ส่วนถ้อยคำควรอยู่ใน output style เพราะเกี่ยวข้องกับลักษณะการอ่านคำตอบ สิ่งใดก็ตามที่ต้องเกิดขึ้นทุกครั้ง โดยไม่ขึ้นกับการตัดสินใจของโมเดล สิ่งนั้นคือ hook ชั้นที่แต่ละ surface อยู่เป็นคุณสมบัติของ โปรแกรมที่เรียกใช้โมเดล ไม่ใช่ของโมเดลเอง ดังนั้น style จึงทำได้เพียงมีอิทธิพลต่อผลลัพธ์ ขณะที่ hook สามารถบังคับใช้ได้
รูปแบบเอาต์พุตจะมีผลเฉพาะกับการสนทนาหลักเท่านั้น Subagent จะไม่รับสืบทอดรูปแบบของคุณ เนื่องจากมันเริ่มการสนทนาใหม่ด้วย system prompt ของตัวเอง ยกเว้นกรณีการ fork การสนทนาปัจจุบัน ซึ่งการ fork จะรับสืบทอด system prompt ของ parent มาโดยตรง หาก subagent เขียนตอบในรูปแบบที่คุณไม่ต้องการ ให้แก้ไขที่ไฟล์ของ agent นั้นแทนการแก้ไขที่รูปแบบของคุณ การรัน Claude Code เซสชันที่สองบนเครื่องเดียวกันก็มีขอบเขตเดียวกัน โดยจะอ่านไฟล์การตั้งค่าของตัวเองเมื่อเริ่มทำงาน ดังนั้นเมื่อคุณ ส่งงานไปยังอีกเซสชันที่รันควบคู่กัน คำตอบที่ได้จะกลับมาในรูปแบบที่เซสชันนั้นโหลดไว้ ไม่ใช่รูปแบบของคุณ
วิธีการเขียนสไตล์การแสดงผลของคุณเอง
สไตล์การแสดงผลแบบกำหนดเองคือไฟล์ markdown ที่มีส่วน frontmatter ให้บันทึกไฟล์ไว้ภายใต้ไดเรกทอรี home ของคุณเพื่อใช้งานในทุกโปรเจกต์ หรือบันทึกไว้ภายใน repository เพื่อเก็บไว้พร้อมกับโค้ด ไดเรกทอรีของผู้ใช้คือ ~/.claude/output-styles/ และไดเรกทอรีของโปรเจกต์คือ .claude/output-styles/
mkdir -p ~/.claude/output-styles
cat > ~/.claude/output-styles/terse-ops.md <<'EOF'
---
name: Terse ops
description: Command first, explanation after, for SSH sessions
keep-coding-instructions: true
---
Lead with the command or the file change. Put the explanation after it, in two sentences or fewer.
Do not narrate what you are about to do. Report what you did.
When a command can fail, print the one check that proves it worked and say what a healthy result looks like.
EOFเริ่มเซสชันและเปิด /config สไตล์ของคุณจะปรากฏในรายการ Output style พร้อมกับคำอธิบายที่คุณเขียนไว้ หากสไตล์ไม่ปรากฏขึ้น แสดงว่าระบบไม่ได้อ่านไฟล์ดังกล่าว ให้ตรวจสอบ path และตรวจสอบว่าบล็อก frontmatter --- เป็นส่วนแรกสุดของไฟล์ ชื่อไฟล์จะกลายเป็นชื่อสไตล์เว้นแต่จะมีการกำหนด name ไว้ใน frontmatter ดังนั้นไฟล์นี้จึงถูกเรียกว่า Terse ops ไม่ใช่ terse-ops
เลือกสไตล์ดังกล่าว หรือตั้งค่า key ให้ตรงกับชื่อนั้นและล้างข้อมูล:
{
"outputStyle": "Terse ops"
}มีฟิลด์หนึ่งที่กำหนดว่าไฟล์ของคุณเป็นการปรับแต่งหรือเป็นการแทนที่ keep-coding-instructions มีค่าเริ่มต้นเป็น false ซึ่งหมายความว่าสไตล์แบบกำหนดเองจะ ละทิ้ง คำแนะนำด้านวิศวกรรมซอฟต์แวร์ที่มาพร้อมกับ Claude Code และทำงานโดยใช้ข้อความของคุณเพียงอย่างเดียว คำแนะนำที่มาพร้อมกับระบบเหล่านั้นคือสิ่งที่บอก Claude ว่าจะกำหนดขอบเขตการเปลี่ยนแปลงอย่างไรและจะตรวจสอบงานของตนเองอย่างไร ให้ละฟิลด์นี้ไว้หากคุณใช้เป็นผู้ช่วยเขียนหรือนักวิเคราะห์ข้อมูลซึ่งไม่จำเป็นต้องใช้คำแนะนำเหล่านั้น ให้ตั้งค่าเป็น true สำหรับงานใดๆ ที่ยังเกี่ยวข้องกับโค้ด มิฉะนั้นคุณจะสงสัยว่าเหตุใดวิศวกรที่รอบคอบจึงหยุดตรวจสอบงานของตนเองกะทันหัน หากสิ่งที่คุณต้องการจริงๆ ไม่ใช่การเปลี่ยนน้ำเสียง แต่เป็นการกำหนดขอบเขตของงานให้ชัดเจนขึ้นว่างานนั้นควรใช้ความพยายามเพียงใด สิ่งนั้นควรอยู่ในคำแนะนำด้านวิศวกรรมมากกว่าไฟล์สไตล์: ทักษะ Ponytail เป็นตัวอย่างการใช้งานจริง ซึ่งเป็นกฎข้อเดียวที่ผลักดันให้เอเจนต์มุ่งเน้นไปที่การเปลี่ยนแปลงที่เล็กที่สุดที่สามารถทำงานได้
description คือบรรทัดที่ตัวเลือก /config จะแสดงข้างชื่อสไตล์ ให้เขียนคำอธิบายนี้ไว้สำหรับช่วงเวลาที่คุณต้องเลือกระหว่างสไตล์สองแบบที่คุณสร้างขึ้นเองในอีกหกเดือนข้างหน้า
เหตุใดสไตล์แบบกระชับจึงแตกต่างเมื่อใช้งานผ่าน SSH
บน VPS คุณอ่านบันทึกการทำงานผ่านเลเยอร์ต่างๆ ที่เทอร์มินัลในเครื่องไม่มี และแต่ละเลเยอร์มีต้นทุนจากความยาวของข้อความ
Scrollback คือเลเยอร์แรก ใน tmux แต่ละ pane จะเก็บจำนวนบรรทัดที่กำหนดไว้โดย history-limit ซึ่งค่าเริ่มต้นคือ 2000 บันทึกการทำงานที่มีคำบรรยายจะทำให้ buffer เต็มเร็วขึ้น ส่งผลให้ส่วนต้นของเซสชันถูกลบออกไปก่อนกำหนด และข้อมูลที่คุณต้องการเลื่อนกลับไปดูจะหายไป ให้เพิ่มค่านี้หากคุณต้องการพื้นที่เพิ่ม:
echo 'set -g history-limit 20000' >> ~/.tmux.conf
tmux source-file ~/.tmux.confPane ที่สร้างขึ้นหลังจากนี้จะเก็บได้ 20000 บรรทัดต่อ pane โดยแลกกับหน่วยความจำที่ใช้ต่อ pane ส่วน pane ที่เปิดอยู่ก่อนแล้วจะยังคงใช้ขีดจำกัดเดิม เนื่องจากขนาด buffer ถูกกำหนดไว้ตั้งแต่ตอนสร้าง pane หากคุณกำลังจัดวางเลย์เอาต์ของเซสชัน การรัน Claude Code ภายใน tmux บน VPS มีรายละเอียดเรื่องนี้
Latency คือเลเยอร์ที่สอง ข้อมูลตอบกลับจะถูกสตรีมเข้ามาในเทอร์มินัลของคุณทันทีที่สร้างขึ้น บนลิงก์ที่มีค่า round-trip time สูง คำนำที่ยาวเกินไปคือเวลาที่คุณต้องเสียไปกับการรอให้ข้อความปรากฏก่อนที่คำตอบจริงจะแสดงขึ้น
Output tokens คือเลเยอร์ที่สาม ทุกบรรทัดที่มีคำบรรยายจะถูกคิดค่าใช้จ่ายเป็น output สไตล์ Explanatory และ Learning ถูกออกแบบมาให้ยาวกว่า ส่วน Concise ถูกออกแบบมาให้สั้นกว่า เพราะเป็นการสั่งให้ Claude ตอบกลับโดยเน้นความกระชับเป็นค่าเริ่มต้น
อย่าเชื่อตัวเลขเปอร์เซ็นต์จากใคร รวมถึงหน้านี้ด้วย ขนาดของความแตกต่างขึ้นอยู่กับ prompt ของคุณ, โมเดลที่คุณใช้ และงานที่คุณสั่ง ดังนั้นควรวัดผลด้วยตัวเองทั้งก่อนและหลังใช้งาน ให้ลองรันงานจริงงานเดียวกันในสองเซสชันที่แยกกัน โดยเซสชันหนึ่งใช้ Default และอีกเซสชันใช้ Concise แล้วจึงเปรียบเทียบกัน Statusline เป็นเครื่องมือวัดที่ง่ายที่สุด เพราะ Claude Code จะส่ง JSON object เข้ามาทาง stdin ให้กับสคริปต์ของคุณ ซึ่งมีทั้งชื่อสไตล์และจำนวน token อยู่แล้ว:
cat > ~/.claude/statusline.sh <<'EOF'
#!/bin/bash
input=$(cat)
style=$(echo "$input" | jq -r '.output_style.name // "default"')
out=$(echo "$input" | jq -r '.context_window.total_output_tokens // 0')
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
echo "style=$style out=$out cost=$cost"
EOF
chmod +x ~/.claude/statusline.shชี้การตั้งค่า statusLine ไปที่สคริปต์นั้น:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}แถบที่ด้านล่างของเซสชันจะแสดงสไตล์ที่ใช้งานอยู่ข้างๆ จำนวน token ที่สร้างขึ้น ซึ่งเป็นข้อมูลก่อนและหลังที่คุณต้องการ สคริปต์นี้จำเป็นต้องใช้ jq ซึ่งเป็น command-line JSON parser ดังนั้นให้ติดตั้งก่อนด้วย sudo apt install -y jq หากแถบยังคงว่างเปล่า ให้ลองรันสคริปต์ด้วยตัวเองแล้ว pipe ข้อมูล JSON เข้าไป เพราะ statusline ที่จบการทำงานด้วยสถานะ non-zero จะไม่แสดงผลและไม่รายงานข้อมูลใดๆ Statusline แบบกำหนดเองสำหรับ Claude Code แสดงรายการฟิลด์ที่เหลือใน object นั้น สำหรับด้านค่าใช้จ่ายแทนที่จะเป็นด้านเซสชัน ให้อ่าน token ของ Claude Code ถูกใช้ไปที่ไหนบ้าง และ เครื่องมือสำหรับติดตามค่าใช้จ่ายของ Claude Code
วิธีตรวจสอบว่าสไตล์การแสดงผลใดถูกโหลดใช้งานจริง
ให้ใช้การตรวจสอบเหล่านี้แทนการคาดเดา
/statusจะแสดงรายการแหล่งที่มาของการตั้งค่าที่มีผลในเซสชันนี้ รวมถึงระบุว่ามีการตั้งค่าที่จัดการโดยองค์กรเข้ามาเกี่ยวข้องหรือไม่/contextจะแสดง system prompt ที่ถูกโหลดไว้เป็นหมวดหมู่หนึ่งในการแจกแจง context windowclaude doctorเมื่อรันจาก shell โดยไม่ต้องเริ่มเซสชัน จะแสดงข้อมูลการวินิจฉัยการติดตั้งและการตั้งค่า พร้อมทั้งรายงานไฟล์การตั้งค่าที่ไม่ถูกต้อง
เมื่อสไตล์ไม่ถูกนำไปใช้ สาเหตุส่วนใหญ่มักมาจากสองกรณี กรณีแรกคือคุณเปลี่ยนสไตล์ระหว่างเซสชัน ให้รัน /clear กรณีที่สองคือลำดับความสำคัญ: .claude/settings.local.json จะทับซ้อน .claude/settings.json และทั้งสองจะทับซ้อน ~/.claude/settings.json เนื่องจากตัวเลือก /config จะเขียนข้อมูลลงในไฟล์ภายในเครื่อง สไตล์ที่ทีมของคุณกำหนดไว้ใน .claude/settings.json จึงถูกทับซ้อนไปอย่างเงียบๆ บนเครื่องใดก็ตามที่มีการใช้งานเมนูนี้ /status คือคำสั่งที่จะบอกคุณว่าแหล่งที่มาใดเป็นผู้ชนะ
ข้อผิดพลาดทางไวยากรณ์ JSON จะแสดงอาการเดียวกันแต่มีวิธีแก้ไขที่ต่างออกไป claude doctor จะระบุชื่อไฟล์ที่ไม่สามารถประมวลผลได้ ซึ่งควรตรวจสอบก่อนที่คุณจะไปหาสาเหตุที่ซับซ้อนกว่านี้
FAQ
ทำไมคำสั่ง /output-style ถึงใช้งานไม่ได้แล้ว?
คำสั่งดังกล่าวถูกเลิกใช้งานใน v2.1.73 และถูกถอดออกใน v2.1.91 ดังนั้นใน build ตั้งแต่ช่วงกลางปี 2026 เป็นต้นไป คำสั่งนี้จึงไม่มีอยู่แล้ว ให้รัน claude --version เพื่อตรวจสอบสิ่งที่คุณมีอยู่ เลือกสไตล์จาก /config ภายใต้หัวข้อ Output style หรือตั้งค่าคีย์ outputStyle ในไฟล์การตั้งค่า คีย์นี้ยังคงใช้งานได้หลังจากคำสั่งถูกถอดออก ดังนั้นการตั้งค่าโดยตรงจึงเป็นคำแนะนำที่ควรจดบันทึกไว้
ฉันเปลี่ยนสไตล์การแสดงผลแล้วแต่ไม่มีอะไรเกิดขึ้น ทำไม?
สไตล์การแสดงผลเป็นส่วนหนึ่งของ system prompt และ Claude Code จะสร้าง system prompt เพียงครั้งเดียวเมื่อเริ่มเซสชัน การเปลี่ยนแปลงที่ทำระหว่างเซสชันจะถูกบันทึกไว้แต่ไม่มีผล เนื่องจากเซสชันที่กำลังทำงานอยู่จะส่ง prompt ที่สร้างไว้ตั้งแต่ตอนเริ่มต้นตลอดเวลา ให้รัน /clear หรือเริ่มเซสชันใหม่ หากยังไม่มีผล ให้รัน /status เพื่อดูว่าแหล่งการตั้งค่าใดมีผลเหนือกว่า เนื่องจาก .claude/settings.local.json จะทับ .claude/settings.json และทั้งคู่จะทับ ~/.claude/settings.json
สไตล์การแสดงผลแบบ Concise ช่วยประหยัดค่าใช้จ่ายหรือไม่?
สไตล์นี้ช่วยลดจำนวน output tokens ตามที่คุณคาดหวัง เนื่องจากเป็นการสั่งให้ Claude ตอบกลับให้สั้นลงโดยค่าเริ่มต้น จำนวนที่ลดลงจะขึ้นอยู่กับ prompt และโมเดลที่คุณใช้ ดังนั้นตัวเลขเปอร์เซ็นต์ที่เผยแพร่ทั่วไปให้ถือว่าเป็นเพียงการวัดผลจากงานของผู้อื่นเท่านั้น คุณควรวัดผลด้วยตนเองโดยรัน /context ในเซสชันใหม่สำหรับแต่ละสไตล์ในฝั่ง input จากนั้นรันงานเดียวกันภายใต้แต่ละสไตล์แล้วเปรียบเทียบจำนวน output tokens สไตล์ Concise จะไม่ทำให้รายงานข้อผิดพลาดหรือคำเตือนด้านความปลอดภัยสั้นลง ดังนั้นส่วนที่คุณจำเป็นต้องอ่านมากที่สุดจะยังคงอยู่ครบถ้วน
การเปลี่ยนสไตล์การแสดงผลจะส่งผลต่อวิธีการเขียนของ subagents หรือไม่?
ไม่ สไตล์การแสดงผลจะมีผลเฉพาะกับการสนทนาหลักเท่านั้น เนื่องจาก subagent จะเริ่มการสนทนาของตนเองด้วย system prompt และชุดเครื่องมือของตนเอง ยกเว้นกรณีที่เป็นการ fork การสนทนาปัจจุบัน เนื่องจาก fork จะสืบทอด system prompt มาจาก parent โดยตรง หากต้องการเปลี่ยนวิธีการตอบกลับของ subagent ให้แก้ไขไฟล์ของ agent นั้นโดยตรง
สไตล์การแสดงผลสามารถทำให้ Claude รันคำสั่งโดยไม่ถามได้หรือไม่?
ไม่ได้ สไตล์การแสดงผลเป็นเพียงข้อความใน system prompt จึงมีผลเพียงแค่โน้มน้าวสิ่งที่ Claude พยายามจะทำ สไตล์ Proactive ทำให้ Claude คาดการณ์และลงมือทำแทนที่จะหยุดรอการตัดสินใจในงานทั่วไป แต่ก็ยังไม่สามารถอนุมัติคำสั่งได้ด้วยตนเอง โหมดการอนุญาต (permission mode) ของคุณจะเป็นตัวตัดสินว่าคำสั่งใดจะรันโดยไม่ต้องถาม และนั่นคือการตั้งค่าที่คุณควรตรวจสอบก่อนทิ้งเซสชันไว้บนเซิร์ฟเวอร์