DEV Community

Cover image for أفضل أدوات CLI لوكلاء الذكاء الاصطناعي
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

أفضل أدوات CLI لوكلاء الذكاء الاصطناعي

لا يقرأ وكيل الذكاء الاصطناعي واجهة المستخدم الرسومية؛ بل ينفّذ أمرًا، ويقرأ المخرجات القياسية (stdout)، ويتحقق من رمز الخروج، ثم يحدد الخطوة التالية. تنجح هذه الحلقة فقط عندما تكون الأدوات قابلة للتوقع: فالجدول الملون للبشر، أو مطالبة مثل «هل أنت متأكد؟»، أو رمز الخروج 0 عند الفشل، كلها تجعل الأتمتة هشة وصعبة التصحيح.

جرّب Apidog اليوم

السؤال العملي ليس: «ما أقوى واجهة سطر أوامر؟» بل: «ما واجهة سطر الأوامر التي يستطيع الوكيل اتخاذ قرار بناءً على مخرجاتها؟». ابحث عن ثلاثة أمور: مخرجات JSON منظمة، ووضع غير تفاعلي، ورموز خروج موثوقة.

تنقسم الأدوات هنا إلى فئتين:

  1. بيئات تشغيل الوكلاء: مثل Claude Code وCodex CLI وGemini CLI وCursor CLI.
  2. أدوات ينفذ بها الوكيل العمل: مثل gh وripgrep وjq وHTTPie وapidog-cli.

إذا كنت تربط وكيلاً بسير عمل API، فراجع الدليل الكامل لـ Apidog CLI.

ما الذي يجعل أداة سطر الأوامر مناسبة للوكلاء؟

قبل إضافة أي CLI إلى خط أنابيب وكيل، اختبرها وفق هذه المعايير.

1. مخرجات منظمة

يحلل الوكيل JSON بصورة أكثر موثوقية من الجداول والنصوص الحرة. استخدم أدوات تدعم --json أو --output-format json حتى يقرأ الوكيل الحقول بالاسم بدل تحليل مواقع الأعمدة.

tool command --output-format json | jq '.result'
Enter fullscreen mode Exit fullscreen mode

2. وضع غير تفاعلي

يجب ألا يتوقف الأمر لطلب تأكيد أو إدخال. في بيئات CI أو التشغيل بدون واجهة، أي مطالبة تفاعلية قد توقف المهمة بلا نهاية.

ابحث عن خيارات مثل:

--non-interactive
--yes
--print
--headless
Enter fullscreen mode Exit fullscreen mode

3. رموز خروج حتمية

يجب أن يعني الرمز 0 النجاح، وأن تشير أي قيمة غير صفرية إلى فشل قابل للتعامل معه.

tool command
status=$?

if [ "$status" -ne 0 ]; then
  echo "فشل الأمر برمز: $status"
  exit "$status"
fi
Enter fullscreen mode Exit fullscreen mode

4. تلميحات للخطوة التالية

هذه ميزة أقل شيوعًا: أن تخبر الأداة الوكيل بما يمكنه فعله لاحقًا. هنا يتميز apidog-cli عبر agentHints.nextSteps.

Claude Code

Claude Code هو وكيل ترميز من Anthropic يعمل في الطرفية. استخدم -p لتشغيله دون واجهة تفاعلية، ثم اطلب JSON لتسهيل تمرير النتيجة إلى برنامج نصي أو وكيل آخر.

npm install -g @anthropic-ai/claude-code

claude -p "summarize the failing tests in this repo" \
  --output-format json
Enter fullscreen mode Exit fullscreen mode

تتضمن الاستجابة المنظمة النتيجة وsession_id وtotal_cost_usd، ما يسمح بتتبع الجلسات والتكلفة برمجيًا. ولتدفق الأحداث الفوري، استخدم stream-json مع --verbose.

يمكنك تمرير سجل أو ملف إلى الوكيل مباشرة:

cat build-error.txt | claude -p "explain this error"
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: مهام الترميز متعددة الخطوات التي تحتاج إلى تخطيط وتنفيذ ثم مخرجات قابلة للقراءة آليًا.

الحدود: نموذج مدفوع ومغلق خلف API، وقد تتراكم التكلفة في التشغيلات الطويلة.

