
أتمتة المتصفح، وزحف الويب، والتحكم في أجهزة iOS وAndroid لوكلاء الذكاء الاصطناعي. لقطات CDP أصلية بلغة Zig وفعّالة من حيث استهلاك الرموز، وتسجيل HAR، وعميل أصلي لبروتوكول adb السلكي، وجالب مستقل.
curl -fsSL https://kuri.trilok.ai/download | sh
macOS arm64/x86_64 و Linux x86_64/arm64. ملف تنفيذي واحد، بدون تبعيات وقت التشغيل.
تنزيلات مباشرة: macOS arm64 · macOS x86_64 · Linux x86_64 · Linux arm64
أتمتة المتصفح والزحف إلى الويب لوكلاء الذكاء الاصطناعي. مكتوب بلغة Zig. بدون Node.js.
أتمتة CDP · لقطات A11y · تسجيل HAR · مُجلب مستقل · متصفح طرفي تفاعلي · واجهة سطر أوامر وكيلية · اختبار أمني · التحكم بأجهزة iOS + Android
البدء السريع · المقاييس · kuri-agent · الاختبار الأمني · واجهة API · المهارات · سجل التغييرات
لماذا تنتقل الفرق إلى Kuri: تبقى إصدارات
ReleaseFastالحالية لمعالجات Apple Silicon دون 2 ميغابايت لكل ملف تنفيذي، وقد قاس تشغيل جديد لـ Google Flights في 2026-04-23 3,392 رمزًا لحلقةkuri-agentكاملة (go→snap→click→snap→eval). يجب إعادة تشغيل فروقات الأدوات المتقاطعة في نفس البيئة قبل الاقتباس بنسبة مئوية.
صُممت معظم أدوات المتصفح لمهندسي ضمان الجودة. أما Kuri فمصمم لحلقات الوكلاء: اقرأ الصفحة، أبقِ تكلفة الرموز منخفضة، تصرّف بناءً على مراجع مستقرة، ثم تابع.
@eN والعرض بدون بادئة./page/state (48 رمزًا) مقابل اللقطة الكاملة (2,124 رمزًا) لنفس صفحة Google Flights.POST /batch عدد N من الأوامر في نداء HTTP واحد، مما يلغي N-1 من الرحلات ذهابًا وإيابًا و N-1 من دورات LLM.onClick و onChange في React 18/19.SIN → TPEتشغيل جديد في 2026-05-24 في مساحة العمل هذه، مقيس بـ wc -c وتقريب chars/4.
| الأداة / الوضع | الأحرف | ~الرموز | ملاحظة |
|---|---|---|---|
kuri snap (كامل) | 8,499 | 2,124 | جميع العقد + المراجع التفاعلية |
kuri snap (التفاعلية فقط) | ~3,000 | ~750 | الأفضل لحلقات الوكلاء |
kuri /page/state | 190 | 48 | ملاحظة خفيفة (url، title، scroll%، الأعداد) |
| agent-browser snap (تقديري) | ~9,183 | ~2,295 | عبء صيغة [ref=e0] |
| الصفحة | رموز kuri | رموز agent-browser | التوفير |
|---|---|---|---|
| example.com | 40 | 35 | -13% (صفحة تافهة، agent-browser يتخطى الجذر) |
| Hacker News | 386 | ~440 | أقل بنسبة 12% |
| Google Flights SIN→TPE | 2,124 | ~2,295 | أقل بنسبة 7% |
يأتي التوفير من صيغة kuri المضغوطة:
@e0 (3 أحرف) مقابل [ref=e0] (9 أحرف)- لكل سطر (توفير حرفين × عدد الأسطر)go → snap → click → snap → eval| الأداة | الرموز لكل دورة |
|---|---|
| kuri-agent | ~3,400 |
مع /page/state بدلًا من اللقطة الثانية | ~1,700 |
مع POST /batch (الكل في نداء واحد) | ~1,700 (نفس الرموز، نداء HTTP واحد بدلًا من 5) |
libretto (Playwright + Node) هو أقرب منافس في تكلفة الرموز لكل خطوة. قيس وجهًا لوجه في 2026-07-04 — نفس Chrome، نفس التبويب، أعداد tiktoken o200k_base حقيقية (المنهجية الكاملة وإعادة الإنتاج: benchmarks/libretto_comparison.md). التقسيم الصادق:
| المحور | الفائز | التفصيل |
|---|---|---|
| زمن الاستجابة لكل نداء | kuri | 4–117 مللي ثانية مقابل 1,344–1,500 مللي ثانية (أسرع بـ 13–376 ضعفًا — خادم دائم مقابل Node لكل أمر) |
| رموز اللقطة، صفحة نموذجية | kuri | بسيطة 61 مقابل 151 (2.5×)، مقال 265 مقابل 363 (1.37×) — قواعد أكثر إحكامًا |
| رموز اللقطة، قائمة كبيرة | منقسم | kuri الافتراضي 4,424 مقابل 813 — kuri يصدر جميع المراجع الـ 259، وlibretto يقتطع افتراضيًا. مع limit=5 يعرض kuri 555 رمزًا (1.46× أقل من libretto)، 34 مرجعًا + علامات … +45 more |
| المسار (تغذية، 9 نقرات) | kuri، بالكاد | 898 مقابل 939 رمزًا (قاعدة limit=5 + حلقة الفرق مقابل حلقة التنفيذ) — تكافؤ إلى أفضلية طفيفة؛ خسارة الصباح بـ 5.1× كانت القاعدة غير المقتطعة |
| التشغيلات المتكررة | libretto | يترجم المسارات إلى سكربت Playwright → إعادات تشغيل بـ 0 رمز؛ kuri يعيد دفع الحلقة في كل تشغيل |
ما كسبه kuri من دراسة libretto (كله صدر في هذا الإصدار): حلقة الفرق أولًا (take_snapshot_diff، ~38 رمزًا/خطوة)؛ فرق تكيفي يتراجع إلى لقطة كاملة مع ترويسة ! page replaced عند التنقل؛ أسطر إزالة للهوية فقط؛ لقطات شاشة تُكتب على القرص (يُعاد المسار، ولا تدخل البايتات السياق أبدًا)؛ get_page_state عبر MCP؛ وبعد إعادة كتابة parseA11yNodes كمشي شجرة DFS حقيقي — اقتطاع القوائم الاختياري (/snapshot?limit=N، سطر … +K more واحد لكل تشغيل مقتطع)، إعادة الالتقاط النطاقي (scope=@ref)، وإزاحة التسلسل الهرمي، مكشوفة أيضًا كـ uid/limit على MCP take_snapshot. مسار التغذية ذو النقرات التسع الذي كلف 44,285 رمزًا مع إعادات اللقطات الكاملة الساذجة يكلف 898 مع قاعدة مقتطعة + فروقات — أرخص بـ 49 ضعفًا، ويتجاوز 939 لدى libretto.
تستخدم الجداول الأقدم أعلاه تقريب الرموز
chars/4؛ بينما تستخدم مقارنة libretto أعدادtiktokenحقيقية. أعد تشغيل الأرقام المتقاطعة بين الأدوات في بيئتك الخاصة قبل الاقتباس بنسبة مئوية.
قيس على Apple M4 Pro، macOS 26.4.1. بُنيت الملفات التنفيذية الحالية بـ -Doptimize=ReleaseFast.
| الملف التنفيذي | الحجم الحالي |
|---|---|
kuri | 1,093,840 B (1.04 MiB) |
kuri-agent | 629,904 B (615 KiB) |
kuri-browse | 1,089,120 B (1.04 MiB) |
kuri-fetch | 2,063,488 B (1.97 MiB) |
قيس مقابل بناء v0.4.3 ReleaseFast الحالي باستخدام /usr/bin/time -l.
| الأمر | v0.4.3 متوسط أقصى RSS |
|---|---|
kuri-fetch --version | ~2.45 MiB |
kuri-browse --version | ~2.45 MiB |
kuri-fetch --quiet --dump markdown http://example.com/ | ~9.17 MiB |
كل أداة أتمتة متصفح تجرّ معها Playwright (~300 ميغابايت)، وبيئة تشغيل Node.js، وسلسلة من تبعيات npm. وكيل الذكاء الاصطناعي لديك يريد فقط قراءة صفحة، والنقر على زر، ثم المتابعة. Kuri هو ملف Zig تنفيذي واحد. أربعة أوضاع، بدون وقت تشغيل:
kuri → CDP server (Chrome automation, a11y snapshots, HAR)
kuri-fetch → standalone fetcher (no Chrome, QuickJS for JS, ~2 MB)
kuri-browse → interactive terminal browser (navigate, follow links, search)
kuri-agent → agentic CLI (scriptable Chrome automation + security testing)
curl -fsSL https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh | sh