دسترسی خارجی (CLI و مشتریان هوش مصنوعی)
دسترسی خارجی به برنامههای خط فرمان محلی و مشتریان هوش مصنوعی سازگار با MCP اجازه میدهد اسکریپتها را در ScriptCat از طریق sctl مدیریت کنند.
AI client ── stdio MCP ──▶ sctl mcp ── local control API ──▶ sctl serve ── WebSocket ──▶ ScriptCat
CLI ────────────────────────────────────────────────────────▲
sctl serve یک دیمن محلی جداگانه است که باید به صراحت آن را شروع کنید. sctl mcp و دستورات درخواستکننده هرگز آن را به طور خودکار شروع نمیکنند. سیاستهای ScriptCat و رابط تأیید مرورگر همیشه تعیین میکنند که آیا افشای منبع یا نوشتن مجاز است؛ یک برنامه خارجی نمیتواند درخواست خودش را تأیید کن د.
sctl به طور پیشفرض روی 127.0.0.1 گوش میدهد. فقط زمانی که --listen-address به صراحت داده شود روی رابط دیگری گوش میدهد. ws:// ترافیک تجاری را رمزگذاری نمیکند و هیچ جداسازی برای هر مشتری راه دور وجود ندارد، بنابراین فقط در یک شبکه مورد اعتماد از آدرس غیرپیشفرض استفاده کنید. افزونه و دیمن همچنان از طریق یک کد جفتسازی یکباره یک کلید بلندمدت برقرار میکنند و در اتصالات بعدی از احراز هویت متقابل استفاده میکنند.
1. نصب sctl
جدیدترین نسخه را با یک دستور نصب کنید — macOS و لینوکس:
curl -fsSL https://raw.githubusercontent.com/scriptscat/sctl/main/scripts/install.sh | sh
یا Windows PowerShell:
irm https://raw.githubusercontent.com/scriptscat/sctl/main/scripts/install.ps1 | iex
نصبکننده بایگانی انتشار sctl-<version>-<os>-<arch>.<ext> با نام خطتیره برای پلتفرم شما دانلود میکند، sha256 آن را در برابر checksums.txt از همان انتشار تأیید میکند و sctl را در ~/.local/bin (macOS/Linux) یا %LOCALAPPDATA%\sctl\bin (ویندوز) نصب میکند. SCTL_VERSION نسخه خاصی را ثابت میکند؛ SCTL_INSTALL_DIR دایرکتوری نصب را بازنویسی میکند. اگر دایرکتوری نصب در PATH شما نیست، نصبکننده راهنمای دقیق PATH را برای پلتفرم شما چاپ میکند — هرگز پروفایل شل یا PATH کاربری شما را برای شما ویرایش نمیکند.
sctl یک فایل اجرایی واحد است. اگر GitHub Releases بایگانی منتشرشدهای برای پلتفرم شما داشته باشد، میتوانید آن را دانلود و استخراج کنید و سپس sctl (sctl.exe در ویندوز) را روی PATH قرار دهید.
sctl version
یک ساخت ساده از منبع 0.0.0-dev گزارش میدهد تا آن را از ساخت انتشار با نسخه، کامیت و فراداده زمان ساخت تزریقشده متمایز کند؛ این مانع اتصال آن به ScriptCat نمیشود. اگر انتشار در دسترس نباشد، مشارکتکنندگان میتوانند آن را از مخزن sctl بسازند.
2. شروع دیمن و ثبتنام
ثبتنام یک مرحله یکباره است. پس از آن، CLI و هر مشتری MCP کانال مورد اعتماد افزونه-به-دیمن را به اشتراک میگذارند؛ آنها جداگانه جفت نمیشوند.
2.1 انتخاب دایرکتوری داده
دیمن، CLI و فرآیند MCP باید از همان دایرکتوری داده استفاده کنند. کلید جفتسازی بلندمدت، توکن کنترل محلی و لاگها را ذخیره میکند. یک مسیر مطلق خصوصی برای کاربر فعلی انتخاب کنید:
/absolute/path/to/sctl-data
برای هر فرآیند sctl همان متغیر محیطی را تنظیم کنید:
export SCTL_DATA_DIR=/absolute/path/to/sctl-data
sctl serve
sctl status
sctl mcp
--data-dir صریح بر متغیر محیطی اولویت دارد.
اگر نه --data-dir و نه SCTL_DATA_DIR تنظیم نشده باشد، sctl از دایرکتوری داده برنامه پیشفرض هر کاربر پلتفرم استفاده میکند. دایرکتوری داده را در یک مخزن یا پوشه همگامسازی مشترک قرار ندهید و pairing.key یا control.token آن را هرگز به یک مدل هوش مصنوعی ندهید.
2.2 شروع دیمن
این را در یک ترمینال اجرا کنید و فرآیند را زنده نگه دارید:
sctl serve
آدرس پیشفرض ws://127.0.0.1:8643 است. دیمن هرگز به طور خودکار توسط connect، status، یک دستور CLI دیگر یا sctl mcp شروع نمیشود. برای استفاده دائمی، دستور بالا را با مدیر سرویس کاربر سیستم عامل خود اجرا کنید.
برای گوش دادن صریح روی هر رابط شبکه، اجرا کنید:
sctl --listen-address 0.0.0.0:8643 serve
در میزبان دیمن، همان --listen-address را به connect، status، سایر دستورات CLI و sctl mcp بدهید. در تنظیم آدرس sctl در ScriptCat، آدرسی وارد کنید که افزونه واقعاً میتواند به آن برسد، مانند ws://192.168.1.10:8643؛ 0.0.0.0 را وارد نکنید.
2.3 فعالسازی و جفتسازی در ScriptCat
-
تنظیمات ← ابزارها ← دسترسی خارجی را در ScriptCat باز کنید و کلید را روشن کنید.
-
تأیید کنید که آدرس sctl با دیمن مطابقت دارد؛ به طور معمول پیشفرض
ws://127.0.0.1:8643را نگه دارید. -
sctl serveرا در حال اجرا نگه دارید و در ترمینال دیگری اجرا کنید:sctl connect -
کد ۸ کاراکتری ترمینال را در کادر گفتگوی «ثبت sctl» وارد کنید.
-
اتصال را تأیید کنید:
sctl status
وضعیت باید یک افزونه متصل را گزارش دهد و نسخه دیمن را نشان دهد.
کد شبیه A1B2-C3D4 است، پس از ۲ دقیقه منقضی میشود و یک بار کار میکند. از طریق WebSocket به افزونه ارسال نمیشود. هرگز آن را در چت هوش مصنوعی، issue، لاگ یا پیکربندی MCP قرار ندهید؛ اگر منقضی شد دوباره connect را اجرا کنید.