چیت‌شیت

ایجنت‌های خودمختار و مجوزها

Autonomous Agents and Permissions

اجرای بی‌نظارت ایجنت همراه با محدودیت‌ها. حالت‌های مجوز، بودجه‌ها، سوییچ‌های قطع اضطراری، اجرای پایدار، تأییدیه‌ها، بازگشت به عقب.

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

وظایف اپراتور

کار و کد
وظیفهکد
بررسی اولیه برنامهpermission mode `plan`
تأیید خودکار فقط برای ویرایش فایل‌هاpermission mode `acceptEdits`
تعیین سقف برای هزینه و نوبت‌های حلقه`max_budget_usd`, `max_turns`
محدود کردن مجموعه ابزارها`allowed_tools` / `disallowed_tools`
متوقف کردن کانتینر ایجنتkubectl delete pod
فعال شدن مدارشکن با فراخوانی‌های تکراریCircuitBreaker(threshold=5)
بازپخش پس از کرشworkflow(EventLog(<path>), <query>)
ایمن‌سازی تأییدیه در برابر تلاش مجددk = p.key()

لایه‌های کنترلی

معماری
اقدامهزینهنقض محدودیتفراخوانی‌هاخواندن‌هاتأییدذخیره‌سازی پایدارحلقه‌ی ایجنتنوبت‌ها، فراخوانی‌های ابزارحالت مجوزبرنامه برای bypassPermissionsمهارکننده‌ی هزینهپشته‌ای از سقف‌هاسوییچ قطع اضطراریایجنت اجازه نوشتن در آن را نداردمدارشکنبسته، باز، نیمه‌بازتوکن قناریدسترسی همان زنگ هشدار استمخزن پیشنهادهاپیشنهاد، commit، اعتبارسنجیلاگ رویدادهاکلیدگذاری بر اساس thread_id

پیشنهاد، commit، اعتبارسنجی

گام‌به‌گام
  1. پیشنهادذخیره نیت، تبار، شعاع تخریب، بازگشت به عقب. وضعیت waiting.
  2. نمایشیک انسان متادیتا را بررسی می‌کند، نه ایجنت.
  3. تأییدتابع checklist_approve نیازمند تأیید هر سه بررسی است. وضعیت approved.
  4. پیش‌شرطوضعیت هنوز با تأییدیه مطابقت دارد؛ در غیر این صورت aborted-precondition.
  5. Commitابتدا نیت را ذخیره کن، سپس اثر جانبی را اجرا کن.
  6. اعتبارسنجیخواندن مجدد هدف. در صورت شکست، بازگشت به عقب اجرا می‌شود.
  7. تلاش مجددیک وضعیت پایانی، نتیجه ذخیره‌شده را برمی‌گرداند. بدون اجرای مجدد.

فعالیت پایدار

کد
python
def activity(name: str):
    def deco(fn):
        @functools.wraps(fn)
        def wrapper(log: EventLog, *args):
            hit = log.lookup(name, args)                      # رویداد انجام در لاگ ثبت شد؟
            if hit:
                return hit["result"]                          # بازپخش، بدون اجرای مجدد
            log.append({"name": name, "args": list(args), "status": "started"})
            result = fn(*args)                                # اثر جانبی واقعی
            log.append({"name": name, "args": list(args),
                        "status": "done", "result": result})  # ثبت خروجی در لاگ
            return result
        return wrapper
    return deco

مهارکننده و مدارشکن

کد
python
gov = Governor(max_turns=200, max_budget_usd=50.0)  # سقف‌های نشست
if gov.enable_iter_cap and turn >= gov.max_turns:
    run.stopped_by = "max_turns"                    # سقف تکرار
if gov.enable_session_cap and run.dollars >= gov.max_budget_usd:
    run.stopped_by = "max_budget_usd"               # سقف دلاری
if gov.enable_velocity and velocity_exceeded(run, gov, now_min):
    run.stopped_by = "velocity_limit"               # نرخ هزینه شناور
if kill_switch["enabled"]:
    break                                           # دکمه خاموش کردن خارجی
allowed = breaker.record(f"{a.kind}:{a.payload}")
if not allowed:
    break                                           # 5 فراخوانی یکسان آن را باز کرد

حالت‌های مجوز

مفهوم‌ها
plan
کاربر برنامه را تأیید می‌کند. هر اقدام ابتدا بررسی می‌شود.
default
«دستی». برای اقدامات شل، مخرب و شبکه‌ای پرامپت می‌دهد.
acceptEdits
نوشتن در فایل خودکار تأیید می‌شود. شل و شبکه همچنان پرامپت دارند.
auto
یک مدل طبقه‌بند هر اقدام را بررسی می‌کند. مانع از تشدید دسترسی می‌شود.
dontAsk
هرگز پرامپت نمی‌دهد. اقدامات تأییدنشده رد می‌شوند.
bypassPermissions
همه‌چیز را تأیید می‌کند. فقط برای کانتینرهای یک‌بارمصرف.

