
أول أداة تسخير لوكلاء الذكاء الاصطناعي مدمجة أصلاً في المتصفح. امتداد متصفح يشغّل دورة وكيل كاملة في بيئة عملك الحالية: يوجّه علامات التبويب لديك، ويشغّل موارد حوسبة معزولة (دفاتر JS، أجهزة WASM Linux الافتراضية، تطبيقات من جانب العميل)، ويشارك ما يبنيه نظيرًا لنظير. BYOK، بلا خادم خلفي، وبلا تتبع عن بُعد.
peerd هو أول بيئة تشغيل عامة للوكلاء مبنية مباشرة على أساسيات المتصفح: Workers، الأصول (origins)، العزل (sandboxing)، OPFS، WASM/WASI، WebRTC، WebAuthn، وWebExtensions. يعمل بالكامل داخل Chrome وFirefox، مع علامات التبويب الخاصة بك، والجلسات المسجّلة، وتطبيقات الويب، وقوة الحوسبة المحلية.
بينما تحاول منصات الوكلاء سحب المتصفح إلى بيئة التشغيل، فإن peerd يسحب بيئة التشغيل إلى المتصفح.
للتنفيذ الفعلي للاستدلال، يمكنك اختيار مزود نماذج مستضاف مدعوم، أو نموذج محلي عبر localhost، أو الاطلاع على الدعم الأولي للنماذج المحلية عبر WebGPU (ونحن نراقب WebNN أيضًا).
لا يتطلب الأمر حساب peerd، أو متصفحًا مستضافًا، أو اتصالًا بخادم أدوات. الإصدارات الحالية لا ترسل أي بيانات تتبع منتج إلى peerd.
registry.js، بما في ذلك محولات السحابة BYOK وخيارات محلية بدون مفاتيح.يمكن للوكلاء المحليين الوصول إلى جهاز الكمبيوتر بالكامل. الوكلاء عن بُعد يعيشون في أجهزة الآخرين. المتصفح هو البديل: قدرة محلية خلف حدود أمنية صُقلت على مدى ثلاثة عقود.
يستخدم 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://extensions.extension/.أعد تحميل الإضافة من chrome://extensions بعد تغييرات المصدر.
يتطلب 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. تتضمنها حزم المعاينة وقد تفعّل ميزات أتمتة إضافية. كود التعبئة هو المرجع لكل متصفح وقناة.
فقط أسرار الخزنة والسجلات الأمنية المحمية مشمولة بحدود تشفير الخزنة. تتبع حالة الإضافة المحلية الأخرى قواعد التخزين في وثائق الأمان.
تحتوي الإضافة على خمس وحدات رئيسية. تعرض كل وحدة واجهة برمجية عامة عبر 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
هناك ثلاث أسطح اختبار:
إلى جانبها، تقود مجموعة الفريق الأحمر في 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.