شريط الحالة في Claude Code: أقِمه بأمر /statusline (2026)
حوّل أسفل طرفيتك إلى لوحة قياس حيّة — النموذج، ومؤشر نافذة السياق، وفرع git، والمجلد، والتكلفة كلها في نظرة واحدة. اثنتا عشرة خطوة مصوّرة من أمر /statusline المدمج إلى شريط ملوّن مصقول، مع حلول ما لا يظهر فيه الشريط.
الخلاصة السريعة
- /statusline مدمج في Claude Code. شغّله مرة، وصِف الشريط الذي تريده في جملة واحدة، فيكتب وكيل statusline-setup السكربت ويضبط كتلة statusLine داخل ~/.claude/settings.json عنك.
- على Windows يعرض الوكيل ثلاثة مسارات: تحويل ملف PowerShell profile، أو الإشارة إلى إعداد WSL أو Git Bash، أو إنشاء نسخة افتراضية جديدة تعرض المستخدم والمجلد والنموذج واستخدام السياق.
- يقرأ السكربت مستند JSON واحدًا من stdin — model.display_name وworkspace.current_dir وcontext_window.used_percentage وcost.total_cost_usd وغيرها — وكل ما يطبعه echo يصير شريطك. ألوان ANSI وصفوف متعددة مسموح بها.
- كل شيء يعمل محليًا ولا يستهلك أي توكنات. تتجدد التحديثات مع أحداث الجلسة (أو كل N ثانية عبر refreshInterval)، وعندما تعفي عنه يزيله /statusline clear دفعة واحدة.
How to Set Up a Custom Status Line in Claude Code CLI to Track API Costs and Context Usage (2026)
القناة:ProgrammingKnowledge23:32
Claude Code最該裝的不是Skill,是這個腳本|彩色進度條、費用、git 分支一眼看完
القناة:YAHA學堂8:44
Your Claude Code Terminal Should Look Like This (Status Line Setup)
القناة:Leon van Zyl9:02
How to Add a Custom Status Line in Claude Code on Windows 11 (Project-Level Setup)
القناة:Devtamin7:27
Status line — Claude Code documentation
الوثائق:code.claude.com
سُجلت الخطوات 1–4 على Windows PowerShell والخطوات 5–12 على macOS؛ واللقطات الثابتة مأخوذة من تسجيلات شاشة نظيفة فقط — ولم تُستخدم أي إطارات فيها كاميرا المُنشئ أو طبقات مطبوعة.
نصائح الإعداد — ذكر نظام التشغيل، وإبقاء السكربت عامًا في ملف مستقل، والحاجة إلى jq، وحيلة ملف التصحيح — من الفيديوهين الإضافيين المشار إليهما أعلاه. أسماء الحقول وسلوك التحديث في الأقسام المتعمقة تتبع وثائق شريط الحالة الرسمية.
جولة /statusline — 12 خطوة مصوّرة
شغّل /statusline ودع Claude يوصّل كل شيء
- 1
شغّل Claude Code في طرفيتك
أطلق claude في PowerShell أو الطرفية أو أي شل. الجلسة الجديدة لا تُظهر سوى صندوق الترحيب وسطر أوامر فارغ — الشريط أسفل حقل الإدخال، حيث سيسكن شريط الحالة، لا يوجد حتى تُضاف كتلة statusLine إلى ~/.claude/settings.json.

جلسة Claude Code v2.1.83 جديدة في Windows PowerShell — صندوق ترحيب، وسطر إدخال فارغ، ولا شريط حالة بعد.شاهد عند 0:22 - 2
اكتب أمر /statusline
يصفه قائمة الأوامر المائلة ببساطة: إعداد واجهة شريط الحالة في Claude Code. اضغط Enter. هذا الأمر المدمج يفهم اللغة الطبيعية، فلن تحتاج إلى كتابة سكربت يدويًا — ومع ذلك لك حرية تعديل ما يولّده لاحقًا كما تشاء.