پیش‌فرض‌ها در شبیه‌سازها

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
max_tokens_per_request10_000سقف تکمیل به ازای هر فراخوانی
max_turns200تکرارهای حلقه در هر نشست
max_budget_usd50.0سقف دلاری نشست، در صورت نقض لغو می‌شود
velocity_usd_per_min5.0حد قطع نرخ هزینه شناور
velocity_window_min10.0پنجره زمانی برای نرخ هزینه
monthly_cap_usd500.0نشتی‌های کند را دیر تشخیص می‌دهد
threshold5فراخوانی‌های یکسانی که مدارشکن را باز می‌کنند
Half-open probesdefault 11 تا 3 بار پس از دوره خنک‌سازی

کدام سقف چه چیزی را مهار می‌کند

مفهوم‌ها
حلقه مهارنشدنی
مهار توسط حد سرعت.
نشتی کند
حدود 2 برابر کار مورد انتظار؛ مهار توسط سقف روزانه.
انتشار بد
نسخه جدید 5 برابر توکن مصرف می‌کند؛ مهار توسط سقف هفتگی یا ماهانه.
افزایش ناگهانی مجاز
مهار توسط سقف ساعتی یا روزانه با یک لاگ شفاف.
دریفت تدریجی ناشی از حمله
آشکارسازهای آماری را دور می‌زند؛ با محدودیت‌های قطعی مهار می‌شود.
ترکیب اقدامات امن
هیچ آشکارسازی آن‌ها را مهار نمی‌کند.

عیب‌یابی

عیب‌یابی
  • کرش باعث اجرای مجدد تمام فراخوانی‌های ابزار می‌شود

    علت
    حلقه ساده‌ی while True
    راه‌حل
    فعالیت‌ها به‌همراه لاگ رویدادها
  • انحراف در بازپخش

    علت
    استفاده از ساعت سیستم یا مقادیر تصادفی در جریان کاری
    راه‌حل
    ثبت آن به‌عنوان یک اثر جانبی
  • اقدام تأییدشده دو بار اجرا می‌شود

    علت
    نبود کلید یکتایی تراکنش
    راه‌حل
    یک کلید به ازای هر پیشنهاد
  • کسری بودجه پس از ازسرگیری

    علت
    فقط بررسی کلید یکتایی تراکنش
    راه‌حل
    افزودن بررسی پیش‌شرط
  • وضعیت «Committed» اما بدون اثر جانبی

    علت
    وضعیت ذخیره شده، اقدام از بین رفته است
    راه‌حل
    اعتبارسنجی با خواندن مجدد، سپس بازگشت به عقب
  • تأییدیه‌ها بدون بررسی واقعی

    علت
    دکمه تأیید ساده
    راه‌حل
    چک‌لیست پرسش و پاسخ چالشی
  • سه برابر شدن صورت‌حساب پس از اضافه شدن ابزار جدید

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

    علت
    آشکارساز در دسترس ایجنت است
    راه‌حل
    نگهداری آن در جایی که ایجنت دسترسی نوشتن ندارد

واژه‌نامه

اصطلاح‌ها
HITL
انسان در چرخه. یک فرد پیش از اقدام آن را تأیید می‌کند.
افق METR
طول وظیفه‌ای که یک مدل با اطمینان 50٪ کامل می‌کند.
محروم‌سازی کیف پول
حلقه‌ی ایجنتی که بی‌پایان خرج می‌کند و سقفی برای متوقف کردنش نیست.
thread_id
کلیدی که دامنه وضعیت پایدار را برای یک نشست تعیین می‌کند.
اجاره
مالکیتی کوتاه‌مدت که بر اساس آن ورکر یک اجرا را هدایت می‌کند و پس از کرش منقضی می‌شود.
شعاع تخریب
دامنه تأثیر در صورتی که اقدام اشتباه پیش برود.
SAGA
تراکنش جبرانی که اثر اقدام اولیه را خنثی می‌کند.

پرسش و پاسخ

پرسش و پاسخ
99٪ در هر گام، 70 گام؟
ایجنت همچنان در نیمی از موارد شکست می‌خورد.
چرا پشته‌ای از سقف‌ها؟
یک سقف ماهانه زمانی فعال می‌شود که کیف پول خالی شده است.
چرا ذخیره پایدار هر تغییر وضعیت؟
بازپخش به هر نقطه‌ای می‌رسد و بازیابی اجاره دقیق خواهد بود.
چه زمانی اجرای پایدار نادیده گرفته شود؟
اجراهای کوتاه بدون ورودی انسان، یا کارهای فقط-خواندنی.
حالت auto چه چیزی را از دست می‌دهد؟
تزریق‌های پنهان و توالی‌های آسیب‌رسان از اقدامات امن.

نکات

نکته‌ها
  • هرگز auto را بدون max_budget_usd اجرا نکنید.
  • در هر اقدام سرنوشت‌ساز، سوییچ قطع اضطراری را بررسی کنید.
  • فعال‌سازی مجدد سوییچ قطع اضطراری فقط باید با اقدام صریح انسانی باشد.
  • به هر ابزار جدید سقف و هشدار اختصاصی بدهید.
  • برای نوشتن‌های غیرقابل بازگشت همیشه از انسان در چرخه استفاده کنید؛ برای خواندن هرگز.
  • هر فرایند بازگشت به عقب را حداقل یک بار سرتاسری تمرین کنید.