التسجيل الذاتي للوكيل: بيئة اختبار في Shager باستدعاء واحد، وزر النشر يبقى بيد إنسان
يستطيع الوكيل فتح بيئة اختبار في Shager بطلب POST واحد. إليك الاستدعاء، وما تسمح به البيئة، وخطوة تولّي الملكية، وكيف تُمنح صلاحية النشر.

يستطيع وكيل الذكاء الاصطناعي التسجيل في Shager بنفسه بطلب واحد: POST https://app.shager.ai/api/v1/agent/signup مع جسم JSON يتضمن agent_name على الأقل. يتلقى في المقابل مفتاح API ورابط MCP ورابط تولّي الملكية، ويستطيع فورًا إنشاء مساحات عمل واستيراد وسائط وكتابة مسودات منشورات. ولا يُجدوَل أي شيء ولا يُنشر إلى أن يفتح إنسان رابط تولّي الملكية، ويسجّل الدخول، ويقرر هل يحق لهذا المفتاح النشر.
هذا الفصل هو جوهر التصميم كله. الوكيل لا يتعطل في انتظار شخص، والشخص يحتفظ بالقرار الذي يمس جمهورًا حقيقيًا.
لماذا نسمح للوكيل بتسجيل نفسه أصلًا؟
لأن البديل يقطع سير عمل الوكيل. الوكيل الذي يُطلب منه «إعداد توزيع المحتوى لعميلنا» يصطدم بجدار من الخطوة الأولى إن كان الطريق الوحيد للدخول أن يملأ إنسان نموذج التسجيل، ويؤكد بريده، وينشئ مفتاحًا في لوحة التحكم. وحين ينتهي أحدهم من ذلك، يكون سياق الوكيل قد ضاع.
مع التسجيل الذاتي يُنجز الوكيل الأساسات وحده: ينشئ مساحة عمل لكل عميل، ويجلب الوسائط، ويكتب مسودات المنشورات، ويسلّم الإنسان رابطًا واحدًا وكل شيء جاهز للمراجعة. وصفة التسجيل منشورة للوكلاء في /auth.md، وصفحة الوكلاء تسرد ملفات الاكتشاف التي يمكن للوكيل قراءتها قبل أن يبدأ.

كيف يبدو استدعاء التسجيل؟
الحقل الإلزامي الوحيد هو agent_name (من 2 إلى 80 حرفًا). أما بقية الحقول فتساعد الإنسان على التعرّف إلى ما يتولّى ملكيته.
curl -s https://app.shager.ai/api/v1/agent/signup \
-H "Content-Type: application/json" \
-d '{
"agent_name": "Northwind content agent",
"contact_email": "ops@northwind-agency.example",
"organization_name": "Northwind Agency",
"purpose": "Draft weekly posts for 12 restaurant clients"
}'
يغلّف الرد كل شيء داخل data:
{
"data": {
"api_key": "shgr_live_...",
"organization_id": "...",
"sandbox": true,
"claim_url": "https://app.shager.ai/...",
"expires_at": "2026-09-19T10:04:11.000Z",
"mcp_url": "https://app.shager.ai/api/mcp",
"api_base": "https://app.shager.ai/api/v1",
"openapi_url": "https://app.shager.ai/api/v1/openapi.json",
"limits": { "workspaces": 5, "requests_per_minute": 120, "publishing": "after a human claims the sandbox" },
"next_steps": ["..."]
}
}
حقلان يحتاجان إلى معالجة فورية.
api_keyيظهر مرة واحدة فقط. احفظه قبل أي شيء آخر، في مخزن أسرار أو متغير بيئة، ولا تكتبه أبدًا في سطر سجل.claim_urlيذهب إلى إنسان. إن مرّرتcontact_email، يرسل Shager رابط تولّي الملكية إلى ذلك البريد أيضًا، لكن على الوكيل أن يعرضه في رده هو كذلك.
التسجيلات محدودة بخمس في الساعة لكل عنوان، وهذا يمنع الوكيل العالق في حلقة من إنشاء عشرات بيئات الاختبار اليتيمة.
ماذا تستطيع بيئة الاختبار قبل تولّي ملكيتها؟
| مسموح قبل تولّي الملكية | ممنوع حتى يتولى إنسان الملكية |
|---|---|
| إنشاء حتى 5 مساحات عمل | جدولة أي شيء أو نشره |
| رفع الوسائط من روابط | إنشاء روابط الربط للعملاء |
| إنشاء مسودات منشورات | إرسال طلبات موافقة إلى العملاء |
| عرض وقراءة كل ما أنشأته |
الاستدعاءات الممنوعة تفشل برسالة خطأ واضحة، لا بتجاهل صامت. محاولة الجدولة تعيد HTTP 403 مع "code": "sandbox_unclaimed"، والأمر نفسه مع create_connect_link وrequest_approval. ومساحة العمل السادسة تعيد 403 sandbox_limit. الوكيل الجيد يقرأ code ويخبر الإنسان بما يلزم، بدل أن يعيد المحاولة.
سبب منع روابط الربط وطلبات الموافقة أن كليهما يصل إلى أشخاص حقيقيين خارج الوكالة: عميل ينقر رابطًا ليربط صفحته على Facebook، أو مراجِع يتلقى بريد طلب موافقة. ولا ينبغي أن يحدث ذلك باسم مؤسسة لم يتحقق منها أحد.
جلسة أولى معقولة في بيئة الاختبار
هذا ما يفعله وكيل حسن التصرف في دقائقه الأولى، بلغة Python مع requests:
import os, requests
API = "https://app.shager.ai/api/v1"
H = {"Authorization": f"Bearer {os.environ['SHAGER_API_KEY']}"}
def call(method, path, **body):
r = requests.request(method, f"{API}{path}", headers=H, json=body or None, timeout=60)
payload = r.json()
if not r.ok:
err = payload["error"]
raise RuntimeError(f"{r.status_code} {err['code']}: {err['message']}")
return payload["data"]
me = call("GET", "/me")
print(me) # organization, scopes, sandbox status
ws = call("POST", "/workspaces", name="Harbor Tacos", timezone="America/Chicago")
media = call("POST", f"/workspaces/{ws['id']}/media",
url="https://harbortacos.example/press/fall-menu.jpg",
file_name="fall-menu.jpg")
print("Workspace", ws["id"], "media", media["id"], media["kind"])
مرّر timezone صراحةً حين تنشئ مساحة عمل. إنه اسم منطقة زمنية وفق IANA، والجدولة لاحقًا تُفسَّر بتلك المنطقة، فمطعم في شيكاغو لا ينبغي أن يرث المنطقة الافتراضية لشخص آخر.
في هذه المرحلة لا توجد حسابات اجتماعية مربوطة بعد، لأن ربط الحسابات يتطلب رابط ربط، ورابط الربط يتطلب تولّي الملكية. الوكيل يجهّز المحتوى والهيكل، والإنسان يفتح الباب لما تبقى.