Codex CLI

Codex CLI هو وكيل طرفية مفتوح المصدر من OpenAI. استخدم codex exec أو الاختصار codex e لتشغيله بشكل غير تفاعلي.

npm install -g @openai/codex

codex exec --json "add input validation to the signup handler"
Enter fullscreen mode Exit fullscreen mode

مع --json تصبح المخرجات تدفق JSONL: كل تنفيذ أمر، أو تغيير ملف، أو رسالة وكيل يكون كائن JSON مستقلًا. صفِّ الأحداث التي تحتاجها فقط باستخدام jq.

codex exec --json "review this repository" \
  | jq 'select(.type == "message")'
Enter fullscreen mode Exit fullscreen mode

وعندما تحتاج إلى استجابة نهائية ثابتة لخط CI، استخدم --output-schema لفرض توافق النتيجة مع مخطط JSON.

الأفضل لـ: تغييرات الكود المدفوعة بـ CI والتي تحتاج إلى مخرجات نهائية متحققة من المخطط.

الحدود: تدفق JSONL مطول، وستحتاج إلى تصفية عملية باستخدام jq. اختبر المخرجات المقيدة بالمخطط مع مطالباتك الفعلية.

Gemini CLI

Gemini CLI هو وكيل طرفية مفتوح المصدر من Google. ينتقل إلى الوضع غير الرسومي تلقائيًا في بيئة غير TTY، أو عند تمرير مطالبة بواسطة -p أو --prompt.

npm install -g @google/gemini-cli

gemini --non-interactive \
  --output-format json \
  -p "list the public endpoints in this service"
Enter fullscreen mode Exit fullscreen mode

يعيد --output-format json كائن JSON واحدًا يتضمن الاستجابة وإحصاءات الاستخدام. كما تتوفر صيغة JSONL لتدفق الأحداث.

استخدم jq لاستخراج الاستجابة فقط:

gemini --non-interactive --output-format json \
  -p "summarize this codebase" \
  | jq -r '.response'
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: المهام كثيرة القراءة، والفرق التي تعمل في بيئة أدوات Google.

الحدود: جاءت مخرجات JSON المنظمة متأخرة مقارنة ببعض المنافسين؛ ثبّت الإصدار واختبر العلامات قبل تضمينها في CI.

Cursor CLI

يوفر cursor-agent وكيل Cursor داخل الطرفية بشكل مستقل عن المحرر. شغّله دون واجهة باستخدام -p أو --print.

curl https://cursor.com/install -fsS | bash

cursor-agent -p "refactor utils/date.js to use date-fns" \
  --output-format json
Enter fullscreen mode Exit fullscreen mode

يدعم --output-format القيم التالية:

  • text
  • json
  • stream-json

في الوضع غير الرسومي، استخدم --trust إذا أردت السماح للوكيل باستخدام أدوات الكتابة والصدف دون التوقف لطلب التأكيد.

cursor-agent --trust \
  -p "add tests for the date utilities" \
  --output-format json
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: فرق Cursor التي تريد تشغيل الوكيل نفسه في المحرر وCI وخطافات Git.

الحدود: أبلغ المجتمع عن مشكلات في وضع -p غير الرسومي في بعض البنيات والمنصات. اختبره على نظام التشغيل المستهدف وثبّت إصدارًا معروفًا، وراجع تغييرات الملفات.

gh: واجهة سطر أوامر GitHub

استخدم gh كلما كانت المهمة مرتبطة بمستودع GitHub أو مشكلة أو طلب سحب أو إصدار. دعمها لـ --json يجعلها مناسبة جداً للوكلاء.

brew install gh

gh pr list --json number,title,author \
  --jq '.[].author.login'
Enter fullscreen mode Exit fullscreen mode

مرر قائمة الحقول المطلوبة إلى --json لتحصل على هذه الحقول فقط. وإذا تركت القيمة فارغة، ستعرض الأداة الحقول المتاحة ليستكشف الوكيل المخطط.

استخدم gh api عندما لا يغطي الأمر الفرعي العملية المطلوبة:

gh api repos/OWNER/REPO/issues \
  --jq '.[] | {number, title, state}'
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: جميع عمليات GitHub، من قراءة حالة PR إلى إنشاء المشاكل.

