بدء جلسة غير تفاعلية

تتيح لك الجلسات غير التفاعلية استخدام Bob Shell مباشرةً من سطر الأوامر، من دون الدخول إلى جلسة تفاعلية. استخدمها للأتمتة والسكريبتات والمعالجة الدُفعية.

متى تستخدم جلسة غير تفاعلية؟

تكون الجلسات غير التفاعلية مناسبة لـ:

  • دمج Bob Shell في سكريبتات الأتمتة.
  • معالجة ملفات متعددة بأمر واحد.
  • الحصول على إجابات سريعة من دون بدء جلسة تفاعلية.
  • إنشاء توثيق من الكود.
  • مسارات CI/CD التي تتطلب إخراج JSON منظّمًا.

بدء جلسة غير تفاعلية

استخدم الأمر الفرعي bob run لتشغيل Bob Shell بصورة غير تفاعلية من سطر الأوامر.

الصيغة

bob run [options] [prompt...]

يمكنك أيضًا تمرير طلب عبر الإدخال القياسي:

echo "Explain this project" | bob run

نصائح للاستخدام بفعالية

  • عند معالجة ملفات أو مشاريع كبيرة، حدّد الملفات المطلوب تحليلها بوضوح.
  • استخدم --format json أو --format stream-json لتسهيل التحليل الموثوق في السكريبتات.
  • استخدم --max-cost و--max-turns لوضع حدود لاستخدام الموارد في سير العمل المؤتمت.
  • للطلبات متعددة الأسطر، احفظها في ملف ثم مرّرها إلى bob run:
cat prompt.txt | bob run

الاستخدام الأساسي

تشغيل طلب مباشرةً

bob run "Explain this project"

تمرير محتوى كمدخل

يمكنك تمرير محتوى نصي إلى Bob Shell:

cat buildError.txt | bob run "Explain this build error"

حفظ النتائج في ملف

أعِد توجيه الإخراج لحفظ النتائج:

bob run "Review @bigFile.java" > review.md

الإشارة إلى ملفات المشروع

استخدم الرمز @ للإشارة إلى الملفات في مشروعك:

bob run "Summarize the functionality in @src/main.js"

ضبط حدود التكلفة والأدوار

bob run --max-cost 0.50 --max-turns 10 "Refactor @app.js"

إدارة الجلسات

استئناف جلسة سابقة

bob run --resume <task-id> "Continue from where we left off"
bob run --resume latest "Keep going"

علامات الأدوات العامة

تُستدعى بعض العلامات مباشرةً باستخدام bob، وليس باستخدام bob run أو bob chat. لعرض المهام المحفوظة، شغّل الأمر التالي:

bob --list-tasks

العلامات التالية متاحة:

العلامةالوصف
--list-tasks [n|all]يعرض المهام المحفوظة لمساحة العمل الحالية ثم يخرج. القيمة الافتراضية هي 20. مرّر رقمًا أو all للتحكم في عدد المهام المعروضة.
--limit <n>الحد الأقصى لعدد المهام المعروضة مع --list-tasks.
--show-licenseيعرض اتفاقية ترخيص IBM ثم يخرج.

إخراج قابل للمعالجة آليًا

عندما لا يكون الإخراج القياسي طرفية TTY — مثلًا عند تمرير الإخراج عبر pipe أو إعادة توجيهه — يتحول --list-tasks من جدول قابل للقراءة إلى NDJSON، بحيث يحتوي كل سطر على كائن JSON واحد.

يكون كل سطر بالشكل التالي:

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
الحقلالنوعالوصف
idstring (UUID)معرّف المهمة الفريد، ويمكن استخدامه مع --resume.
titlestringعنوان المهمة؛ ويعود إلى أول رسالة ثم إلى المعرّف عند عدم توفره.
statusstringحالة المهمة: active أو completed أو paused.
workspacestring (file URI)مسار مساحة العمل المطلق بصيغة URI من نوع file:.
updatedAtnumberوقت آخر تحديث بالمللي ثانية وفق Unix.

أمثلة

# Pipe into jq
bob --list-tasks all | jq '.id'

# Save to file then process
bob --list-tasks 100 > tasks.ndjson

