AgentHands: توليد إيماءات اليد التفاعلية للمحادثات بين الوكلاء المرتكزة مكانيًا في الواقع الممتد (XR)
AgentHands هو نهج بحثي لتوليد إيماءات اليد التفاعلية التي تتيح لوكلاء الذكاء الاصطناعي التواصل بشكل أكثر طبيعية في الواقع الممتد. من خلال تأسيس الإيماءات في السياق المكاني، تهدف هذه الطريقة إلى جعل محادثات الوكلاء أكثر وضوحاً وتجسيداً، مما يتيح تواصلاً غير لفظي أكثر ثراءً في بيئات الواقع الممتد الغامرة.
الوسوم
ملخص سريع
AgentHands هو نهج بحثي لتوليد إيماءات اليد التفاعلية التي تتيح لوكلاء الذكاء الاصطناعي التواصل بشكل أكثر طبيعية في الواقع الممتد. من خلال تأسيس الإيماءات في السياق المكاني، تهدف هذه الطريقة إلى جعل محادثات الوكلاء أكثر وضوحاً وتجسيداً، مما يتيح تواصلاً غير لفظي أكثر ثراءً في بيئات الواقع الممتد الغامرة.
AgentHands: توليد إيماءات يد تفاعلية لمحادثات الوكلاء المرتكزة مكانيًا في الواقع الممتد
اسأل أي شخص قضى وقتًا داخل غرفة اجتماعات في الواقع الافتراضي أو تراكب مساعد في الواقع المعزز، وسيذكر لك الانفصال نفسه: الصوت موجود، والكلمات واضحة، لكن الجسد جامد. الوكلاء الاصطناعيون يتحدثون بطلاقة بينما تظل أيديهم معلقة في وضع محايد، لا تشير أبدًا إلى الشيء الذي يصفونه، ولا تمد يدها نحو الزر الذي يشرحونه، ولا ترسم إيماءة تطابق إيقاع كلامهم. في محادثة حقيقية، سيُقرأ هذا السلوك على أنه آلي أو مراوغ أو ببساطة معطوب. في الواقع الممتد (XR)، الأمر أسوأ، لأن الفضاء المحيط بالوكيل ليس مجردًا. هناك أشياء وأدوات ومتعاونون حقيقيون ومواقع مكانية يمكن الإشارة إليها. يدا الوكيل ليستا للزينة؛ إنهما أداة إشارة، وقناة إشارية، وطريقة لجعل المحادثة مفهومة في ثلاثة أبعاد.
يستهدف AgentHands، وهو مشروع بحثي من Google Research، هذه الفجوة مباشرةً. النهج الموصوف في الورقة، والذي نُشر في التدوينة الرسمية لمدونة Google Research في أغسطس 2026، يركز على توليد إيماءات يد تفاعلية لمحادثات الوكلاء المرتكزة مكانيًا في الواقع الممتد. التركيز على "تفاعلية" و"مرتكزة مكانيًا" معًا أمر مهم. الإيماءات ليست رسومًا متحركة مُعدة مسبقًا بانتظار إعادة تشغيلها؛ بل تُولَّد استجابةً لكلام الوكيل والمشهد المحيط، ما يعني أن الجملة نفسها يمكن أن تُنتج حركات يد مختلفة اعتمادًا على ما إذا كان الوكيل يشير إلى فنجان قهوة أو مدخل أو لا شيء إطلاقًا.
هذه المقالة نظرة عامة عملية وتقنية حول ما يلزم لبناء مثل هذا النظام في خط أنابيب الوكلاء الخاص بك في الواقع الممتد. تستند فقط إلى التدوينة البحثية العامة باعتبارها الأساس الوقائعي. حيث تصف التدوينة نتائج بحثية، سأفسرها لجمهور هندسي؛ وحيث لا توفر SDK رسميًا أو أوامر إصدار، سأوضح ذلك صراحةً. خطوات الإعداد أدناه تمثل إذن طبقة تكامل مرجعية يمكنك بناؤها حول نهج AgentHands، وليست مثبتًا رسميًا لرمز البحث نفسه.
المشكلة الأساسية: الكلام والفضاء والحلقة المفقودة
المحادثة البشرية الطبيعية متعددة الوسائط بطريقة لا تلتقطها الواجهات النصية أبدًا. عندما نقول "ضع ذلك هناك"، نعتمد على إيماءة إشارة لإزالة الغموض حول أي شيء وأي مكان. عندما نصف عملية، ترسم أيدينا شكل العملية. عندما نؤكد كلمة، تهبط أيدينا بنقرات متزامنة مع المقطع المشدد. على النقيض من ذلك، تُخرج نماذج اللغة رموزًا (tokens). ليس لديها فهم فطري لمشهد ثلاثي الأبعاد، وليس لديها قشرة حركية.
التحدي في الواقع الممتد هو ربط هذين العالمين: العالم الرمزي المنفصل للكلام والعالم الهندسي المستمر للفضاء المادي. يجب على الوكيل المحاور في الواقع الممتد أن يحل ثلاث مشكلات في وقت واحد:
- ماذا يقول — مهمة توليد اللغة، التي يتولاها عادةً نموذج لغوي كبير.
- أين الأشياء — مهمة التمركز المكاني، التي يتولاها عادةً مخطط مشهد أو كشف الأجسام أو مراسي مكانية.
- كيف يتحرك — مهمة توليد الإيماءات، وهي ما يعالجه AgentHands.
المشكلة الثالثة هي الأكثر إهمالًا. العديد من وكلاء الواقع الممتد إما يعيدون استخدام رسوم متحركة محايدة عامة أو يعتمدون على تحريك بشري عبر تتبع اليد، وهو ما لا يتوسع. آخرون يضيفون التعرف على الإيماءات لكن ليس لديهم أي مكوّن توليد، لذا يمكن للوكيل رؤية الإيماءات لكنه لا يستطيع إنتاجها. يقلب AgentHands هذا الخط: يأخذ كمدخل كلام الوكيل والسياق المكاني، ويُخرج تسلسل إيماءات مناسبًا دلاليًا وممكنًا فيزيائيًا.
ما يجعل هذا صعبًا بشكل خاص أن الإيماءات ليست مرتبطة فقط بمعنى الكلمات. بل مرتبطة أيضًا بتوقيت الكلام، وهوية الوكيل، وفيزياء اليدين. يجب أن تصل إيماءة الإشارة إلى الهدف بمسار معين؛ ويجب أن تتوقع إيماءة الإمساك حجم الجسم؛ ويجب أن تتماشى الإيماءة الإيقاعية مع الضغط العروضي. تحقيق كل هذا بمعدلات تفاعلية، داخل سماعة واقع ممتد بميزانية استدلال محدودة، يتطلب نموذجًا توليديًا مصممًا بعناية يمكن للوكيل تشغيله في الوقت الفعلي.
ما الذي يجعل AgentHands مختلفًا: التفاعلية والتمركز المكاني
كلمة تفاعلية في العنوان ليست عرضية. معظم الأعمال السابقة حول توليد الإيماءات المصاحبة للكلام تعامل المهمة كمسألة بناء غير متصلة: بالنظر إلى نص حرفي، أنتج حركة إيماءات كاملة، ثم شغّلها. يفشل هذا النهج في الواقع الممتد لأن المشهد ليس ثابتًا. يمكن للمستخدم أن يتحرك، ويمكن نقل جسم ما، ويمكن مقاطعة محادثة في منتصف الجملة. يحتاج الوكيل إلى تعديل إيماءاته أثناء التنقل.
جزء التمركز المكاني مهم بنفس القدر. في مجموعة بيانات نموذجية للإيماءات المصاحبة للكلام، تقوم شخصية متحركة بالإيماء في فضاء فارغ. بدلاً من ذلك، يُشترط نهج AgentHands توليد الإيماءات على المشهد ثلاثي الأبعاد نفسه. عندما يشير الوكيل إلى جسم ما، يجب أن يتأثر مسار اليد المُولَّد بالموضع الفعلي لذلك الجسم واتجاهه وشكله. عندما يشير الوكيل إلى اتجاه، يجب أن تعكس الإيماءة الهندسة الحقيقية للغرفة بدلاً من حركة ذراع عامة.
لهذا نتيجة عملية لتصميم النظام: لا يمكن أن يكون توليد الإيماءات وحدة مستقلة من نص إلى حركة. يجب أن يكون بجوار طبقة فهم مكاني. في سيناريو التكامل، ستُغذي الوكيل بقائمة من أجسام المشهد مع مواضعها ومربعاتها المحيطة، وسيستخدم نموذج AgentHands تلك المعلومات، مع سياق الحوار، ليقرر متى تستهدف الإيماءة جسمًا معينًا وكيف يجب أن تتحرك اليد للإشارة إليه.
المتطلبات
قبل الوصول إلى أي كود، دعنا نحدد ما تحتاجه للمتابعة.
- Python 3.10 أو أحدث لمنطق توليد الإيماءات والتكامل.
- محرك ثلاثي الأبعاد مثل Unity 2022 LTS أو حزمة ويب تعتمد على Three.js أو A-Frame، لأن الإيماءات المولدة تحتاج في النهاية إلى تحريك صورة رمزية (avatar) في الواقع الممتد.
- سماعة واقع افتراضي أو معزز (اختيارية لكن يُوصى بها بشدة) لتقييم ما إذا كانت الإيماءات المولدة تبدو مرتكزة فعلًا عند رؤيتها من منظور المستخدم.
- وحدة معالجة رسوميات تدعم CUDA إذا كنت تخطط لتشغيل نموذج التوليد محليًا؛ وإلا يمكنك النمذجة الأولية باستخدام وحدة معالجة مركزية ونموذج خفيف.
- مزوّد مشهد مكاني — يمكن أن يكون بسيطًا كقائمة JSON لأسماء الأجسام وتحويلاتها، أو معقدًا كمخطط مشهد كامل من إطار الواقع الممتد الخاص بك.
هناك تحذير مهم يجب توضيحه مسبقًا. تصف تدوينة Google Research البحثية نهج AgentHands وتقييمه، لكنها لا تنشر حزمة قابلة للتثبيت عبر pip أو نقطة تحقق (checkpoint) عامة للنموذج. لذا فإن الأوامر أدناه تُنشئ تكاملًا مرجعيًا يمكنك استخدامه لبناء البنية التحتية المحيطة، واختبار وصلات مخطط المشهد، والتحقق من خط أنابيب التقييم. تستخدم حزمًا حقيقية قابلة للتثبيت، لكنها لا تدّعي تنزيل أي قطعة أثرية خاصة بـ AgentHands.
التثبيت خطوة بخطوة
لننشئ مساحة عمل نظيفة وبيئة افتراضية. هذا يبقي التبعيات معزولة عن تثبيت Python العام.
mkdir agenthands-integration
cd agenthands-integration
python -m venv .venv
source .venv/bin/activateأمر source خاص بنظامي لينكس وماك؛ على ويندوز، استخدم .venv\Scripts\activate. بعد ذلك، قم بترقية pip وتثبيت الحزم الأساسية التي سنستخدمها أثناء التطوير.
pip install --upgrade pip
pip install numpyتمنحنا مكتبة numpy الجبر الخطي اللازم لحساب مسارات اليد كمتجهات، وهو ما سيكون مفيدًا في أمثلة الاستخدام أدناه. إذا أردت لاحقًا توصيل نموذج إيماءات حقيقي، فستحتاج على الأرجح أيضًا إلى إطار تعلم عميق.
pip install torch --index-url https://download.pytorch.org/whl/cu121يشير علَم --index-url إلى pip نحو حزم PyTorch المبنية لـ CUDA 12.1، وهو تكوين شائع للاستدلال المسرع بوحدة معالجة الرسوميات في 2026. إذا اختلفت أجهزتك أو نسخة برنامج التشغيل، فراجع دليل تثبيت PyTorch الرسمي واضبط عنوان الفهرس وفقًا لذلك. الحزمة نفسها اعتماد حقيقي واسع الاستخدام؛ وكود بحث AgentHands، إذا صدر، سيعتمد عليها على الأرجح.
الآن أنشئ بنية مشروع صغيرة للحفاظ على نقاء التكامل.
mkdir -p agenthands/{scene,gesture,avatar}
touch agenthands/__init__.py config.yamlسيحتفظ ملف config.yaml بإعدادات المشهد والنموذج. قد يبدو إعداد YAML الأدنى هكذا:
scene:
coordinate_system: "left_handed" # match your XR engine
scale: 1.0
gesture:
fps: 30
smoothing: 0.2
avatar:
id: "narrator"
hand_model: "full_hand"يحدد حقل fps عدد إطارات الإيماءات في الثانية الذي يستهدفه حلقة التوليد. إنها معلمة تصميم تختارها أنت، وليس رقمًا تدّعيه التدوينة البحثية.
أمثلة الاستخدام
الفكرة المركزية التي نريد نمذجتها أوليًا هي واجهة بسيطة: ينتج الوكيل عبارة نصية، ويزود مزوّد المشهد بقائمة من الأجسام المكانية، وتقرر وحدة الإيماءات ما يجب أن تفعله اليدان. فيما يلي وحدة Python توضيحية تبيّن شكل تلك الواجهة.
import numpy as np
class SpatialReference:
"""A named object with a 3D position and a coarse bounding box."""
def __init__(self, name, position, size):
self.name = name
self.position = np.asarray(position, dtype=float)
self.size = np.asarray(size, dtype=float)
class GestureChannel:
"""Maps an utterance plus a spatial scene to a hand gesture."""
def __init__(self, agent_position):
self.agent_position = np.asarray(agent_position, dtype=float)
def generate(self, utterance, target=None):
if target is not None:
return self._point_at(target, emphasis=0.8)
return self._beat_gesture(utterance)
def _point_at(self, target, emphasis):
direction = target.position - self.agent_position
direction /= np.linalg.norm(direction) + 1e-8
return {
"type": "POINT",
"target_name": target.name,
"direction": direction.tolist(),
"emphasis": emphasis,
}
def _beat_gesture(self, utterance):
words = len(utterance.split())
return {
"type": "BEAT",
"beat_count": max(1, int(words / 2)),
"intensity": min(1.0, words / 20.0),
}في هذا السقالة، تُنتج إيماءة POINT كلما أشار الوكيل إلى جسم معين، وتُنتج إيماءة BEAT عندما يتحدث الوكيل دون هدف مكاني. المساهمة الأساسية للتدوينة البحثية هي استبدال الطريقتين اليدويتين _point_at و_beat_gesture بنموذج توليدي تعلّمي ينتج حركة يد وأصابع مستمرة، مشروطًا بالمدخلات نفسها: نص العبارة وهندسة المشهد. الواجهة أعلاه مبسطة عمدًا، بحيث يكون استبدال نموذج تعلّمي حقيقي مسألة تنفيذ generate() كاستدعاء نموذج بدلاً من قاعدة إجرائية.
لتشغيل الوحدة، نحتاج حلقة تجريبية صغيرة تحاكي دورًا محادثيًا.
from agenthands.gesture import GestureChannel, SpatialReference
agent = GestureChannel(agent_position=(0.0, 1.6, 0.0))
mug = SpatialReference(
name="blue_mug",
position=(1.2, 1.0, -1.5),
size=(0.1, 0.12, 0.1),
)
my_utterance = "Please hand me the blue mug on the table."
gesture = agent.generate(my_utterance, target=mug)
print(gesture)تشغيل هذا سيطبع قاموسًا يصف الإيماءة المقصودة. في حلقة واقع ممتد حقيقية، سيستهلك هذا القاموس طبقة تحريك الصورة الرمزية، التي ستعيد توجيه وضع اليد ثلاثي الأبعاد إلى هيكل الصورة الرمزية وتشغّله متزامنًا مع الصوت. الرؤية الهندسية الأساسية هي أن طبقة توليد الإيماءات يجب أن تكون غير مرتبطة بالصورة الرمزية: فهي تُخرج نية مكانية، وطبقة التحريك مسؤولة عن تحقيق تلك النية في المحرك.
لتكامل أكثر واقعية، قد ترغب أيضًا في تضمين إشارة توقيت. الإيماءات البشرية متزامنة مع الكلام، لذا يجب أن تقبل وحدة الإيماءات مدخل timestamp أو speech_segment، كما هو موضح أدناه.
def generate_timed(self, utterance, audio_events, target=None):
"""
audio_events: list of (start, end, stressed) tuples.
"""
gestures = []
for start, end, stressed in audio_events:
gesture = self.generate(utterance, target=target)
gesture["start"] = start
gesture["end"] = end
gestures.append(gesture)
return gesturesهذا يجعل المحاذاة الزمنية صريحة ويعكس هدف البحث المتمثل في توليد إيماءات ليست صحيحة دلاليًا فحسب، بل متماسكة نغميًا (prosodically).
اعتبارات عملية وحدود مفتوحة
العمل مع نهج AgentHands في منتج حقيقي يعني الانتباه إلى عدة قيود تبسّطها التدوينة البحثية، مثل معظم المنشورات الأكاديمية، بالضرورة.
ميزانية زمن الوصول. يتطلب الواقع الممتد التفاعلي توليد إيماءات بمعدلات تفاعلية. إذا كان النموذج يعمل على عقدة خادم قوية، يصبح زمن رحلة الشبكة عاملًا. إذا كان يعمل على الجهاز، لديك ميزانية طاقة وحرارة محدودة. لذلك يفصل خط أنابيب عملي أنواع الإيماءات "السريعة" (الإيقاعية والإشارات البسيطة) عن الأنواع "البطيئة" (تسلسلات التعامل مع الأجسام التي تتطلب سياقًا أكبر)، ويتراجع بأمان عندما لا يستطيع النموذج مواكبة ذلك.
تمثيل المشهد. تعتمد جودة الإيماءات المرتكزة مكانيًا على مدى جودة ترميز المشهد. القائمة المسطحة من المربعات المحيطة بداية جيدة، لكن النموذج سيعمل بشكل أفضل إذا تضمن تمثيل المشهد معلومات علائقية: أي الأجسام على الطاولة، وأيها في متناول اليد، وأيها عبر الغرفة. يجب أن تصمم مزوّد المشهد ليصدر هذه العلاقات كبيانات منظمة بدلاً من توقع أن يستنتج نموذج الإيماءات من الهندسة الخام.
إعادة التوجيه (Retargeting). إيماءة مولّدة لهيكل يد عام لن تنتقل بشكل مثالي إلى كل صورة رمزية. نسب اليد وطول الأصابع وحركة الكتف تؤثر جميعها على شكل الحركة. تحتاج إلى طبقة إعادة توجيه تعين زوايا المفاصل المولدة على الهيكل المستهدف، ويجب التحقق بصريًا من أن النتيجة لا تنتج التواءً غير طبيعي أو تداخلًا ذاتيًا.
التقييم. يظل قياس جودة الإيماءات مشكلة بحثية مفتوحة. يمكن للمقاييس الموضوعية مثل انزلاق القدم، ومسافة التلامس بين اليد والجسم، والمحاذاة الزمنية مع الكلام أن تلتقط أخطاء جسيمة، لكن الدراسات الذاتية للمستخدم لا تزال ضرورية لتحديد ما إذا كانت الإيماءة طبيعية، وما إذا كانت تساعد على الفهم، وما إذا كان يُنظر إليها على أنها مرتكزة بشكل مناسب. تذكر التدوينة البحثية لمدونة Google Research نتائج تقييم في هذا السياق، لكن هذه النتائج بالطبع مرتبطة بإعدادها التجريبي الخاص؛ يجب عليك إعادة إنتاج تقييمك الخاص لصورتك الرمزية ومشهدك ومجال الحوار الخاص بك.
التعميم. النموذج المدرب على مجال محادثة واحد أو أسلوب إيماءات ثقافي واحد لن ينتقل بالضرورة إلى آخر. الإيماءات محددة ثقافيًا، وأسلوب الإشارة الذي يبدو طبيعيًا في سياق قد لا يكون كذلك في آخر. إذا كان منتجك يستهدف لغات أو ثقافات مختلفة، خطط لجمع أو تنظيم بيانات تعكس هذا التنوع، وعامل النهج المنشور كطريقة وليس كمنتج نهائي.
هناك أيضًا مشكلة الغموض الدلالي التي لا يحلها أي نموذج توليد تمامًا: يمكن لنفس الإيماءة الجسدية أن تحمل معاني مختلفة، ويمكن التعبير عن نفس المعنى بإيماءات مختلفة. يقلل النموذج من هذا الغموض بالاشتراط على العبارة، لكنه لا يستطيع إزالته. كمهندس، يجب أن تبني نظام الحوار ليكون مرنًا تجاه الإيماءات المقروءة خطأً، على سبيل المثال عن طريق تأكيد الإشارات المكانية صراحةً عندما يجعل سياق المستخدم الإشارة غامضة.
الخلاصة
يشير AgentHands إلى مستقبل لا يتحدث فيه وكلاء الواقع الممتد بشكل مقنع فحسب، بل يتحركون أيضًا بشكل مقنع. من خلال توليد إيماءات يد تفاعلية مرتكزة في المشهد ثلاثي الأبعاد الفعلي، يعالج النهج عجزًا يشعر به المستخدمون فورًا لكنهم يجدون صعوبة في التعبير عنه: أيدي الوكيل تشارك أخيرًا في المحادثة. مساهمة التدوينة البحثية هي معاملة توليد الإيماءات ليس كمسألة تشغيل، بل كمسألة توليدية ومشروطة بالمشهد وتفاعلية، وهذا التأطير مناسب تمامًا لقيود الفضاءات الغامرة.
بالنسبة للمطورين، أصبح المسار العملي أوضح الآن. تحتاج إلى مزوّد مشهد مكاني يخبر الوكيل بمكان الأشياء، ونموذج توليد إيماءات يستهلك كلاً من العبارة والسياق المكاني، وطبقة تحريك تعيد توجيه الحركة المولدة إلى صورتك الرمزية. التكامل ممكن اليوم، حتى بدون SDK رسمي. خط الأنابيب المرجعي المعروض هنا — واجهة Python نظيفة، وتمثيل مشهد، وفصل واضح بين نية الإيماءة وتحريك الصورة الرمزية — سيتيح لك إنشاء نموذج أولي للتجربة الآن وإدراج نموذج تعلّمي لاحقًا.
في المرة القادمة التي ترتدي فيها سماعة وتدخل في محادثة مع وكيل، انتبه إلى يديه. إذا أشار إلى الجسم الفعلي الذي يصفه، في اللحظة المناسبة، وبطريقة تطابق إيقاع كلامه، فأنت تنظر إلى ثمرة توليد الإيماءات المرتكزة مكانيًا. AgentHands خطوة مهمة نحو جعل هذا السلوك هو القاعدة وليس الاستثناء.



