স্কিপ করে মূল কন্টেন্ট এ যান

বাহ্যিক অ্যাক্সেস (CLI এবং AI ক্লায়েন্ট)

বাহ্যিক অ্যাক্সেস লোকাল কমান্ড-লাইন প্রোগ্রাম এবং MCP-সক্ষম AI ক্লায়েন্টদের sctl-এর মাধ্যমে ScriptCat-এ স্ক্রিপ্ট পরিচালনা করতে দেয়।

AI client ── stdio MCP ──▶ sctl mcp ── local control API ──▶ sctl serve ── WebSocket ──▶ ScriptCat
CLI ────────────────────────────────────────────────────────▲

sctl serve একটি পৃথক লোকাল ডেমন যা আপনাকে স্পষ্টভাবে শুরু করতে হবে। sctl mcp এবং অনুরোধকারী কমান্ডগুলি কখনই এটি স্বয়ংক্রিয়ভাবে শুরু করে না। ScriptCat-এর নীতি এবং ব্রাউজার নিশ্চিতকরণ UI সর্বদা সিদ্ধান্ত নেয় যে সোর্স প্রকাশ বা লেখা অনুমোদিত কিনা; একটি বাহ্যিক প্রোগ্রাম নিজের অনুরোধ অনুমোদন করতে পারে না।

লিসেনার ডিফল্টভাবে লোকাল

sctl ডিফল্টভাবে 127.0.0.1-এ শোনে। শুধুমাত্র যখন --listen-address স্পষ্টভাবে দেওয়া হয় তখন এটি অন্য ইন্টারফেসে শোনে। ws:// ব্যবসায়িক ট্রাফিক এনক্রিপ্ট করে না এবং প্রতি-রিমোট-ক্লায়েন্ট বিচ্ছিন্নতা নেই, তাই শুধুমাত্র একটি বিশ্বস্ত নেটওয়ার্কে অ-ডিফল্ট ঠিকানা ব্যবহার করুন। এক্সটেনশন এবং ডেমন এককালীন পেয়ারিং কোডের মাধ্যমে একটি দীর্ঘমেয়াদী কী প্রতিষ্ঠা করে এবং পরবর্তী সংযোগগুলিতে পারস্পরিক প্রমাণীকরণ ব্যবহার করে।

1. sctl ইনস্টল করুন

একটি কমান্ড দিয়ে সর্বশেষ রিলিজ ইনস্টল করুন — macOS এবং Linux:

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> রিলিজ আর্কাইভ ডাউনলোড করে, একই রিলিজ থেকে checksums.txt-এর বিপরীতে এর sha256 যাচাই করে এবং ~/.local/bin (macOS/Linux) বা %LOCALAPPDATA%\sctl\bin (Windows)-এ sctl ইনস্টল করে। SCTL_VERSION একটি নির্দিষ্ট সংস্করণ পিন করে; SCTL_INSTALL_DIR ইনস্টল ডিরেক্টরি ওভাররাইড করে। যদি ইনস্টল ডিরেক্টরি আপনার PATH-এ না থাকে, ইনস্টলারটি আপনার প্ল্যাটফর্মের জন্য সঠিক PATH ইঙ্গিত প্রিন্ট করে — এটি কখনই আপনার শেল প্রোফাইল বা ব্যবহারকারীর PATH সম্পাদনা করে না।

sctl একটি একক এক্সিকিউটেবল। যদি GitHub Releases-এ আপনার প্ল্যাটফর্মের জন্য একটি প্রকাশিত আর্কাইভ থাকে, আপনি এটি ডাউনলোড ও এক্সট্র্যাক্ট করতে পারেন, তারপর PATH-এ sctl (sctl.exe Windows-এ) রাখুন।

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 কখনই একটি AI মডেলকে দেবেন না।

2.2 ডেমন শুরু করুন

এটি একটি টার্মিনালে চালান এবং প্রক্রিয়াটিকে জীবিত রাখুন:

sctl serve

ডিফল্ট ঠিকানা হল ws://127.0.0.1:8643। ডেমনটি কখনই connect, status, অন্য CLI কমান্ড বা sctl mcp দ্বারা স্বয়ংক্রিয়ভাবে শুরু হয় না। স্থায়ী ব্যবহারের জন্য, আপনার অপারেটিং সিস্টেমের ব্যবহারকারী পরিষেবা ম্যানেজার দিয়ে উপরের কমান্ডটি চালান।

