Skip to content

آزمایشی ​

بلوک experimental چهار حوزهٔ ویژگی نسبتاً مرتبط را حمل می‌کند: فایل کش پایدار، RESTful API سازگار با Clash، API آمار gRPC سازگار با V2Ray، و نقطه‌انتهایی pprof / اشکال‌زدایی زمان اجرای تعبیه‌شده.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
cache_file*CacheFileOptions(unset)CacheFileOptionsکش وضعیت پایدار.
clash_api*ClashAPIOptions(unset)ClashAPIOptionsکنترل‌کنندهٔ خارجی سازگار با داشبوردهای Clash.
v2ray_api*V2RayAPIOptions(unset)V2RayAPIOptionsسرویس آمار gRPC سازگار با کلاینت‌های V2Ray.
debug*DebugOptions(unset)DebugOptionsنقطه‌انتهایی pprof تعبیه‌شده و تنظیم GC.

منبع: option/experimental.go:5-10 · ثابت‌شده در v1.14.2 (af6e64c)

cache_file ​

کش پایدار روی دیسک برای اجاره‌های fakeip، حافظهٔ پراکسی انتخاب‌شده، ورودی‌های RDRC، کش DNS (store_dns) و وضعیت‌های مشابه زمان اجرا.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
enabledboolfalsetrue | falseروشن کردن فایل کش.
pathstringcache.db<file path>محل ذخیرهٔ پایگاه‌دادهٔ کش.
cache_idstring(unset)<string>پیشوند فضای نام در همان فایل کش. هنگامی که یک فایل کش بین چند نمونهٔ sing-box به اشتراک گذاشته می‌شود مفید است.
store_fakeipboolfalsetrue | falseپایدارسازی جدول اجارهٔ fakeip.
store_rdrcboolfalsetrue | falseمنسوخ است و store_dns جایگزین آن است. کش پاسخ‌های ردشدهٔ DNS را که فیلدهای فیلتر آدرس قدیمی DNS استفاده می‌کنند پایدار می‌کند.
rdrc_timeoutbadoption.Duration7d<duration>مدت زمان معتبر ماندن ورودی‌های rdrc در کش.
store_dnsboolfalsetrue | falseکش DNS را در فایل کش پایدار می‌کند تا پس از راه‌اندازی مجدد باقی بماند؛ از dns.disable_expire و dns.optimistic پیروی می‌کند.

منبع: option/experimental.go:12-20 · ثابت‌شده در v1.14.2 (af6e64c)

clash_api ​

یک پیاده‌سازی drop-in از Clash RESTful API. سازگار با metacubexd، Yacd، Clash Dashboard و دیگر مصرف‌کنندگان Clash-API.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
external_controllerstring(unset)<host:port>آدرس شنود RESTful API.
external_uistring(unset)<dir path>دایرکتوری محلی که به‌عنوان داشبورد سرو می‌شود.
external_ui_download_urlstringhttps://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip<URL>بستهٔ tarball که وقتی external_ui خالی است به‌طور خودکار دانلود می‌شود.
external_ui_download_detourstring(direct)<outbound tag>خروجی مورد استفاده برای دانلود.
secretstring(unset)<bearer token>توکن Bearer که برای همهٔ فراخوانی‌های API لازم است. به‌شدت توصیه می‌شود.
default_modestringrulerule | global | direct | <custom>حالت اولیهٔ تونل که از طریق API گزارش می‌شود. مقادیر سفارشی پذیرفته می‌شوند؛ داشبوردهای غیراستاندارد آن‌ها را نادیده می‌گیرند.
access_control_allow_originbadoption.Listable[string][]<origin>فهرست مجاز CORS برای API.
access_control_allow_private_networkboolfalsetrue | falseاجازهٔ درخواست‌های preflight شبکه‌های خصوصی.

منبع: option/experimental.go:22-42 · ثابت‌شده در v1.14.2 (af6e64c)

