چیتشیت
مجوزهای مهارت، ارزیابیها و زنجیره تأمین
Skill Permissions, Evals and Supply Chain
بررسی اکشنهای مهارت پیش از اجرا، ایزولهسازی آنها، کنترل هر انتشار با لایهی ارزیابی و اسکن بستهها.
فهرست مطالب
نشانهها، دلایل و راهحلها
عیبیابی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
گامبهگام- policy-changeهمیشه
denyبا قاعدهیauthority-boundary. - Kindمقادیر kind خارج از
allowed_kindsمنجر به ردkind-allowlistمیشوند. - Pathعملیات read، write و delete از طریق
normalize_workspace_pathحل میشوند. خروج از مسیر موجبworkspace-jailمیشود. - Commandتابع
inspect_commandنام خالص، دستورات مخرب، نویسههای کنترلی و پیشوند argv را بررسی میکند. - Networkتابع
normalize_https_originپورت مؤثر را اضافه میکند. مبدأ باید در لیست مجاز باشد. - Secretsتطابق با
contains_secretخروجیdenyیا در صورتpermit_secret_use_after_approvalخروجیrequire-approvalمیدهد. - Approvalموارد
approval_kindsو اثرپذیری نامعتبر نیاز بهapprovedدارند؛ در غیر این صورت قاعدهیapproval-gate. - 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_CHARS | 10_000 | خطای لینت body-size بالاتر از آن |
MAX_COMPANION_FILE_BYTES | 1_000_000 | خطای لینت file-size بالاتر از آن |
`min_precision`, `min_recall` | 0.8 | ReleaseThresholds در آزمایشگاه |
min_repeat_rate | 0.9 | کمترین نرخ قبولی به ازای هر مورد |
min_gain | 0.05 | گیت حلقه همچنین به صفر پسرفت نیاز دارد |
Scanner threshold | 3 | آستانهی 0 یک خطاست |
مرزهای ایزولهسازی
مقایسه| فاکتور | زیرفرایند محدودشده | کانتینر | میکروویام (MicroVM) |
|---|---|---|---|
| موارد ایزولهشده | محیط، cwd، مهلت زمانی (timeout)، خروجی | فضاهای نام سیستمفایل و فرایند | کرنل مهمان مجزا |
| ایزوله نمیشود | کرنل، سیستمفایل میزبان، شبکه | کرنل مشترک، مانتهای میزبان | مانتهای نادرست، اطلاعات هویتی، ترافیک خروجی |
| کاربرد معمول | ابزارهای محلی بازبینیشده | بیلدها و تستهای مخزن | کد غیرقابلاعتماد، اثرگذاری بالا |
شش لایهی ارزیابی
مفهومها- Structure
- لینت بدون مدل. CI خطاهای
E_*را مسدود و هشدارهای بازبینیشدهیW_*را مجاز میکند. - Routing
- دقت و بازخوانی روی موارد مثبت، منفیهای قطعی و نمونههای منفی دشوار. گزارش تعداد خام.
- Behavior
- خط مبنا و حالت آزمایشی از مدل، ابزارها، وظیفه و بودجهی یکسان استفاده میکنند.
- Scripts
- تست خارج از اجراهای مدل با ورودی خالی، ناهنجار و تکراری.
- Safety
- ثبت نوع کنترل: صرفاً دستورالعمل، سیاست ابزار، تأییدیه، ساندباکس یا اعتبارسنجی.
- Portability
- نصب در یک مقصد تمیز. اعتبارسنجی نسخهی نصبشده.
- Verdicts
- احکام
fixturePassed،localEvidenceReadyوproductionReady. حکمpassedتابعproductionReadyاست.
پایپلاینهای پروژه
معماریوظایف در کد
کار و کد| وظیفه | کد |
|---|---|
| لینت یک بسته | 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 را دریافت نمیکند.
- چرا مجموعهی آزمون نهایی باید چرخانده شود؟
- تنظیم مکرر روی یک دادهی آزمون ثابت، اطلاعات را نشت میدهد.