پروژه نخست: داشبورد خواندنی با داده ساختگی
برای شروع، داشبوردی بسازید که چند درخواست پشتیبانی ساختگی را برحسب وضعیت نشان دهد. در نسخه اول، ارسال پیام، حذف درخواست و تغییر وضعیت وجود نداشته باشد. منبع داده با برچسب «آزمایشی» مشخص شود و اگر داده دریافت نشد، همان خطا نمایش داده شود. این انتخاب، بررسی مسیر داده و رفتار صفحه را ممکن میکند، بدون اینکه به حساب واقعی مشتری دست بزنید. پیش از اتصال منبع خارجی، نام فیلدها و مجوز خواندن را بررسی کنید. صفحهای که داده ندارد نباید با اعداد تصادفی، ظاهری شبیه محصول آماده پیدا کند.
ساخت ابزار با miniapp-creator
در نشست محلی MiniMax Code، از مسیر شروع رسمی ساخت Mini App استفاده کنید. فرمان و بریف زیر نمونه پیشنهادی این مقاله است؛ نام سرویس یا داده واقعی در آن قرار ندادهایم. پیش از اجازه تغییر فایل، پوشه پروژه و محدوده کار را بررسی کنید. اگر ابزار برای روشنشدن نیاز سؤال کرد، تفاوتهای مؤثر بر داده یا مجوز را مشخص کنید؛ جزئیات ظاهری را میتوان بعداً اصلاح کرد. نسخه اول باید فقط مسئله کوچک تعریفشده را حل کند و نتیجهاش با چند تعامل ساده قابل بررسی باشد.
/miniapp-creator Build a read-only support dashboard using fixture data.
Show counts by status and a clear Fixture data label.
Do not connect accounts, send messages, edit records, or read unrelated files.
Show loading, empty, and error states.
Verify the page in the built-in browser and report untested parts.
پس از ساخت، فقط به پیام «آماده شد» اکتفا نکنید. صفحه را باز کنید، برچسب داده آزمایشی را ببینید و حالت خالی یا خطا را نیز امتحان کنید. اگر تعدادها از یک فایل ثابت میآیند، همین موضوع باید در توضیح تحویل نوشته شود. برای تبدیل نمونه به ابزار کاری، ابتدا یک مسیر خواندنی واقعی و محدود اضافه کنید؛ سپس صحت داده را با منبع اصلی مقایسه کنید. اضافهکردن عملیات ویرایشی، مرحله جداگانه با کنترل مجوز و آزمون شکست است و نباید در جریان اصلاح ظاهری بیاجازه وارد پروژه شود.
قرارداد بکاند Node را بشناسیم
در قرارداد Node میزبان، ورودی ماژول تابع start(context) است. نمونه زیر بخش بکاند یک ابزار خواندنی است، نه بسته کامل قابل نصب و نه API عمومی آماده تولید. میزبان باید آن را با قرارداد خودش اجرا کند. در این قطعه، نشانی گوشدادن فقط loopback پذیرفته میشود، مسیر فقط خواندنی است و داده همیشه برچسب fixture دارد. پایان اجرای ابزار نیز باید Listener را ببندد. کد مسیر با میزبان ساختگی آزمایش شده است؛ اجرای کامل داخل نسخه دسکتاپ MiniMax Code در این راهنما ادعا نمیشود.
import http from "node:http";
export async function start(context) {
if (context.listen.host !== "127.0.0.1" ||
!Number.isInteger(context.listen.port) ||
context.listen.port < 0 || context.listen.port > 65535) {
throw new Error("Expected the host-assigned loopback listener");
}
const server = http.createServer((request, response) => {
response.setHeader("Content-Type", "application/json; charset=utf-8");
response.setHeader("Cache-Control", "no-store");
if (request.method !== "GET" || request.url !== "/api/summary") {
response.writeHead(404);
response.end(JSON.stringify({error: "Not found"}));
return;
}
response.end(JSON.stringify({
source: "fixture",
counts: {open: 3, waiting: 2, resolved: 5},
}));
});
await new Promise((resolve, reject) => {
server.once("error", reject);
server.listen(context.listen.port, context.listen.host, resolve);
});
return {
dispose: () => new Promise((resolve, reject) => {
server.close(error => error ? reject(error) : resolve());
}),
};
}
این کد کنترل امنیتی میزبان را دوباره پیادهسازی نمیکند و نباید بهتنهایی جای آن قرار گیرد. برای اجرای عمومی روی اینترنت، احراز هویت، بررسی مالکیت داده و کنترل نرخ لازم است. همچنین مسیر Node موجود در Mini App ممکن است به Connector یا Agent API میزبان وابسته باشد؛ صرف تغییر پورت، آن وابستگی را حذف نمیکند. قبل از انتقال به کلود، فهرست کنید کدام ورودیها از میزبان میآیند و برای هرکدام جایگزین مستقل یا تصمیم عدم انتقال داشته باشید. این فهرست از آزمون تصادفی یک کانتینرِ ظاهراً آماده مفیدتر است.
تنظیم مدل سفارشی و API پاستا
مستندات BYOK در MiniMax Code افزودن ارائهدهنده سفارشی با آدرس پایه، کلید، قالب API و شناسه مدل را توضیح میدهند. در Settings، بخش Usage & model و سپس Custom model را باز کنید. اگر پاستا در فهرست آماده نیست، گزینه ارائهدهنده دیگر را انتخاب کنید. برای مسیر متنی سازگار، آدرس پایه https://console.paasta.cloud/api/ai/v1 و قالب سازگار با OpenAI را براساس گزینههای نسخه خود برنامه تنظیم کنید. شناسه مدل باید دقیقاً از کاتالوگ فعال پاستا انتخاب شود؛ از نام یک مدل خبری یا شناسه حدسی استفاده نکنید.
کلید را فقط در محل امن تنظیمات وارد کنید؛ از قراردادن آن در پرامپت یا فایل پروژه خودداری کنید. ذخیره تنظیم، اتصال را آزمایش نمیکند و الزاماً مدل کار جاری را تغییر نمیدهد. آزمون اتصال کوچک را اجرا کنید، سپس مدل مورد نظر را برای کار انتخاب کنید و یک وظیفه خواندنی ساده انجام دهید. این آزمون ممکن است هزینه داشته باشد. پشتیبانی از متن به معنی پشتیبانی همه ابزارها و ورودیهای چندرسانهای نیست. مسیر تنظیم از مستندات بررسی شده، اما اتصال انتهابهانتهای دسکتاپ با حساب واقعی در تهیه مقاله انجام نشده است.
چرا API پاستا میتواند در این معماری مفید باشد؟
اگر بخشی از ابزار شما به تولید یا تحلیل متن نیاز دارد، API هوش مصنوعی پاستا امکان بررسی مدلهای موجود، قیمت تومانی و مدیریت کلید را در یک مسیر فراهم میکند. مزیت عملی زمانی روشن میشود که مدل، مصرف و سقف هزینه آزمایش قابل مشاهده باشند. بااینحال، انتخاب پاستا جای بررسی سازگاری کلاینت یا قرارداد مدل را نمیگیرد. ابتدا یک پاسخ کوتاه و سپس وظیفه واقعی خودتان را آزمایش کنید. برای مسیرها و خطاهای قابل انتظار نیز مستندات اتصال پاستا را کنار تنظیمات MiniMax Code نگه دارید.
امنیت محلی: پورت محدود، Sandbox کامل نیست
مدل امنیتی سازنده تصریح میکند که کد Node با دسترسی کاربر سیستم اجرا میشود؛ محدودبودن پورت و قابلیتهای Host، معادل محصورسازی کامل سیستمعامل نیست. بسته ناشناس را فقط به دلیل ظاهر مناسب نصب نکنید. README، فایلهای در دسترس، مجوزهای اعلامشده و درخواستهای شبکه را بررسی کنید. اگر برنامه برای نمایش یک جدول خواندنی، دسترسی گسترده به فایل یا ارسال پیام میخواهد، دلیل آن را روشن کنید. کلید حسابهای شخصی را نیز برای راحتترشدن نمونه داخل کد نگذارید؛ چنین میانبری خطر نمونه را به محیط کار واقعی منتقل میکند.
عملیات ویرایشی را مرحله جداگانه طراحی کنید
وقتی بعداً تغییر وضعیت درخواست یا ارسال پیام اضافه میکنید، مجوز، تأیید کاربر و جلوگیری از اجرای تکراری لازم است. شناسهای که مدل پیشنهاد میدهد سند مالکیت نیست؛ بکاند باید درخواست را با حساب و منبع مجاز تطبیق دهد. برای عملیات مهم، پیشنمایش تغییر را پیش از تأیید نشان دهید و پاسخ خطا را طوری بنویسید که کاربر بداند چیزی تغییر کرده یا نه. آزمایش باید نشان دهد کاربر فاقد مجوز رد میشود و تلاش دوباره اثر اضافی نمیسازد. نمونه خواندنی این مقاله عمداً چنین عملیاتی ندارد و نباید آماده آن فرض شود.
چه بخشی را روی پاستا مستقر کنیم؟
اگر داشبورد باید همیشه در دسترس تیم باشد، یک وباپ مستقل و API مشخص طراحی کنید. پلتفرم ابری پاستا برای انتشار این بخش مستقل قابل بررسی است و هاست Next.js میتواند با ساختار فرانتاند پروژه هماهنگ باشد. برای داده پایدار نیز دیتابیس مدیریتشده را براساس نیاز انتخاب کنید. این پیشنهاد، میزبانی مستقیم Runtime اختصاصی MiniMax Host نیست. سرویس ابری باید قرارداد خودش را داشته باشد و مسیرهای داده خصوصی آن برای کاربر ناشناس بسته باشند؛ رابط دسکتاپ تنها یک کلاینت ممکن این سرویس است.
پایداری، هزینه و معیار تحویل
برای بخش محلی، بستن و بازکردن ابزار، راهاندازی مجدد برنامه و حفظ داده لازم را آزمایش کنید. برای بخش ابری، توقف فرایند و دسترسی همزمان چند کاربر را بررسی کنید. مصرف مدل را از هزینه میزبانی و سرویس داده جدا ثبت کنید و مشخص کنید کدام کارها درخواست جدید مدل میسازند. صفحهای که با هر بار تازهسازی چند فراخوانی تکراری ایجاد میکند، ممکن است هزینهای غیرمنتظره داشته باشد. پیش از تحویل، منبع داده، قابلیتهای مجاز، وضعیتهای خطا و بخشهای آزمایشنشده را بنویسید. این گزارش بخشی از کار محصول است، نه توضیحی فرعی بعد از ساخت رابط.
جمعبندی و مسیر پیشنهادی شروع
Mini Apps برای ساخت ابزار در محیط کاری ایجنت جالباند، اما انتخاب درست به محل اجرا و مالکیت داده بستگی دارد. ابتدا یک داشبورد خواندنی با برچسب داده آزمایشی بسازید، مسیر داده و مجوزها را ثابت کنید و سپس در صورت نیاز مدل سفارشی پاستا را با بودجه محدود آزمایش کنید. اگر هدف دسترسی عمومی یا تیمی است، بکاند مستقل ابری طراحی کنید و وابستگی به Host را جدا نگه دارید. نتیجه خوب فقط یک صفحه زیبا نیست؛ کاربر باید بداند داده از کجا آمده، چه تغییری مجاز است و پس از خطا چه چیزی در سیستم باقی میماند.
نظرات کاربران (۰)
هنوز نظری ثبت نشده است. اولین نفر باشید.