
peerd v0.4.0
أول أداة ربط وكيل ذكاء اصطناعي أصلية للمتصفح. إضافة متصفح تدير حلقة وكيل كاملة حيث تعمل بالفعل: تقود علامات التبويب الخاصة بك، وتدير حوسبة معزولة (دفاتر JS، أجهزة WASM Linux الافتراضية، تطبيقات جانب العميل)، وتشارك ما تبنيه نظير إلى نظير. BYOK، لا خادم خلفي، لا تتبع.
أول منصة عمل وكلاء ذكاء اصطناعي مبنية على الويب
peerd هو أول بيئة تشغيل عامة للوكلاء مبنية مباشرة على أساسيات المتصفح: Workers، الأصول (origins)، العزل (sandboxing)، OPFS، WASM/WASI، WebRTC، WebAuthn، وWebExtensions. يعمل بالكامل داخل Chrome وFirefox، مع علامات التبويب الخاصة بك، والجلسات المسجّلة، وتطبيقات الويب، وقوة الحوسبة المحلية.
بينما تحاول منصات الوكلاء سحب المتصفح إلى بيئة التشغيل، فإن peerd يسحب بيئة التشغيل إلى المتصفح.
للتنفيذ الفعلي للاستدلال، يمكنك اختيار مزود نماذج مستضاف مدعوم، أو نموذج محلي عبر localhost، أو الاطلاع على الدعم الأولي للنماذج المحلية عبر WebGPU (ونحن نراقب WebNN أيضًا).
لا يتطلب الأمر حساب peerd، أو متصفحًا مستضافًا، أو اتصالًا بخادم أدوات. الإصدارات الحالية لا ترسل أي بيانات تتبع منتج إلى peerd.
التثبيت · peerd.ai · البنية · الأمان
الميزات
- يعمل في المتصفح الذي تستخدمه بالفعل. يمكن للوكيل قراءة علامات التبويب الخاصة بك والتحكم فيها، وتطبيقات الويب، والجلسات المسجّلة، ومحتوى الصفحات.
- يبني عملاء مواقع قابلة لإعادة الاستخدام. يمكن للفاعل على الويب تعلّم موقع مرة واحدة واستخدام ذلك العميل مرة أخرى في المهام اللاحقة.
- يشغّل الكود داخل حدود المتصفح. البرامج النصية، ودفاتر JavaScript المختومة، وأدوات WASI المترجمة، وتطبيقات المتصفح، وWebVMs الخاصة بـ Linux تمنح الوكيل قوة حوسبة محلية دون الوصول إلى نظام التشغيل المضيف.
- يفوّض إلى فاعلين منفصلين. تحصل كل صفحة وبيئة حوسبة على فاعل خاص بها بدون مفاتيح، مع أدوات مقتصرة على تلك البيئة.
- يحتفظ بالسياق المفيد. الجلسات، والذاكرة، والمهارات، والأهداف، والمراجعة، ونقاط التفتيش تبقى داخل الإضافة.
- يستخدم النموذج الذي تختاره. يتم تعريف مخزون المزودين المباشر في
registry.js، بما في ذلك محولات السحابة BYOK وخيارات محلية بدون مفاتيح. - يربط المتصفحات مباشرة. تضيف إصدارات المعاينة هوية موقّعة، واكتشافًا بين المتصفحات، وdwapps، وتواصلًا بين الوكيل والوكيل عبر WebRTC؛ بينما تحذف حزم المتجر ذلك تمامًا.
لماذا المتصفح
يمكن للوكلاء المحليين الوصول إلى جهاز الكمبيوتر بالكامل. الوكلاء عن بُعد يعيشون في أجهزة الآخرين. المتصفح هو البديل: قدرة محلية خلف حدود أمنية صُقلت على مدى ثلاثة عقود.
يستخدم peerd تلك الحدود. يُسند عمل الصفحات إلى فاعلين منفصلين مع الأدوات الخاصة بذلك التبويب أو البيئة فقط. تبقى بيانات الاعتماد، وقواعد الشبكة، والتأكيدات، والتدقيق مع الإضافة. يفترض تصميم الدفاع المتعمق أن المحتوى غير الآمن سيتجاوز الفلتر في النهاية.
دعم المتصفحات
يدعم peerd كلاً من Chromium وFirefox. يشغّل Firefox الفاعلين في عمال مخصصين ويستخدم دفاتر مرئية للحوسبة عبر JavaScript. الميزات التي تتطلب مضيف المستند خارج الشاشة في Chrome تُزال من أدوات التحكم في Firefox وأدوات النماذج قبل الاستخدام. تحذف إصدارات المعاينة الخاصة بـ Firefox ميزة dweb حتى يتوفر مضيف شبكة في Firefox.
تعمل التطبيقات وWebVMs على Chrome. لا تملك التطبيقات وصولًا شبكيًا محيطيًا. الموارد البعيدة، والجلب (fetches)، وWebRTC، والنماذج، والتنقل إلى مستندات خارجية محظورة. تتطلب روابط HTTP وHTTPS الخارجية تأكيدًا من المستخدم.
يتم تتبع فجوات قدرات المتصفح المحددة، وقضاياها المنبعية، والاختبارات المطلوبة لإزالة كل حارس في
docs/BROWSER-COMPATIBILITY.md.
الكود هو مصدر الحقيقة للسلوك الحالي. ابدأ بـ CLAUDE.md، ثم اقرأ الوحدة ذات الصلة تحت extension/.
نموذج الأمان
يستخدم peerd عزل المتصفح، وتعرضًا ضيقًا للأدوات، وبوابات سياسة عامل الخدمة، وضوابط صريحة للاتصال الصادر. يفوض الوكيل الرئيسي عمل البيئة إلى فاعلين بدون مفاتيح. على Chrome وFirefox، تعمل حلقات الوكلاء غير المنسّقة في أكوام عمال مخصصة منفصلة. إذا لم يستطع المتصفح إثبات تلك الحدود، لا يعمل طلب الفاعل ولا ينفذ أي عمل على هدفه.
يعتمد سلوك الشبكة على العملية. استدعاءات النماذج، وقراءات الويب، وتحميل أصول وقت التشغيل، وحركة مرور العزل، وحركة مرور dweb في المعاينة تستخدم مسارات وسياسات مختلفة ومحددة النطاق. راجع SECURITY.md ونموذج التهديد للحدود الحالية والقيود المعروفة.
التثبيت
Chrome من المصدر
- استنسخ المستودع.
- افتح
chrome://extensions. - فعّل وضع المطور.
- اختر Load unpacked وحدد دليل
extension/.
أعد تحميل الإضافة من chrome://extensions بعد تغييرات المصدر.
Firefox من المصدر
يتطلب Firefox حزمة خاصة بـ Firefox. لا تقم بتحميل بيان تطوير Chrome الموجود في المستودع. استخدم إصدار Firefox عند أو أعلى من الحد الأدنى المعلن في تصحيح القناة تحت manifests/. هذا الحد الأدنى يتتبع دعم البرمجة النصية المرتبطة بالمستند المستخدمة في أدوات المتصفح.
bun run package -- --channel=preview --browser=firefox --no-sign
افتح about:debugging#/runtime/this-firefox، واختر Load Temporary Add-on، وحدد artifacts/peerd-preview-firefox.xpi. يجب إعادة تحميل الإضافات المؤقتة بعد إعادة تشغيل Firefox. يتم تعريف تحويلات المتصفح والقناة بواسطة نصوص التعبئة.
حزم الإصدارات
راجع GitHub Releases للأصول الحالية. تختلف حزم المتجر والمعاينة. تحذف حزم المتجر ميزة dweb. تتضمنها حزم المعاينة وقد تفعّل ميزات أتمتة إضافية. كود التعبئة هو المرجع لكل متصفح وقناة.
التشغيل الأول
- افتح peerd من شريط أدوات المتصفح.
- أنشئ وافتح الخزنة المحلية. فتح القفل بكلمة المرور متاح دائمًا. فتح القفل بمفتاح المرور يعتمد على دعم WebAuthn PRF في المتصفح والجهاز.
- أكمل الإعداد المختصر للملف الشخصي.
- افتح الإعدادات، ثم أضف مفتاح مزود أو اختر مزودًا محليًا مدعومًا.
- حدد نموذجًا وابدأ محادثة.
فقط أسرار الخزنة والسجلات الأمنية المحمية مشمولة بحدود تشفير الخزنة. تتبع حالة الإضافة المحلية الأخرى قواعد التخزين في وثائق الأمان.
البنية
تحتوي الإضافة على خمس وحدات رئيسية. تعرض كل وحدة واجهة برمجية عامة عبر index.js الخاص بها.
| الوحدة | الدور |
|---|---|
peerd-provider | محولات النماذج وتنسيق الاستجابات |
peerd-egress | الخزنة، وسياسة الشبكة، وقائمة الحظر، والتدقيق |
peerd-engine | WebVM، ودفاتر الملاحظات، والتطبيقات، والتنفيذ بدون رأس |
peerd-runtime | حلقة الوكيل، والفاعلون، والأدوات، والجلسات، والذاكرة، والأذونات |
peerd-distributed | شبكة نظير-إلى-نظير وdwapps للمعاينة فقط |
يعيش هيكل الإضافة في background/، وoffscreen/، وsidepanel/، وengine-tabs/، وpermissions/، وshared/، والدلائل الداعمة ذات الصلة. يتم توثيق موضع المضيف وقاعدة العامل البارد في docs/EXTENSION-HOSTS.md.
التطوير
إضافة المصدر هي JavaScript خام مع وحدات ES وتعمل مباشرة عند تحميلها غير معبأة. لا يوجد مجمّع تطوير، أو مترجم، أو مراقب، أو شجرة وقت تشغيل مولّدة. تستخدم تعبئة الإصدارات Bun فقط على نسخة التدريج المؤقتة لإزالة المسافات/التعليقات من الوحدات المؤلفة في عامل الخدمة الثابت ورسوم Chrome الباردة خارج الشاشة. تحافظ على حدود الوحدات، وأسماء الربط، والاستيراد الكسول، وكل بايت مضمّن. مرر --no-minify إلى bun run package -- ... عندما يكون أثر تشخيصي قابل للقراءة مفيدًا.
bun install
bun run gen:dev
bun test ./tests
bun scripts/cdp/run-inbrowser-tests.mjs
bun run typecheck
bun run lint
bun run e2e:verify
bun run preflight
هناك ثلاث أسطح اختبار:
- اختبارات Bun للمنطق الخالص.
- اختبارات داخل المتصفح لتكامل الإضافة والمتصفح. تعمل بدون رأس تحت Chrome، وتحت Gecko (مقسمة) مقابل حزمة Firefox Store المثبتة. ينفذ كل مسار كل اختبار يسجله؛ تختلف الإجماليات قليلاً لأن بعض الاختبارات تسجل فقط حيث يستجيب عامل خدمة مباشر.
- E2E مباشر على Chrome والتحقق البصري للتدفقات الكاملة.
إلى جانبها، تقود مجموعة الفريق الأحمر في tests/red-team/ كل خصم من نموذج التهديد ضد كود الدفاع الحقيقي وتسجل ما إذا تم حظر كل استطلاع عدائي. مصفوفتها هي docs/security/RED-TEAM-RESULTS.md.
ينشر كل مسار عدده الخاص كشارة أعلاه. يتم إنشاء JSON الشارات تحت badges/ بواسطة وظيفة CI التي شغّلت المسار ثم تُقارن، لذا فإن العدد في هذه الصفحة هو دائمًا دليل من تشغيل حدث فعلًا وليس رقمًا كتبه شخص. أعد توليد واحدًا بـ bun run gen:badge:functional، أو bun run gen:badge:red-team، أو bun run gen:badge:inbrowser، أو bun run gen:badge:gecko (يتطلب Firefox وgeckodriver)، أو bun run gen:badge:e2e، ثم التزم بالنتيجة. يتحقق bun run check:badges من أن النقاط النهائية جيدة التكوين دون تشغيل متصفح.
لتغييرات الواجهة، شغّل bun run e2e:verify، وافحص scripts/cdp/artifacts/result.json، وافحص لقطات الشاشة المولّدة.
يجب عدم تحرير الملفات المولّدة يدويًا. على وجه الخصوص، يأتي extension/manifest.json وextension/shared/channel-config.js من مصادر البيان والتعبئة. يتحقق CI من انحرافهما.
اقرأ CONTRIBUTING.md قبل تغيير الكود.
التوثيق
CLAUDE.md: بنية المشروع، والاتفاقيات، والوضع الحاليSECURITY.md: سياسة الأمان والإبلاغdocs/security/THREAT-MODEL.md: حدود الثقة والمخاطر المتبقيةdocs/security/LIFECYCLE-CONTRACT.md: سلوك الانقطاع وحدود الاستردادdocs/security/RED-TEAM-RESULTS.md: تغطية الفريق الأحمرdocs/APP-ACTORS.md: فاعلو التطبيقات المعرّفون في البيان، والمحولات الدلالية المباشرة، وتجربة المساعد المشارك داخل التبويبdocs/DWAPP-BUNDLE.md: نقل dwapp المضغوط، وأشجار العمل المفكوكة، والأصول الثنائيةdocs/store/: تعبئة المتجر، والأذونات، والخصوصية، وملاحظات المراجعينscripts/cdp/states.mjs: حالات E2E والبصرية
التبعيات والترخيص
لا تحتوي الإضافة المشحونة على تبعيات npm وقت التشغيل. لا يعلن package.json عن أي منها، ولا تحل التعبئة أبدًا مسار node_modules في الأثر المرحلي، لذا لا يمكن لشجرة أدوات التطوير الوصول إلى متصفح مثبت. بدلاً من ذلك، يتم تضمين كود الطرف الثالث وقت التشغيل تحت extension/vendor/. مصدره وإصداره وترخيصه موجودة في ملفات SOURCE.txt المجاورة، وكل بايت مضمّن مثبت بـ SHA-256 في extension/vendor/vendor.lock.json، والذي يتحقق منه bun run check:vendor في CI والفحص المسبق.
موضعان إضافيان في سلسلة التوريد يحملان شارات خاصة بهما أعلاه، وكلاهما يُعاد توليده بواسطة bun run gen:dev ويُفحص من الانحراف في CI. كل إجراء GitHub تابع لجهة خارجية يعمل عند SHA كامل للالتزام، محكوم بـ check:actions: العلامة الرئيسية هي مرجع قابل للتغيير يمكن لناشرها تحريكه، مما يعني كودًا عشوائيًا في وظيفة تحمل هذا الاستخراج، وفي سير عمل الإصدار، أسرار التوقيع. كما تخضع التبعيات المحلولة حديثًا لفترة حجر صحي قبل أن تدخل القفل، محددة بـ minimumReleaseAge في bunfig.toml، إلى جانب فحص برمجيات خبيثة عند التثبيت.
peerd مرخص بموجب رخصة Apache 2.0. تحتفظ المكونات المضمّنة بتراخيصها الخاصة. CheerpX هي بيئة تشغيل مملوكة مقدمة من Leaning Technologies ولا تغطيها رخصة Apache الخاصة بـ peerd.