آموزش تنظیم و شخصیسازی Output Style در Claude Code
با نحوه تغییر Output Style در Claude Code و تأثیر آن بر system prompt آشنا شوید. یاد بگیرید چرا تغییر سبک در میانه نشست اعمال نمیشود و چگونه تنظیمات را در فایل پیکربندی مدیریت کنید.
سبک خروجی در Claude Code چیست
سبک خروجی (output style) در Claude Code مجموعهای از دستورالعملهاست که Claude Code به system prompt خود میافزاید. این سبک نحوه پاسخدهی Claude به شما را تغییر میدهد: نقشی که بر عهده میگیرد و ساختار متنی که چاپ میکند. این قابلیت هیچ دانشی درباره codebase شما به Claude نمیآموزد و نمیتواند مجوزی برای اجرای هیچ دستوری به Claude بدهد.
Claude Code بهصورت پیشفرض دارای 5 سبک داخلی است. انتخاب شما در یک کلید تنظیمات به نام outputStyle ذخیره میشود و این کلید تنها یکبار در زمان شروع نشست (session) خوانده میشود. همین نکته ساده، دلیل اصلی سردرگمیها در مورد این ویژگی است؛ زیرا سبکی که در میانه یک نشست تغییر میدهید، ذخیره میشود اما تا زمانی که نشست را پاک نکنید، نادیده گرفته میشود.
روی یک VPS، این موضوع فراتر از یک ترجیح ظاهری است. رونوشت (transcript) همان چیزی است که شما از طریق یک اتصال SSH (secure shell) و معمولاً داخل یک پنجره tmux میخوانید؛ بنابراین هر خطی که Claude روایت میکند، خطی است که شما برای آن منتظر میمانید و در بافر اسکرول با اندازه ثابت شما قرار میگیرد.
محل قرارگیری تنظیمات outputStyle
یک سبک را از منوی /config، در بخش Output style انتخاب کنید. Claude Code انتخاب شما را در .claude/settings.local.json در پروژهای که روی آن کار میکنید، مینویسد.
دستور مستقل /output-style دیگر وجود ندارد. این دستور در نسخه 2.1.73 منسوخ و در نسخه 2.1.91 حذف شد، بنابراین در بیلد فعلی هیچ عملکردی ندارد. پیش از دنبال کردن هر راهنمای قدیمی، نسخهای که اجرا میکنید را بررسی کنید. نسخههای موجود در این صفحه در اوت 2026 بررسی شدهاند.
claude --versionشما همچنین میتوانید این کلید را بهصورت دستی تنظیم کنید. چهار فایل تنظیمات میتوانند آن را در خود نگه دارند و تنظیمات محدودتر بر تنظیمات گستردهتر اولویت دارند.
~/.claude/settings.jsonفایل کاربری شماست. این فایل در تمام پروژههای آن ماشین اعمال میشود..claude/settings.jsonفایل پروژه است. این فایل در git کامیت میشود، بنابراین برای هر کسی که مخزن را clone کند، اعمال میگردد..claude/settings.local.jsonفایل محلی پروژه است. این فایل کامیت نمیشود و بر هر دو مورد بالا اولویت دارد. این همان فایلی است که منوی/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 (توضیحی): «بینشهایی» آموزشی را بین مراحل یک وظیفه اضافه میکند که به چرایی انتخاب یک پیادهسازی و الگوهایی که کدبیس شما از قبل استفاده میکند، میپردازد. رونوشت بهطور هدفمند طولانیتر میشود.
- 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 اضافه میکند، بدون آنکه چیزی را حذف کند. این در واقع نسخهٔ یکبارمصرفِ سبک خروجی است. - یک هوک (hook) دستوری در shell است که Claude Code هنگام وقوع یک رویداد، خودش آن را اجرا میکند. این دستور توسط harness اعمال میشود، بنابراین فارغ از اینکه Claude بخواهد آن را اجرا کند یا نه، اجرا خواهد شد. به آنچه یک هوک Claude Code میتواند و نمیتواند انجام دهد مراجعه کنید.
- یک زیر-عامل (subagent) با system prompt و مجموعه ابزارهای اختصاصی خود اجرا میشود.
یک آزمون کوتاه برای انتخاب بین دو مورد اول وجود دارد. حقایق مربوط به پروژهٔ شما باید در CLAUDE.md قرار بگیرند، زیرا Claude باید از آنها آگاه باشد. نحوهٔ بیان و لحن در سبک خروجی قرار میگیرد، زیرا به چگونگی خوانده شدن پاسخ مربوط است. هر چیزی که باید در هر بار اجرا، صرفنظر از تصمیم مدل، اتفاق بیفتد، یک هوک است.
سبکهای خروجی فقط برای گفتگوی اصلی اعمال میشوند. یک زیر-عامل سبک شما را به ارث نمیبرد، زیرا گفتگوی جدیدی را با system prompt مخصوص به خود آغاز میکند. استثنا در این مورد، ایجاد یک fork از گفتگوی فعلی است، زیرا fork دقیقاً system prompt والد را به ارث میبرد. اگر یک زیر-عامل به شیوهای که نمیپسندید مینویسد، به جای تغییر سبک خود، فایل مربوط به آن عامل را ویرایش کنید.
نحوه نوشتن استایل خروجی اختصاصی
یک استایل خروجی سفارشی، فایلی با فرمت 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 تنظیم کنید، در غیر این صورت تعجب خواهید کرد که چرا یک مهندس دقیق، ناگهان بررسی کار خود را متوقف کرده است.
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پرامپت سیستمی بارگذاریشده را بهعنوان یک دستهبندی در تفکیک پنجره context نمایش میدهد. - دستور
claude doctor، اگر از shell و بدون شروع یک نشست اجرا شود، تشخیصهای نصب و تنظیمات را چاپ کرده و فایلهای تنظیمات نامعتبر را گزارش میکند.
هنگامی که یک سبک اعمال نمیشود، علت تقریباً همیشه یکی از دو مورد زیر است. اول اینکه شما آن را در میانه نشست تغییر دادهاید، بنابراین /clear را اجرا کنید. دوم اولویتبندی است: .claude/settings.local.json بر .claude/settings.json ارجحیت دارد و هر دو بر ~/.claude/settings.json مقدم هستند. از آنجا که انتخابگر /config در فایل محلی مینویسد، سبکی که تیم شما در .claude/settings.json ثبت (commit) کرده است، در هر ماشینی که شخصی یکبار از منو استفاده کرده باشد، بیسروصدا نادیده گرفته میشود. دستور /status به شما میگوید کدام منبع برنده شده است.
یک خطای نحوی JSON علائم مشابهی دارد اما راهحل آن متفاوت است. دستور claude doctor فایلی را که قادر به تجزیه (parse) آن نبوده نام میبرد، که ارزش دارد پیش از جستجو برای هر مورد پیچیدهتری، آن را اجرا کنید.
FAQ
چرا دستور /output-style دیگر کار نمیکند؟
این دستور در نسخه 2.1.73 منسوخ و در نسخه 2.1.91 بهطور کامل حذف شد؛ بنابراین در بیلدهای اواسط سال 2026، این دستور دیگر وجود ندارد. برای مشاهده وضعیت فعلی، claude --version را اجرا کنید. سبک مورد نظر خود را از بخش Output style در /config انتخاب کنید یا کلید outputStyle را در فایل تنظیمات قرار دهید. این کلید همچنان معتبر است، بنابراین تنظیم مستقیم آن در فایل، روشی است که باید در یادداشتهای خود ثبت کنید.
سبک خروجی را تغییر دادم اما تغییری ایجاد نشد. چرا؟
سبک خروجی بخشی از system prompt است و Claude Code این پرامپت را تنها یکبار در ابتدای شروع نشست (session) میسازد. تغییری که در میانه نشست اعمال شود ذخیره میگردد اما اجرا نمیشود، زیرا نشست در حال اجرا همچنان از پرامپتی استفاده میکند که در زمان راهاندازی ساخته شده است. /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، فایل اختصاصی همان عامل را ویرایش کنید.
آیا سبک خروجی میتواند به Claude اجازه دهد بدون پرسش، دستورات را اجرا کند؟
خیر. سبک خروجی متنی در system prompt است و تنها میتواند بر آنچه Claude تلاش میکند انجام دهد تأثیر بگذارد. سبک Proactive باعث میشود Claude بهجای توقف در تصمیمات روتین، فرض را بر انجام کار بگذارد، اما همچنان نمیتواند دستوری را تأیید کند. حالت مجوز (permission mode) شما تعیین میکند چه چیزی بدون پرسش اجرا شود؛ پیش از رها کردن یک نشست در حال اجرا روی سرور، حتماً این تنظیم را بررسی کنید.