প্রতিটি নেটওয়ার্ক ইন্টারফেসে স্পষ্টভাবে শোনার জন্য, চালান:

sctl --listen-address 0.0.0.0:8643 serve

ডেমন হোস্টে, connect, status, অন্যান্য CLI কমান্ড এবং sctl mcp-এ একই --listen-address দিন। ScriptCat-এর sctl ঠিকানা সেটিংয়ে, একটি ঠিকানা প্রবেশ করুন যা এক্সটেনশনটি প্রকৃতপক্ষে পৌঁছাতে পারে, যেমন ws://192.168.1.10:8643; 0.0.0.0 প্রবেশ করবেন না।

2.3 ScriptCat-এ সক্রিয় করুন এবং পেয়ার করুন

  1. ScriptCat-এ সেটিংস → টুলস → বাহ্যিক অ্যাক্সেস খুলুন এবং সুইচটি চালু করুন।

  2. নিশ্চিত করুন যে sctl ঠিকানা ডেমনের সাথে মেলে; সাধারণত ডিফল্ট ws://127.0.0.1:8643 রাখুন।

  3. sctl serve চালু রাখুন এবং অন্য টার্মিনালে চালান:

    sctl connect
  4. "sctl নথিভুক্ত করুন" ডায়ালগে 8-অক্ষরের টার্মিনাল কোডটি প্রবেশ করুন।

  5. সংযোগটি যাচাই করুন:

    sctl status

স্ট্যাটাসটি একটি সংযুক্ত এক্সটেনশন রিপোর্ট করা উচিত এবং ডেমন সংস্করণ দেখানো উচিত।

পেয়ারিং কোড শুধুমাত্র টার্মিনালের জন্য

কোডটি A1B2-C3D4-এর মতো দেখায়, ২ মিনিট পরে মেয়াদ শেষ হয় এবং একবার কাজ করে। এটি WebSocket-এর মাধ্যমে এক্সটেনশনে পাঠানো হয় না। এটি কখনই একটি AI চ্যাট, issue, লগ বা MCP কনফিগারেশনে পেস্ট করবেন না; মেয়াদ শেষ হলে আবার connect চালান।

3. অনুমতি এবং নিশ্চিতকরণ

ক্ষমতাডিফল্ট আচরণ
স্ক্রিপ্ট তালিকা এবং মেটাডেটা পড়াসরাসরি ফিরিয়ে দেওয়া হয়
স্ক্রিপ্ট সোর্স পড়া বা অনুসন্ধানসোর্স পড়া নীতি অনুসরণ করে
একটি স্ক্রিপ্ট ইনস্টল, সম্পাদনা, সক্রিয়, নিষ্ক্রিয় বা মুছে ফেলালেখা নীতি অনুসরণ করে

উভয় নীতি "অনুমোদন প্রয়োজন" (ডিফল্ট) এবং "সরাসরি অনুমতি দিন" অফার করে।

"অনুমোদন প্রয়োজন"-এর সাথে, অনুরোধগুলি একটি ব্রাউজার নিশ্চিতকরণ পৃষ্ঠা খোলে। আপনি প্রত্যাখ্যান, একবার অনুমতি বা "এই সেশনের জন্য অনুমতি" চয়ন করতে পারেন। সেশন অনুমতিগুলি স্ক্রিপ্ট এবং অপারেশনের ধরন দ্বারা চাবিকাঠি হয় এবং ব্রাউজার পুনরায় চালু হলে, এক্সটেনশন পুনরায় লোড হলে বা বাহ্যিক অ্যাক্সেস বন্ধ হলে সেগুলি সাফ হয়। কোনো সিদ্ধান্ত ছাড়াই ৫ মিনিট পরে একটি অনুরোধের মেয়াদ শেষ হয়; অনুরোধকারী সংযোগ বিচ্ছিন্ন বা Ctrl-Cও এটিকে বাতিল করে।