الإكمال التلقائي يعرّف /statusline بأنه الأمر الذي يضبط واجهة شريط الحالة في Claude Code.شاهد عند 0:32 - 3
أجب عن أسئلة وكيل الإعداد
يتولى الأمر وكيل statusline-setup المخصص. على Windows يبلّغ بعدم العثور على إعداد شل قياسي ويعرض ثلاثة مسارات: أن تلصق ملف PS1 ليحوّله، أو تشير إلى إعداد WSL أو Git Bash، أو تبدأ بنسخة افتراضية تعرض المستخدم والمجلد والنموذج واستخدام السياق. المسارات الثلاثة تنتهي جميعها عند كتلة settings.json نفسها.

خيارات الوكيل الثلاثة على Windows: تحويل PS1، أو تخصيص إعداد، أو البدء من افتراضي محكم.شاهد عند 1:20 - 4
راجع الإعداد والسكربت الذي كتبهما
عند انتهائه يطبع الوكيل معاينة للشريط — اسم المستخدم والمجلد وفرع git والنموذج ونسبة السياق — ويحدد بدقة مكان كل شيء: الإعدادات في ~/.claude/settings.json والسكربت في ~/.claude/statusline-command.sh. على macOS وLinux يمكن للخطوة نفسها أن تحوّل سطر التوجيه الحالي لديك في .zshrc أو .bashrc بدل البدء من الصفر.

تأكيد الإعداد بمعاينة hardik | ~/Dev/project | main | Claude Opus 4.6 | ctx:42% مع مساري الملفين.شاهد عند 3:06
صِف الشريط الذي تريده بلغة بسيطة
- 5
اطلب الشريط الذي تريده بدقة
أعد تشغيل /statusline متى شئت وصِف الشريط في جملة واحدة: اعرض اسم النموذج ونسبة السياق مع شريط تقدم. الطلبات بلغات أخرى تعمل أيضًا — فالأمر في جوهره مجرد prompt للوكيل. كل طلب جديد يعيد كتابة السكربت نفسه ولا يكدّس نسخًا مكررة.

طلب واحد بلغة بسيطة — اسم النموذج وشريط تقدم لنسبة السياق — هو الواجهة بأكملها.شاهد عند 1:07 - 6
شاهد أداة statusline-setup وهي تعمل
يستدعي Claude Code أداة statusline-setup المدمجة فتقرأ ~/.claude/settings.json الحالي وسكربت شريط الحالة ثم تعيد كتابتهما. تلخّص بطاقة Claude المنبثقة الميزة: إعداد شريط حالة مخصص لمراقبة استخدام نافذة السياق والتكاليف وحالة git.

أداة statusline-setup أثناء التشغيل: تقرأ الإعدادات والسكربت، ويظهر وصف الميزة عند التحويم.شاهد عند 1:12 - 7
تعرّف على شريطك الجديد
عند الانتهاء يلخّص الوكيل التصميم — اسم النموذج بالسماوي الغامق، وشريط سياق من عشرين خانة يبقى أخضر حتى 49% ويصفر عند 50% ويحمرّ عند 80% — والشريط يعمل فعلًا أسفل طرفيتك. لا حاجة لإعادة تشغيل؛ اطلب التعديلات في الجلسة نفسها.

يلخّص الوكيل فوق الشريط الحي لـ Opus 4.6 (1M context) الذي يعرض سياق 2%.شاهد عند 1:27
اقرأ السكربت الذي ولّده
- 8
مستند JSON واحد يصل عبر stdin
افتح السكربت المولَّد — ~/.claude/statusline.sh على macOS وLinux، أو نسخة .ps1 / statusline-command.sh على Windows. مع كل تحديث يمرّر Claude Code لقطة JSON من الجلسة إلى المدخل القياسي للسكربت. يحلّل الباش المولَّد الحقول عبر jq: .model.display_name و.workspace.current_dir و.cost.total_cost_usd و.cost.total_duration_ms و.context_window.used_percentage.

قسم التحليل: خمس قراءات jq من stdin، ثم اختيار BAR_COLOR عند عتبتي 90% و70% من السياق.شاهد عند 5:46 - 9
ما تطبعه echo يصبح الشريط
ذيل السكربت عرض مجرد: تكلفة منسّقة بـ printf، ومللي ثانية تتحول إلى دقائق وثوانٍ، وecho واحد لكل صف من صفوف الشريط — النموذج مع المجلد وفرع git في الصف الأول، والشريط والنسبة والتكلفة والمؤقت في الثاني. رموز ألوان ANSI مرحّب بها، وكل echo إضافي يضيف صفًا ببساطة.

