Plugin guides

Plugin لوحة العمل

يضيف Plugin ‏Workboard لوحة اختيارية بنمط Kanban إلى واجهة التحكم: بطاقات عمل بحجم مناسب للوكلاء، وإسنادها إلى الوكلاء، ورابطًا للعودة إلى مهمة البطاقة وتشغيلها وجلسة لوحة المعلومات الخاصة بها.

صُمم Workboard ليكون صغيرًا عمدًا: فهو يتتبع أعمال التشغيل المحلية لـ Gateway واحد من OpenClaw. وليس بديلًا عن GitHub Issues أو Linear أو Jira أو أنظمة إدارة مشاريع الفرق الأخرى.

تمكينه

يأتي Workboard مضمّنًا، لكنه معطّل افتراضيًا:

  1. افتح Plugins في واجهة التحكم، أو استخدم /settings/plugins نسبةً إلى المسار الأساسي المضبوط لواجهة التحكم. على سبيل المثال، يستخدم المسار الأساسي /openclaw المسار /openclaw/settings/plugins.
  2. ابحث عن Workboard واختر Enable. ولأن Workboard مضمّن مع OpenClaw، فلا يحتاج إلى إجراء Install.
  3. إذا أبلغت الواجهة بأن إعادة التشغيل مطلوبة، فأعد تشغيل Gateway.

تظهر علامة تبويب Workboard في شريط تنقل لوحة المعلومات بعد تحميل وقت تشغيل Plugin. وعندما يكون معطّلًا، تظل علامة التبويب مخفية من التنقل. يؤدي فتح مسار /workboard مباشرةً بينما يكون Plugin معطّلًا أو محظورًا بواسطة plugins.allow/plugins.deny إلى عرض حالة عدم توفر Plugin بدلًا من بيانات البطاقات.

سير عمل CLI المكافئ هو:

bash
openclaw plugins enable workboardopenclaw gateway restartopenclaw dashboard

الإعداد

لا يملك Workboard إعدادات خاصة بـ Plugin. مكّنه أو عطّله باستخدام إدخال Plugin القياسي:

json5
{  plugins: {    entries: {      workboard: {        enabled: true,        config: {},      },    },  },}
bash
openclaw plugins disable workboardopenclaw gateway restart

حقول البطاقة

الحقل القيم
status triage، backlog، todo، scheduled، ready، running، review، blocked، done
priority low، normal، high، urgent
labels سلاسل نصية حرة
agentId وكيل مُسنَد اختياريًا
المراجع المرتبطة مهمة أو تشغيل أو جلسة أو عنوان URL للمصدر، وجميعها اختيارية
execution بيانات وصفية اختيارية لتشغيل Codex/Claude بدأ من البطاقة (المحرك، والوضع، والنموذج، والجلسة، ومعرّف التشغيل، والحالة)

تحمل البطاقات أيضًا بيانات وصفية موجزة للمحاولات، والتعليقات، والروابط، والإثبات، والعناصر الناتجة، وإعدادات الأتمتة، والمرفقات، وسجلات العامل، وحالة بروتوكول العامل، والمطالبات، والتشخيصات، والإشعارات، ومعرّف القالب، وحالة الأرشفة، واكتشاف الجلسات القديمة، بالإضافة إلى قائمة بالأحداث الحديثة (created، edited، moved، linked، specified، decomposed، claimed، heartbeat، execution_updated، attempt_started، attempt_updated، comment_added، link_added، proof_added، artifact_added، attachment_added، diagnostic، notification، dispatch، orchestration، protocol_violation، archived، unarchived، stale). تتيح هذه البيانات الوصفية للمشغّل معرفة كيفية انتقال البطاقة عبر اللوحة دون فتح الجلسة المرتبطة؛ فهي سياق تشغيل محلي، وليست بديلًا عن نصوص الجلسات أو سجل مشكلات GitHub.

تُخزّن البطاقات في حالة Gateway الخاصة بـ Plugin وتنتقل مع بقية حالة OpenClaw لذلك الـ Gateway (راجع التخزين).

بدء العمل من بطاقة

