سیگنالها
درخواست Stop را بفهمید و از افراد بخواهید حسابی را وصل کنند یا گزینهای انتخاب کنند.
سیگنالها metadata اختیاری روی agent activity هستند. آنها روشن میکنند گیرنده چگونه باید با activity برخورد کند: شخص میتواند توقف بخواهد و برنامه میتواند از Pulse بخواهد اتصال حساب یا انتخابی را نشان دهد. خود activity پیام را حمل میکند و سیگنال اقدام موردنظر را توضیح میدهد.
سیگنال همراه activity میآید. prompt انسانی میتواند stop داشته باشد. برنامه میتواند auth یا select را همراه elicitation و جزئیات را در signal_metadata بفرستد. session، activity و وبهوک همچنان طبق توسعهٔ تعامل agent کار میکنند.
سیگنالهای فرد به agent
این سیگنالها روی activity نوع prompt میآیند. نیت را از فیلد سیگنال بخوانید، نه با حدسزدن از متن پیام.
stop
وقتی شخصی در پنل نشست Stop را میزند، Pulse نشست را به stopping میبرد و prompted را با agent_activity.signal برابر "stop" میفرستد. برداشتن تفویض نیز همین سیگنال را میفرستد.
سیگنال stop هنگام زدن Stop یا تغییر تفویض، روی prompt میآید و از برنامه میخواهد بلافاصله کار را رها کند. متن Stop بدون سیگنال برای تشخیص این درخواست کافی نیست.
وبهوک چنین شکلی دارد:
agent_activity.signal === "stop" را بررسی کنید — از روی متن حدس نزنید. سپس:
- همهچیز را متوقف کنید: فراخوانیهای ابزارِ در حال اجرا را لغو کنید، کارهای بعدیِ صفشده را دور بریزید و دیگر هیچ چیزی را در Pulse یا جای دیگر تغییر ندهید.
- یک
responseنهایی (چه کاری انجام شده و اوضاع در چه وضعیتی است) یا یکerrorبفرستید.
{ "content": { "type": "response", "body": "Stopped. I had read the issue; nothing was changed." } }فعالیت نهایی شما نشست را بهصورت complete با end_reason: stopped پایان میدهد. اگر ظرف ۶۰ ثانیه هیچ فعالیتی نرسد، Pulse در هر صورت آن را پایان میدهد. پس از آن، نوشتنها با 409 SESSION_ENDED پاسخ میگیرند.
وقتی تفویض Issue برداشته شود یا Issue به agent دیگری تفویض شود، Pulse همان stop را میفرستد، با end_reason: undelegated روی نشست. با آن به همان شکل رفتار کنید. حذف نصب، حذف تیم و حذف Issue نشست را بدون stop و فوراً پایان میدهند، چون برنامهٔ شما دیگر دسترسی لازم برای پاسخ دادن را ندارد؛ ببینید وقتی Pulse یک session را پایان میدهد.
سیگنالهای agent به فرد
elicitation، session را در وضعیت awaitingInput نگه میدارد. زمانی از سیگنال استفاده کنید که Pulse بتواند اقدامی مشخصتر از پاسخ آزاد ارائه کند.
auth
از شخصی بخواهید حسابی را که برنامهٔ شما لازم دارد وصل کند، مثلاً حساب GitHub خودش را. یک elicitation با signal: "auth" بفرستید:
{
"content": { "type": "elicitation", "body": "I need access to your GitHub account to open the pull request." },
"signal": "auth",
"signal_metadata": {
"url": "https://scout.acme.example/connect/github?session=sess_01J9Z3K8T5N2",
"user_id": "68d91d3629c051fe043158f9",
"provider_name": "GitHub"
}
}فیلد signal_metadata | الزامی | معنا |
|---|---|---|
url | بله | صفحهٔ https:// شما که شخص در آن وصل میشود. در تب جدید باز میشود. |
user_id | خیر | فقط همین کاربر Pulse دکمه را میبیند |
provider_name | خیر | روی دکمه بهصورت «Connect ‹provider_name›» نشان داده میشود |
نشست به awaitingInput میرود. وقتی کار صفحهٔ اتصال شما تمام شد، با فرستادن یک thought ادامه دهید؛ دکمه بهمحض رسیدن هر فعالیت بعدی ناپدید میشود.
select
بهجای یک سؤال باز، گزینه پیشنهاد دهید. یک elicitation با signal: "select" و ۱ تا ۱۰ گزینه بفرستید:
{
"content": { "type": "elicitation", "body": "Which environment should I deploy to?" },
"signal": "select",
"signal_metadata": {
"options": [
{ "value": "staging", "label": "Staging" },
{ "value": "production", "label": "Production" }
]
}
}هر گزینه یک value و یک label اختیاری دارد که روی دکمه نشان داده میشود (اگر نباشد، value). وقتی شخص یکی را انتخاب کند، یک رویداد prompted معمولی دریافت میکنید که agent_activity.content.body آن همان value گزینه است:
{ "agent_activity": { "content": { "type": "prompt", "body": "staging" } } }افراد ممکن است دکمهها را نادیده بگیرند و پاسخ خودشان را بنویسند، پس بدنه میتواند هر متنی باشد («staging، ولی فقط بعد از ساعت ۶ عصر»). آن را تفسیر کنید، مثلاً با یک مدل، بهجای اینکه دقیقاً تطبیقش دهید.
آخرین بهروزرسانی