فاز 14 · درس 17

بستر آزمایشی به‌شکل کتابخانه: ساب‌ایجنت‌ها و ذخیره‌ساز نشست در Claude Agent SDK

نوع
مفهومی و ساختنی
زمان
حدود 75 دقیقه
زبان‌ها
Python (stdlib)
پیش‌نیاز
Phase 14 · 01 (حلقه‌ی ایجنت)، Phase 14 · 10 (کتابخانه‌های مهارت)
تصویر مفهومی از یک هسته مرکزی پردازش که رشته‌های داده را به چندین گره مستقل متصل می‌کند و وضعیت‌ها را در یک ساختار منظم ثبت می‌نماید
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم کلیدی
  4. مقایسه‌ی Client SDK با Agent SDK
  5. ابزارهای توکار
  6. ساب‌ایجنت‌ها
  7. ذخیره‌ساز نشست
  8. هوک‌ها
  9. زمینه‌ی ردگیری محاسبات با W3C
  10. سرویس Claude Managed Agents
  11. خطاهای رایج در این الگو
  12. پیاده‌سازی
  13. کاربردها
  14. خروجی نهایی
  15. تمرین‌ها
  16. اصطلاحات کلیدی
  17. برای مطالعه‌ی بیشتر

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

در این درس یاد می‌گیرید که چگونه بستر آزمایشی یک عامل هوشمند را در قالب یک کتابخانه سازمان‌دهی کنید. با بهره‌گیری از الگوی Claude Agent SDK، نحوه‌ی تفکیک وظایف از طریق ساب‌ایجنت‌ها (Subagents)، ایزوله‌سازی پنجره‌ی بافتار، اجرای هوک‌های چرخه‌ی حیات و ماندگاری نشست‌ها را به‌صورت استاندارد بررسی می‌کنیم.

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

یک بستر آزمایشی (harness) که می‌توانید آن را ایمپورت کنید: ابزارهای توکار، ساب‌ایجنت‌ها برای جداسازی بافتار، هوک‌ها، انتشار ردگیری محاسبات (trace propagation) با استاندارد W3C و ماندگاری نشست‌ها. در این میان، Claude Agent SDK نمونه‌ی مرجع به شمار می‌رود — یعنی همان بستر آزمایشی Claude Code در قالب یک کتابخانه — و Claude Managed Agents نیز گزینه‌ی میزبانی‌شده (hosted) برای کارهای ناهمگام و طولانی‌مدت است.

اهداف یادگیری

  • تفاوت بین Anthropic Client SDK (کار با API خام) و Claude Agent SDK (ساختار بستر آزمایشی) را توضیح دهید.
  • ساب‌ایجنت‌ها — موازی‌سازی و جداسازی بافتار — و زمان به‌کارگیری آن‌ها را شرح دهید.
  • متدهای سطح ذخیره‌ساز نشست در SDK پایتون (append، load، list_sessions، delete، list_subkeys) و نقش پرچم --session-mirror را نام ببرید.
  • یک بستر آزمایشی را با کتابخانه‌ی استاندارد پایتون پیاده‌سازی کنید که شامل ابزارهای توکار، ساخت ساب‌ایجنت با بافتار ایزوله، هوک‌های چرخه‌ی حیات و ذخیره‌ساز نشست باشد.

صورت مسئله

کار با API خام یک مدل زبانی فقط یک رفت‌وبرگشت ساده به شما می‌دهد. اما یک ایجنت آماده‌ی محیط عملیاتی به اجرای ابزارها، سرورهای MCP، هوک‌های چرخه‌ی حیات، ساخت ساب‌ایجنت، ماندگاری نشست و انتشار ردگیری محاسبات نیاز دارد. Claude Agent SDK تمام این ساختار را در قالب یک کتابخانه عرضه می‌کند — همان بستر آزمایشی که Claude Code استفاده می‌کند، اما این بار برای ساخت ایجنت‌های سفارشی شما.

مفاهیم کلیدی

مقایسه‌ی Client SDK با Agent SDK

  • بسته‌ی Client SDK (anthropic): Messages API خام. مدیریت حلقه، ابزارها و وضعیت برنامه کاملاً بر عهده‌ی خود شماست.
  • بسته‌ی Agent SDK (claude-agent-sdk): اجرای توکار ابزارها، اتصالات MCP، هوک‌ها، ساخت ساب‌ایجنت و ذخیره‌ساز نشست. در واقع همان حلقه‌ی Claude Code در قالب یک کتابخانه است.