الحدود: خاص بـ GitHub فقط، وتختلف حقول --json المتاحة بين الأوامر الفرعية.

ripgrep

ripgrep أو rg هو خيار سريع للبحث المنظم داخل قواعد الكود الكبيرة. بدلاً من تحليل نص file:line:text الهش، استخدم --json.

brew install ripgrep

rg --json "TODO" src/ \
  | jq 'select(.type == "match") | .data.path.text'
Enter fullscreen mode Exit fullscreen mode

كل تطابق يتضمن كائن JSON مستقلًا يحتوي على مسار الملف ورقم السطر والنص المطابق. بهذه الطريقة لا يخطئ الوكيل عند وجود نقطتين أو رموز خاصة في المسار أو الكود.

لاستخراج الملف ورقم السطر معًا:

rg --json "TODO" src/ \
  | jq -r '
    select(.type == "match") |
    "\(.data.path.text):\(.data.line_number)"
  '
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: البحث السريع والمنظم قبل أن يقرر الوكيل الملفات التي سيعدلها.

الحدود: مخرجات --json مطولة، وغالبًا تحتاج إلى jq. للبحث اليدوي السريع، قد يكون النص العادي أبسط.

jq

jq هو طبقة التحويل بين أدوات JSON. استخدمه لتصفية النتائج أو إعادة تشكيلها قبل تمريرها إلى الخطوة التالية.

brew install jq

curl -s https://api.github.com/repos/cli/cli \
  | jq '{name, stars: .stargazers_count}'
Enter fullscreen mode Exit fullscreen mode

مثال عملي في خط أنابيب وكيل: ابحث عن PR مفتوح، ثم استخرج رقمه فقط.

gh pr list --json number,state \
  | jq -r '.[] | select(.state == "OPEN") | .number'
Enter fullscreen mode Exit fullscreen mode

jq حتمي ويدعم التدفق، كما يعيد رمز خروج غير صفري عند فشل تحليل JSON؛ لذلك لا تمر الاستجابات المعطوبة بصمت إلى الخطوات التالية.

الأفضل لـ: تحويل JSON من أي CLI إلى الشكل الذي تتوقعه الخطوة التالية.

الحدود: يحتاج إلى تعلم لغة الاستعلام، ويعالج JSON فقط وليس السجلات النصية الخام.

HTTPie

عندما يحتاج الوكيل إلى استدعاء HTTP API مباشرة، يوفر HTTPie تجربة أكثر ملاءمة لـ JSON من curl الخام. تتحول الحقول بصيغة key=value إلى نص طلب JSON تلقائيًا.

brew install httpie

http --print=b POST httpbin.org/post \
  name=apidog \
  role=cli
Enter fullscreen mode Exit fullscreen mode

تتحكم --print في ما يظهر على stdout. استخدم b لطباعة جسم الاستجابة فقط، ما يسهّل تحليلها دون إزالة الرؤوس.

http --print=b GET https://api.github.com/repos/cli/cli \
  | jq '{name, stars: .stargazers_count}'
Enter fullscreen mode Exit fullscreen mode

الأفضل لـ: استدعاءات API السريعة والقابلة للبرمجة حيث يكون JSON هو صيغة الإدخال والإخراج.

الحدود: تبعية إضافية عندما يكون curl متاحًا في معظم البيئات. للتدفق أو البروتوكولات غير المعتادة، يبقى curl خيارًا أقوى.

apidog-cli

معظم الأدوات في هذه القائمة صُممت للبشر أولًا ثم أضيف لها دعم JSON. أما apidog-cli فيعتمد مخرجات JSON المنظمة بالتصميم، ويضمّن agentHints.nextSteps في الاستجابات لإخبار الوكيل بالخطوات الممكنة التالية.

إنه CLI كامل لإدارة مشاريع API، وليس مجرد مشغّل اختبارات. يمكنه التعامل مع:

  • نقاط النهاية
  • المخططات ونماذج البيانات
  • المحاكاة (Mocks)
  • البيئات
  • الاستيراد والتصدير
  • الوثائق
  • سيناريوهات الاختبار
  • الفروع

ثبّت الأداة وسجّل الدخول:

npm install -g apidog-cli

apidog login --with-token <YOUR_TOKEN>
apidog run --help
Enter fullscreen mode Exit fullscreen mode

