تنسيق URL
يشفر AISCouncil إعدادات البوت مباشرة في جزء عنوان URL (الجزء بعد #). هذا يعني مشاركة بوت بسيطة كـ مشاركة رابط -- لا خادم، لا قاعدة بيانات، لا حساب مطلوب. عنوان URL هو البوت.
كيف تعمل عناوين URL للبوت
عند مشاركة بوت، يأخذ التطبيق إعدادات البوت الكاملة -- الاسم، المزود، النموذج، موجه النظام، درجة الحرارة، وجميع الإعدادات الأخرى -- ويضغطها في سلسلة مدمجة تعيش في جزء URL.
https://aiscouncil.net/#B{base80_payload}
المتصفح لا يرسل الجزء أبدًا لأي خادم (هذا جزء من مواصفات HTTP)، لذا تبقى الإعدادات بالكامل من جانب العميل.
بنية URL
عنوان URL للبوت له ثلاثة أجزاء:
| الجزء | مثال | الغرض |
|---|---|---|
| URL الأساسي | https://aiscouncil.net/ | التطبيق نفسه |
# | # | فاصل الجزء (لا يُرسل للخادم أبدًا) |
| بادئة VLQ + الحمولة | BeLT1Qx9k... | بايت الإصدار + الإعدادات المضغوطة |
بادئة إصدار VLQ
الحرف (أو الحروف) الأول من الجزء يحدد إصدار التشفير باستخدام ترميز Variable-Length Quantity (VLQ):
| البادئة | الإصدار | نوع المحتوى |
|---|---|---|
A | 0 | محتوى المحرر (يُستخدم بواسطة aiscouncil.net/s/) |
B | 1 | إعدادات البوت |
C | 2 | مواصفات صفحة PDL |
بادئة B تخبر التطبيق "هذه إعدادات بوت مشفرة بالإصدار 1 من برنامج الترميز". الإصدارات المستقبلية يمكنها إضافة تنسيقات جديدة دون كسر عناوين URL الموجودة.
ترميز Base80
بعد بادئة الإصدار، تُشفّر الحمولة باستخدام أبجدية Base80 مخصصة. اختيرت هذه الأبجدية لتعظيم كثافة URL مع استخدام حروف آمنة فقط في أجزاء URL بدون ترميز النسبة المئوية:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~$&'()*+,;=:@/?
Base80 أكثر كفاءة من Base64 لأجزاء URL لأنه يستخدم 80 حرفًا بدلاً من 64، مما يضع بيانات أكثر في كل حرف.
الضغط
قبل ترميز Base80، يُضغط JSON لإعدادات البوت باستخدام deflate-raw (عبر API المتصفح الأصلي CompressionStream). هذا يقلل عادةً إعدادات البوت لـ 30-60% من حجمها الأصلي. الضغط بدون فقدان وفك الضغط يستخدم DecompressionStream الأصلي للمتصفح.
خط أنابيب التشفير
إعدادات البوت (JSON) --> بايتات UTF-8 --> ضغط Deflate-raw --> ترميز Base80 --> بادئة VLQ
خطوة بخطوة:
- يُسلسَل كائن إعدادات البوت لـ JSON
- تُشفّر سلسلة JSON لبايتات UTF-8
- تُضغط البايتات بـ deflate-raw (
CompressionStreamالأصلي) - تُشفّر البايتات المضغوطة لأحرف Base80
- تُضاف بادئة إصدار VLQ (
B)
فك التشفير يعكس العملية بالضبط.
مخطط إعدادات البوت
تستخدم الإعدادات مفاتيح أحادية الحرف قصيرة لتقليل الحجم المضغوط:
| المفتاح | النوع | الوصف | الافتراضي |
|---|---|---|---|
n | نص | اسم عرض البوت | "New Bot" |
p | نص | معرف المزود (anthropic، openai، xai، gemini، openrouter، ollama، إلخ) | مطلوب |
m | نص | معرف النموذج (مثل claude-sonnet-4-20250514، gpt-4o) | مطلوب |
s | نص | موجه النظام | "" |
t | رقم | درجة الحرارة (0-2) | 0.7 |
x | عدد صحيح | الحد الأقصى لرموز المخرجات | 4096 |
re | نص | جهد الاستدلال (low، medium، high، max، أو ميزانية رقمية) | — |
tp | رقم | Top P (0-1) | 1 |
fp | رقم | عقوبة التكرار (0-2) | 0 |
pp | رقم | عقوبة الوجود (0-2) | 0 |
se | عدد صحيح | البذرة (للمخرجات القابلة للتكرار) | — |
st | مصفوفة | متواليات التوقف | — |
rf | نص | تنسيق الرد (text أو json) | "text" |
auth | عدد صحيح | التحكم في الوصول: 1 = عام (لا تسجيل دخول مطلوب) | — |
icon | نص | أيقونة البوت (رمز تعبيري) | — |
d | نص | وصف البوت | — |
color | نص | لون تمييز البوت (hex) | "#7c3aed" |
k | نص | مفتاح API لكل بوت (مخزن محليًا، أبدًا في URL) | — |
c | كائن | إعدادات المجلس (لبوتات النماذج المتعددة) | — |
pf | نص | معرف مرجع الملف التعريفي | — |
cl | عدد صحيح | طول السياق (حد سجل الرسائل) | — |
sm | منطقي | التدفق مفعّل | true |
at | منطقي | عنونة المحادثات تلقائيًا | false |
mr | منطقي | عرض Markdown مفعّل | true |
stc | منطقي | عرض عدد الرموز | false |
فقط القيم غير الافتراضية تُضمّن في الإعدادات لتقليل طول URL.
ما ليس في URL
مفاتيح API أبدًا لا تُضمّن في عناوين URL. حقل k (مفتاح API لكل بوت) يُجرد أثناء تشفير URL. المفاتيح مخزنة فقط في localStorage للمتصفح وتُرسل فقط لنقطة نهاية API لمزود LLM.
يُستثنى التالي من عناوين URL المشتركة:
- مفاتيح API -- المستلمون يجب أن يوفروا مفاتيحهم الخاصة
- سجل المحادثة -- فقط إعدادات البوت تُشارك
- إدخالات الذاكرة -- الذاكرة المستمرة لكل بوت تبقى محلية
- إحصائيات الاستخدام -- بيانات التتبع محلية للجهاز
عناوين URL للمحرر
يستخدم محرر الويب على aiscouncil.net/s/ نفس نظام التشفير مع بادئة إصدار مختلفة:
https://aiscouncil.net/s/#A{base80_payload}
بادئة A تشير للإصدار 0 (محتوى المحرر). الحمولة تحتوي على محتوى المستند المضغوط بدلاً من إعدادات البوت.
التشفير وفك التشفير برمجيًا
يمكنك تشفير وفك تشفير إعدادات البوت برمجيًا باستخدام وحدة AIS.Codec في وحدة تحكم المتصفح:
فك تشفير URL
// فك التشفير من تجزئة URL
const hash = location.hash.slice(1); // أزل الـ '#'
const config = await AIS.Codec.decodeBotConfig(hash);
console.log(config);
// { n: "My Bot", p: "anthropic", m: "claude-sonnet-4-20250514", s: "You are helpful.", t: 0.7, x: 4096 }
تشفير إعدادات
const config = {
n: "Research Assistant",
p: "anthropic",
m: "claude-sonnet-4-20250514",
s: "You are a thorough research assistant. Cite sources.",
t: 0.3,
x: 8192,
};
const hash = await AIS.Codec.encodeBotConfig(config);
const url = location.origin + "/#" + hash;
console.log(url);
// https://aiscouncil.net/#BeLT1Qx9k...
فحص المخطط
console.log(AIS.Codec.CONFIG_SCHEMA);
// Returns the JSON Schema definition for bot configs
حدود طول URL
معظم المتصفحات الحديثة تدعم أطوال URL لا تقل عن 2,000 حرف، مع دعم العديد منها 8,000+ حرف. ومع ذلك، بعض الوسطاء (عملاء البريد الإلكتروني، منصات التواصل الاجتماعي، أدوات تقصير URL) قد تقطع عناوين URL الطويلة.
الحد العملي يعتمد على طول موجه النظام:
| طول موجه النظام | طول URL التقريبي | التوافق |
|---|---|---|
| < 500 حرف | ~300-500 حرف | آمن في كل مكان |
| 500-2,000 حرف | ~500-1,200 حرف | آمن في المتصفحات ومعظم المنصات |
| 2,000-5,000 حرف | ~1,200-2,500 حرف | يعمل في المتصفحات، قد يفشل في البريد/SMS |
| > 5,000 حرف | 2,500+ حرف | المتصفح فقط، قد يُقطع في مكان آخر |
إذا كان موجه نظامك طويلًا جدًا، فكر في:
- تقصير أو تلخيص الموجه
- استخدام أداة تقصير URL تحافظ على الأجزاء
- مشاركة إعدادات البوت كملف JSON بدلاً من ذلك (عبر التصدير)
سلوك الصفحة الرئيسية
عند تحميل aiscouncil.net مباشرة (لا تجزئة في URL)، لا يشفر التطبيق إعدادات بوتك في URL. تشفير URL يُفعّل فقط عندما حُمّلت الصفحة من عنوان URL لبوت مشترك (أي، URL كان يحتوي بالفعل على جزء #B...). هذا يبقي URL الصفحة الرئيسية نظيفًا.