ابزارهای توکار

این SDK بیش از 10 ابزار آماده دارد: خواندن و نوشتن فایل، شل، grep، glob، دریافت محتوای وب و موارد دیگر. ابزارهای سفارشی هم با همان رابط استاندارد اسکیمای ابزار ثبت می‌شوند.

ساب‌ایجنت‌ها

شرکت Anthropic دو کاربرد اصلی برای ساب‌ایجنت‌ها مستند کرده است:

  1. موازی‌سازی (Parallelization): اجرای هم‌زمان کارهای مستقل. مثلاً «پیدا کردن فایل تست برای هر یک از این 20 ماژول» به 20 تسک موازی توسط ساب‌ایجنت‌ها تبدیل می‌شود.
  2. جداسازی بافتار (Context isolation): ساب‌ایجنت‌ها از پنجره‌ی بافتار (Context Window) اختصاصی خودشان استفاده می‌کنند و فقط نتایج به هماهنگ‌کننده (orchestrator) برمی‌گردد. با این کار، سهمیه‌ی بافتار هماهنگ‌کننده دست‌نخورده باقی می‌ماند.

قابلیت‌های تازه‌ی SDK پایتون: متدهای list_subagents() و get_subagent_messages() برای خواندن متن گفت‌وگوهای ساب‌ایجنت.

ذخیره‌ساز نشست

تطابق کامل پروتکل با نسخه‌ی TypeScript:

  • append(session_id, message) — افزودن یک نوبت گفت‌وگو (turn).
  • load(session_id) — بازیابی گفت‌وگو.
  • list_sessions() — فهرست‌کردن نشست‌ها.
  • delete(session_id) — حذف نشست همراه با حذف آبشاری نشست‌های ساب‌ایجنت‌ها.
  • list_subkeys(session_id) — فهرست‌کردن کلیدهای ساب‌ایجنت‌ها.

پرچم --session-mirror در رابط خط فرمان، متن گفت‌وگو را هم‌زمان با استریم شدن روی فایلی خارجی می‌نویسد تا اشکال‌زدایی آن ساده‌تر شود.

هوک‌ها

هوک‌های چرخه‌ی حیاتی که می‌توانید ثبت کنید:

  • PreToolUse و PostToolUse — کنترل دسترسی، اعتبارسنجی یا ثبت لاگ قبل و بعد از فراخوانی ابزار.
  • SessionStart و SessionEnd — مقداردهی اولیه و پاک‌سازی منابع در آغاز و پایان نشست.
  • UserPromptSubmit — اعمال پردازش روی ورودی کاربر پیش از دیدن مدل.
  • PreCompact — اجرا پیش از فشرده‌سازی بافتار (compaction).
  • Stop — پاک‌سازی منابع هنگام خروج ایجنت.
  • Notification — هشدارهای جانبی خارج از جریان اصلی.

سیستم‌های حرفه‌ای (مثل گردش کارهای پیشرفته‌ی فاز 14 سرفصل‌ها) از همین هوک‌ها برای تزریق رفتارهای فراگیر و مشترک در کل برنامه استفاده می‌کنند.

زمینه‌ی ردگیری محاسبات با W3C

اسپن‌های (spans) فعال OpenTelemetry در فراخواننده، از طریق هدرهای W3C trace context به زیرپردازه‌ی خط فرمان منتقل می‌شوند. به این ترتیب، کل ردگیری چندپردازه‌ای شما در بک‌اند به‌صورت یک ردگیری محاسبات (trace) یکپارچه نمایش داده می‌شود.

سرویس Claude Managed Agents

گزینه‌ی میزبانی‌شده‌ی شرکت Anthropic (با هدر بتای managed-agents-2026-04-01). این سرویس برای کارهای ناهمگام و طولانی‌مدت طراحی شده و کش کردن پرامپت (prompt caching) و فشرده‌سازی خودکار بافتار را در دل خود دارد. در اینجا بخشی از کنترل روی جزئیات را در ازای استفاده از زیرساخت مدیریت‌شده معامله می‌کنید.

