چیت‌شیت

مجوزهای مهارت، ارزیابی‌ها و زنجیره تأمین

Skill Permissions, Evals and Supply Chain

بررسی اکشن‌های مهارت پیش از اجرا، ایزوله‌سازی آن‌ها، کنترل هر انتشار با لایه‌ی ارزیابی و اسکن بسته‌ها.

  • ۱۱ بخش
  • ۳ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. نشانه‌ها، دلایل و راه‌حل‌ها
  2. ترتیب بررسی‌های review_action
  3. بررسی یک اکشن
  4. اجرای آزمایشگاه‌ها و ابزارها
  5. اجرای تمرین ایزوله‌سازی
  6. پیش‌فرض‌ها و محدودیت‌ها
  7. مرزهای ایزوله‌سازی
  8. شش لایه‌ی ارزیابی
  9. پایپ‌لاین‌های پروژه
  10. وظایف در کد
  11. پرسش‌ها

نشانه‌ها، دلایل و راه‌حل‌ها

عیب‌یابی
  • deny با قاعده‌ی workspace-jail

    علت
    مسیر مقصد بیرون از ریشه حل می‌شود
    راه‌حل
    مقصدها را زیر workspace_root نگه دارید
  • عدم پذیرش command-review با approved=True

    علت
    rm در DESTRUCTIVE_EXECUTABLES است
    راه‌حل
    تأیید دستی نمی‌تواند آن را بازنویسی کند. از یک ابزار محدودتر استفاده کنید
  • عدم پذیرش network-allowlist روی پورت 8443

    علت
    پورت 8443 یک مبدأ (origin) متفاوت است
    راه‌حل
    آن مبدأ را به همراه پورتش اضافه کنید
  • approval-gate روی یک URL مجاز

    علت
    influenced_by_untrusted_content برابر true است
    راه‌حل
    مقصد و پیامد را نمایش دهید. تأییدیه بگیرید
  • عدم پذیرش secret-review

    علت
    بدنه‌ی پیام با SECRET_PATTERNS مطابقت دارد
    راه‌حل
    اطلاعات هویتی را به یک ابزار محدود تزریق کنید
  • خطای لینت orphan-file

    علت
    فایل SKILL.md به این فایل ارجاع نداده است
    راه‌حل
    به فایل ارجاع دهید یا آن را حذف کنید
  • fixture_passed برابر true و passed برابر false

    علت
    هیچ گواهی خارجی معتبری وجود ندارد
    راه‌حل
    --attestation و --trusted-attestation-sha256 را ارسال کنید
  • مقدار usable در ممیزی false است

    علت
    محتوا یا گروه یکسان در هر دو افراز
    راه‌حل
    قبل از تقسیم، بر اساس محتوا و گروه اجتماع بگیرید

ترتیب بررسی‌های review_action

گام‌به‌گام
  1. policy-changeهمیشه deny با قاعده‌ی authority-boundary.
  2. Kindمقادیر kind خارج از allowed_kinds منجر به رد kind-allowlist می‌شوند.
  3. Pathعملیات read، write و delete از طریق normalize_workspace_path حل می‌شوند. خروج از مسیر موجب workspace-jail می‌شود.
  4. Commandتابع inspect_command نام خالص، دستورات مخرب، نویسه‌های کنترلی و پیشوند argv را بررسی می‌کند.
  5. Networkتابع normalize_https_origin پورت مؤثر را اضافه می‌کند. مبدأ باید در لیست مجاز باشد.
  6. Secretsتطابق با contains_secret خروجی deny یا در صورت permit_secret_use_after_approval خروجی require-approval می‌دهد.
  7. Approvalموارد approval_kinds و اثرپذیری نامعتبر نیاز به approved دارند؛ در غیر این صورت قاعده‌ی approval-gate.
  8. Allowقاعده‌ی policy-allow. فیلد executed مقدار false می‌ماند.

بررسی یک اکشن

کد
python
policy = SandboxPolicy(
    workspace_root=workspace,                            # حل‌شده با strict=True
    allowed_kinds=("read", "write", "delete", "command", "network"),
    command_allowlist=(("python3", "-m", "unittest"),),  # پیشوندهای argv
    network_allowlist=("https://docs.example.test",),    # فقط مبدأها
)
request = ActionRequest("write", target="summary.json")  # عملیات write در approval_kinds است
review_action(policy, request).to_dict()["verdict"]      # "require-approval"
request = ActionRequest("write", target="summary.json", approved=True)
review_action(policy, request).rule                      # "policy-allow"
normalize_https_origin("https://api.example.test")       # افزودن ":443"

اجرای آزمایشگاه‌ها و ابزارها

دستورها
دستورعملکرد
python3 code/main.pyتصمیمات دمو را چاپ می‌کند. هیچ فرایندی را آغاز نمی‌کند
python3 -m unittest discover -s code/tests -vتست‌های درس را اجرا می‌کند
python3 scripts/review_action.py --policy <policy> --request <request>حکم ارزیابی و قاعده را برای یک درخواست برمی‌گرداند
evaluate_skill.py --fixture-demo <bundle>اجرای مجموعه‌داده‌ی نمونه. fixturePassed برابر true و productionReady برابر false
scanner examples/reviewable 3اسکن یک بسته با آستانه 3. چاپ خروجی JSON
cli.py <cases> --out experiment.jsonپیشنهاد قواعد و اجرای گیت کنترل. ارتقا به محیط عملیاتی نمی‌دهد
python3 scripts/project_test.py <project> --all --solution --strictتمام مراحل راهکار مرجع را بررسی می‌کند

