پرش به محتوای اصلی

ردیابی حسابرسی برای ایجنت‌ها یک مسئلهٔ نوشتن پیش‌از‌اجراست، نه یک مسئلهٔ داشبورد

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

نمای نزدیک از یک رک سرور که واحدهای ذخیره‌سازی چیده‌شده، چراغ‌های نشانگر و کابل‌کشی را در راهروی کم‌نور یک مرکز داده نشان می‌دهد.

شکاف پاسخگویی در رصدپذیری ایجنت

بیشتر پلتفرم‌های ایجنت با حسابرسی به‌عنوان یک دغدغهٔ پایین‌دستی برخورد می‌کنند. ردها پس از واقعه صادر می‌شوند، به یک انبار سری‌زمانی فرستاده می‌شوند و به‌صورت داشبورد نمایش داده می‌شوند. این برای پایش عملکرد کافی است و برای پاسخگویی بی‌فایده. یک داشبورد نمونه‌برداری، تجمیع و کاهش‌نمونه‌برداری می‌کند. به پرسش‌هایی مثل چند فراخوانی ابزار در این ساعت شکست خورد پاسخ می‌دهد. نمی‌تواند به این پرسش پاسخ دهد که چه توالی دقیق و مرتبی از تصمیم‌ها پیش از این حادثه رخ داد و هر یک را چه کسی مجاز کرده بود.

دو رخداد اخیر این حالت شکست را نشان می‌دهند. رخداد Medicare استرالیا و نفوذهای گزارش‌شدهٔ مرتبط با Gemini هر دو پس از واقعه از داده‌های تله‌متری ناقص بازسازی شدند — لاگ‌های پراکندهٔ برنامه، سوابق سمت ارائه‌دهنده و ردهای استنتاج که باید دستی به هم دوخته می‌شدند. در هیچ‌کدام از این دو مورد، خود سیستم سابقه‌ای کامل، مرتب و دست‌نخورده از آنچه ایجنت قصد انجامش را داشت و آنچه مجاز به انجامش بود در اختیار نداشت. بازسازی یک باستان‌شناسی جنایی بود و نتایجش تنها به اندازهٔ شکاف‌هایی که نمی‌توانست پر کند قابل اعتماد بود.

مسئلهٔ عمیق‌تر ساختاری است. سابقهٔ حسابرسی‌ای که می‌تواند توسط همان فرایندی که توصیف می‌کند ویرایش شود، شواهد نیست. اگر زمان اجرای ایجنت دسترسی نوشتن به لاگ خودش را داشته باشد، آنگاه هر نفوذی به آن زمان اجرا — تزریق پرامپت، سردرگمی وابستگی، یک ابزار مخرب — می‌تواند ورودی‌هایی را که علیه‌اش شهادت می‌دهند سرکوب، بازچینی یا بازنویسی کند. خطوط لولهٔ رصدپذیری‌ای که به این شکل ساخته می‌شوند، از منظر پاسخگویی، خودگزارشی هستند. برای اشکال‌زدایی مفیدند و در یک اختلاف بی‌ارزش.

معناشناسی نوشتن پیش‌از‌اجرا برای اجراهای ایجنت

نوشتن پیش‌از‌اجرا در موتورهای ذخیره‌سازی پاسخ جاافتاده‌ای برای این مسئله دارد: قصد پیش از اعمال اثر به‌صورت پایدار ثبت می‌شود. همین انضباط برای ایجنت‌ها هم اعمال می‌شود و لاگ را از یک خروجی به یک پیش‌شرط تبدیل می‌کند.

یک اجرای ایجنت منطبق، پیش از آنکه هر اثر جانبی‌ای فعال شود، به‌ترتیب این‌ها را ثبت می‌کند:

  1. اقدام مورد نظر — نام ابزار، آرگومان‌های کانونی‌شده، منبع هدف.
  2. تصمیم سیاست مجوزدهنده — کدام قاعده مطابقت داشت، کدام principal اجرا را فراخوانی کرد، کدام محدودیت‌ها اعمال شدند.
  3. اعتبارنامهٔ حل‌شده — ابزار به‌عنوان کدام هویت عمل خواهد کرد و دامنهٔ آن هویت چیست.

Close-up of a modern building facade with red steel beams in geometric patterns against a blue sky

