منصوبے کے بارے میں
dsh-sql DSH (DeepSeek Harness) کے لیے ایک ڈیٹا بیس پلگ ان ہے، جو ایجنٹ کو ڈیٹا بیس سے منسلک ہونے اور اسے چلانے کے قابل بناتا ہے۔ یہ چھ ٹولز فراہم کرتا ہے جو کنکشن مینجمنٹ، صرف پڑھنے کی استفسار، تحریری آپریشنز، ڈھانچے کی جانچ، شماریاتی جائزہ اور صحت کی خود جانچ کا احاطہ کرتے ہیں۔
ٹولز کی فہرست:
- sql_list: کنفیگر شدہ کنکشنز کی فہرست دیتا ہے اور کنیکٹیویٹی ٹیسٹ کرتا ہے۔
- sql_query: صرف پڑھنے کی استفسار، SELECT/PRAGMA/EXPLAIN/SHOW/DESCRIBE/WITH کو سپورٹ کرتا ہے، کلیدی الفاظ کی وائٹ لسٹ استعمال کرتا ہے اور ایک سے زیادہ اسٹیٹمنٹس کو مسترد کرتا ہے۔
- sql_exec: تحریری آپریشنز اور DDL، ایک سے زیادہ اسٹیٹمنٹس کی اسکرپٹ چلا سکتا ہے، readOnly سوئچ اور منظوری گیٹ کے پابند ہے۔
- sql_schema: ٹیبلز کی فہرست دیتا ہے یا مخصوص ٹیبل کا ڈھانچہ دیکھتا ہے، ٹیبل ناموں کی تصدیق شناخت کار وائٹ لسٹ کے ذریعے ہوتی ہے۔
- sql_stats: ٹیبلز کی تعداد، قطاروں اور ڈیٹا بیس کے حجم کا جائزہ دیتا ہے، ناکام استفسارات ایک دوسرے سے الگ تھلگ ہوتی ہیں۔
- sql_health: ہر کنکشن کی زندہ دلی کی جانچ کرتا ہے اور حفاظتی ترتیب کی جانچ کرتا ہے، پاس ورڈ ظاہر نہیں کرتا۔
انجن اور کنکشن: SQLite Node 22.13+ میں بلٹ ان node:sqlite استعمال کرتا ہے، صفر انحصار؛ MySQL mysql2 کنکشن پول استعمال کرتا ہے؛ PostgreSQL pg کنکشن پول استعمال کرتا ہے۔ ترتیب میں متعدد نامزد کنکشنز کا اعلان کیا جا سکتا ہے، ہر ایک کے لیے انجن اور کنکشن پیرامیٹرز کی وضاحت کی جاتی ہے۔ اگر ترتیب فراہم نہ کی جائے تو بطور ڈیفالٹ ایک :memory: SQLite کنکشن دیا جاتا ہے؛ لیکن اگر ترتیب موجود ہو اور فارمیٹ غلط ہو تو براہ راست خرابی کے ساتھ لوڈنگ رک جاتی ہے، خاموشی سے میموری ڈیٹا بیس پر واپس نہیں جاتا۔
حفاظتی ڈیزائن:
- لغوی سطح کا صرف پڑھنے کا تحفظ: sql_query پہلے strings اور comments کو ہٹاتا ہے پھر جانچ کرتا ہے، data-modifying CTE (WITH…DELETE/UPDATE)، SELECT INTO، FOR UPDATE/FOR SHARE، PRAGMA تفویض اور ایک سے زیادہ اسٹیٹمنٹس کو مسترد کرتا ہے۔
- تحریری منظوری گیٹ: sql_exec ڈیفالٹ طور پر منظوری کا ڈائیلاگ دکھاتا ہے، headless ماحول میں جب منظوری کا کوئی راستہ نہ ہو تو عملدرآمد مسترد کر دیتا ہے۔
- readOnly موڈ: تحریری آپریشنز کو مکمل طور پر غیر فعال کر سکتا ہے، پروڈکشن ڈیٹا بیس کے لیے موزوں ہے۔
- اسٹریمنگ قطار کی حد: SQLite iterator، MySQL Readable، PostgreSQL Query قطار کے واقعات سے زیادہ سے زیادہ maxRows+1 قطاریں جمع کرتے ہیں، حد سے زیادہ ہونے پر truncated کا نشان لگایا جاتا ہے؛ MySQL اور PostgreSQL حد تک پہنچنے پر اس استفسار کے لیے مخصوص کنکشن بند کر دیتے ہیں، حد تک نہ پہنچنے پر کنکشن پول کو واپس کر دیتے ہیں، تاکہ پورے نتائج میموری میں نہ رہیں۔
- منسوخ قابل عملدرآمد: استفسار اور تحریری آپریشنز Harness کے exec.signal کی پابندی کرتے ہیں، منسوخی پر انتظار روک دیا جاتا ہے اور کام کرنے والے MySQL/PostgreSQL مخصوص کنیکشنز ختم کر دیے جاتے ہیں۔
- بڑے انٹیجرز کا نقصان کے بغیر علاج: bigint JavaScript کے محفوظ انٹیجر کی حد کے اندر number کے طور پر آؤٹ پٹ ہوتا ہے، حد سے باہر اعشاریہ string کے طور پر آؤٹ پٹ ہوتا ہے، تاکہ خاموشی سے درستگی ضائع نہ ہو۔
- شناخت کار کی تصدیق: ٹیبل کے ناموں میں صرف حروف، اعداد اور انڈر سکور کی اجازت ہے، تاکہ schema انجیکشن سے بچا جا سکے۔
- خفیہ کلید ترتیب میں محفوظ نہیں ہوتی: پاس ورڈ کو DSH_SQL_PASSWORD_(کنکشن نام) ماحولیاتی متغیر کے ذریعے فراہم کیا جا سکتا ہے۔
ترتیب کے اشیا میں شامل ہیں: maxRows (استفسار سے واپس آنے والی قطاروں کی حد، 1-10000)، queryTimeoutMs (ایک استفسار کا ٹائم آؤٹ، ڈیفالٹ 60 سیکنڈ)، execTimeoutMs (ایک تحریری آپریشن کا ٹائم آؤٹ، ڈیفالٹ 120 سیکنڈ)، readOnly اور writeApproval۔
تنصیب کا طریقہ dsh plugin --profile web add dsh-sql ہے، ان انسٹال کرنے کے بعد Web سروس کو دوبارہ شروع کرنا ضروری ہے۔ پروجیکٹ MIT لائسنس استعمال کرتا ہے، ڈویلپمنٹ کے دوران pnpm install اور pnpm test (تعمیر اور مکمل ٹیسٹ سوٹ، بشمول حقیقی SQLite انٹیگریشن) استعمال ہوتا ہے۔ README میں بیان کیا گیا ہے کہ سرکاری @deepseek-ai/dsh@0.1.5-rc.1 اور Node 24.16.0 پر تصدیق کی گئی ہے، cordis.patch.yml اور dsh.bundle.patch کے مشترکہ پیکیج ماڈل کا استعمال کیا گیا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.