إنتقل إلى المحتوى الرئيسي

تنسيق 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):

البادئةالإصدارنوع المحتوى
A0محتوى المحرر (يُستخدم بواسطة aiscouncil.net/s/)
B1إعدادات البوت
C2مواصفات صفحة 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

خطوة بخطوة:

  1. يُسلسَل كائن إعدادات البوت لـ JSON
  2. تُشفّر سلسلة JSON لبايتات UTF-8
  3. تُضغط البايتات بـ deflate-raw (CompressionStream الأصلي)
  4. تُشفّر البايتات المضغوطة لأحرف Base80
  5. تُضاف بادئة إصدار 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 بدلاً من ذلك (عبر التصدير)

سلوك الصفحة الرئيسية

لا تشفير URL على الصفحة الرئيسية

عند تحميل aiscouncil.net مباشرة (لا تجزئة في URL)، لا يشفر التطبيق إعدادات بوتك في URL. تشفير URL يُفعّل فقط عندما حُمّلت الصفحة من عنوان URL لبوت مشترك (أي، URL كان يحتوي بالفعل على جزء #B...). هذا يبقي URL الصفحة الرئيسية نظيفًا.