گسترش وظایف MCP: کار پایدار در هسته بی تابعیت
tools/call، هر نمونه اي ميتونه جواب بدهtasks/get، و اطلاعات مشتری از طریقtasks/updateبدون احیای جلسات پروتکلType: Build
Languages: Python
Prerequisites: Phase 13 · 09 (transports), Phase 13 · 11 (stateless MRTR), Phase 13 · 12 (elicitation)
Time: ~90 minutes
اهداف یادگیری
- انتقال پروتکل بدون دولت را از حالت کار برنامه کاربردی پایدار متمایز کنید.
- مذاکره کن
io.modelcontextprotocol/tasksگسترش قابلیت های هر درخواست وserver/discover. . - یک سرور را بازگردانید
CreateTaskResultباresultType: "task"پس از آفرینش پایدار - نظرسنجی با
tasks/get، انجام دادن ورودی وظیفه باtasks/update، و درخواست لغو همکاری باtasks/cancel. . - اون بزرگتر رو بردار
tasks/status،tasks/resultوtasks/listفرضیه ها - برای اطلاعیه های اختیاری از طریق
subscriptions/listenدر جریان SSE پاسخ POST - زمان انقضاء وظیفه مدل، بازپرداخت مجدد، تخفیف کلید ورودی و اشتباهات اجرا به درستی.
چرا وظایف یک تمدید هستند
وظایف برای اولین بار به عنوان یک ویژگی اصلی تجربی در سال 2025-11-25 ظاهر شد. طراحی مجدد ژوئیه 2026 آنها را به رسمیت رسمی منتقل می کند.io.modelcontextprotocol/tasksتوسعه به طوری که مشتریان و سرورها می توانند بدون گسترش پروتکل اصلی برای همه به چرخه زندگی اضافی بپردازند.
مشخصات تمدید یک سطح مسود است حتی اگر این خانه رسمی فعلی برای وظایف باشد. نسخه تمدید پشتیبانی شده توسط SDK شما را پین کنید، سناریوهای مطابقت را اجرا کنید و آداپتورهای سیم را از دامنه کارکن و ذخیره سازی خود جدا کنید.
از یک کار زمانی استفاده کنید که عملیات دارای یکی یا چند از این ویژگی ها باشد:
- ممکن است از زمان معطل درخواست معمولی بیشتر عمر کند.
- یک قطار کارگر یا سیستم کاری خارجی قبلاً مالک اجرای است.
- مشتری باید پس از شروع مجدد خود بهبود پیدا کنه
- عملیات در هنگام اجرا برای ورودی کاربر یا مدل توقف می کند.
- لغو و بازیافت نتیجه پایدار، نیاز به محصول است.
برای یک جستجوی تعیین کننده ارزان قیمت، یک کار را ایجاد نکنید. یک دستگیر، استقامت، رای گیری، انقضاء و لغو یک پیچیدگی واقعی است.
هسته بی تابعیت، درخواست دولتی
MCP 2026-07-28 حذف می شود initialize،notifications/initialized, جلسه های پروتکل وMcp-Session-Idکه محصولات دولتی را ممنوع نمی کند.
یک task id یک حالت درخواست صریح است:
- سرور قبل از اينکه برگردونه ادامه ميده
- مشتری می تونه پس از باز کردنش نگهش داره و دوباره ازش پرسشنامه کنه
- شناسه مي تونه به هر نسخه اي که توسط يه فروشگاه پايدار پشتيباني شده رو رو به سمتش رو ببره
- مجوز در هر روش کار بررسی می شود.
- انقضاء و حذف توسط زمینه های وظیفه تعریف می شود نه عمر حمل و نقل.
این از نظر عملی متفاوت از حالت پنهان متصل به یک اتصال است.
چهار عمر رو جدا نگه داريد:
| State | Lifetime | Where it belongs |
|---|---|---|
| Protocol metadata | One request | params._meta, validated again on every call |
| Transport work | One stdio request or HTTP response | In-flight coordinator with a bounded deadline |
| MRTR continuation | One retry sequence | Integrity-protected requestState, plus replay controls when needed |
| Durable task | Across requests, replicas, restarts, and reconnects | Shared application store keyed by an authorized taskId |
انتقال یک رکورد کار به حافظه فرآیند MCP را حالت پذیر نمی کند. این باعث می شود برنامه غیرقابل اعتماد باشد. پروتکل بدون حالت باقی می ماند، اما بعداً یکtasks/getدر این حالت، هر یک از روش های انجام شده، همان رکورد مشترک را تحت چک مستاجر و اصلی حل کند.
مذاکره در مورد قابلیت
مشتری در هر درخواست واجد شرایط حمایت را اعلام می کند:
json{
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
},
"io.modelcontextprotocol/clientInfo": {
"name": "lesson-client",
"version": "1.0.0"
}
}
}سرور درست برگشتsupportedVersions، قابلیت هاttlMsوcacheScopeازserver/discoverاین برنامه به عنوان یک ابزار تبلیغاتی، همچنین اجرای اجباری را انجام می دهد.tools/list. اين نتيجه يه دترمينست باز ميادgenerate_reportتوضیحات، شی معتبر inputSchema،resultType: "complete"، متاداتا هویت سرور و نکات مخزن عمومی
یک روش کار از طرف یک مشتری که بازپرداخت تمدید را اعلام نکرده است -32021, قابلیت مطلوب مشتری گم شدهdata.requiredCapabilitiesبه {"extensions":{"io.modelcontextprotocol/tasks":{}}}. یک رشته پروتکل غیر پشتیبانی شده باز می گردد-32022با دقتsupportedوrequestedداده ها؛ یک نسخه گمشده یا غیر رشته ای باز می گردد -32602. .
یک پاکت بدون JSON-RPC idیک اطلاعیه است. گیرنده ممکن است آن را پردازش کند، اما هیچ نتیجه یا خطا JSON-RPC را صادر نمی کند. یک آداپتور HTTP قابل پخش باز می گردد 202 Acceptedبدون هیچ نهاد برای اطلاع رسانی پذیرفته شده.
در حال حاضر فقطtools/callپشتیبانی از اجرای افزوده شده با وظایف. طراحی انتزاع داخلی خود را به طوری که انواع درخواست آینده نیاز به نوشتن مجدد ذخیره سازی.
ایجاد وظایف هدایت شده توسط سرور
پرچم قدیمی مشتریparams._meta.task.requiredپس سرور تصمیم می گیرد که آیا یک برنامه خاصtools/callبه عنوان یک کار تبدیل می شود.
درخواست:
json{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "generate_report",
"arguments": {"size": "large"},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
}
}
}
}پاسخ:
json{
"jsonrpc": "2.0",
"id": 1,
"result": {
"resultType": "task",
"taskId": "tsk_786512e29e0d",
"status": "working",
"statusMessage": "Preparing report outline.",
"createdAt": "2026-08-21T10:30:00Z",
"lastUpdatedAt": "2026-08-21T10:30:00Z",
"ttlMs": 900000,
"pollIntervalMs": 1000
}
}سرور نباید این دستگیر رو تا زمانی که یکtasks/getدر یک فروشگاه ثابت، قبل از پاسخ دادن منتظر بینایی خواندن باشید. در غیر این صورت یک مشتری می تواند یک شناسه معتبر را دریافت کند و بلافاصله "نابودی" شود.
پاسخ به کار در این معنا که مشتری درخواست نمی کند حالت کار. این بدون مذاکره نیست: درخواست فعلی هنوز باید تبلیغ تمدید.
شکل کار
هر وظیفه ای شامل:
taskId: شناسه ثابت تولید شده توسط سرورstatus.working،input_required،completed،cancelled، یاfailed؛createdAtوlastUpdatedAt: تایم های ISO 8601ttlMs: زمان انقضاء از زمان ایجاد، یاnullبرای هیچ محدودیتی که تبلیغ شده باشد؛- اختیاری
pollIntervalMs: حداقل زمان پیشنهاد انتخابات فعلی سرور - اختیاری
statusMessage: زمینه ای که به کاربر یا مدل توجه دارد.
زمینه های خاص وضعیت فقط در صورت مربوطه ظاهر می شوند:
input_requiredشامل می شودinputRequests. .completedشامل درخواست اصلی استresultشکلfailedشامل یک JSON-RPC استerrorهدف
مشتری باید احترام بگذاردpollIntervalMsیک سرور ممکن است رای گیری های تهاجمی را محدود کند و ممکن است فاصله را در طول عمر کار تغییر دهد.
نظرسنجی باtasks/get
مشتری از یه عکس لحظه ای میخواد:
httpPOST /mcp HTTP/1.1
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tasks/get
Mcp-Name: tsk_786512e29e0djson{
"jsonrpc": "2.0",
"id": 2,
"method": "tasks/get",
"params": {
"taskId": "tsk_786512e29e0d",
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
}
}
}
}tasks/getخودش تمام شده، پس نتیجه اش همیشه بودهresultType: "complete". وظیفه ی سرگیشته هنوز هم می تواند داشته باشهstatus: "working"یاstatus: "input_required". .
این تفاوت از یک خطا رایج در تجزیه کننده جلوگیری می کند:
textresult.resultType = complete means the tasks/get RPC finished
result.status = working means the represented job is still runningهیچکس نیستtasks/resultوقتي کار تموم شد، بعدشtasks/getپاسخ به این سوال در اصل استCallToolResultزیرresult:
json{
"resultType": "complete",
"taskId": "tsk_786512e29e0d",
"status": "completed",
"createdAt": "2026-08-21T10:30:00Z",
"lastUpdatedAt": "2026-08-21T10:34:12Z",
"ttlMs": 900000,
"result": {
"resultType": "complete",
"content": [
{"type": "text", "text": "Generated large report with approved outline."}
],
"structuredContent": {"size": "large", "approved": true},
"isError": false,
"_meta": {
"io.modelcontextprotocol/serverInfo": {
"name": "tasks-demo",
"version": "1.0.0"
}
}
},
"_meta": {
"io.modelcontextprotocol/serverInfo": {
"name": "tasks-demo",
"version": "1.0.0"
}
}
}خارجیهresultTypeمیگهtasks/getريسپورت کامل شدresult.resultTypeميگه صداي اصلي ابزار تموم شده.CallToolResultبايد خودش رو هم حمل کنهio.modelcontextprotocol/serverInfoاین درس به جای ذخیره کردن یک بار مفید بدون نوع آن را شامل می شود.
هیچکس نیستtasks/list. سرورهای بدون جلسه نمی توانند به طور ایمن نتیجه بگیرند که کدام وظایف به یک لیست مربوط به اتصال تعلق دارند. برنامه هایی که نیاز به تاریخچه دارند باید یک ابزار دامنه مجاز با فیلترهای صریح و قوانین مالکیت را نشان دهند.
ورودی در هنگام انجام وظیفه
ورودی وظیفه و MRTR اصلی شبیه به هم هستند اما از ادامه های مختلف استفاده می کنند.
ورودی که قبل از ایجاد وظیفه مورد نیاز است
هسته برگشتresultType: "input_required"از اصلtools/call.مصرفي انجامش ميده و دوباره ميخواد تماس اصلي رو بگيره فقط بعد از اينکه دور هاي هم زماني MRTR تموم بشه
ورودی که پس از ایجاد وظیفه مورد نیاز است
وظیفه رو به انجام بدهinput_required.tasks/get. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .inputRequests، و مشتری پاسخ ها رو از طریقtasks/update. مشتری اصل رو دوباره امتحان نمی کنهtools/call. .
عکس:
json{
"resultType": "complete",
"taskId": "tsk_786512e29e0d",
"status": "input_required",
"createdAt": "2026-08-21T10:30:00Z",
"lastUpdatedAt": "2026-08-21T10:31:00Z",
"ttlMs": 900000,
"inputRequests": {
"approve_outline": {
"method": "elicitation/create",
"params": {
"mode": "form",
"message": "Approve the generated report outline?",
"requestedSchema": {
"type": "object",
"properties": {"approved": {"type": "boolean"}},
"required": ["approved"]
}
}
}
}
}تازه:
httpPOST /mcp HTTP/1.1
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tasks/update
Mcp-Name: tsk_786512e29e0djson{
"jsonrpc": "2.0",
"id": 4,
"method": "tasks/update",
"params": {
"taskId": "tsk_786512e29e0d",
"inputResponses": {
"approve_outline": {
"action": "accept",
"content": {"approved": true}
}
},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
}
}
}
}پاسخ موفقیت یک اعتراف خالی و اضافه استresultType: "complete"تغییر دولت ممکن است در نهایت ثابت باشد، بنابراین مشتری همچنان به نظرسنجی یا گوش دادن ادامه می دهد.
هرکدومinputRequestsکلید باید برای تمام عمر کار منحصر به فرد باشد. تکرار tasks/getعکس های فوری ممکن است همان کلید باقی مانده را نشان دهند؛ مشتریان UI را کپی می کنند و سرورها پاسخ های کلید های ناشناخته، جایگزین شده یا قبلاً تکمیل شده را نادیده می گیرند. یک به روز رسانی جزئی می تواند وظیفه را در input_requiredتا تمام کليد هاي مورد نياز پاسخ داده بشه
لغو کردن همکارانه است
tasks/cancelاین تایید تضمین نمی کند که کارکن متوقف شده است. کار ممکن است ابتدا به پایان برسد، لغو یا انتقال را بعد نادیده بگیرد.
httpPOST /mcp HTTP/1.1
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tasks/cancel
Mcp-Name: tsk_786512e29e0djson{
"jsonrpc": "2.0",
"id": 5,
"method": "tasks/cancel",
"params": {
"taskId": "tsk_786512e29e0d",
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {
"extensions": {
"io.modelcontextprotocol/tasks": {}
}
}
}
}
}براي تمام سه روش کار،Mcp-Nameآینه هاparams.taskId. نام روش JSON-RPC را تکرار نمی کند. code/main.pyاین قانون را در مرکزmake_http_request. .
یک کارمند درس بلافاصله لغو را احترام می گذارد و تماس های مکرر را بی اختیار می کند. یک مشتری تولید باید لغو را به عنوان همکاری در نظر بگیرد تا نه از تایید وضعیت نهایی کار نتیجه گیری کند.
استفاده نکنیدnotifications/cancelledاین اطلاعیه متعلق به درخواست لغو است نه وظایف ماندگار
این تفاوت در مرز رویت مهم است. لغو درخواست یک عملیات JSON-RPC در پرواز یا پاسخ HTTP درخواست آن را هدف قرار می دهد. اگر tools/callقبلاً برگشتهresultType: "task"، این درخواست کامل است و بسته شدن حمل و نقل نمی تواند نام یا توقف کار پایدار را. tasks/cancelاین یک RPC جدید مجاز است.params.taskId، عکس هاي اين شناسه رو درMcp-Name، پس زمینه مالکیت کار را حل می کند، قصد لغو همکاری را ثبت می کند و بدون ادعا کردن که کارکن متوقف شده است، تأییدیه ای را باز می گرداند.
در نتیجه یک دروازه باید هماهنگی درخواست ها و مسیرهای کار را در جدول های مختلف نگه دارد. جدول درخواست ممکن است در زمان پایان پاسخ ناپدید شود. مسیر کار باید تا زمانی که حالت نهایی و حفظ به پایان برسد، باقی بماند. Lesson 29: MCP Reliability, Cancellation, and Flow Controlمسابقه رو ميسازد، زمانبردي، بي تواني، فشار و دوباره تلاش ميکنه براي هر دو راه
اطلاعیه های اختیاری
نظرسنجی ها خط اصلی هستند. مشتری که می خواهد به روز رسانی های پش ارسال می کندsubscriptions/listenبرای Streamable HTTP، این یک POST است که پاسخ آن یک جریان SSE درخواست است. هیچ جریان رویداد GET مستقل و هیچ جلسه پروتکل برای زنده نگه داشتن وجود ندارد.
سرور شناسه های قبول شده را با notifications/subscriptions/acknowledgedو بعد میتونم عکس های کامل رو بفرستمnotifications/tasks. تایید و هر اطلاعیه وظیفه ایio.modelcontextprotocol/subscriptionIdدر_meta، برابر به subscriptions/listenهر اطلاعیه کاری به طور دیگر معادل چه چیزی استtasks/getدر آن لحظه برمیگرده
مشتریان باید هنوز هم تمدید وظایف را اعلام کنند. آنها باید از ID های ماندگار وظیفه دوباره متصل و ادامه دهند نه به تکرار رویداد یا Last-Event-ID. .
معنی شکست
از دو لایه خطا درست استفاده کنید.
خطای پروتکل
پارامترهای روش ناشناس یا یک کار ناشناخته یک خطا JSON-RPC را بازگردانند، معمولا -32602. بازپرداخت بازپرداخت حمایت از تمدید-32021با شی صلاحیت مورد نیاز.
نتیجه اجرای وظیفه
- نتیجه ی عادی ابزار با
isError: trueهنوزم يهcompletedوظیفه ای که به دلیل تماس ابزار نتیجه مشخص آن را تولید کرد. - یک خطا JSON-RPC در زمان اجرا تأخیر انجام می دهد
failedو این خطای JSON-RPC را در زیر ذخیره می کندerror. . - رد کاربر می تواند منجر به
cancelled، نتیجه ی رد کامل یا نتیجه ی امن دیگری برای دامنه خاص.
دوام، انقضاء مدت و مالکیت
حداقل ID کار، وضعیت، زمان مهر، ttl، فاصله نظرسنجی، مالکیت عملیات اصلی، نتیجه یا خطا، درخواست های ورودی باقی مانده و تمام کلید ورودی صادر شده باقی بماند.
کلید ذخیره سازی باید یک مستاجر معتبر و مدیر را شامل کند یا حل کند. شناخت یک کار نباید دسترسی را فراهم کند.tasks/get،tasks/update،tasks/cancel، و اشتراک
ttlMsیک مشتری می تواند آن را به عنوان یک پشتیبان در زمانی که یک کار تولید به روزرسانی قابل مشاهده را متوقف کرده است، درمان کند. یک سرور ممکن است شکست یابد و بعداً یک کار به پایان رسیده را حذف کند. آن را به عنوان وعده حفظ یک نتیجه کامل برای چند میلی ثانیه پس از تکمیل توصیف نکنید.
استفاده از نوشتن اتم یا معاملات. درس یک فایل موقت را می نویسد و به صورت اتم نامش را تغییر می دهد. یک سرویس چند نسخه باید از یک فروشگاه پایدار مشترک و یک اجاره کارگری یا کنترل همزمان معادل استفاده کند.
آن را بسازید
code/main.pyیک سرویس وظیفه تعیین کننده را اجرا می کند:
server/discoverبازپرداختsupportedVersions، اشاره هاي مخفي و تمديد وظایفtools/listیک تعیین کننده، cacheable را باز می آوردgenerate_reportیک توصیفگر با یک طرح ورودی معتبر.tools/callقبل از بازگشت، کار را ایجاد و ادامه می دهدresultType: "task". .- یک نمونه سرویس جدید همان کار را بارگذاری می کند و نشان می دهد که بازیابی را از نو شروع کنید.
tasks/getعکس های کامل کار را باز می کند.- کارگر از
workingبهinput_required. . tasks/updateپاسخ فرم را قبول می کند و یک تایید کامل خالی را باز می گرداند.- کارگر يه گره گيره نگه داره
CallToolResultبا خودشresultTypeو هویت سرور، سپس انتقال بهcompleted. . tasks/cancelدر این اجرا بی اختیار است.- تنظیمات سازنده HTTP
Mcp-Nameبهparams.taskIdبرایtasks/get،tasks/updateوtasks/cancel. . - کمک کننده های اطلاع رسانی استفاده می کنند
notifications/subscriptions/acknowledgedوnotifications/tasks، هر دو با اسم درخواست گوش دادن برچسب شده - اطلاعیه های بدون ID هیچ پاسخ JSON-RPC را تولید نمی کنند.
کارگر به جای خواب در یک رشته پس زمینه به طور صریح پیش می رود. این باعث می شود هر انتقال حالت تعیین کننده باشد و نمونه پروتکل را از مکانیک صف جدا نگه دارد.
ازش استفاده کن
از ریشه مخزن:
bashcd phases/13-tools-and-protocols/13-mcp-async-tasks/code
python3 main.py
python3 -m unittest discover tests -vدنباله نتایج انتظار می رود:
textid=0 resultType=complete status=ack
id=1 resultType=task status=working
id=2 resultType=complete status=working
id=3 resultType=complete status=input_required
id=4 resultType=complete status=ack
id=5 resultType=complete status=completedو اينو هم تایید کنtasks/status،tasks/resultوtasks/listروش برگشت در خدمات مدرن یافت نشده
اینو بررسی کنtools/listتعیین کننده است و هر روش کاری HTTP فعلی ID کار خود را از طریق Mcp-Name. .
-باده
outputs/skill-task-store-designer.mdاکنون یک طرح آگاه از گسترش تولید می کند: مذاکره قابلیت، ایجاد دوام قبل از بازگشت، روش های فعلی، جریان بروزرسانی ورودی، مالکیت، انقضاء، لغو، اشتراک و مهاجرت از روش های آزمایشی حذف شده.
تمرینات
- يه کلید ورودی دومي بيشتر اضافه کن.
tasks/updateو ثابت کنم که وظیفه هنوز ادامه دارهinput_requiredتا هر دو کلید جواب داده بشه - مالکیت مستاجر را به فروشگاه اضافه کنید و یک شناسه کار معتبر را که توسط مدیر معتبر اشتباه ارائه شده است رد کنید.
- اضافه کردن یک قرارداد اجاره کار با انقضاء. نشان دهید که دو نمونه خدمات نمی توانند یک کار را همزمان انجام دهند.
- یک آداپتور SSE پاسخ POST را برای
subscriptions/listen. GET را اضافه نکنیدLast-Event-ID، یا سرپرست جلسه - اضافه کردن پاکسازی پس از انقضاء. تشخیص یک کار انقضاء شده از یک کار نامناسب بدون دزدیدن وجود متقاضی.
اصطلاحات کلیدی
| Term | Meaning in the current extension |
|---|---|
| Tasks extension | Optional io.modelcontextprotocol/tasks capability for durable async work |
CreateTaskResult | Server-directed resultType: "task" response to an eligible request |
tasks/get | Poll a full current task snapshot, including terminal result or pending input |
tasks/update | Submit responses to a task's outstanding inputRequests |
tasks/cancel | Acknowledge cooperative cancellation intent |
input_required | Task status indicating client input is outstanding |
pollIntervalMs | Server-suggested minimum delay before another poll |
ttlMs | Expiry duration measured from task creation |
| Durable-before-return | Rule that the task id must resolve before its handle is sent |
notifications/tasks | Optional full task snapshot delivered on a subscribed SSE response |
مطابقت میراث
سطح آزمایشی سال 2025-11-25 از افزایش وظایف مورد نیاز مشتری استفاده کرد.tasks/status،tasks/result، و اختیاریtasks/list.این نام ها را فقط در یک آداپتور قدیمی متصل نگه دارید. یک مشتری فعلی از قابلیت تمدید استفاده می کند، دستاوردهای هدایت شده توسط سرور، نظرسنجی ها را قبول می کندtasks/get، عرضه کننده های ورودی با tasks/update، و نتیجه نهایی را از عکس کار می خواند.
خواندن بیشتر
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.