تنها پس از تأیید ثبت است که فراخوانی ابزار اجرا می‌شود. بنابراین لاگ یک وابستگی زمان اجراست: اگر نویسندهٔ لاگ در دسترس نباشد، اقدام پیش نمی‌رود. این همان معاملهٔ صادقانه است. تیم‌هایی که حسابرسی نوشتن پیش‌از‌اجرا را می‌پذیرند قبول می‌کنند که قطعی لاگ به قطعی قابلیت تبدیل شود. جایگزین — لاگ‌گیری با بهترین تلاش که هرگز مسدود نمی‌کند — دقیقاً همان رژیمی است که بازسازی‌های بالا را پدید آورد.

لاگ همچنین به نقطهٔ بازیابی تبدیل می‌شود. در هنگام کرش، kill یا timeout، بازپخش مسیر ثبت‌شده تعیین می‌کند که یک اقدام دوباره تلاش شود، برگردانده شود یا قرنطینه شود. چون قصد پیش از اجرا ثبت شده بود، فرایند بازیابی می‌تواند بین هرگز شروع نشد و شروع شد و نتیجه نامعلوم است تمایز قائل شود، و همین تمایز برای idempotency و منطق جبران اهمیت دارد. بدون آن، تلاش‌های دوباره اثرات جانبی را تکرار می‌کنند و برگرداندن‌ها آن‌ها را از دست می‌دهند.

در نهایت، نویسنده باید از فرایند ایجنت جدا شود. یک الگوی رایج یک سرویس لاگ است که تحت هویتی متمایز اجرا می‌شود، ثبت‌ها را از طریق یک کانال احراز‌هویت‌شده می‌پذیرد و تنها اعتبارنامهٔ نوشتن را در اختیار دارد. فرایند ایجنت یک قابلیت فقط‌افزودنی دارد که به شناسهٔ اجرای خودش محدود است؛ نمی‌تواند حذف کند، تغییر دهد یا بین اجراها بخواند. آنگاه یک ایجنت به‌خطر‌افتاده می‌تواند از عمل امتناع کند، اما نمی‌تواند آنچه را قبلاً اعلام کرده پاک کند.

سابقه چه چیزی باید داشته باشد

یک طرح‌وارهٔ کمینه برای یک ورودی ثبت:

{
  "seq": 41822,
  "run_id": "run_7f3a...",
  "parent_step": 41819,
  "ts_monotonic": 918273645,
  "kind": "tool.intent",
  "tool": "http.fetch",
  "args_hash": "sha256:9c1f...",
  "policy_rule": "net.egress.allowlist.v4",
  "credential": "svc-fetch-readonly@proj-9",
  "context_refs": ["doc_31a", "doc_88b"]
}

چند فیلد وزن نامتناسبی دارند.

هش آرگومان، نه خود آرگومان‌ها. هش کردن اسرار را از لاگ بیرون نگه می‌دارد و در عین حال ورودی را به ورودی دقیق مقید می‌کند. جایی که آرگومان‌ها باید برای بازپخش قابل بازیابی باشند، آن‌ها را در یک انبار رClose-up of stacked rusty industrial pipes showing corrosion and textureیره کنید.

Circuit board macro

گام والد. اجراهای ایجنت درخت‌اند، نه خط. ثبت گام والدی که هر اقدام را درخواست کرده، همان چیزی است که انتساب رفتار یک زیر‌ایجنت به تفویضی که آن را پدید آورده ممکن می‌کند. بدون والدیت، اقدامات یک ازدحام به جریانی بی‌تمایز فرو می‌ریزد.

منشأ برای زمینهٔ بازیابی‌شده. هر سند، قطعه یا نتیجهٔ ابزاری که وارد پنجرهٔ زمینه می‌شود باید با شناسه و هش محتوا ارجاع داده شود. این همان چیزی است که امکان می‌دهد یک سند مسموم به هر اجرایی که آن را مصرف کرده ردیابی شود، و به عقب تا مسیر ورود داده که آن را پذیرفته است. بازیابی بدون منشأ، یک حادثهٔ تزریق را به یک تحقیق بی‌کران تبدیل می‌کند.

زمان‌بندی قطعی و شماره‌های ترتیبی یکنوا. مهرهای زمانی ساعت‌دیواری هر کارگر در یک ارکستراتور توزیع‌شده قابل مرتب‌سازی نیستند؛ انحراف ساعت و کارگران همزمان رویدادهایی را که به‌طور علّی متوالی بودند بازچینی می‌کنند. یک توالی یکنوای واحد که توسط ارکستراتور تخصیص می‌یابد، با زمان ساعت‌دیواری به‌عنوان فیلد ثانویه برای خواندن انسانی، ترتیب کاملی می‌دهد که از بازپخش جان سالم به در می‌برد.

پیامدهای عملیاتی