يعيد apidog run رمز 0 عند نجاح جميع الاختبارات، ورمزًا غير صفري عند فشل أي اختبار. لذلك يمكن لوكيل أو خط CI الاعتماد على رمز الخروج مباشرة:

apidog run

if [ "$?" -ne 0 ]; then
  echo "فشلت اختبارات API"
  exit 1
fi
Enter fullscreen mode Exit fullscreen mode

تساعد تلميحات agentHints.nextSteps الوكيل على ربط الأوامر التالية دون الحاجة إلى تحديد التسلسل يدويًا. راجع الأمثلة التالية:

استخدم AI Branch لعزل تعديلات الوكيل

لا تمنح وكيلاً يملك صلاحية كتابة حرية تعديل مشروع API مباشر دون عزل. قد يكتب فوق نقاط نهاية أو مخططات حقيقية أو يحذفها.

استخدم AI Branch لإنشاء فرع معزول:

apidog branch --type ai
Enter fullscreen mode Exit fullscreen mode

يبقى الفرع الأصلي دون تغيير، ولا يتم نشر شيء حتى توافق على طلب الدمج. لمزيد من التفاصيل، راجع:

الأفضل لـ: تزويد الوكيل بأداة واحدة أصلية لـ JSON تغطي دورة حياة API كاملة، مع تلميحات للخطوات التالية وبيئة تعديل معزولة.

الحدود: Apidog ليس مفتوح المصدر؛ إنه منتج تجاري مع طبقة مجانية. كما أنه ليس مدقق OpenAPI، لذا أقرنه بـ Spectral أو Redocly إذا كان تطبيق قواعد الأسلوب جزءًا من سير عملك.

كيف تختار؟

لا توجد أداة فائزة لكل السيناريوهات. اختر بيئة تشغيل واحدة لتوجيه العمل، ثم أضف أقل مجموعة ممكنة من أدوات التنفيذ.

الأداة الأفضل لـ التثبيت مفتوح المصدر؟ ملاحظات ملائمة للوكيل
Claude Code الترميز متعدد الخطوات والتخطيط npm i -g @anthropic-ai/claude-code لا -p مع --output-format json، والتكلفة ضمن المخرجات
Codex CLI تغييرات كود CI ذات مخطط محدد npm i -g @openai/codex نعم codex exec --json و--output-schema
Gemini CLI بيئة Google والمهام كثيرة القراءة npm i -g @google/gemini-cli نعم --non-interactive --output-format json
Cursor CLI فرق Cursor والتكافؤ بين المحرر وCI `curl cursor.com/install \ bash` لا
gh أي عملية GitHub brew install gh نعم حقول --json مع --jq المدمج
ripgrep بحث سريع ومنظم في الكود brew install ripgrep نعم أحداث المطابقة عبر --json
jq إعادة تشكيل JSON brew install jq نعم حتمي ومناسب لربط خطوط الأنابيب
HTTPie استدعاءات API قابلة للبرمجة brew install httpie نعم JSON أولًا والتحكم عبر --print
apidog-cli دورة حياة API كاملة للوكلاء npm i -g apidog-cli لا، مع طبقة مجانية JSON أصلي مع agentHints.nextSteps

الخلاصة

ملاءمة الوكيل ليست وصفًا تسويقيًا؛ إنها متطلبات تنفيذية واضحة:

  1. مخرجات منظمة يستطيع الوكيل تحليلها.
  2. وضع غير تفاعلي لا يتوقف عند مطالبة.
  3. رموز خروج موثوقة لاتخاذ قرارات النجاح والفشل.

توفر بيئات التشغيل مثل Claude Code وCodex CLI وGemini CLI وCursor CLI منطق الوكيل، بينما تنفذ أدوات مثل gh وripgrep وjq وHTTPie وapidog-cli العمل الفعلي.

يبرز apidog-cli لأنه يوفر JSON افتراضيًا، ورموز خروج موثوقة، وتلميحات خطوات تالية يمكن للوكيل قراءتها مباشرة. إذا كان وكيلك يعمل على APIs، نزّل Apidog أو ابدأ بـ الدليل الكامل لـ Apidog CLI، ثم اربطه بخط CI الخاص بك.

Top comments (0)