| --- |
| title: TUI |
| description: استخدام واجهة المستخدم TUI في OpenCode. |
| --- |
| |
| import { Tabs, TabItem } from "@astrojs/starlight/components" |
|
|
| يوفّر OpenCode واجهة terminal تفاعلية (TUI) للعمل على مشاريعك باستخدام LLM. |
|
|
| يؤدي تشغيل OpenCode إلى بدء واجهة TUI للدليل الحالي. |
|
|
| ```bash |
| opencode |
| ``` |
|
|
| أو يمكنك تشغيلها لدليل عمل محدد. |
|
|
| ```bash |
| opencode /path/to/project |
| ``` |
|
|
| بعد الدخول إلى واجهة TUI، يمكنك إرسال رسالة كطلب. |
|
|
| ```text |
| Give me a quick summary of the codebase. |
| ``` |
|
|
| --- |
| |
| |
|
|
| يمكنك الإشارة إلى الملفات في رسائلك باستخدام `@`. يُجري ذلك بحثا ضبابيا عن الملفات ضمن دليل العمل الحالي. |
|
|
| :::tip |
| يمكنك أيضا استخدام `@` للإشارة إلى الملفات في رسائلك. |
| ::: |
|
|
| ```text "@packages/functions/src/api/index.ts" |
| How is auth handled in @packages/functions/src/api/index.ts? |
| ``` |
|
|
| تُضاف محتويات الملف إلى المحادثة تلقائيا. |
|
|
| --- |
| |
| |
|
|
| ابدأ الرسالة بـ `!` لتشغيل أمر في shell. |
|
|
| ```bash frame="none" |
| !ls -la |
| ``` |
|
|
| يُضاف خرج الأمر إلى المحادثة كنتيجة أداة. |
|
|
| --- |
| |
| |
|
|
| عند استخدام واجهة OpenCode في terminal، يمكنك كتابة `/` متبوعة باسم أمر لتنفيذ الإجراءات بسرعة. مثلا: |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| تملك معظم الأوامر أيضا اختصارا باستخدام `ctrl+x` كمفتاح قائد، حيث إن `ctrl+x` هو المفتاح القائد الافتراضي. [اعرف المزيد](/docs/keybinds). |
|
|
| فيما يلي جميع أوامر الشرطة المائلة المتاحة: |
|
|
| --- |
| |
| |
|
|
| أضف موفّرا إلى OpenCode. يتيح لك اختيار أحد الموفّرين المتاحين وإضافة مفاتيح API الخاصة بهم. |
|
|
| ```bash frame="none" |
| /connect |
| ``` |
|
|
| --- |
| |
| |
|
|
| قم بضغط الجلسة الحالية. _الاسم المستعار_: `/summarize` |
|
|
| ```bash frame="none" |
| /compact |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x c` |
|
|
| --- |
| |
| |
|
|
| بدّل عرض تفاصيل تنفيذ الأدوات. |
|
|
| ```bash frame="none" |
| /details |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x d` |
|
|
| --- |
| |
| |
|
|
| افتح محررا خارجيا لكتابة الرسائل. يستخدم المحرر المحدد في متغير البيئة `EDITOR`. [اعرف المزيد](#editor-setup). |
|
|
| ```bash frame="none" |
| /editor |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x e` |
|
|
| --- |
| |
| |
|
|
| اخرج من OpenCode. _الأسماء المستعارة_: `/quit`, `/q` |
|
|
| ```bash frame="none" |
| /exit |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x q` |
|
|
| --- |
| |
| |
|
|
| صدّر المحادثة الحالية إلى Markdown وافتحها في المحرر الافتراضي لديك. يستخدم المحرر المحدد في متغير البيئة `EDITOR`. [اعرف المزيد](#editor-setup). |
|
|
| ```bash frame="none" |
| /export |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x x` |
|
|
| --- |
| |
| |
|
|
| اعرض مربع حوار المساعدة. |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x h` |
|
|
| --- |
| |
| |
|
|
| أنشئ ملف `AGENTS.md` أو حدّثه. [اعرف المزيد](/docs/rules). |
|
|
| ```bash frame="none" |
| /init |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x i` |
|
|
| --- |
| |
| |
|
|
| اعرض النماذج المتاحة. |
|
|
| ```bash frame="none" |
| /models |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x m` |
|
|
| --- |
| |
| |
|
|
| ابدأ جلسة جديدة. _الاسم المستعار_: `/clear` |
|
|
| ```bash frame="none" |
| /new |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x n` |
|
|
| --- |
| |
| |
|
|
| أعِد تنفيذ رسالة تم التراجع عنها سابقا. متاح فقط بعد استخدام `/undo`. |
|
|
| :::tip |
| ستتم أيضا استعادة أي تغييرات على الملفات. |
| ::: |
|
|
| داخليا، يستخدم هذا Git لإدارة تغييرات الملفات. لذلك يجب أن يكون مشروعك **مستودع Git**. |
|
|
| ```bash frame="none" |
| /redo |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x r` |
|
|
| --- |
| |
| |
|
|
| اعرض الجلسات وبدّل بينها. _الأسماء المستعارة_: `/resume`, `/continue` |
|
|
| ```bash frame="none" |
| /sessions |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x l` |
|
|
| --- |
| |
| |
|
|
| شارك الجلسة الحالية. [اعرف المزيد](/docs/share). |
|
|
| ```bash frame="none" |
| /share |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x s` |
|
|
| --- |
| |
| |
|
|
| اعرض السمات المتاحة. |
|
|
| ```bash frame="none" |
| /theme |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x t` |
|
|
| --- |
| |
| |
|
|
| بدّل إظهار كتل التفكير/الاستدلال في المحادثة. عند تفعيله، يمكنك رؤية عملية استدلال النموذج للنماذج التي تدعم التفكير الموسّع. |
|
|
| :::note |
| يتحكم هذا الأمر فقط فيما إذا كانت كتل التفكير **تُعرض**؛ ولا يفعّل أو يعطّل قدرات الاستدلال في النموذج. لتبديل قدرات الاستدلال فعليا، استخدم `ctrl+t` للتنقّل بين إصدارات النموذج. |
| ::: |
|
|
| ```bash frame="none" |
| /thinking |
| ``` |
|
|
| --- |
| |
| |
|
|
| تراجع عن آخر رسالة في المحادثة. يزيل أحدث رسالة للمستخدم، وكل الردود اللاحقة، وأي تغييرات على الملفات. |
|
|
| :::tip |
| سيتم أيضا التراجع عن أي تغييرات على الملفات. |
| ::: |
|
|
| داخليا، يستخدم هذا Git لإدارة تغييرات الملفات. لذلك يجب أن يكون مشروعك **مستودع Git**. |
|
|
| ```bash frame="none" |
| /undo |
| ``` |
|
|
| **اختصار لوحة المفاتيح:** `ctrl+x u` |
|
|
| --- |
| |
| |
|
|
| ألغِ مشاركة الجلسة الحالية. [اعرف المزيد](/docs/share#un-sharing). |
|
|
| ```bash frame="none" |
| /unshare |
| ``` |
|
|
| --- |
| |
| |
|
|
| يستخدم الأمران `/editor` و`/export` المحرر المحدد في متغير البيئة `EDITOR`. |
|
|
| <Tabs> |
| <TabItem label="Linux/macOS"> |
| ```bash |
| |
| export EDITOR=nano |
| export EDITOR=vim |
|
|
| |
| |
| export EDITOR="code --wait" |
| ``` |
|
|
| لجعل ذلك دائما، أضف هذا إلى ملف تهيئة shell لديك؛ |
| `~/.bashrc`، `~/.zshrc`، إلخ. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (CMD)"> |
| ```bash |
| set EDITOR=notepad |
|
|
| |
| |
| set EDITOR=code --wait |
| ``` |
|
|
| لجعل ذلك دائما، استخدم **System Properties** > **Environment Variables**. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (PowerShell)"> |
| ```powershell |
| $env:EDITOR = "notepad" |
|
|
| |
| |
| $env:EDITOR = "code --wait" |
| ``` |
|
|
| لجعل ذلك دائما، أضف هذا إلى ملف تهيئة PowerShell لديك. |
|
|
| </TabItem> |
| </Tabs> |
|
|
| تتضمن خيارات المحررات الشائعة ما يلي: |
|
|
| - `code` - Visual Studio Code |
| - `cursor` - Cursor |
| - `windsurf` - Windsurf |
| - `nvim` - محرر Neovim |
| - `vim` - محرر Vim |
| - `nano` - محرر Nano |
| - `notepad` - Windows Notepad |
| - `subl` - Sublime Text |
|
|
| :::note |
| تحتاج بعض المحررات مثل VS Code إلى التشغيل مع الخيار `--wait`. |
| ::: |
|
|
| تحتاج بعض المحررات إلى وسائط CLI لتعمل بوضع الحجب. يجعل الخيار `--wait` عملية المحرر تنتظر حتى يتم إغلاقها. |
|
|
| --- |
| |
| |
|
|
| يمكنك تخصيص سلوك TUI من خلال `tui.json` (أو `tui.jsonc`). |
|
|
| ```json title="tui.json" |
| { |
| "$schema": "https://opencode.ai/tui.json", |
| "theme": "opencode", |
| "leader_timeout": 2000, |
| "keybinds": { |
| "leader": "ctrl+x", |
| "command_list": "ctrl+p" |
| }, |
| "scroll_speed": 3, |
| "scroll_acceleration": { |
| "enabled": false |
| }, |
| "diff_style": "auto", |
| "mouse": true, |
| "attention": { |
| "enabled": true, |
| "notifications": true, |
| "sound": true, |
| "volume": 0.4, |
| "sound_pack": "opencode.default", |
| "sounds": { |
| "error": "./sounds/error.mp3" |
| } |
| } |
| } |
| ``` |
|
|
| هذا منفصل عن `opencode.json`، الذي يضبط سلوك الخادم ووقت التشغيل. |
|
|
| يتم دمج `keybinds` مع الاختصارات الافتراضية المدمجة، لذلك لا تحتاج إلا إلى ضبط الاختصارات التي تريد تغييرها. |
|
|
| |
|
|
| - `theme` - يحدد سمة UI. [اعرف المزيد](/docs/themes). |
| - `keybinds` - يخصص اختصارات لوحة المفاتيح. [اعرف المزيد](/docs/keybinds). |
| - `leader_timeout` - يتحكم في مدة انتظار OpenCode بعد الضغط على leader key. القيمة الافتراضية `2000`. |
| - `scroll_acceleration.enabled` - يفعّل تسارع التمرير على نمط macOS لتمرير سلس وطبيعي. عند تفعيله، تزداد سرعة التمرير مع إيماءات التمرير السريعة وتبقى دقيقة للحركات الأبطأ. **يتقدّم هذا الإعداد على `scroll_speed` ويستبدله عند تفعيله.** |
| - `scroll_speed` - يتحكم في سرعة تمرير TUI عند استخدام أوامر التمرير (الحد الأدنى: `0.001`، ويدعم القيم العشرية). القيمة الافتراضية `3`. **ملاحظة: يتم تجاهل هذا إذا تم ضبط `scroll_acceleration.enabled` على `true`.** |
| - `diff_style` - يتحكم في عرض الفروقات (diff). القيمة `"auto"` تتكيف مع عرض terminal، و`"stacked"` تعرض عمودًا واحدًا دائمًا. |
| - `mouse` - يفعّل أو يعطّل التقاط الماوس في TUI (القيمة الافتراضية: `true`). عند تعطيله، يتم الحفاظ على سلوك terminal الأصلي لتحديد النص والتمرير بالماوس. |
| - `attention` - يضبط desktop notifications والأصوات في TUI. معطل افتراضيًا. |
|
|
| استخدم `OPENCODE_TUI_CONFIG` لتحميل مسار إعدادات TUI مخصص. |
|
|
| |
|
|
| تجعل ميزة Attention واجهة TUI تنبهك عندما ينتظر OpenCode ردًا منك، أو يحتاج إلى الموافقة على permission، أو يواجه session error، أو ينهي session. فعّلها باستخدام `attention.enabled`؛ تشغّل الأحداث المدمجة صوتًا عند حدوثها. لا تُرسل desktop notifications إلا عندما لا تكون نافذة terminal في المقدمة، ولا تُستخدم مع أحداث subagent. |
|
|
| - `enabled` - يفعّل جميع notifications والأصوات الخاصة بميزة Attention. القيمة الافتراضية `false`. |
| - `notifications` - عند تفعيل Attention، يسمح لـ TUI بإرسال desktop notifications عبر terminal. القيمة الافتراضية `true`. |
| - `sound` - عند تفعيل Attention، يسمح بتشغيل أصوات التنبيه. القيمة الافتراضية `true`. |
| - `volume` - مستوى صوت التنبيهات الافتراضي من `0` إلى `1`. القيمة الافتراضية `0.4`. |
| - `sound_pack` - sound pack ID المراد استخدامه. القيمة الافتراضية `opencode.default`. |
| - `sounds` - يحدد ملفات صوت مخصصة لـ `default` أو `question` أو `permission` أو `error` أو `done` أو `subagent_done`. يمكن أن تكون المسارات مطلقة، أو `file://` URLs، أو نسبية إلى `tui.json`. |
|
|
| --- |
| |
| |
|
|
| يمكنك تخصيص جوانب مختلفة من عرض واجهة TUI باستخدام لوحة الأوامر (`ctrl+x h` أو `/help`). تبقى هذه الإعدادات محفوظة عبر عمليات إعادة التشغيل. |
|
|
| --- |
| |
| |
|
|
| بدّل ما إذا كان اسم المستخدم يظهر في رسائل الدردشة. يمكنك الوصول إلى هذا عبر: |
|
|
| - لوحة الأوامر: ابحث عن "username" أو "hide username" |
| - يُحفظ الإعداد تلقائيا وسيتم تذكره عبر جلسات واجهة TUI |
|
|