سطرا echo يصنعان صفّي الشريط: النموذج مع المجلد والفرع، ثم الشريط والنسبة والتكلفة والمؤقت.شاهد عند 6:13 - 10
أضف وعي git بالطريقة نفسها
بيانات git على بُعد استدعاء عملية فرعية واحدة: git rev-parse --git-dir يكشف المستودع، وgit branch --show-current يجلب اسم الفرع، وgit diff --cached --numstat و--numstat يحصيان الملفات المرحّلة والمعدلة. المثال المولَّد يلوّن العدد المرحّل بالأخضر والمعدل بالأصفر — حارس رخيص إن كنت تدير عدة جلسات Claude Code على فروع متعددة.

GIT_STATUS مجمّع من عددي المرحّل والمعدل، ملون بالأخضر والأصفر برموز ANSI.شاهد عند 5:01
الكتلة بيدك: مسح وإعادة كتابة وصفوف متعددة
- 11
كل شيء معلّق بكتلة واحدة في settings.json
ألقِ نظرة في ~/.claude/settings.json وستجد الميزة كلها كائن statusLine واحدًا: type بقيمة "command" مع الأمر المطلوب تشغيله — bash ~/.claude/statusline-command.sh في هذا الإعداد. نفّذ /statusline clear فيحذف الوكيل الكتلة؛ صِف شريطًا جديدًا فيعيد كتابتها. ويعمل أيضًا ملف .claude/settings.json على مستوى المشروع إن أردت شريطًا لكل مستودع.

فرق /statusline clear: تترك كتلة statusLine ملف settings.json، جاهزة لإعادة الكتابة.شاهد عند 1:41 - 12
خطوة أبعد: صفوف متعددة للتكلفة والمدة وروابط المستودع
الصفوف تتراكم مجانًا، لذا يطبع مثال الوثائق الرسمي متعدد الأسطر رابط مستودع قابلًا للنقر عبر تسلسلات الهروب OSC 8، ثم صفًا ثانيًا يحمل شريط السياق وتكلفة الجلسة منسّقة بـ printf '$%.2f' والدقائق والثواني المنقضية. العتبات، ونسب حدود المعدل، ووضع vim — اطلب أي تركيبة وواصل التحسين حتى تناسبك اللوحة.