يمكن للبطاقات غير المرتبطة بدء العمل مباشرةً:

  • يبدأ تشغيل Codex / تشغيل Claude تشغيل وكيل متتبّعًا بمهمة باستخدام محرك محدد صراحةً، ويرسل مطالبة البطاقة، ويضع علامة running على البطاقة. تستخدم تشغيلات Codex النموذج openai/gpt-5.6-sol؛ وتستخدم تشغيلات Claude النموذج anthropic/claude-sonnet-4-6.
  • ينشئ فتح Codex / فتح Claude جلسة لوحة معلومات مرتبطة دون إرسال مطالبة البطاقة أو نقلها، للعمل اليدوي الذي يظل مرتبطًا باللوحة.

تستخدم عمليات البدء المستقلة مسار تشغيل الوكيل المتتبّع بمهمة في Gateway (الوكيل والنموذج الافتراضيان ما لم يُختر Codex/Claude صراحةً)؛ ثم يربط Workboard المهمة الناتجة ومعرّف التشغيل ومفتاح الجلسة بالبطاقة. ويسجل كل تنفيذ مرتبط أيضًا ملخصًا للمحاولة (المحرك، والوضع، والنموذج، ومعرّف التشغيل، والطوابع الزمنية، والحالة، وعدد الإخفاقات المتتابعة) بحيث تظل الإخفاقات المتكررة ظاهرة.

تحدّث لوحة المعلومات حالة المهمة من سجل مهام Gateway، وتطابق المهام مع البطاقات بحسب معرّف المهمة أو معرّف التشغيل أو مفتاح الجلسة المرتبط. تُبقي المهمة المصطفة/قيد التشغيل دورة حياة البطاقة نشطة؛ بينما تنقل المهمة المكتملة أو الفاشلة أو المنتهية مهلتها أو الملغاة البطاقة نحو review أو blocked باستخدام قاعدة المزامنة نفسها المستخدمة للجلسات المرتبطة (راجع مزامنة دورة حياة الجلسة).

أدوات الوكيل

الأداة الغرض
workboard_list عرض بطاقات موجزة مع حالة المطالبة/التشخيص؛ مع مرشح اختياري للوحة.
workboard_read إرجاع بطاقة واحدة مع سياق محدود للعامل (الملاحظات، المحاولات، التعليقات، الروابط، الإثبات، العناصر، نتائج البطاقات الأصلية، الأعمال الحديثة للمُسنَد إليه، التشخيصات النشطة).
workboard_create إنشاء بطاقة مع بطاقات أصلية اختيارية، ومستأجر، وSkills، ولوحة، وبيانات وصفية لمساحة العمل، ومفتاح لتحقيق التكرار الآمن، وحد للتشغيل، وميزانية لإعادة المحاولة.
workboard_link ربط بطاقة أصلية ببطاقة فرعية. تظل البطاقات الفرعية في حالة todo حتى تصل كل بطاقة أصلية إلى done، ثم ينقلها تصعيد الإرسال إلى ready.
workboard_claim المطالبة ببطاقة لصالح الوكيل المستدعي؛ ينقل backlog/todo/ready إلى running.
workboard_heartbeat تحديث Heartbeat للمطالبة أثناء تشغيل أطول.
workboard_release تحرير المطالبة بعد الإكمال أو الإيقاف المؤقت أو التسليم؛ ويمكن نقل البطاقة إلى حالة تالية.
workboard_complete / workboard_block أدوات منظّمة لدورة الحياة للملخصات النهائية والإثبات والعناصر وبيانات البطاقات المُنشأة (يجب أن تشير إلى بطاقات مرتبطة عكسيًا بالبطاقة المكتملة) أو أسباب الحظر.
workboard_attachment_add / workboard_attachment_read / workboard_attachment_delete تخزين مرفقات صغيرة للبطاقة في حالة SQLite الخاصة بالـPlugin، وفهرستها في البطاقة، وإظهارها في سياق العامل.
workboard_worker_log / workboard_protocol_violation تسجيل أسطر سجل العامل وحظر بطاقة عندما يتوقف عامل مؤتمت من دون استدعاء workboard_complete/workboard_block.
workboard_board_create / workboard_board_archive / workboard_board_delete إدارة البيانات الوصفية الدائمة للوحة (اسم العرض، والوصف، وحالة الأرشفة، ومساحة العمل الافتراضية).
workboard_runs إرجاع السجل الدائم لمحاولات تشغيل بطاقة.
workboard_specify تحويل بطاقة أولية للفرز/التراكم إلى بطاقة todo موضّحة؛ ويسجل ملخص المواصفات في البطاقة.
workboard_decompose تفريع بطاقة تنسيق أصلية إلى بطاقات فرعية مرتبطة ترث البيانات الوصفية للوحة/المستأجر؛ ويمكن إكمال البطاقة الأصلية ببيان للبطاقات المُنشأة.
workboard_notify_subscribe / workboard_notify_list / workboard_notify_events / workboard_notify_advance / workboard_notify_unsubscribe إدارة اشتراكات الإشعارات. قراءات الأحداث آمنة عند إعادة التشغيل؛ وينقل advance المؤشر الدائم لكي يستأنف المستدعون من دون فقدان أحداث البطاقات المكتملة/الفاشلة/القديمة أو قراءتها مرتين.
workboard_boards / workboard_stats فحص نطاقات أسماء اللوحات وإحصاءات قائمة الانتظار.
workboard_promote / workboard_reassign / workboard_reclaim استعادة العمل العالق أو تسليمه.
workboard_comment / workboard_proof إضافة ملاحظات التسليم أو إرفاق مراجع الإثبات/العناصر.
workboard_unblock إعادة العمل المحظور إلى todo.
workboard_dispatch تحفيز تصعيد التبعيات أو تنظيف المطالبات القديمة.