ماذا يحدث حين يتولى الإنسان الملكية؟
يفتح الإنسان claim_url، ويسجّل الدخول إلى Shager (أو ينشئ حسابًا)، ويتولى ملكية بيئة الاختبار مع مساحات العمل والوسائط والمسودات التي جهّزها الوكيل. وخلال ذلك يختار هل يحق لمفتاح الوكيل الجدولة والنشر أيضًا، وهو ما يضيف صلاحية publish.
هذا الخيار يستحق لحظة تفكير. ترك publish غير مفعّلة إعداد ممتاز على المدى الطويل: الوكيل يكتب المسودات، والإنسان أو العميل يوافق ويجدول. كثير من الوكالات تبدأ من هنا، ثم تضيف لاحقًا مفتاح نشر منفصلًا من https://app.shager.ai/dashboard/agents، حيث يمكن إلغاء أي مفتاح، ويظهر كل استدعاء للوكيل في سجل التدقيق. والموازنة بين هذين الإعدادين مشروحة في روتين التوزيع الأسبوعي.
بعد تولّي الملكية، تكون الخطوات التالية التي تقترحها الواجهة نفسها مباشرة: استدعِ create_connect_link كي يربط صاحب الحساب حساباته الاجتماعية (Facebook أو Instagram أو YouTube أو X أو LinkedIn أو TikTok) من دون تسجيل الدخول إلى Shager، ثم create_post، وإن كان المفتاح يملك publish، فـ schedule_post.
ماذا لو لم يتولَّ أحد الملكية؟
تنتهي صلاحية بيئات الاختبار التي لم تُتولَّ ملكيتها بعد سبعة أيام، في الموعد المذكور في expires_at، وتُحذف معها المسودات ومساحات العمل. على الوكيل الذي يعمل على مشروع أطول أن يذكّر الإنسان قبل ذلك الموعد، وألا يرد على انتهاء الصلاحية بالتسجيل مرة بعد مرة، فبيئة الاختبار الجديدة لا تحمل المسودات القديمة.
كيف يصوغ الوكيل رسالة التسليم؟
بوضوح، مع الرابط والعواقب. شيء من هذا القبيل:
I set up a Shager sandbox for Northwind with 3 client workspaces and
9 draft posts. To connect the clients' accounts and publish, open this
link and sign in: <claim_url>
When you claim it you can choose whether I'm allowed to schedule posts
myself. If you don't claim it by Sep 19, the sandbox and drafts are deleted.
هذه الرسالة صادقة بشأن ما أُنجز، وما ينتظر، وما يتحكم فيه الإنسان. وهي أيضًا الرسالة الأرجح أن يُنقر رابطها.
الأسئلة الشائعة
هل للتسجيل الذاتي أي تكلفة؟
لا. بيئة الاختبار مجانية، وخلال فترة الإطلاق يبقى Shager مجانيًا بعد تولّي الملكية أيضًا، من دون بطاقة، وقبل أن نبدأ في التحصيل سنخبرك مسبقًا. الوصول إلى API وMCP مشمول في كل باقة. وحدود الباقات في صفحة الأسعار.
هل يستطيع الوكيل استخدام MCP بدل REST بعد التسجيل؟
نعم. يتضمن الرد mcp_url، والمفتاح نفسه يعمل بصيغة Authorization: Bearer shgr_live_... على خادم MCP. والأدوات تقابل عمليات REST واحدًا لواحد كما يصفها مستند OpenAPI.
هل يمكن لمفتاح بعد تولّي ملكيته أن ينشر من دون أن يرى إنسان المنشور؟
فقط إذا منح الإنسان صلاحية publish أثناء تولّي الملكية، ولم تكن مساحة العمل تشترط موافقة العميل. كلا الأمرين قرار الإنسان، ويمكن تغييرهما لاحقًا: يمكن إلغاء المفاتيح من لوحة التحكم، ويمكن اشتراط الموافقة لكل مساحة عمل.
الخطوة التالية
بعد تولّي ملكية بيئة الاختبار وربط الحسابات، انتقل من الاستكشاف إلى تشغيل كامل. يبدأ خط محتوى الوكيل من البداية إلى النهاية من حيث ينتهي هذا المقال تمامًا، من الموجز إلى المنشورات المنشورة والنقرات لكل حساب.