# Display the license agreement
bob --show-license

تنسيقات الإخراج

يتحكم الخيار --format في طريقة كتابة bob run للإخراج. استخدمه عند التقاط الإخراج في سكريبتات أو مسارات CI.

pretty (الافتراضي)

إخراج نصي قابل للقراءة ومناسب للعرض في الطرفية.

json

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

المخطط:

الحقلالنوعالوصف
typestringدائمًا "result".
timestampstringوقت إتمام بتنسيق ISO 8601.
statusstring"success" أو "error".
statsobjectإحصاءات الجلسة؛ راجع الحقول أدناه.
stats.task_idstringمعرّف المهمة المكتملة الفريد.
stats.total_tokensnumberإجمالي الـ tokens المستخدمة.
stats.input_tokensnumberالـ tokens المستخدمة للإدخال.
stats.output_tokensnumberالـ tokens التي وُلّدت للإخراج.
stats.cache_read_tokensnumberالـ tokens المقروءة من الذاكرة المؤقتة.
stats.cache_write_tokensnumberالـ tokens المكتوبة في الذاكرة المؤقتة.
stats.cache_rationumberنسبة نجاح استخدام الذاكرة المؤقتة.
stats.duration_msnumberمدة الجلسة بالمللي ثانية.
stats.session_costsnumberالتكلفة الإجمالية للجلسة.
stats.tool_callsnumberعدد استدعاءات الأدوات التي أجريت.
last_messagestringالرسالة الأخيرة للمساعد.

مثال:

bob run --format json "What is the entry point?" > result.json

stream-json

يُصدر JSON محددًا بأسطر جديدة (NDJSON) — كائن حدث واحدًا في كل سطر — أثناء تقدم الجلسة. استخدم هذا التنسيق لبث الإخراج إلى pipeline أو لمعالجة الأحداث لحظيًا.

أنواع الأحداث:

نوع الحدثالحقول الأساسيةالوصف
messagerole، content، isReasoning?رسالة مستخدم أو مساعد.
tool_usetool_name، tool_id، parametersاستدعاء أداة بدأه Bob.
tool_resulttool_id، status، output?، error?النتيجة التي أعادتها أداة.
errorseverity، messageتم بلوغ حد التكلفة أو الأدوار.
resultstatus، stats، last_messageملخص نهائي يُصدر عند انتهاء الجلسة.

مثال على pipeline:

bob run --format stream-json "Audit @src/" \
  | grep '"type":"result"' \
  | jq '.last_message'
ملاحظة:

عند التشغيل بصورة غير تفاعلية باستخدام bob run، تكون جميع الأدوات معتمدة مسبقًا. لن يُطلب منك اعتماد استدعاءات الأدوات أثناء التنفيذ.

الخيارات

الخيارالوصف
--format <format>تنسيق الإخراج: pretty (الافتراضي) أو json أو stream-json.
--mode <mode>الوضع عند البدء، مثل agent أو plan أو ask.
--max-cost <bobcoins>الحد الأقصى للإنفاق بـ Bobcoins قبل إيقاف الجلسة.
--max-turns <n>الحد الأقصى لعدد الأدوار الوكيلة قبل إيقاف الجلسة.
--disable-mcpتعطيل جميع خوادم MCP لهذه الجلسة.
--disable-subagentsتعطيل إنشاء الوكلاء الفرعيين لهذه الجلسة.
--disable-tool-groups <groups>تعطيل مجموعات أدوات محددة، مفصولة بفواصل؛ مثل execute,mcp.
--workspace <path>تجاوز مجلد جذر مساحة العمل.
--log-level <level>مستوى تفصيل السجل: error أو warn أو info أو debug أو trace.
--resume <task-id>استئناف مهمة سابقة باستخدام معرّف المهمة.
--resume latestاستئناف أحدث مهمة.
--team-id <id>التشغيل ضمن سياق فريق محدد؛ مطلوب عند استخدام مفتاح API من النوع general.
--trustوضع علامة موثوق على المجلد الحالي.
--accept-licenseقبول اتفاقية ترخيص IBM والمتابعة من دون مطالبة.
ما رأيك في هذا الموضوع؟