ترفض البطاقات المُطالَب بها التغييرات التي تجريها أدوات الوكيل من وكلاء آخرين ما لم يكن المستدعي يحمل رمز المطالبة الذي أعاده workboard_claim. تحجب كل بطاقة تعيدها أداة وكيل أو استدعاء RPC في Gateway قيمة metadata.claim.token إلى [redacted] (يُعاد الرمز نفسه مرة واحدة، في المستوى الأعلى، ومن workboard_claim فقط)، بحيث يمكن لمشغلي لوحة المعلومات والوكلاء الآخرين فحص حالة المطالبة من دون رؤية رمز قابل للاستخدام مطلقًا. تتم الاستعادة عبر workboard_promote/workboard_reassign/workboard_reclaim، ولا تتطلب هذه الأدوات الرمز.

الإرسال

الإرسال محلي في Gateway: فهو لا ينشئ عمليات نظام تشغيل عشوائية. تظل جلسات الوكلاء الفرعيين العادية في OpenClaw مسؤولة عن التنفيذ. تنفّذ دورة إرسال واحدة ما يلي:

  1. تصعّد البطاقات الجاهزة من ناحية التبعيات.
  2. تسجل البيانات الوصفية للإرسال في البطاقات الجاهزة.
  3. تحظر المطالبات منتهية الصلاحية أو عمليات التشغيل التي انتهت مهلتها.
  4. تضع علامة على بطاقات الفرز التي أُعدّت لها اللوحة باعتبارها مرشحة للتنسيق.
  5. تطالب بدفعة صغيرة من البطاقات الجاهزة وتبدأ عمليات تشغيل العامل عبر وقت تشغيل الوكيل الفرعي في Gateway.

يحصل العاملون على سياق محدود للبطاقة بالإضافة إلى رمز المطالبة اللازم لإرسال Heartbeat، أو إكمال البطاقة، أو حظرها عبر أدوات لوحة العمل.

اختيار العامل

تبدأ كل دورة 3 عاملين كحد أقصى افتراضيًا. تُرتب البطاقات الجاهزة حسب الأولوية، ثم الموضع، ثم وقت الإنشاء. تبدأ الدورة بطاقة واحدة فقط لكل مالك/وكيل، وتتخطى المالكين الذين لديهم بالفعل عمل قيد التشغيل أو المراجعة في اللوحة. لا تُحدد البطاقات المؤرشفة، والبطاقات ذات المطالبة النشطة، والبطاقات التي ليست في حالة ready مطلقًا لبدء العاملين (مع إمكانية أن تتأثر بجانب البيانات من الإرسال: تنظيف المطالبات القديمة، وتصعيد التبعيات، وتنظيف انتهاء المهلة).

