ابدأ
إذا كنت تُعد وكيلاً للمرة الأولى، ثبّت Youka CLI أولاً، ثم ثبّت مهارة Youka karaoke:اطلب من وكيلك
بعد تثبيت CLI والمهارة، يمكنك إعطاء وكيلك مهمة مباشرة مثل هذه:قواعد التشغيل
استخدم --json دائمًا
على CLI، مرّر دائمًا
--json. وفي API، اضبط دائمًا Accept: application/json. لا تقم أبدًا بتحليل مخرجات موجهة للبشر.أرسل دائمًا مفتاح idempotency
يجب أن تحمل كل عملية كتابة مفتاح idempotency ثابتًا حتى تعيد المحاولات بعد انتهاء المهلة
النتيجة الأصلية بدلًا من تكرار العمل.
أعد قراءة الحالة الدائمة
لا تثق باستجابات التعديل القديمة. بعد مهمة نهائية، أعد قراءة
المشروع أو التصدير للحصول على الحالة النهائية.
استطلع مع التراجع التدريجي
ابدأ بفاصل 2–3 ثوانٍ. زد الفاصل أُسّياً للوظائف الطويلة.
احترم استجابات 429.
عقد المخرجات
كل أمر CLI في وضع--json يكتب ظرفًا واحدًا فقط إلى stdout.
نجاح:
| Code | Meaning | Retry? |
|---|---|---|
0 | نجاح. | N/A |
1 | خطأ وقت التشغيل (شبكة، API، تصيير). | تحقق من error.retryable. |
2 | إدخال غير صالح (خيارات سيئة، حمولة غير قابلة للقراءة). | لا — أصلح الإدخال. |
سير عمل من البداية إلى النهاية
سير عمل الوكيل القياسي هو: إنشاء مشروع، الانتظار، التصدير، تنزيل النتيجة. إليك النمط الكامل مع تنفيذين لكل من CLI وSDK.إرشادات الاستطلاع
تعيد معظم عمليات الكتابة مقابض عمليات في SDK. فضّلclient.projects.wait(...) وclient.exports.wait(...)، ولا تنزل إلى client.tasks.* إلا عندما تحتاج صراحةً إلى وصول منخفض المستوى للمهام.
| Job type | Recommended initial interval | Max wait |
|---|---|---|
| Project create (stems + lyrics sync) | 3 s | 15 min |
| Stem separation only | 3 s | 10 min |
| Lyrics sync only | 2 s | 5 min |
| Export render | 3 s | 30 min |
--wait الاستطلاع نيابةً عنك. على SDK، تستخدم دوال الانتظار المساعدة فاصلًا افتراضيًا قدره 2 s وتقبل pollIntervalMs.
مفاتيح idempotency
كل عملية إنشاء وتحديث تدعم مفتاح idempotency. القواعد:- استخدم مفتاحًا ثابتًا وفريدًا وحتميًا لكل تعديل منطقي. جيد:
create-song-${sourceHash}. سيئ: UUID جديد لكل إعادة محاولة. - أعد استخدام المفتاح نفسه عبر إعادة المحاولات. يتعرف الخادم على الإعادة ويعيد النتيجة الأصلية.
- المفاتيح بنطاق كل حساب وتنتهي صلاحيتها بعد 24 ساعة.
- إذا أعاد الخادم
IDEMPOTENT_REPLAY_IN_PROGRESS(HTTP 202)، فالطلب الأصلي ما يزال يعمل. انتظر وأعد المحاولة بالمفتاح نفسه.
استعادة الأخطاء
تفرّع بناءً علىerror.code وerror.retryable. الحالات الشائعة:
| Code | Cause | Action |
|---|---|---|
INVALID_REQUEST | فشل جسم الطلب في التحقق من مخطط البيانات. | أصلح الحمولة. بلا إعادة محاولة. |
UNAUTHORIZED | مفتاح API مفقود أو غير صالح. | اعرضه على المستدعي. بلا إعادة محاولة. |
NOT_FOUND | المورد غير موجود أو لا تملك صلاحية الوصول. | بلا إعادة محاولة. |
CONFLICT (409) | تعارض إصدار أو تصادم idempotency. | أعد المحاولة باستخدام مفتاح idempotency نفسه. |
TOO_MANY_REQUESTS (429) | حد المعدّل. | تراجع وفق Retry-After أو 30 s. |
INTERNAL_SERVER_ERROR (500) | فشل خادم عابر. | أعد المحاولة حتى 3 مرات مع تراجع تدريجي. |
IDEMPOTENT_REPLAY_IN_PROGRESS (202) | طلب سابق ما يزال قيد التشغيل. | انتظر وأعد المحاولة بالمفتاح نفسه. |
TASK_FAILED | انتهت المهمة غير المتزامنة بفشل. | اعرض error.task.error على المستدعي. بلا إعادة محاولة. |
TASK_TIMED_OUT | تجاوزت المهمة غير المتزامنة ميزانيتها. | آمن لإعادة المحاولة مرة واحدة. |
اكتشاف الحقول القابلة للتعديل
قبل تعديل presets، اجلب مخطط preset حتى يعرف النموذج الحقول الصالحة وأنواع القيم:youka project settings <id> --body ....
اجلبه مرة واحدة لكل جلسة وكيل وخزّن النتيجة مؤقتًا.
وكلاء متوازيون
عندما يعمل عدة وكلاء بالتوازي على الحساب نفسه:- اجعل مفاتيح idempotency بنطاق كلٍ من هوية الوكيل والتعديل المنطقي:
agent-${agentId}-create-${sourceHash}. يمنع ذلك اصطدام إعادة محاولة وكيل بطلب جديد لوكيل آخر. - اترك القراءات دون قيود — طلبات
GETرخيصة ولا آثار جانبية لها. - استخدم قائمة انتظار واحدة لـ
POST /projects/{projectId}/exportsلكل مشروع إذا كنت تحتاج سجل تصدير مرتب. وإلا فقد تصل عمليات التصدير بترتيب غير متوقع.
ما التالي
- CLI global options — كل الرايات المتاحة للوكلاء
- SDK errors — مرجع كامل لفئات الأخطاء
- API async jobs — عقد الاستطلاع
- API idempotency — عقد idempotency