"সরাসরি অনুমতি দিন" সেই শ্রেণীর অপারেশনের জন্য নিশ্চিতকরণ পৃষ্ঠাটি এড়িয়ে যায়। সোর্সে API কী, কুকি এবং অন্যান্য গোপনীয়তা থাকতে পারে, যখন লেখাগুলি সরাসরি স্ক্রিপ্ট পরিবর্তন করতে পারে, তাই শুধুমাত্র যখন আপনি সেই ঝুঁকি গ্রহণ করেন তখনই এটি সক্রিয় করুন।

4. কমান্ড-লাইন ব্যবহার

sctl get # স্ক্রিপ্ট তালিকা করুন
sctl get <uuid> # মেটাডেটা পড়ুন
sctl get <uuid> -o source # সম্পূর্ণ সোর্স প্রিন্ট করুন
sctl get <uuid> -o source --lines 20-80
sctl grep <uuid> "fetch(" # আক্ষরিক সোর্স অনুসন্ধান
sctl grep <uuid> "pattern" -E # রেগুলার এক্সপ্রেশন
sctl install <url|file>
sctl edit <uuid> --replace OLD --with NEW
sctl enable <uuid>
sctl disable <uuid>
sctl delete <uuid>
sctl status

grep ডিফল্টভাবে আক্ষরিক; -E রেগুলার এক্সপ্রেশন সক্রিয় করে, -i বড়/ছোট হাতের অক্ষর উপেক্ষা করে, -C N প্রসঙ্গ যোগ করে এবং -m N ম্যাচ সীমাবদ্ধ করে। কোনো ম্যাচ না থাকাও সফল এবং কোড ০ দিয়ে প্রস্থান করে।

edit বিষয়বস্তু-অ্যাংকোরড, কখনই লাইন-নম্বর-ভিত্তিক নয়। প্রতিটি oldText ডিফল্টভাবে ঠিক একবার ঘটতে হবে; --replace-all প্রতিটি ম্যাচ প্রতিস্থাপন করে। আপনি -f <file> দিয়ে একটি {oldText,newText,replaceAll?} অ্যারে পাস করতে পারেন। শুধুমাত্র সম্পাদনা এক্সটেনশনে পাঠানো হয়; আগে সম্পূর্ণ সোর্স পড়া বা আপলোড করার প্রয়োজন নেই।

লেখা এবং সোর্স প্রকাশ একটি ব্রাউজার সিদ্ধান্তের জন্য ব্লক করে। CLI এক্সিট কোড:

এক্সিট কোডঅর্থ
0অনুমোদিত এবং সফল, বা একটি পড়ার কমান্ড স্বাভাবিকভাবে সম্পন্ন হয়েছে
1ব্যবহারকারী অনুরোধটি প্রত্যাখ্যান করেছেন
2অনুরোধের মেয়াদ শেষ হয়েছে, Ctrl-C দিয়ে বাতিল হয়েছে, বা এক্সটেনশন সংযোগ বিচ্ছিন্ন হয়েছে
3অন্যান্য ত্রুটি যেমন আর্গুমেন্ট, সংযোগ বা অনুপস্থিত স্ক্রিপ্ট

প্রতিটি বিকল্পের জন্য sctl <command> --help চালান।

5. একটি AI ক্লায়েন্ট (MCP) সংযোগ করুন

প্রথমে নিশ্চিত করুন sctl serve চলছে এবং status একটি সংযুক্ত এক্সটেনশন রিপোর্ট করে। তারপর MCP ক্লায়েন্টকে একটি পৃথক sctl mcp প্রক্রিয়া চালু করতে কনফিগার করুন। GUI ক্লায়েন্টগুলিতে পরম বাইনারি এবং ডেটা পাথ ব্যবহার করুন:

{
"mcpServers": {
"scriptcat": {
"command": "/absolute/path/to/sctl",
"env": {
"SCTL_DATA_DIR": "/absolute/path/to/sctl-data"
},
"args": [
"mcp",
"--name",
"my-ai-client"
]
}
}
}

অনেক GUI অ্যাপ্লিকেশন ~, $HOME বা শেল এক্সপ্রেশন সম্প্রসারিত করে না। --name একটি অডিট লেবেল, প্রমাণিত পরিচয় বা অনুমোদনের সীমানা নয়। MCP stdout প্রোটোকল ফ্রেমের জন্য সংরক্ষিত; stdout-এ একটি ব্যানার প্রিন্ট করে এমন একটি স্ক্রিপ্টে sctl মোড়ানো করবেন না।