خطاهای رایج در این الگو

  • ساخت بی‌رویه‌ی ساب‌ایجنت: اگر برای 100 تسک بسیار کوچک، 100 ساب‌ایجنت بسازید، بار پردازشی راه‌اندازی بر کار اصلی غلبه می‌کند. به‌جای این کار تسک‌ها را دسته‌بندی (batch) کنید.
  • خزش هوک‌ها (Hook creep): اگر هر تیمی هوک‌های خودش را اضافه کند، زمان راه‌اندازی به‌شدت طولانی می‌شود. هوک‌ها را هر فصل یک بار بازبینی کنید.
  • انباشت داده‌های نشست (Session bloat): نشست‌ها روی هم جمع شده و حجم داده‌ها بالا می‌رود. با متد list_sessions و یک سیاست انقضا این مسئله را مهار کنید.
جداسازی زیرایجنت‌هاتوزیع کارها، بازگرداندن خلاصه
SUBAGENT ISOLATIONThe Claude Agent SDK spawns subagents that each run in their own context window (dashed boundary). The orchestrator keeps its main context clean: children explore in parallel and return only a compact summary. This buys both parallelism and context isolation, so a noisy search does not flood the parent transcript.هماهنگ‌کنندهبافتار اصلیزیرایجنت 1پنجره‌ی خودزیرایجنت 2پنجره‌ی خودزیرایجنت 3پنجره‌ی خودهر زیرایجنت در بافتاری ایزوله اجرا شده و یک خلاصه برمی‌گرداند
کیت توسعه‌ی ایجنت کلود زیرایجنت‌هایی می‌سازد که هرکدام در پنجره‌ی بافتار اختصاصی خود اجرا می‌شوند (مرز خط‌چین). هماهنگ‌کننده بافتار اصلی خود را تمیز نگه می‌دارد: فرزندان به‌طور موازی کاوش کرده و تنها یک خلاصه‌ی فشرده برمی‌گردانند. این کار هم موازی‌سازی و هم جداسازی بافتار را به همراه دارد تا جستجوهای پر از نویز، رونوشت والد را اشباع نکنند.

پیاده‌سازی

فایل code/main.py ساختار این SDK را در کتابخانه‌ی استاندارد پایتون پیاده‌سازی می‌کند:

  • کلاس‌های Tool و ToolRegistry همراه با ابزارهای توکار read_file، write_file و list_dir.
  • کلاس Subagent — با بافتار اختصاصی، اجرای ایزوله و بازگرداندن نتایج.
  • کلاس SessionStore — متدهای append، load، list، delete و list_subkeys.
  • کلاس Hooks — متدهای pre_tool_use، post_tool_use، session_start و session_end.
  • یک نمونه‌ی نمایشی: ایجنت اصلی 3 ساب‌ایجنت را به‌صورت موازی اجرا می‌کند (هرکدام با بافتار ایزوله)، نتایج را جمع‌آوری کرده و نشست را ذخیره می‌کند.

اجرای برنامه:

python3 code/main.py

خروجی ردگیری محاسبات نشان می‌دهد که بافتار ساب‌ایجنت کاملاً ایزوله مانده (اندازه‌ی بافتار هماهنگ‌کننده محدود باقی می‌ماند)، هوک‌ها به‌درستی اجرا می‌شوند و نشست ماندگار می‌ماند.

کاربردها

  • بسته‌ی Claude Agent SDK برای محصولاتی که اولویتشان کار با Claude است و ساختار بستر آزمایشی Claude Code را می‌خواهند.
  • سرویس Claude Managed Agents برای پردازش‌های ناهمگام و طولانی‌مدت در بستر میزبانی‌شده.
  • بسته‌ی OpenAI Agents SDK (درس 16) برای راهکارهای معادل در دنیای OpenAI.
  • ترکیب LangGraph + ابزارهای سفارشی اگر به‌جای این الگو، یک ماشین وضعیت (State Machine) گراف‌محور می‌خواهید.

خروجی نهایی

فایل outputs/skill-claude-agent-scaffold.md یک پروژه‌ی کامل مبتنی بر Claude Agent SDK می‌سازد که شامل ساب‌ایجنت‌ها، هوک‌ها، ذخیره‌ساز نشست، اتصال به سرور MCP و انتشار ردگیری محاسبات W3C است.