مثال مشروح: رابط OSC 8 للمستودع في السطر الأول؛ الشريط والتكلفة والمدة في الثاني.شاهد عند 7:31
JSON على stdin الذي يتلقاه سكربت شريط الحالة
عند استدعاء السكربت يضع Claude Code لقطة JSON من الجلسة في المدخل القياسي. هذه الحقول الجديرة بالمعرفة وفق الوثائق الرسمية — اذكر أيًا منها في جملة /statusline وسيتكفل الوكيل بالباقي:
- 1أساسيات الجلسة — session_id وtranscript_path وcwd وversion، إضافة إلى session_name وprompt_id بعد إرسال أول prompt.
- 2model.id وmodel.display_name — نموذج Claude النشط الذي يبدأ به الشريط غالبًا.
- 3workspace.current_dir وworkspace.project_dir وworkspace.added_dirs، إضافة إلى workspace.git_worktree وrepo.owner / repo.name عندما ينتمي المجلد إلى مستودع مُستضاف.
- 4context_window.used_percentage وremaining_percentage — يحسب used توكنات الإدخال وإنشاء الكاش وقراءته لكنه لا يشمل التوكنات الناتجة.
- 5يتفصّل context_window.current_usage إلى input_tokens وoutput_tokens وcache_creation_input_tokens وcache_read_input_tokens؛ ويكون null قبل أول استدعاء API وبعد /compact مباشرة.
- 6cost.total_cost_usd وcost.total_duration_ms وcost.total_api_duration_ms وcost.total_lines_added وcost.total_lines_removed — لشرائط نمط الإنفاق والإيقاع.
- 7على خطط Pro/Max تجد rate_limits.five_hour وrate_limits.seven_day مع used_percentage وresets_at (وتظهر ثنائية spend_limit لإعدادات البوابة) — قد يغيب كل نافذة على حدة، فاحرص على التحقق.
- 8وإضافات — exceeds_200k_tokens وfast_mode وeffort.level وthinking.enabled وoutput_style.name وvim.mode وagent.name وpr.number / pr.url / pr.review_state وعائلة worktree.*.
تتبع أسماء الحقول وثائق شريط الحالة الرسمية، وتتضمن الوثائق نفسها سكربتات جاهزة لـ Bash وPython وNode.js، ونسخة Windows PowerShell، ووصفة كاش git للأجهزة البطيئة.
استكشاف الأخطاء: شريط غائب أو خاطئ أو متقادم
معظم إخفاقات شريط الحالة ترجع إلى واحدة من خمس أسباب، وكلها تُصلَح من الجلسة نفسها دون إعادة تثبيت.
- 1لا يظهر شيء إطلاقًا — افحص أولًا سلامة JSON في ~/.claude/settings.json؛ في أحد التسجيلات بقيت جلسة Windows صامتة حتى صُحّح محرف زائد في مسار الأمر وأُعيد تشغيل الجلسة. يختفي الشريط أيضًا ما دامت نوافذ الأذونات مفتوحة، ولن تعمل السكربتات قبل الوثوق بمساحة العمل.
- 2شريط فارغ بلا خطأ — فقد خرج السكربت برمز غير صفري أو لم يطبع شيئًا. شغّله يدويًا، مثل echo '{"model":{"display_name":"Opus"}}' | bash ~/.claude/statusline.sh، واقرأ الخرج؛ كما يسجل claude --debug مخرجات stderr للسكربت.
- 3يعمل في مشروع واحد فقط — فقد سقطت الكتلة في ملف .claude/settings.json على مستوى المشروع بدل مجلدك الرئيسي. انقلها إلى ~/.claude/settings.json لتحصل على شريط في كل مشروع.
- 4الأرقام تبدو خاطئة — فالسكربت على الأرجح يقرأ الخاصية الخطأ. اطلب من Claude تفريغ JSON الخام القادم عبر stdin في ملف تصحيح، واقرأ ذلك الملف وصحّح الحقل؛ هكذا تمامًا أصلحت جلسة macOS المسجلة نسبتها بنفسها.
- 5السكربت موجود لكنه لا يرسم شيئًا على macOS أو Linux — jq غير مثبت. ثبّته (brew install jq أو sudo apt install jq أو ما يعادله على Windows)، ثم اطلب من Claude تحديث شريط الحالة ليُعاد توليد السكربت وفقًا له.
معدل تجدد الشريط (وما يكلّفه)
يعمل السكربت مرة عند بدء الجلسة، ثم يعيد العمل كلما حدث شيء: رسالة مساعد جديدة، أو اكتمال /compact، أو تغيير وضع الأذونات أو وضع vim، أو تعديل الأمر نفسه، أو إعادة تعيين نافذة حدود المعدل، أو انتهاء صلاحية كاش prompt الدافئ. تخضع التحديثات لـ debounce بمقدار 300 مللي ثانية، ويُلغى التشغيل الجاري إذا وصل تشغيل أحدث.
لأن التحديثات مدفوعة بالأحداث، قد يسكت الشريط أثناء الخمول — كأثناء انتظار تشغيل طويل لوكيل فرعي مثلاً. أضف refreshInterval إلى كتلة statusLine لإعادة تشغيل السكربت كل N ثانية للبيانات المرتبطة بالزمن. لا شيء من هذا يلامس الـ API: يعمل السكربت محليًا ولا يستهلك أي توكنات، وكل سطر echo إضافي يُرسم صفًا آخر.
وهناك مقبضان إضافيان للهواة: hideVimModeIndicator يخفي نص -- INSERT -- المدمج إذا كان سكربتك يرسم وضع vim بنفسه، وإعداد subagentStatusLine المستقل يمنح الوكلاء الفرعيين صفوفها المخصصة في لوحة الوكلاء.
