العودة إلى التحديثات
New releaseJul 26, 2026

kuri v0.4.14

أتمتة المتصفح، زحف الويب، والتحكم في أجهزة iOS + Android لوكلاء الذكاء الاصطناعي. لقطات CDP أصلية بلغة Zig وموفرة للرموز، تسجيل HAR، عميل adb wire-protocol الأصلي، وأداة جلب مستقلة.

مشاركة

Kuri

Kuri 🌰

Stable release License Zig node_modules status

التثبيت

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 مع الوكلاء

صُممت معظم أدوات المتصفح لمهندسي ضمان الجودة. أما Kuri فمصمم لحلقات الوكلاء: اقرأ الصفحة، أبقِ تكلفة الرموز منخفضة، تصرّف بناءً على مراجع مستقرة، ثم تابع.

  • 135 نقطة نهاية HTTP — تكافؤ كامل مع agent-browser و browser-use، من فحص React إلى Core Web Vitals.
  • رموز أقل بنسبة 7-12% من agent-browser على صفحات حقيقية بفضل صيغة المراجع @eN والعرض بدون بادئة.
  • ملاحظات أخف بـ 44 ضعفًا مع /page/state (48 رمزًا) مقابل اللقطة الكاملة (2,124 رمزًا) لنفس صفحة Google Flights.
  • تنفيذ دفعي — يرسل POST /batch عدد N من الأوامر في نداء HTTP واحد، مما يلغي N-1 من الرحلات ذهابًا وإيابًا و N-1 من دورات LLM.
  • متوافق مع React — أحداث فأرة CDP الموثوقة وأحداث المفاتيح لكل حرف تُشغّل onClick و onChange في React 18/19.

رموز اللقطة: Google Flights SIN → TPE

تشغيل جديد في 2026-05-24 في مساحة العمل هذه، مقيس بـ wc -c وتقريب chars/4.

الأداة / الوضعالأحرف~الرموزملاحظة
kuri snap (كامل)8,4992,124جميع العقد + المراجع التفاعلية
kuri snap (التفاعلية فقط)~3,000~750الأفضل لحلقات الوكلاء
kuri /page/state19048ملاحظة خفيفة (url، title، scroll%، الأعداد)
agent-browser snap (تقديري)~9,183~2,295عبء صيغة [ref=e0]

كفاءة الرموز: kuri مقابل agent-browser

الصفحةرموز kuriرموز agent-browserالتوفير
example.com4035-13% (صفحة تافهة، agent-browser يتخطى الجذر)
Hacker News386~440أقل بنسبة 12%
Google Flights SIN→TPE2,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)

kuri مقابل libretto

libretto (Playwright + Node) هو أقرب منافس في تكلفة الرموز لكل خطوة. قيس وجهًا لوجه في 2026-07-04 — نفس Chrome، نفس التبويب، أعداد tiktoken o200k_base حقيقية (المنهجية الكاملة وإعادة الإنتاج: benchmarks/libretto_comparison.md). التقسيم الصادق:

المحورالفائزالتفصيل
زمن الاستجابة لكل نداءkuri4–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.

الملف التنفيذيالحجم الحالي
kuri1,093,840 B (1.04 MiB)
kuri-agent629,904 B (615 KiB)
kuri-browse1,089,120 B (1.04 MiB)
kuri-fetch2,063,488 B (1.97 MiB)

بقي RSS ثابتًا خلال الترحيل إلى Zig 0.16

قيس مقابل بناء 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)

📦 التثبيت

التثبيت بسطر واحد (macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh | sh

الفئات