الأوامر
أنشئ أوامر مخصصة للمهام المتكررة.
تتيح لك الأوامر المخصصة تحديد مُطالبة (prompt) تريد تشغيلها عند تنفيذ ذلك الأمر في واجهة TUI.
/my-commandتُعدّ الأوامر المخصصة إضافةً إلى الأوامر المضمنة مثل /init و/undo و/redo و/share و/help. اعرف المزيد.
إنشاء ملفات الأوامر
أنشئ ملفات Markdown داخل الدليل commands/ لتعريف أوامر مخصصة.
أنشئ الملف .opencode/commands/test.md:
---description: Run tests with coverageagent: buildmodel: anthropic/claude-3-5-sonnet-20241022---
Run the full test suite with coverage report and show any failures.Focus on the failing tests and suggest fixes.تُعرِّف ترويسة Frontmatter خصائص الأمر، بينما يصبح المحتوى هو القالب.
استخدم الأمر بكتابة / ثم اسم الأمر.
"/test"الإعداد
يمكنك إضافة أوامر مخصصة عبر إعدادات OpenCode أو بإنشاء ملفات Markdown داخل الدليل commands/.
JSON
استخدم خيار command في config الخاص بـ OpenCode:
{ "$schema": "https://opencode.ai/config.json", "command": { // This becomes the name of the command "test": { // This is the prompt that will be sent to the LLM "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", // This is shown as the description in the TUI "description": "Run tests with coverage", "agent": "build", "model": "anthropic/claude-3-5-sonnet-20241022" } }}يمكنك الآن تشغيل هذا الأمر في واجهة TUI:
/testMarkdown
يمكنك أيضًا تعريف الأوامر باستخدام ملفات Markdown. ضعها في:
- على مستوى النظام:
~/.config/opencode/commands/ - لكل مشروع:
.opencode/commands/
---description: Run tests with coverageagent: buildmodel: anthropic/claude-3-5-sonnet-20241022---
Run the full test suite with coverage report and show any failures.Focus on the failing tests and suggest fixes.يصبح اسم ملف Markdown هو اسم الأمر. على سبيل المثال، يتيح لك test.md تشغيل:
/testإعداد المُطالبة
تدعم مُطالبات الأوامر المخصصة عدة عناصر نائبة (placeholders) وبنى خاصة.
الوسائط
مرِّر وسائط إلى الأوامر باستخدام العنصر النائب $ARGUMENTS.
---description: Create a new component---
Create a new React component named $ARGUMENTS with TypeScript support.Include proper typing and basic structure.شغِّل الأمر مع وسائط:
/component Buttonوسيُستبدل $ARGUMENTS بالقيمة Button.
يمكنك أيضًا الوصول إلى كل وسيط على حدة باستخدام المعاملات الموضعية:
$1- الوسيط الأول$2- الوسيط الثاني$3- الوسيط الثالث- وهكذا…
على سبيل المثال:
---description: Create a new file with content---
Create a file named $1 in the directory $2with the following content: $3شغِّل الأمر:
/create-file config.json src "{ \"key\": \"value\" }"سيؤدي ذلك إلى استبدال:
$1بـconfig.json$2بـsrc$3بـ{ "key": "value" }
خرج shell
استخدم !command لحقن خرج أمر bash داخل مُطالبتك.
على سبيل المثال، لإنشاء أمر مخصص يُحلل تغطية الاختبارات:
---description: Analyze test coverage---
Here are the current test results:!`npm test`
Based on these results, suggest improvements to increase coverage.أو لمراجعة التغييرات الأخيرة:
---description: Review recent changes---
Recent git commits:!`git log --oneline -10`
Review these changes and suggest any improvements.تُشغَّل الأوامر في دليل جذر مشروعك ويصبح خرجها جزءًا من المُطالبة.
مراجع الملفات
ضمِّن الملفات في أمرك باستخدام @ ثم اسم الملف.
---description: Review component---
Review the component in @src/components/Button.tsx.Check for performance issues and suggest improvements.يُدرج محتوى الملف في المُطالبة تلقائيًا.
الخيارات
لنلقِ نظرةً على خيارات الإعداد بالتفصيل.
القالب (template)
يُعرِّف خيار template المُطالبة التي ستُرسل إلى نموذج اللغة (LLM) عند تنفيذ الأمر.
{ "command": { "test": { "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes." } }}هذا خيار إعداد إلزامي.
الوصف (description)
استخدم خيار description لتقديم وصف موجز لما يفعله الأمر.
{ "command": { "test": { "description": "Run tests with coverage" } }}يظهر هذا الوصف في واجهة TUI عند كتابة الأمر.
الوكيل (agent)
استخدم إعداد agent لتحديد أي agent ينبغي أن ينفّذ هذا الأمر (اختياريًا).
إذا كان هذا subagent، فسيؤدي الأمر افتراضيًا إلى تشغيل استدعاء subagent.
لإيقاف هذا السلوك، عيِّن subtask إلى false.
{ "command": { "review": { "agent": "plan" } }}هذا خيار إعداد اختياري. إن لم تُحدده، فسيُستخدم agent الحالي افتراضيًا.
مهمة فرعية (subtask)
استخدم القيمة المنطقية subtask لفرض أن يُشغِّل الأمر استدعاء subagent.
يفيد هذا إذا أردت ألا يلوّث الأمر السياق الأساسي لديك، إذ سيُجبر (force) الـ agent على العمل كـ subagent،
حتى لو كان mode مضبوطًا على primary في إعدادات agent.
{ "command": { "analyze": { "subtask": true } }}هذا خيار إعداد اختياري.
النموذج (model)
استخدم إعداد model لتجاوز النموذج الافتراضي لهذا الأمر.
{ "command": { "analyze": { "model": "anthropic/claude-3-5-sonnet-20241022" } }}هذا خيار إعداد اختياري.
الأوامر المضمنة
يتضمن opencode عدة أوامر مضمنة مثل /init و/undo و/redo و/share و/help؛ اعرف المزيد.
إذا عرّفت أمرًا مخصصًا بالاسم نفسه، فسيستبدل الأمر المضمن.