آموزش تنظیم و شخصیسازی output style در Claude Code
با نحوه تغییر output style در Claude Code و تأثیر آن بر system prompt آشنا شوید. یاد بگیرید چرا تغییر تنظیمات در میانه session اعمال نمیشود و چگونه سبک اختصاصی خود را بسازید.
سبک خروجی در Claude Code چیست
سبک خروجی (output style) در Claude Code مجموعهای از دستورالعملهاست که Claude Code به system prompt خود میافزاید. این سبک نحوه پاسخدهی Claude به شما را تغییر میدهد: نقشی که ایفا میکند و ساختار متنی که چاپ میکند. این قابلیت هیچ دانشی درباره codebase شما به Claude نمیآموزد و نمیتواند به Claude اجازه اجرای هیچ دستوری را بدهد.
Claude Code همراه با 5 سبک پیشفرض عرضه میشود. انتخاب شما در یک کلید تنظیمات به نام outputStyle ذخیره میشود و این کلید تنها یکبار در زمان شروع session خوانده میشود. همین واقعیت ساده، دلیل اصلی سردرگمیها پیرامون این قابلیت است؛ زیرا سبکی که در میانه یک session تغییر میدهید، ذخیره میشود اما تا زمانی که session را پاک نکنید، نادیده گرفته خواهد شد.
روی یک VPS، این موضوع فراتر از یک ترجیح ظاهری است. رونوشت (transcript) همان چیزی است که شما از طریق یک لینک SSH (secure shell) میخوانید، که معمولاً درون یک پنجره tmux قرار دارد؛ بنابراین هر خطی که Claude روایت میکند، خطی است که شما باید منتظر آن بمانید و بخشی از بافر scrollback با اندازه ثابت را اشغال میکند.
محل قرارگیری تنظیمات outputStyle
یک سبک را از منوی /config، در بخش Output style انتخاب کنید. Claude Code انتخاب شما را در .claude/settings.local.json در پروژهای که روی آن کار میکنید، مینویسد.
دستور مستقل /output-style دیگر وجود ندارد. این دستور در نسخه v2.1.73 منسوخ و در v2.1.91 حذف شد، بنابراین در نسخههای فعلی هیچ کاری انجام نمیدهد. پیش از دنبال کردن هر راهنمای قدیمی، بررسی کنید که از چه نسخهای استفاده میکنید. نسخههای موجود در این صفحه در اوت 2026 بررسی شدهاند.
claude --versionشما همچنین میتوانید این کلید را بهصورت دستی تنظیم کنید. چهار فایل تنظیمات میتوانند این کلید را در خود نگه دارند و تنظیمات محدودتر بر تنظیمات کلیتر اولویت دارند.
~/.claude/settings.jsonفایل کاربری شماست. این فایل در تمامی پروژههای موجود در آن ماشین اعمال میشود..claude/settings.jsonفایل پروژه است. این فایل در git کامیت میشود، بنابراین برای هر کسی که مخزن را clone کند، اعمال خواهد شد..claude/settings.local.jsonفایل محلی پروژه است. این فایل کامیت نمیشود و هر دو مورد بالا را نادیده میگیرد (override میکند). این همان فایلی است که منوی/configدر آن مینویسد.- تنظیمات مدیریتشده که توسط تیم IT از یک مسیر سیستمی مانند
/etc/claude-code/در Linux اعمال میشوند، بر همه موارد دیگر اولویت دارند.
مقدار این کلید، نام سبک است:
{
"outputStyle": "Concise"
}برای استفاده فقط در یک نشست (session)، همان کلید را در خط فرمان وارد کنید. فلگ --settings یک مسیر یا یک رشته JSON درونخطی را میپذیرد و مقادیر آن برای همان اجرا، کلیدهای مشابه در فایلهای تنظیمات را نادیده میگیرند:
claude --settings '{"outputStyle": "Concise"}'برچسبهای منو و دستورات اسلش (slash commands) حداقل یکبار در طول عمر این قابلیت تغییر کردهاند. کلید outputStyle تغییر نکرده است. هر زمان که اسکرینشات موجود در هر راهنمایی با آنچه میبینید مطابقت نداشت، کلید را مستقیماً تنظیم کرده و آن را با /status تأیید کنید؛ این دستور منابع تنظیمات فعال را فهرست میکند.
چرا سبک خروجی جدید شما تا زمانی که session را پاک نکنید، تغییری نمیکند
Claude Code دستورالعمل سیستم (system prompt) را یکبار در زمان شروع session میسازد و سبک خروجی بخشی از آن دستورالعمل است. بنابراین، تغییر تنظیمات در حین اجرای یک session، مقدار را ذخیره میکند اما هیچ تغییری در آنچه میبینید ایجاد نمیکند، زیرا session در حال اجرا همچنان از همان دستورالعملی استفاده میکند که در زمان شروع ساخته شده است. سبک جدید در /clear بعدی یا راهاندازی بعدی بارگذاری میشود.
/clear
/context/context آنچه را که در حال حاضر پنجره context را اشغال کرده است، به تفکیک دستهبندی (از جمله دستورالعمل سیستم) چاپ میکند. آن را در یک session جدید با هر سبک اجرا کنید؛ خط دستورالعمل سیستم، ورودی مورد نیاز برای مقایسه شماست. این همچنین سریعترین راه برای اثبات بارگذاری یک سبک سفارشی است. برای درک وسیعتر از آنچه این پنجره را پر میکند، به نحوه پر شدن context در یک session طولانی Claude Code مراجعه کنید.
دلیلی وجود دارد که تنظیمات به جای اعمال لحظهای، منتظر میماند. API درخواستهای تکراری را از یک prompt cache پاسخ میدهد که با ابتدای هر درخواست مطابقت دارد و دستورالعمل سیستم دقیقاً در همان ابتدا قرار میگیرد. بازنویسی آن در میانه گفتگو، تمام محتوای پشت آن را نامعتبر میکند، بنابراین نوبت بعدی، کل تاریخچه شما را به عنوان ورودی جدید پردازش خواهد کرد. ثابت نگهداشتن سبک در شروع session از این هزینه جلوگیری میکند. تغییر سبکها ارزان است؛ فقط نیاز به یک پاکسازی (clear) دارد.
تغییرات هر سبک خروجی پیشفرض در رونوشت
- Default (پیشفرض): همان پرامپت سیستمی عادی Claude Code است که برای کارهای مهندسی نرمافزار نوشته شده است.
- Concise (مختصر): با نتیجه شروع میشود. این سبک مقدمهچینی و روایت گامبهگام را حذف میکند و پاسخها را تا زمانی که جزئیات بیشتری نخواهید، کوتاه نگه میدارد. کارهای مهندسی پشت این پاسخها تغییری نمیکند. این سبک هرگز گزارش خطا یا هشدار امنیتی را کوتاه نمیکند و همچنان پیش از انجام هرگونه اقدام مخرب، بهطور کامل از شما اجازه میگیرد. این سبک به Claude Code نسخه 2.1.237 یا بالاتر نیاز دارد.
- Explanatory (توضیحی): بین مراحل انجام یک کار، «بینشهایی» (Insights) آموزشی اضافه میکند که توضیح میدهد چرا یک انتخاب پیادهسازی انجام شده و کدبیس شما از چه الگویی استفاده میکند. رونوشت بهطور هدفمند طولانیتر میشود.
- Learning (آموزشی): فراتر میرود. Claude آن بینشها را به اشتراک میگذارد و سپس از شما میخواهد بخشهای کوچکی از کد را خودتان بنویسید و هر نقطه را با یک کامنت
TODO(human)در فایل مشخص میکند. - Proactive (پیشدستانه): باعث میشود Claude بهجای پرسیدن، عمل کند. این سبک در تصمیمات روتین، فرضیات منطقی در نظر میگیرد و بهجای توقف برای تأیید، کار را پیش میبرد.
مورد آخر را با دقت بخوانید، زیرا همان موردی است که افراد بهاشتباه برداشت میکنند. Proactive یک راهنما در پرامپت سیستمی است. این سبک چیزی را که Claude تلاش میکند انجام دهد تغییر میدهد. حالت مجوز (permission mode) شما همچنان تعیین میکند که چه چیزی بدون پرسش از شما اجرا شود؛ این همان تنظیمی است که در سروری که بدون نظارت رها میکنید، اهمیت دارد. این موضوع در حالت خودکار و حالتهای مجوز Claude Code پوشش داده شده است.
تفاوت سبک خروجی با CLAUDE.md، هوک و زیر-عامل (subagent)
این سطوح همگی به نوعی تعیینکننده نحوه رفتار Claude هستند، اما در لایههای متفاوتی عمل میکنند.
- سبک خروجی (output style) به system prompt اضافه میشود. این سبک برای تمام پاسخها در گفتگوی اصلی اعمال میگردد.
- CLAUDE.md به عنوان یک پیام کاربر پس از system prompt اضافه میشود. این فایل محل قرارگیری قراردادهای پروژه و حقایق مربوط به codebase است.
--append-system-promptمتن را برای یک فراخوانی واحد به system prompt اضافه میکند، بدون آنکه چیزی را حذف کند. این در واقع نسخه یکباره (one-off) از سبک خروجی است.- هوک (hook) یک دستور shell است که Claude Code هنگام وقوع یک رویداد، خودش آن را اجرا میکند. این مورد توسط harness اعمال میشود، بنابراین فارغ از اینکه Claude آن را انتخاب کند یا نه، اجرا خواهد شد. آنچه یک هوک Claude Code میتواند و نمیتواند انجام دهد را ببینید.
- زیر-عامل (subagent) با system prompt و مجموعه ابزارهای اختصاصی خود اجرا میشود.
یک آزمون کوتاه بین دو مورد نخست تمایز میگذارد. واقعیتهای مربوط به پروژه را در CLAUDE.md قرار دهید، چون Claude باید آنها را بداند. نحوه بیان را در یک سبک خروجی قرار دهید، چون به شیوه خواندهشدن پاسخ مربوط است. هر کاری که باید در هر بار اجرا، صرفنظر از تصمیم مدل، انجام شود، یک hook است. اینکه هر سطح روی کدام لایه قرار میگیرد، ویژگی برنامهای است که مدل را اجرا میکند، نه خود مدل؛ به همین دلیل، یک style فقط میتواند اثر بگذارد، اما یک hook میتواند اجراشدن آن را الزامآور کند.
سبکهای خروجی فقط برای گفتگوی اصلی اعمال میشوند. یک زیر-عامل سبک شما را به ارث نمیبرد، زیرا گفتگوی جدیدی را با system prompt مختص به خود آغاز میکند. استثنا در این مورد، fork کردن گفتگوی فعلی است، زیرا یک fork دقیقاً system prompt والد را به ارث میبرد. اگر زیر-عامل به شیوهای مینویسد که مورد پسند شما نیست، به جای تغییر سبک خود، فایل آن عامل را ویرایش کنید. یک نشست (session) دوم از Claude Code روی همان سیستم نیز از همین مرز پیروی میکند و فایلهای تنظیمات را هنگام راهاندازی برای خودش میخواند؛ بنابراین وقتی شما کار را به نشست دیگری که در کنار نشست شما در حال اجراست میسپارید، پاسخهای آن با هر سبکی که آن نشست بارگذاری کرده است بازمیگردد، نه سبک شما.
نحوه نوشتن استایل خروجی اختصاصی
یک استایل خروجی سفارشی، فایلی با فرمت Markdown است که شامل frontmatter میشود. آن را در دایرکتوری home خود ذخیره کنید تا در تمام پروژهها در دسترس باشد، یا درون مخزن پروژه قرار دهید تا همراه با کد باقی بماند. دایرکتوری کاربر ~/.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یک نشست (session) را شروع کرده و /config را باز کنید. استایل شما در لیست Output style به همراه توضیحی که نوشتهاید ظاهر میشود. اگر استایل را نمیبینید، یعنی فایل خوانده نمیشود: مسیر را بررسی کنید و مطمئن شوید که بلوک frontmatter با --- اولین چیزی است که در فایل قرار دارد. نام فایل به نام استایل تبدیل میشود، مگر اینکه در frontmatter مقدار name تنظیم شده باشد؛ بنابراین این فایل با نام Terse ops شناخته میشود و نه terse-ops.
آن را انتخاب کنید، یا کلید را روی همان نام دقیق تنظیم کرده و پاکسازی کنید:
{
"outputStyle": "Terse ops"
}یک فیلد تعیین میکند که فایل شما یک اصلاحیه است یا یک جایگزین. مقدار پیشفرض keep-coding-instructions برابر با false است؛ این یعنی یک استایل سفارشی، دستورالعملهای مهندسی نرمافزار داخلی Claude Code را حذف کرده و صرفاً بر اساس متن شما اجرا میشود. آن دستورالعملهای داخلی همان چیزی هستند که به Claude میگویند چگونه دامنه یک تغییر را تعیین کند و چگونه کار خود را اعتبارسنجی نماید. برای یک دستیار نویسندگی یا تحلیلگر داده که این موارد در آن کاربردی ندارد، این فیلد را خالی بگذارید. برای هر چیزی که با کد سروکار دارد، آن را روی true تنظیم کنید، در غیر این صورت تعجب خواهید کرد که چرا یک مهندس دقیق، ناگهان بررسی کار خود را متوقف کرده است. اگر هدف شما تغییر لحن نیست، بلکه تعریف دقیقتری از میزان کاری است که یک وظیفه میطلبد، این موضوع به دستورالعملهای مهندسی مربوط میشود نه فایل استایل: مهارت Ponytail یک نمونه عملی است؛ قانونی واحد که عامل (agent) را به سمت کوچکترین تغییرِ کارآمد سوق میدهد.
description خطی است که انتخابگر /config در کنار نام نمایش میدهد. آن را برای زمانی بنویسید که شش ماه دیگر میخواهید بین دو استایل خود یکی را انتخاب کنید.
چرا سبک مختصر در SSH متفاوت است
روی یک VPS، شما متن خروجی را از طریق لایههایی میخوانید که ترمینال محلی ندارد و هر لایه برای پرگویی، هزینهای به شما تحمیل میکند.
اولین مورد، Scrollback است. در tmux، هر pane تعداد ثابتی خط را نگه میدارد که توسط history-limit تنظیم میشود و مقدار پیشفرض آن 2000 است. یک متن خروجیِ روایی، این بافر را سریعتر پر میکند؛ بنابراین بخشهای ابتدایی نشست شما زودتر حذف میشوند و خروجیای که میخواستید به آن بازگردید، از دست میرود. اگر فضای بیشتری میخواهید، آن را افزایش دهید:
echo 'set -g history-limit 20000' >> ~/.tmux.conf
tmux source-file ~/.tmux.confpaneهایی که پس از آن ایجاد میشوند، هر کدام 20000 خط را نگه میدارند که به قیمت مصرف حافظه بیشتر برای هر pane تمام میشود. paneهایی که از قبل باز هستند، همان محدودیت قدیمی را حفظ میکنند، زیرا اندازه بافر هنگام ایجاد pane ثابت میشود. اگر هنوز در حال ساختن چیدمان نشست خود هستید، اجرای Claude Code داخل tmux روی یک VPS آن را پوشش میدهد.
دومین مورد، تأخیر (Latency) است. پاسخ همزمان با تولید، به ترمینال شما سرازیر میشود. در ارتباطی با زمان رفتوبرگشت (RTT) بالا، مقدمهچینیهای طولانی زمانی است که صرف تماشای متنهای بیاهمیت میکنید تا پاسخ اصلی ظاهر شود.
سومین مورد، توکنهای خروجی است. هر خط روایی به عنوان خروجی محاسبه و هزینه میشود. سبکهای Explanatory و Learning ذاتاً طولانیتر هستند. سبک Concise ذاتاً کوتاهتر است، زیرا به Claude دستور میدهد که پاسخها را بهطور پیشفرض کوتاه نگه دارد.
به درصد اعلامی هیچکس، از جمله این صفحه، اعتماد نکنید. میزان تفاوت به پرامپتها، مدل و کاری که درخواست میکنید بستگی دارد؛ بنابراین قبل و بعد از تغییر را خودتان اندازهگیری کنید. یک کار واقعی مشابه را در دو نشست تازه اجرا کنید، یکی با تنظیم Default و دیگری با Concise، سپس آنها را مقایسه کنید. یک statusline سادهترین ابزار اندازهگیری است، زیرا Claude Code یک شیء JSON را از طریق stdin به اسکریپت شما میفرستد که شامل نام سبک و تعداد توکنهاست:
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"
}
}نوار پایین نشست اکنون سبک فعال را در کنار توکنهای تولیدشده نشان میدهد که دقیقاً همان مقایسه قبل و بعد مورد نیاز شماست. این اسکریپت به jq، یعنی مفسر JSON خط فرمان نیاز دارد، پس ابتدا آن را با sudo apt install -y jq نصب کنید. اگر نوار خالی ماند، اسکریپت را دستی اجرا کنید و مقداری JSON به آن pipe کنید، زیرا statuslineای که با کد غیرصفر خارج شود، چیزی چاپ نمیکند و گزارشی نمیدهد. یک statusline سفارشی برای Claude Code سایر فیلدهای موجود در آن شیء را فهرست کرده است. برای بخش هزینهها به جای بخش نشست، توکنهای Claude Code واقعاً کجا مصرف میشوند و ابزارهایی که هزینههای Claude Code را ردیابی میکنند را بخوانید.
نحوه بررسی اینکه کدام سبک خروجی در حال حاضر بارگذاری شده است
بهجای حدس زدن، از این بررسیها استفاده کنید.
/statusمنابع تنظیمات فعال برای این نشست را فهرست میکند، از جمله اینکه آیا تنظیمات مدیریتشده توسط سازمان اعمال شدهاند یا خیر./contextپرامپت سیستمی بارگذاریشده را بهعنوان یک دستهبندی در تفکیک پنجره کانتکست نمایش میدهد.claude doctor، که از شل و بدون شروع نشست اجرا میشود، عیبیابی نصب و تنظیمات را چاپ کرده و فایلهای تنظیمات نامعتبر را گزارش میکند.
هنگامی که یک سبک اعمال نمیشود، علت تقریباً همیشه یکی از دو مورد زیر است. اول اینکه شما آن را در میانه نشست تغییر دادهاید، بنابراین /clear را اجرا کنید. دوم اولویتبندی است: .claude/settings.local.json بر .claude/settings.json ارجحیت دارد و هر دو بر ~/.claude/settings.json مقدم هستند. از آنجا که انتخابگر /config در فایل محلی مینویسد، سبکی که تیم شما در .claude/settings.json متعهد (commit) کرده است، در هر ماشینی که شخصی یکبار از منو استفاده کرده باشد، بهطور بیسروصدا نادیده گرفته میشود. /status به شما میگوید که کدام منبع پیروز شده است.
خطای نحوی JSON علائم مشابهی دارد اما راهحل آن متفاوت است. claude doctor فایلی را که قادر به تجزیه آن نبوده نام میبرد؛ پیش از آنکه به دنبال موارد پیچیدهتر بروید، اجرای این دستور ارزشش را دارد.
FAQ
چرا دستور /output-style دیگر کار نمیکند؟
این دستور در نسخه 2.1.73 منسوخ و در نسخه 2.1.91 حذف شد؛ بنابراین در بیلدهای پس از اواسط سال 2026، این دستور دیگر وجود ندارد. برای مشاهده وضعیت فعلی، claude --version را اجرا کنید. سبک مورد نظر خود را از بخش Output style در /config انتخاب کنید یا کلید outputStyle را در فایل تنظیمات قرار دهید. این کلید همچنان معتبر است، بنابراین تنظیم مستقیم آن در فایل، روشی است که پیشنهاد میشود در یادداشتهای خود ثبت کنید.
سبک خروجی را تغییر دادم اما تغییری ایجاد نشد. چرا؟
سبک خروجی بخشی از system prompt است و Claude Code این prompt را تنها یکبار در ابتدای شروع نشست (session) میسازد. تغییری که در میانه نشست اعمال شود ذخیره میشود اما به اجرا در نمیآید، زیرا نشست در حال اجرا همچنان از همان prompt اولیه استفاده میکند. دستور /clear را اجرا کنید یا یک نشست جدید آغاز نمایید. اگر همچنان اعمال نشد، /status را اجرا کنید تا ببینید کدام منبع تنظیمات اولویت داشته است؛ چرا که .claude/settings.local.json بر .claude/settings.json و هر دو بر ~/.claude/settings.json تقدم دارند.
آیا سبک خروجی Concise باعث صرفهجویی در هزینه میشود؟
این سبک تعداد توکنهای خروجی را در جهت دلخواه شما کاهش میدهد، زیرا به Claude دستور میدهد بهصورت پیشفرض پاسخها را کوتاه نگه دارد. میزان صرفهجویی به پرامپتها و مدل شما بستگی دارد، بنابراین هر درصد اعلامشدهای را صرفاً به عنوان نتیجه کار دیگران در نظر بگیرید. برای اندازهگیری دقیق، /context را در یک نشست تازه برای هر سبک اجرا کنید و سپس یک تسک مشابه را در هر دو حالت انجام داده و تعداد توکنهای خروجی را مقایسه کنید. سبک Concise هرگز گزارشهای خطا یا هشدارهای امنیتی را کوتاه نمیکند، بنابراین بخشهایی که بیشترین نیاز را به خواندن آنها دارید، کامل باقی میمانند.
آیا تغییر سبک خروجی بر نحوه نوشتن subagentها تأثیر میگذارد؟
خیر. سبکهای خروجی فقط برای گفتگوی اصلی اعمال میشوند، زیرا هر subagent گفتگوی مستقل خود را با system prompt و مجموعه ابزارهای اختصاصی خود آغاز میکند. استثنا در این مورد، ایجاد یک fork از گفتگوی فعلی است، زیرا fork دقیقاً system prompt والد خود را به ارث میبرد. برای تغییر نحوه پاسخدهی یک subagent، باید فایل اختصاصی همان agent را ویرایش کنید.
آیا سبک خروجی میتواند به Claude اجازه دهد بدون پرسش، دستورات را اجرا کند؟
خیر. سبک خروجی متنی در system prompt است و فقط میتواند بر آنچه Claude تلاش میکند انجام دهد تأثیر بگذارد. سبک Proactive باعث میشود Claude در تصمیمات روتین بهجای توقف، فرض را بر انجام کار بگذارد، اما همچنان نمیتواند اجرای یک دستور را تأیید کند. حالت مجوز (permission mode) شما تعیین میکند چه چیزی بدون پرسش اجرا شود؛ پیش از رها کردن یک نشست روی سرور، حتماً این تنظیم را بررسی کنید.