مدل هوش مصنوعی، ویس، یا هر برنامهای که روی کامپیوتر خودت یک آدرس لوکال دارد را به سایت وصل کن. هر کس با حساب خودش این کار را میکند.
برنامه روی کامپیوتر تو میماند. یک پنجرهٔ کوچک به کیاشو وصل میشود و همان پورت لوکال را، با استریم و سوکت، پشت حساب تو منتشر میکند.
سایت کیاشو → تونل حساب تو → 127.0.0.1:پورت → مدل / ویس / هر سرویس
هر چیزی که در مرورگر یا با curl روی http://127.0.0.1:پورت جواب بدهد وصل میشود: Ollama، سرور ویس، پنل، API خودت. برنامهای که فقط پنجره دارد و پورتی باز نمیکند از این مسیر رد نمیشود.
پورت را از صفحهای که برنامه باز میکند بردار، یا در مرورگر http://127.0.0.1:پورت را امتحان کن. اگر آنجا باز شد، همان عدد را به پل بده.
یک پوشه بساز، این دو فایل را داخلش ذخیره کن، بعد در همان پوشه وابستگی را نصب کن.
Windows (PowerShell)، داخل همان پوشه:
npm install node bridge.js --help
اگر npm شناخته نشد، Node را نصب کن و ترمینال را ببند و دوباره باز کن.
بهجای عددها، پورت واقعی برنامهات را بگذار. کد را همان لحظه از تنظیمات بگیر.
node bridge.js --code 123456 --llm 11434 --voice 8080
سرویسهای بیشتر را با اسم خودشان اضافه کن. اسم، بخشی از آدرس ثابت میشود.
node bridge.js --service panel=7860 --service whisper=8178
اگر کد را یکبار زده باشی، دفعهٔ بعد توکن ذخیره شده و این کافی است:
node bridge.js --llm 11434 --voice 8080
در خروجی برای هر سرویس یک خط ready و یک آدرس میآید. آن آدرس را بردار. تا وقتی اسم سرویس و حساب تو عوض نشود، با قطع و وصل شدن پل همان آدرس میماند.
پنجره را نبند و کامپیوتر را خاموش نکن. با بستن پل، سایت دیگر به مدل لوکال نمیرسد. فقط همان حساب کیاشو که کد را ساخته میتواند این آدرس را صدا بزند.
توکن ورود همان مرورگری است که با آن وارد کیاشو شدهای. در کنسول آن صفحه:
localStorage.getItem('kiasho_token')
درخواست مدل، با استریم. مسیر بعد از آیدی تونل همان مسیر خودِ برنامهٔ لوکال است. برای Ollama معمولاً /api/chat یا /v1/chat/completions است.
const token = localStorage.getItem('kiasho_token');
const res = await fetch('https://app.kiasho.ir/dev/آیدی-سرویس/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + token,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'نام-مدل',
stream: true,
messages: [{ role: 'user', content: 'سلام' }],
}),
});
const reader = res.body.getReader();
سوکت را مرورگر بدون هدر Authorization باز میکند، برای همین توکن را در آدرس بگذار:
const token = localStorage.getItem('kiasho_token');
const ws = new WebSocket(
'wss://app.kiasho.ir/dev/آیدی-سرویس/مسیر?access_token=' + encodeURIComponent(token)
);
بدنهٔ هر درخواست تا ۲۵ مگابایت یکجا میرود. جواب، از جمله توکن مدل و صدای ویس، همان لحظه تکهتکه برمیگردد.
| نشانه | کار |
|---|---|
| کد قبول نمیشود | از تنظیمات یک کد تازه بگیر. کد قبلی سوخته یا دهدقیقهاش گذشته. |
| توکن نیست | دستور را با --code دوباره بزن. |
| Cannot find module 'ws' | داخل همان پوشه npm install بزن. |
| سایت ۴۰۱ میدهد | توکن را از همان حسابی بفرست که پل را وصل کرده. بدون توکن این آدرس باز نمیشود. |
| سایت ۵۰۲ میدهد | پنجرهٔ پل بسته شده، یا برنامهٔ لوکال روی آن پورت روشن نیست. |
| لوکال باز است، از سایت نه | پورت دستور را با پورتی که در مرورگر خودت باز میشود یکی کن. |
فایل توکن روی همین کامپیوتر ذخیره میشود: %USERPROFILE%\.kiasho\local-bridge.json