مفاتيح الجلسات حتمية لكل لوحة/بطاقة، لذلك تعيد عمليات الإرسال المتكررة التوجيه إلى مسار العامل نفسه بدلًا من إنشاء جلسات غير مرتبطة:

  • البطاقات المُسنَدة: agent:<agentId>:subagent:workboard-<boardId>-<cardId>
  • البطاقات غير المُسنَدة: subagent:workboard-<boardId>-<cardId> (يحدد Gateway الوكيل الافتراضي المُعد)

إذا تعذر بدء عامل بعد المطالبة ببطاقة، تحظر لوحة العمل البطاقة، وتمحو المطالبة، وتسجل فشل بدء التشغيل، وتضيف سطرًا إلى سجل العامل

  • يظهر في لوحة المعلومات، وJSON الخاص بـCLI، وأدوات الوكيل، وتشخيصات البطاقة.

نقاط الدخول

  • إجراء الإرسال في لوحة المعلومات
  • openclaw workboard dispatch
  • /workboard dispatch في قناة تدعم الأوامر

تستخدم النقاط الثلاث وقت تشغيل الوكيل الفرعي في Gateway عندما يكون Gateway متاحًا. لدى CLI مسار احتياطي واحد للمشغل: إذا فشل استدعاء Gateway بسبب خطأ اتصال/عدم توفر (أو خطأ unknown method لإصدارات Gateway الأقدم)، ولم يُحدد هدف صريح عبر --url/--token ولم ينطبق إعداد Gateway بعيد (OPENCLAW_GATEWAY_URL أو gateway.mode: remote)، يشغّل CLI إرسالًا للبيانات فقط على حالة SQLite المحلية - ويمكنه تصعيد التبعيات، وتنظيف المطالبات القديمة، وحظر عمليات التشغيل التي انتهت مهلتها، لكنه لا يستطيع بدء العاملين. لا تُعامل إخفاقات المصادقة والأذونات والتحقق من Gateway يمكن الوصول إليه على أنها عدم توفر؛ بل تظهر كأخطاء أوامر، وينطبق ذلك أيضًا على أي فشل في Gateway عند تقديم هدف صريح عبر --url/--token.

يمكن للبيانات الوصفية للوحة ضبط autoDecompose وautoDecomposePerDispatch وdefaultAssignee وorchestratorProfile. يسجل OpenClaw هذه النية ويظهرها في سياق العامل؛ لكن تحديد المواصفات/التفكيك الفعلي يظل يُنفذ عبر أدوات لوحة العمل العادية.

CLI وأمر الشرطة المائلة

bash
openclaw workboard list [--board <id>] [--status <status>] [--include-archived] [--json]openclaw workboard create "Fix stale card lifecycle" --priority high --labels bug,workboardopenclaw workboard show <card-id> [--json]openclaw workboard dispatch [--board <id>] [--json]

يخفي الإخراج النصي لـlist البطاقات المؤرشفة افتراضيًا (ويتجاوز --include-archived ذلك)؛ بينما يتضمن --json دائمًا البطاقات المؤرشفة، بما يتوافق مع عقد البطاقة الكاملة الذي تستخدمه النصوص البرمجية الحالية. يقبل show بادئة معرّف غير ملتبسة. تقرأ list وcreate وshow دائمًا حالة الـPlugin المحلية أو تكتبها مباشرة. يستدعي dispatch وحده Gateway قيد التشغيل، مع المسار الاحتياطي الموضح أعلاه.

راجع CLI للوحة العمل للاطلاع على جميع العلامات، وإخراج JSON، وسلوك المسار الاحتياطي لـGateway، ومعالجة بادئة المعرّف، وقواعد اختيار الإرسال، واستكشاف الأخطاء وإصلاحها.

تعكس /workboard list و/workboard show <card-id> و/workboard create <title> و/workboard dispatch وظائف CLI. تمثل القائمة والعرض عمليات قراءة متاحة لأي مرسل أوامر مصرح له. يتطلب الإنشاء والإرسال حالة المالك على واجهات الدردشة، أو عميل Gateway لديه operator.write/operator.admin.

مزامنة دورة حياة الجلسة