پنج فیلد دیگر (cache_file، cache_id، store_mode، store_selected، store_fakeip) به بلوک سطح بالای cache_file تعلق دارند — تنظیم هر یک از آن‌ها روی clash_api در راه‌اندازی شکست می‌خورد.

v2ray_api ​

API آمار gRPC سازگار با V2Ray. اگر ابزارهای موجود (v2ray api stats query ...) دارید که می‌خواهید همچنان از آن‌ها استفاده کنید، مفید است.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
listenstring(required)<host:port>آدرس شنود gRPC برای StatsService.
stats*V2RayStatsServiceOptions(unset)V2RayStatsServiceOptionsانتخاب شمارنده.

منبع: option/experimental.go:44-47 · ثابت‌شده در v1.14.2 (af6e64c)

v2ray_api.stats ​

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
enabledboolfalsetrue | falseروشن کردن سرویس آمار.
inbounds[]string[]<inbound tag>برچسب‌های ورودی که ترافیک آن‌ها شمارش می‌شود.
outbounds[]string[]<outbound tag>برچسب‌های خروجی که ترافیک آن‌ها شمارش می‌شود.
users[]string[]<user name>شمارنده‌های هر کاربر.

منبع: option/experimental.go:49-54 · ثابت‌شده در v1.14.2 (af6e64c)

debug ​

بلوک تنظیم زمان اجرای Go. اکثر فیلدها دستگیره‌های مستقیمی برای بسته‌های runtime و runtime/debug هستند. فیلد listen کنترل‌گرهای استاندارد net/http/pprof را در دسترس قرار می‌دهد.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
listenstring(unset)<host:port>آدرس شنود نقطه‌انتهایی pprof (مثلاً 127.0.0.1:6060).
gc_percent*int(Go default)<int> | -1بازنویسی GOGC. مقدار -1 جمع‌آوری زباله را غیرفعال می‌کند.
max_stack*int(Go default)<bytes>سقف پشتهٔ هر goroutine.
max_threads*int(Go default)<int>سقف رشته به سبک GOMAXPROCS.
panic_on_fault*boolfalsetrue | falseتبدیل خرابی‌های ترمیم‌ناپذیر زمان اجرا به panic با اثر پشته.
trace_backstring(Go default)none | single | all | system | crashتنظیم GOTRACEBACK.
memory_limit*byteformats.MemoryBytes(unset)<bytes/MiB/GiB>سقف نرم حافظه؛ اعداد ساده (بایت) یا مقادیر پسوندی مانند 256MiB را می‌پذیرد.
oom_killer*boolfalsetrue | falseخراب کردن فرایند وقتی memory_limit برای مدت طولانی نقض شود.

منبع: option/debug.go:5-14 · ثابت‌شده در v1.14.2 (af6e64c)

مثال ​

json
{
  "experimental": {
    "cache_file": {
      "enabled": true,
      "path": "cache.db",
      "store_fakeip": true
    },
    "clash_api": {
      "external_controller": "127.0.0.1:9090",
      "secret": "<random>",
      "external_ui": "/etc/sing-box/ui"
    },
    "debug": {
      "listen": "127.0.0.1:6060",
      "memory_limit": "256MiB"
    }
  }
}

نکات ​

  • تنظیم هر یک از فیلدهای کش روی clash_api (cache_file، cache_id، store_mode، store_selected، store_fakeip) باعث می‌شود Clash API در راه‌اندازی با اشاره به experimental.cache_file شکست بخورد — از همان بلوک استفاده کنید.
  • store_rdrc منسوخ است: به‌جای آن store_dns را فعال کنید که کل کش DNS را پایدار می‌کند، نه فقط پاسخ‌های ردشده را.
  • debug.memory_limit هم اعداد ساده (بایت) و هم مقادیر لفظی با پسوند مانند "256MiB" یا "2GiB" را می‌پذیرد، که توسط byteformats.MemoryBytes پارس می‌شود.

منبع: option/experimental.go:5-54 · v1.14.2 (af6e64c)

Core Tutorial اثر Argsment