اجرای تمرین ایزوله‌سازی

کد
bash
docker build -f code/sandbox/Containerfile -t aiefs-skill-sandbox code/sandbox
docker run --rm --network none --read-only --cap-drop ALL \
  --security-opt no-new-privileges --pids-limit 64 --memory 128m --cpus 0.5 \
  --tmpfs /tmp:rw,noexec,nosuid,size=16m \
  --mount type=bind,src="${PWD}/code/sandbox/input",dst=/input,readonly \
  --env DEMO_VALUE=bounded aiefs-skill-sandbox
# مورد انتظار: /input خواندنی، ایمیج فقط‌خواندنی، شبکه ناموفق

پیش‌فرض‌ها و محدودیت‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضنکته
allowed_kinds("read",)SandboxPolicy فقط اجازه خواندن می‌دهد
approval_kinds("write", "delete", "network")این نوع‌ها نیاز به approved دارند
MAX_SKILL_BODY_CHARS10_000خطای لینت body-size بالاتر از آن
MAX_COMPANION_FILE_BYTES1_000_000خطای لینت file-size بالاتر از آن
`min_precision`, `min_recall`0.8ReleaseThresholds در آزمایشگاه
min_repeat_rate0.9کمترین نرخ قبولی به ازای هر مورد
min_gain0.05گیت حلقه همچنین به صفر پسرفت نیاز دارد
Scanner threshold3آستانه‌ی 0 یک خطاست

مرزهای ایزوله‌سازی

مقایسه
فاکتورزیرفرایند محدودشدهکانتینرمیکرووی‌ام (MicroVM)
موارد ایزوله‌شدهمحیط، cwd، مهلت زمانی (timeout)، خروجیفضاهای نام سیستم‌فایل و فرایندکرنل مهمان مجزا
ایزوله نمی‌شودکرنل، سیستم‌فایل میزبان، شبکهکرنل مشترک، مانت‌های میزبانمانت‌های نادرست، اطلاعات هویتی، ترافیک خروجی
کاربرد معمولابزارهای محلی بازبینی‌شدهبیلدها و تست‌های مخزنکد غیرقابل‌اعتماد، اثرگذاری بالا

شش لایه‌ی ارزیابی

مفهوم‌ها
Structure
لینت بدون مدل. CI خطاهای E_* را مسدود و هشدارهای بازبینی‌شده‌ی W_* را مجاز می‌کند.
Routing
دقت و بازخوانی روی موارد مثبت، منفی‌های قطعی و نمونه‌های منفی دشوار. گزارش تعداد خام.
Behavior
خط مبنا و حالت آزمایشی از مدل، ابزارها، وظیفه و بودجه‌ی یکسان استفاده می‌کنند.
Scripts
تست خارج از اجراهای مدل با ورودی خالی، ناهنجار و تکراری.
Safety
ثبت نوع کنترل: صرفاً دستورالعمل، سیاست ابزار، تأییدیه، ساندباکس یا اعتبارسنجی.
Portability
نصب در یک مقصد تمیز. اعتبارسنجی نسخه‌ی نصب‌شده.
Verdicts
احکام fixturePassed، localEvidenceReady و productionReady. حکم passed تابع productionReady است.

پایپ‌لاین‌های پروژه

معماری
خطوطیافته‌هاامتیازتوسعهخطاهاکاندیداسپن‌هاآفست‌های بایت UTF-8اسکنسه قاعده‌ی نام‌گذاری‌شدهrisk_scoreیک‌بار به ازای هر قاعده و خطبازبینینیازمند بازبینی یا زیر آستانهsplit_casesاجتماع محتوا و گروهارزیابیردیف‌های هر موردپیشنهادخطاهای محیط توسعه، حداقل پشتیبانی 2گیت کنترلبهبود و پسرفت‌ها

وظایف در کد

کار و کد
وظیفهکد
لینت یک بستهlint_package(root)
امتیازدهی به مسیریابیclassification_metrics(expected, predicted)
بررسی نسخه‌ی نصب‌شدهverify_manifest(root, expected)
ماتریس پشتیبانی میزبانportability_matrix(requirements, hosts)
تقسیم بدون نشت دادهsplit_cases(cases, holdout_fraction=0.25)
پیشنهاد قواعدpropose(development, rules, min_support=2)
گیت کنترل یک کاندیدgate(holdout, baseline, candidate)
بهبود مهارت کتابخانه‌ای`register(skill, dedup=True)` bumps the version

پرسش‌ها

پرسش و پاسخ
آیا allowed-tools مهارت را ساندباکس می‌کند؟
خیر. روی پرامپت‌های دسترسی یا مجوز اثر می‌گذارد، اما ایزوله‌سازی سیستم‌عامل نیست.
آیا هش امن بودن بسته را اثبات می‌کند؟
خیر. فقط اثبات می‌کند که بایت‌ها با مانیفست مطابقت دارند.
آیا اسکنِ زیر آستانه امن است؟
خیر. صرفاً این قواعد مشخص از آستانه رد نشده‌اند.
چرا مهارت‌ها باید نسخه‌بندی شوند؟
والد مقید به v1، نسخه‌ی بهبودیافته‌ی v3 را دریافت نمی‌کند.
چرا مجموعه‌ی آزمون نهایی باید چرخانده شود؟
تنظیم مکرر روی یک داده‌ی آزمون ثابت، اطلاعات را نشت می‌دهد.