يمكن للبطاقات الارتباط بجلسة موجودة في لوحة المعلومات، أو بجلسة تُنشأ عند بدء العمل من البطاقة. تعرض البطاقات المرتبطة دورة حياة الجلسة ضمن البطاقة: قيد التشغيل، أو قديمة، أو مرتبطة وخاملة، أو منتهية، أو فاشلة، أو مفقودة. يمكنك أيضًا التقاط جلسة موجودة من علامة تبويب الجلسات باستخدام الإضافة إلى Workboard؛ وترتبط البطاقة بتلك الجلسة، وتستخدم تسمية الجلسة أو مطالبة المستخدم الأخيرة عنوانًا، وتملأ الملاحظات من مطالبة المستخدم الأخيرة بالإضافة إلى أحدث استجابة للمساعد عند توفرها.

إذا أصبحت الجلسة المرتبطة مفقودة، تظل البطاقة مرتبطة للحفاظ على السياق، وتستمر في توفير عناصر تحكم البدء لإعادة التشغيل في جلسة جديدة. إذا توقفت جلسة مرتبطة نشطة عن الإبلاغ عن نشاط حديث، يضع Workboard علامة stale على البطاقة ويخزن ذلك كبيانات وصفية حتى تمحوها دورة الحياة.

عندما تكون البطاقة في حالة عمل نشطة، يتابع Workboard الجلسة المرتبطة:

حالة الجلسة المرتبطة حالة البطاقة
نشطة running
مكتملة review
فاشلة، أو مُنهية قسرًا، أو انتهت مهلتها، أو أُجهضت blocked

تتقدم حالات المراجعة اليدوية على غيرها. يؤدي نقل بطاقة إلى review أو blocked أو done إلى إيقاف المزامنة التلقائية لتلك البطاقة حتى تعيدها إلى todo أو running.

يستخدم بدء بطاقة جلسات Gateway العادية؛ ولا يخزن Workboard سوى البيانات الوصفية للبطاقة والروابط. يظل نص المحادثة، واختيار النموذج، ودورة حياة التشغيل مملوكًا لنظام الجلسات العادي. استخدم إيقاف على بطاقة مرتبطة نشطة لإجهاض التشغيل النشط؛ يضع Workboard علامة blocked على تلك البطاقة لكي تظل ظاهرة للمتابعة.

يمكن بدء البطاقات الجديدة من قوالب Workboard (bugfix وdocs وrelease وpr_review وplugin). تملأ القوالب مسبقًا العنوان والملاحظات والتسميات والأولوية؛ ويُخزن معرّف القالب كبيانات وصفية للبطاقة.

سير عمل لوحة المعلومات

  1. افتح علامة تبويب Workboard في واجهة التحكم.
  2. أنشئ بطاقة بعنوان وملاحظات وأولوية وتسميات ووكيل اختياري و جلسة مرتبطة اختيارية، أو افتح الجلسات واختر الإضافة إلى Workboard لجلسة موجودة.
  3. اسحب البطاقة بين الأعمدة، أو ركّز على عنصر التحكم المدمج في حالتها واستخدم القائمة أو ArrowLeft/ArrowRight.
  4. ابدأ العمل من البطاقة لإنشاء جلسة في لوحة المعلومات أو إعادة استخدامها.
  5. افتح الجلسة المرتبطة من البطاقة أثناء عمل الوكيل.
  6. دع مزامنة دورة الحياة تنقل العمل الجاري إلى review/blocked، ثم انقل البطاقة يدويًا إلى done عند قبولها.

التشخيصات

تُحسب التشخيصات من البيانات الوصفية المحلية للبطاقة. تشير الفحوصات المضمنة إلى:

النوع الشرط
stranded_ready بطاقة todo/backlog/ready مُسندة لم تُحدّث منذ أكثر من ساعة.
running_without_heartbeat بطاقة running بلا Heartbeat للمطالبة أو تحديث للتنفيذ منذ أكثر من 20 دقيقة.
blocked_too_long بطاقة blocked لم تُحدّث منذ أكثر من 24 ساعة.
repeated_failures وصول عدد الإخفاقات المتتبعة للبطاقة إلى 2 أو أكثر.
missing_proof بطاقة done بلا إثبات أو عناصر ناتجة أو مرفقات.
orphaned_session بطاقة running تحتوي على sessionKey ولكن بلا بيانات وصفية لـexecution.