বর্তমান টুল:

টুলউদ্দেশ্যনিশ্চিতকরণ নীতি
scripts_listস্ক্রিপ্ট সারাংশ তালিকা করুননেই
scripts_metadata_getএকটি স্ক্রিপ্টের মেটাডেটা পড়ুননেই
scripts_source_getuuid এবং ঐচ্ছিক লাইন উইন্ডো দ্বারা সোর্স পড়ুনসোর্স পড়া নীতি
scripts_source_grepসোর্স অনুসন্ধান করুন এবং মিলে যাওয়া লাইন ফিরিয়ে দিনসোর্স পড়া নীতি
scripts_install_requestস্ক্রিপ্ট ইনস্টলেশন অনুরোধ করুনলেখা নীতি
scripts_edit_requestএকটি বিষয়বস্তু-অ্যাংকোরড সম্পাদনার অনুরোধ করুনলেখা নীতি
scripts_toggle_requestসক্রিয় বা নিষ্ক্রিয় করার অনুরোধ করুনলেখা নীতি
scripts_delete_requestমুছে ফেলার অনুরোধ করুনলেখা নীতি

6. অডিট এবং প্রত্যাহার

  • বাহ্যিক অ্যাক্সেস কার্ডে "অডিট লগ দেখুন" এই উৎসে ফিল্টার করা লগ পৃষ্ঠা খোলে।
  • sctl status ডেমন সংস্করণ, এক্সটেনশন সংযোগ এবং সাম্প্রতিক নিরাপত্তা ঘটনা দেখায়; -o json সম্পূর্ণ ঘটনা ফিরিয়ে দেয়।
  • "বাহ্যিক অ্যাক্সেস বন্ধ করুন" সংযোগ বিচ্ছিন্ন করে, এক্সটেনশন-পাশের পেয়ারিং অবস্থা মুছে দেয় এবং সেশন অনুমতি সাফ করে। এর পরে পুনরায় নথিভুক্তি প্রয়োজন।
  • শুধুমাত্র একটি AI ক্লায়েন্ট নিষ্ক্রিয় করতে, সেই ক্লায়েন্টের MCP কনফিগারেশন থেকে sctl সরান; এটি অন্যান্য CLI বা ক্লায়েন্ট অ্যাক্সেস প্রত্যাহার করে না।

7. সমস্যা সমাধান

ডেমনটি অপ্রাপ্য

প্রথমে sctl serve চালান। অনুরোধকারী কমান্ডগুলি কখনই ডেমন স্বয়ংক্রিয়ভাবে শুরু করে না।

কন্ট্রোল-চ্যানেল প্রমাণীকরণ ব্যর্থ হয়

নিশ্চিত করুন যে serve, CLI কমান্ড এবং MCP প্রক্রিয়া একই পরম ডেটা ডিরেক্টরিতে সমাধান করে। SCTL_DATA_DIR এবং যেকোনো স্পষ্ট --data-dir উভয়ই পরীক্ষা করুন, তারপর MCP ক্লায়েন্ট পুনরায় চালু করুন।

স্ট্যাটাস "সংযোগ ব্যর্থ হয়েছে" বলে

নিশ্চিত করুন ডেমন চলছে, এক্সটেনশন ঠিকানা এটির সাথে মেলে এবং লোকাল সিকিউরিটি সফটওয়্যার 127.0.0.1:8643 ব্লক করছে না।

একটি কমান্ড ফিরে আসে না

সোর্স-প্রকাশ বা লেখার নিশ্চিতকরণ পৃষ্ঠার জন্য ব্রাউজারটি পরীক্ষা করুন। অনুরোধটি বাতিল করতে Ctrl-C চাপুন।

লগ খুঁজুন

লগগুলি <data-dir>/logs/-এর অধীনে। যদি --data-dir বা SCTL_DATA_DIR কোনোটিই সেট না থাকে, ডিফল্টগুলি হল:

প্ল্যাটফর্মলগ ডিরেক্টরি
macOS~/Library/Application Support/sctl/logs/
Windows%LOCALAPPDATA%\sctl\logs\
Linux~/.config/sctl/logs/