طبقة القبول لأعمال الوكلاء الأذكياء على نطاق واسع
يشحن الوكلاء الأذكياء عملاً أسرع مما تستطيع أيُّ فرقٍ مراجعته. يُقيّم ناقد SeaOtter كل مُخرَج ويدفع بتصحيحات حتى يجتاز سياستكم — وكيل ذكي↔ناقد، بسرعة الآلة.
على نطاق الوكلاء الأذكياء
يُرسل وكيل ذكي عملاً للتقييم. يُوَجِّه إلى تمريرة أحادية سريعة — أو فحص وكيلي عميق يشغّل العمل في بيئة معزولة ويفحصه. يقرر نموذج ناقد عدائي، وتدفع مقابل الحوسبة التي استهلكها. ثم تراجع المشهد: آلاف الوكلاء الأذكياء، مُقيّمون بالتوازي، متزامناً أو غير متزامن.
تغذية راجعة مُحَلْيَة
لا يكتفي الناقد بالقول إن هناك خطأ. إنّه يحدد موضع المشكلة كي يراجع الوكيل الذكي السطر أو الصفحة أو الشريحة أو الخلية أو الإطار أو الطابع الزمني الذي فشل تحديداً.
"قد تكون هناك مشكلة ما في هذا المُخرج."
hallucinated_api · عالية
self.tasks.add_item(task)add_item ليست طريقة صالحة على list، لذا سيتسبب هذا بخطأ وقت التشغيل. المتوقع self.tasks.append(task).
قراءة مبكرة، متحققة عبر عينة محجوزة، لقدرة ناقدنا على تثبيت المدى الدقيق وتسميه الملف. لا يزال الاكتشاف قيد التدريب النشط؛ الادعاء هنا يتعلق بجودة التوطين، لا النقد العام.
إرسال → تقييم
يُجري وكيل ذكي طلب POST للعمل الذي أنتجه للتو، وتُقيّمه SeaOtter مقابل سياسة القبول لديك. الفحوصات الصغيرة والسريعة تُرجع الحكم ضمن الاستجابة. الفحوصات الأثقل تُرجع معرّف مهمة يستطلعُه الوكيل الذكي أو يبثه أو يتلقّاه عبر webhook — بحيث لا يحجب فحصٌ طويل الوكيلَ الذي طلبه.
للأشخاص
أرسل العمل إلى صندوق SeaOtter لتحصل على ردّ OtterScore مُقيّماً، أو الصقه على الويب وقيّمه في المتصفح. لا حاجة لوكيل ذكي.
للوكلاء الأذكياء
أوصل أي وكيل ذكي عبر HTTP أو MCP ليُقيّم مُخرجاته داخل الحلقة — السياسة نفسها وOtterScore نفسه، بسرعة الآلة. دليل البدء خلال 60 ثانية أدناه مباشرة.
متزامن
أرسل العمل عبر POST، واحتفظ بالاتصال، واحصل على حكم OtterScore — النطاق والعيوب والمؤشرات الموضعية والتحسينات — في الاستجابة نفسها. الأفضل لفحص أحادي ضمن الحلقة الداخلية لوكيل ذكي حيث يحتاج الوكيل الإجابة قبل خطوته التالية.
POST /api/v1/eval/score → 200 { band, flaws[], upgrades[] }
غير متزامن
أرسل العمل عبر POST، واحصل فوراً على معرّف مهمة، ثم استطلع المهمة أو اشترك في تدفق النتيجة أو سجّل webhook. الأفضل لفحص وكيلي يشغّل العمل في بيئة معزولة عبر عدة تمريرات — الوكيل المنتج يتابع ويُستدعى عند صدور الحكم.
POST /api/v1/eval/jobs → 202 { job_id } · استعلام · بث (SSE) · webhook
متزامن · أحادي
تمرير ناقد عدائي واحد، يُعاد ضمن الاستجابة. منخفض وبتسعير ثابت.
curl -s https://dev-api.seaotter.ai/api/v1/eval/score \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "mode":"one_shot", "modality":"text",
"policy_id":"acme-prod-acceptance",
"artifact_parts":[{"mime_type":"text/plain","text":"..."}] }'
# 200 { "band":"route_to_fix", "flaws":[...], "upgrades":[...] }غير متزامن · وكيلي
يشغّل الناقد العمل في بيئة معزولة ويفحصه عبر عدة تمريرات.
POST /api/v1/eval/jobs
{ "mode":"agentic", "modality":"code",
"policy_id":"acme-prod-acceptance",
"artifact_ref":"gs://...", "max_passes":6,
"webhook":"https://acme.internal/otter-callback" }
# 202 { "job_id":"job_8f21", "status":"running" }
GET /api/v1/eval/jobs/job_8f21 # poll, or stream, or await the webhookنفس السياسة، ونفس OtterScore، ونفس سجل التدقيق الموقّع — أيّاً كان النقل الذي يختاره الوكيل الذكي.
للوكلاء الأذكياء · البدء السريع MCP
ثلاث خطوات: أنشئ مفتاحاً، أضف خادماً واحداً لـ MCP، ثم يستدعي وكيلك otter_score / otter_iterate داخل حلقته — OtterScore نفسه وسياسة القبول ذاتها، بسرعة الآلة. الناقد يُقيّم؛ ووكيلك يُراجع وفق العيوب حتى يجتاز النطاق البوابة. هذه هي الحلقة التي شاهدتها في الأسطول أعلاه: كل مُخرج مُعلّم (route_to_fix، القوس الكهرماني) يُعاد إدخاله عبر otter_iterate ولا يُشحن إلا عندما تكون ready_to_ship = true. لا بشري في الحلقة الداخلية — التوقيع الاسمي هو البوابة الأخيرة، لا الوحيدة.
ينشئ مستخدم مؤسسي موقّع مفتاح تقييم الوكيل مرة واحدة. يُعرض سر sk-otter-… مرة واحدة فقط؛ سلّمه للوكيل.
أدرج خادماً واحداً otterloop في .mcp.json (Claude / Cursor) أو config.toml (Codex). يحصل الوكيل على أدوات ناقد للقراءة فقط يمكنه اعتمادها آلياً.
يُرسل الوكيل العمل، ويقرأ العيوب المُثبتة، ويُراجع، ويُعيد الإرسال — ويستمر بالدوران بينما ready_to_ship = false. اجتياز الناقد هو المُنتَج.
1 — تسجيل
POST /api/v1/agent-keys برمز JWT لمستخدم مسجّل. يُعاد السر مرة واحدة — أو انقر "Generate eval API key" في وحدة المطوّر.
curl -s -X POST https://dev-api.seaotter.ai/api/v1/agent-keys \
-H "Authorization: Bearer $SEAOTTER_USER_JWT" \
-H 'Content-Type: application/json' \
-d '{"name":"my-agent"}'
# -> { "id":"...", "key":"sk-otter-...",
# "key_prefix":"sk-otter-abcde", "created_at":"..." }
# سلّم `key` للوكيل كـ OTTERLOOP_API_KEY.2 — أضف خادم MCP
.mcp.json (Claude / Cursor) — يستخدم Codex [mcp_servers.otterloop] في config.toml. ثبّت مرة: pip install "otterloop[mcp]". قاعدة الإنتاج: https://api.seaotter.ai.
{
"mcpServers": {
"otterloop": {
"command": "python",
"args": ["-m", "otterloop.mcp_server"],
"env": {
"OTTERLOOP_API_URL": "https://dev-api.seaotter.ai",
"OTTERLOOP_API_KEY": "sk-otter-...",
"OTTERLOOP_POLICY_ID": "enterprise-default"
}
}
}
}
# الأدوات: otter_list_policies · otter_score · otter_iterate
# otter_score_workflow · otter_get_feedback_artifact3 — قيِّم وكرّر
يشغّل الوكيل الإرسال → العيوب → المراجعة → إعادة الإرسال كلياً عبر MCP. اعتبر الحكم مُلزِماً — لا تُقيِّم نفسك.
# أرسل عملك -> حكم مُلزِم
v = otter_score(
work="...the artifact your agent produced...",
modality="text",
prompt="Draft the Q3 incident postmortem",
policy_id="enterprise-default")
# -> { run_id, score, band:"route_to_fix",
# flaws:[{criterion,severity,detail,anchor}],
# upgrades:[...], ready_to_ship:false }
# راجع مقابل flaws[]/upgrades[]، ثم أعد إرسال نفس التشغيل
d = otter_iterate(
run_id=v["run_id"],
work="...revised draft addressing the flaws...",
prompt="addressed sourcing + tone")
# -> { run_id, verdict:{band:"ship",...},
# delta:{resolved_flaws,new_flaws,persisted_flaws,
# score_change:+18.0}, ready_to_ship:true }
# استمر بالتكرار ما دامت ready_to_ship = false.كرّر → تتقارب
ما يُعيده otter_iterate — التقارب نفسه من route_to_fix → ship الذي يصوّره الأسطول أعلاه، مجمّداً كفروقات مقروءة.
resolved_flaws ↓ 2 · score_change ↑ +18.0 · ready_to_ship → true
المكافئ عبر HTTP فقط (بدون MCP): POST /api/v1/eval/runs → { run_id, first_iteration.critic_verdict }، ثم POST /api/v1/eval/runs/{run_id}/iterate { "decision":"re_prompt", "new_artifact_parts":[…] } → { verdict, delta }. أي انقطاع في الناقد يفشل مغلقاً (band:quarantine) — لا مرور صامت أبداً.
نَمَطان من الفحص
ليست كل المخرجات بحاجة إلى نفس مستوى التدقيق. الفحص الأحادي تمريرة ناقد عدائية واحدة — سريع، قليل الحوسبة، يُعاد ضمن الاستجابة. الفحص الوكيلي يشغّل العمل في بيئة معزولة قادرة على الوصول للإنترنت ويفحصه عبر عدة تمريرات — أبطأ، أكثر حوسبة، يُعاد بشكل غير متزامن. وجّه الأعمال الرخيصة إلى الفحص الأحادي والأعمال عالية المخاطر إلى الفحص الوكيلي، على السياسة نفسها.
| أحاديتمريرة عدائية واحدة | وكيليبيئة معزولة، عدة تمريرات | |
|---|---|---|
| ما يفعله الناقد | يقرأ المُخرج والسياسة والموجه والمراجع في تمريرة واحدة. | يشغّل العمل في بيئة معزولة يمكن التخلص منها ويفحصه عبر عدة تمريرات. |
| الكمون | ضمن الاستجابة — الحكم في الرد. | غير متزامن — معرّف مهمة، ثم استعلام أو بث أو webhook. |
| الحوسبة | منخفضة ومتوقعة. | أعلى — يتناسب مع عدد التمريرات ووقت البيئة المعزولة. |
| الأفضل لأجل | فحوصات الحلقة الداخلية، المسودات عالية الحجم، البوابات السريعة. | شيفرة يجب تشغيلها، ادعاءات يجب إعادة إنتاجها، أعمال ذات أثر واسع. |
| الفوترة | رخيص، بسعر ثابت لكل فحص. | مقاس حسب الحوسبة ووقت البيئة المعزولة. |
كلا النمطين يُعيدان شكل حكم OtterScore نفسه ويكتبان سجل التدقيق الموقّع نفسه.
تسعير قائم على الاستخدام
تُحاسَب على التقييم الذي تُشغِّله فعلياً، لا على عدد المقاعد. الفحص الأحادي رخيص وبتسعير ثابت؛ الفحص الوكيلي مقاس حسب الحوسبة ووقت البيئة المعزولة الذي يستغرقه. هذا ما يجعل تقييم كل مُخرج — وكل الأسطول — اقتصادياً، بدلاً من تقنين المراجعة على عينة.
فحص أحادي
رخيص، بسعر ثابت
لكل فحص، ثابت
تمريرة ناقد عدائية واحدة، تُعاد ضمن الاستجابة. مُسعَّرة بما يكفي للجلوس داخل الحلقة الداخلية لكل وكيل ذكي وتقييم المسودات عالية الحجم.
فحص وكيلي
مقاس حسب الحوسبة
مقاس حسب الحوسبة + وقت البيئة المعزولة
مراجعة متعددة التمريرات في بيئة معزولة. تدفع مقابل التمريرات ووقت البيئة الذي يحتاجه العمل فعلياً — احتفظ به للمخرجات عالية المخاطر حيث يبرر تكلفته.
يظل النشر المؤسسي التشغيل الموازي → فرض → مُدار؛ ويقيس التسعير القائم على الاستخدام العملَ في الأسفل. عرض تكلفة مفصل متاح عند الطلب.
OTTERLOOP INFRA
أي وكيل ذكي يُخرج عملاً: شيفرة، نص، صورة، عرض، ورقة عمل، فيديو، أو مسار كامل.
تُقيّمه SeaOtter مقابل المصفوفة الصحيحة وحاجز المؤسسة المكيّف.
يعود الحكم بعيوب وتحسينات ومؤشرات موضعية يمكن للوكيل الذكي استهدافها مباشرة.
يُعيد الوكيل الذكي كتابة المُخرج أو الخطوة التالية باستخدام دفع الناقد العكسي.
تتوقف الحلقة فقط عندما يجتاز النطاق البوابة وتُكتب أدلة التدقيق.
MCP
أدرجه في `.mcp.json` أو `config.toml` لـ Claude أو Codex أو Cursor أو بيئة تشغيل مخصصة.
{ "mcpServers": { "otterloop": {
"command": "python", "args": ["-m", "otterloop.mcp_server"],
"env": { "OTTERLOOP_API_URL": "https://dev-api.seaotter.ai",
"OTTERLOOP_API_KEY": "sk-otter-...",
"OTTERLOOP_POLICY_ID": "acme-prod-acceptance" } } } }curl
أي بيئة تشغيل تتحدث HTTP يمكنها التقييم مرة واحدة أو البقاء في الحلقة.
curl -s https://dev-api.seaotter.ai/api/v1/eval/feedback \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "modality":"text", "policy_id":"acme-prod-acceptance", "locale":"ja",
"prompt":"Draft the Q3 incident postmortem",
"artifact_parts":[{"mime_type":"text/plain","text":"..."}],
"return_feedback_artifacts": true }'Python SDK
نداء حلقة واحد يقود الإنتاج → التقييم → المراجعة حتى يقول الناقد «اشحن».
from otterloop import OtterLoopClient otter = OtterLoopClient(policy_id="acme-prod-acceptance", locale="ja") final = otter.loop(produce=lambda feedback: my_agent.revise(feedback), work=my_agent.first_draft(), modality="document", references=["file://brand-guide.pdf", "file://gold-postmortem.md"], max_rounds=5, target_band="ship")