الأذونات

تندرج أساليب RPC في Gateway تحت workboard.*:

النطاق الأساليب
operator.read cards.list وcards.export وcards.diagnostics، وقائمة المرفقات/جلبها، وقراءات أحداث الإشعارات، وboards.list وcards.stats وcards.runs
operator.write cards.diagnostics.refresh، والإنشاء/التحديث/النقل/الحذف/التعليق/الربط/linkDependency/الإثبات/العنصر الناتج، وإضافة المرفقات/حذفها، وسجل العامل، وانتهاك البروتوكول، والمطالبة/Heartbeat/التحرير/الترقية/إعادة الإسناد/استعادة المطالبة/الإكمال/الحظر/إلغاء الحظر، وcards.dispatch وcards.bulk والأرشفة، وboards.upsert/archive/delete، وcards.specify/decompose، والاشتراك في الإشعارات/حذفها/تقديمها

لا يتطلب أي أسلوب RPC الإذن operator.admin. يمكن للمتصفحات المتصلة بصلاحية مشغّل للقراءة فقط فحص اللوحة، لكنها لا تستطيع تعديل البطاقات.

التخزين

يخزن Workboard البيانات الدائمة في قاعدة بيانات SQLite علائقية يملكها Plugin ضمن دليل حالة OpenClaw: توجد اللوحات والبطاقات والتسميات وأحداث دورة الحياة ومحاولات التشغيل والتعليقات وروابط الاعتماد والإثبات ومراجع العناصر الناتجة والبيانات الوصفية للمرفقات وبياناتها الثنائية والتشخيصات والإشعارات وسجلات العمال وحالة البروتوكول والاشتراكات جميعها في جداول Workboard (وليس في إدخالات المفتاح والقيمة الخاصة بالـPlugin). يحافظ تصدير البطاقة على سرد اللوحة من دون تضمين محتويات البيانات الثنائية للمرفقات.

يمكن لعمليات التثبيت التي استخدمت Workboard في إصدار .28 تشغيل openclaw doctor --fix لترحيل نطاقات حالة الـPlugin القديمة التي شُحنت (workboard.cards وworkboard.boards وworkboard.notify، وكذلك workboard.attachments إن وُجدت) إلى قاعدة البيانات العلائقية.

استكشاف الأخطاء وإصلاحها

تشير علامة التبويب إلى أن Workboard غير متاح

bash
openclaw plugins inspect workboard --runtime --json

إذا كان plugins.allow مُهيأً، فأضف إليه workboard. وإذا كان plugins.deny يحتوي على workboard، فأزله قبل تمكين الـPlugin.

لا تُحفظ البطاقات

تأكد من أن اتصال المتصفح يملك صلاحية operator.write. يمكن لجلسات المشغّل ذات صلاحية القراءة فقط عرض البطاقات، لكنها لا تستطيع إنشاءها أو تعديلها أو نقلها أو حذفها.

لا يؤدي بدء بطاقة إلى فتح الجلسة المتوقعة

تحقق من معرّف وكيل البطاقة والجلسة المرتبطة، ثم افتح الجلسات أو المحادثة لفحص حالة التشغيل الفعلية.

لا يبدأ الإرسال عاملاً

تأكد من وجود بطاقة ready واحدة على الأقل بلا مطالبة نشطة:

bash
openclaw workboard list --status ready

إذا أبلغت CLI عن إرسال للبيانات فقط، فابدأ Gateway أو أعد تشغيله ثم أعد المحاولة؛ يحدّث الإرسال للبيانات فقط حالة اللوحة المحلية، لكنه لا يستطيع بدء تشغيلات عمال الوكلاء الفرعيين. قد يجري أيضًا تخطي البطاقات عندما تكون بطاقة أخرى للمالك أو الوكيل نفسه قيد التشغيل بالفعل أو بانتظار المراجعة؛ أكمل ذلك العمل النشط أو احظره أو حرره قبل إرسال المزيد للمالك نفسه.

ذو صلة

Was this useful?
On this page

On this page