تقویت نوشتن و نگهداری به ردیف‌های بودجه تبدیل می‌شوند. هر فراخوانی ابزار اکنون حداقل یک ثبت پایدار هزینه دارد، اغلب چندین (قصد، تصمیم سیاست، حل اعتبارنامه، نتیجه). در ایجنت‌های پرتکرار این کسر معناداری از بودجهٔ ذخیره‌سازی و I/O است و در کنار هزینهٔ استنتاج می‌نشیند، نه درون یک سهمیهٔ رصدپذیری. سیاست نگهداری به یک تصمیم طراحی تبدیل می‌شود: مسیر کامل چه مدت نگه داشته شود، چه چیزی به هش کاهش یابد، چه چیزی به انبار سرد صادر شود. کاهش هرگز نباید زنجیره را بشکند — یک هش تنها زمانی مفید است که پیش‌تصویرش تحت سیاستی که آن را قابل اعتماد نگه می‌دارد قابل بازیابی باشد.

نسخه‌بندی طرح‌واره از روز اول. بازبینی حادثه ماه‌ها پس از تغییر کد رخ می‌دهد. اگر طرح‌وارهٔ لاگ بدون نسخه باشد، ورودی‌های دورهٔ تحت بررسی ممکن است برای ابزارهای فعلی ناخوانا باشند و تحقیق روی مهاجرت قالب متوقف شود. طرح‌وارهٔ ورودی را صریحاً نسخه‌بندی کنید، خواننده‌ها را برای هر نسخه‌ای که تاکنون صادر شده نگه دارید و تغییرات طرح‌واره را به‌عنوان تغییرات شکننده با همان سختگیری یک API در نظر بگیرید.

واکنش به حادثه از باستان‌شناسی به بازپخش تغییر می‌کند. وقتی مسیر کامل و مرتب باشد، پرسش چه اتفاقی افتاد با بازپخش اجرای ثبت‌شده در برابر تصمیم‌های ثبت‌شده پاسخ داده می‌شود. کار جالب به چرا سیاست آن را مجاز دانست و چه چیزی باید تغییر کند منتقل می‌شود. این یک بهبود واقعی است و همچنین سطح انتظار را بالا می‌برد: سازمانی که می‌تواند ایجنت‌هایش را دقیق بازپخش کند دیگر نمی‌تواند حادثه‌ها را به دید ناقص نسبت دهد.

موضع

ردیابی حسابرسی برای ایجنت‌ها یک مسئلهٔ نوشتن پیش‌از‌اجراست. لاگ باید پیش از اجرا ثبت شود، توسط فرایندی نوشته شود که ایجنت نمی‌تواند بر آن اثر بگذارد، توسط ارکستراتور مرتب شود و برای خواننده‌هایی که هنوز وجود ندارند نسخه‌بندی شود. داشبوردها برای عملیات مفید می‌مانند؛ آن‌ها شواهد نیستند. تیم‌هایی که این تمایز را درونی می‌کنند قادر خواهند بود ثابت کنند ایجنت‌هایشان چه کردند. تیم‌هایی که این کار را نمی‌کنند همچنان آن را از هر تله‌متری‌ای که جان سالم به در برده بازسازی خواهند کرد.

اشتراک‌گذاریXLinkedInپیوند یکتا5 دقیقه مطالعه

خواندن مرتبط

پرسش‌هایی که این پاسخ می‌دهد

Why can't existing observability dashboards serve as an audit trail?

Dashboards sample, aggregate and downsample telemetry, so they cannot reconstruct the exact ordered sequence of decisions that preceded an incident. They are also typically written by the same process they describe, which means a compromised agent can suppress or rewrite its own entries. Audit requires an append-only record written before execution by a separate process.

What does write-ahead logging change about agent runtime behaviour?

The log becomes a runtime dependency. The intended action, the authorising policy decision and the resolved credential are appended durably before any side effect fires. If the log writer is unavailable, the action does not proceed. On crash or kill, replay of the recorded trajectory decides whether the action is retried, rolled back or quarantined.

What is the minimum content of an agent audit entry?

Tool name, argument hash, the policy rule that matched, the credential identity the tool will act as, and the parent step that requested the action. Retrieved context should be referenced by identifier and content hash so a poisoned document can be traced to every run that consumed it. Ordering should come from orchestrator-assigned monotonic sequence numbers rather than per-worker wall-clock timestamps.

What are the main costs of adopting write-ahead auditing for agents?

Write amplification and retention become first-class budget lines alongside inference, and a log outage becomes a capability outage because actions are blocked until the append is acknowledged. Log schemas also need explicit versioning from the start, since incident review often happens months after the code changed.