تمرین‌ها

  1. یک سازنده‌ی ساب‌ایجنت اضافه کنید که 20 تسک را در دسته‌های 5تایی از ساب‌ایجنت‌های موازی اجرا کند. اندازه‌ی بافتار هماهنگ‌کننده را در مقایسه با حالت «یک ساب‌ایجنت به ازای هر تسک» بسنجید.
  2. یک هوک PreToolUse بنویسید که نرخ فراخوانی write_file را محدود کند (5 بار در دقیقه برای هر نشست). رفتار سیستم را ردگیری کنید.
  3. متد list_subkeys را طوری به کار بگیرید که درخت ساب‌ایجنت‌ها را نمایش دهد. در ساختارهای به‌شدت تودرتو این درخت چه شکلی پیدا می‌کند؟
  4. کد این پیاده‌سازی ساده را به بسته‌ی پایتونی واقعی claude-agent-sdk منتقل کنید. ثبت ابزارها چه تفاوتی می‌کند؟
  5. مستندات Claude Managed Agents را بخوانید. در چه شرایطی از حالت میزبانی شخصی (self-hosted) به سرویس مدیریت‌شده مهاجرت می‌کنید؟

اصطلاحات کلیدی

اصطلاح در گفت‌وگوهای عامیانه معنای دقیق فنی
Agent SDK «Claude Code در قالب یک کتابخانه» ساختار بستر آزمایشی: ابزارها، MCP، هوک‌ها، ساب‌ایجنت‌ها و ذخیره‌ساز نشست
Subagent «ایجنت فرزند» بافتار جداگانه و سهمیه‌ی مصرف مجزا؛ نتایج به سطح بالا برمی‌گردند
Session store «دیتابیس گفت‌وگو» ذخیره، بازیابی، فهرست‌کردن و حذف نوبت‌های گفت‌وگو همراه با حذف آبشاری ساب‌ایجنت‌ها
Hook «کال‌بک‌های چرخه‌ی حیات» توابعی برای قبل/بعد از فراخوانی ابزار، نشست، ارسال پرامپت، فشرده‌سازی و توقف
W3C trace context «ردگیری محاسبات بین‌پردازه‌ای» انتشار اسپن والد به زیرپردازه‌ی خط فرمان
Managed Agents «بستر آزمایشی میزبانی‌شده» اجرای کارهای ناهمگام و طولانی‌مدت به میزبانی Anthropic
--session-mirror «آینه‌ی متن گفت‌وگو» ثبت نوبت‌های گفت‌وگو در فایلی خارجی هم‌زمان با استریم شدن
MCP server «محیط ابزارها» منبع ابزار یا داده‌ی خارجی متصل به ایجنت

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درستفاوت بین Anthropic Client SDK و Claude Agent SDK در چیست؟
  2. پیش از درسدو هدف مستندشده برای زیرایجنت‌ها چیست؟
  3. حین درسکدام متد جزو رابط برنامه‌نویسی ذخیره‌ساز نشست (session store) نیست؟
  4. حین درسکدام مورد جزو هوک‌های چرخه‌ی حیات در Claude Agent SDK نیست؟
  5. حین درسبافتار ردگیری محاسبات چگونه میان ایجنت و زیرفرآیند CLI منتقل می‌شود؟
  6. پس از درس«تولید بیش‌ازحد زیرایجنت» (over-spawn) چیست و چه زمانی رخ می‌دهد؟
  7. پس از درسسرویس Claude Managed Agents چه موازنه‌ای در برابر SDK خودمیزبان برقرار می‌کند؟

سؤالات متداول

تفاوت اصلی Client SDK با Agent SDK در چیست؟

در Client SDK تنها دسترسی خام به API فراهم است و حلقه‌ی اجرای ایجنت، مدیریت ابزار و وضعیت بر عهده‌ی برنامه‌نویس است؛ در حالی که Agent SDK بستر کامل اجرای ابزارها، اتصالات MCP، ساب‌ایجنت‌ها و ذخیره‌سازی نشست را به‌صورت آماده ارائه می‌دهد.

ساب‌ایجنت‌ها چگونه به کاهش هزینه‌ها و مدیریت بافتار کمک می‌کنند؟

ساب‌ایجنت‌ها پنجره‌ی بافتار اختصاصی خود را دارند؛ بنابراین جزئیات پروسه و فراخوانی ابزارهای آن‌ها وارد بافتار ایجنت هماهنگ‌کننده نمی‌شود و تنها نتیجه‌ی نهایی به والد بازگردانده می‌شود.

وظیفه‌ی پرچم session-mirror-- چیست؟

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

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.