チャネルライフサイクルステータス Umbrella
日付: 2026-07-01
目標
サポートされているチャネルアダプター全体でのライフサイクルステータスの動作を要約し、意図的にスコープ外となっている事項を明示する、単一のレビューインターフェースを提供する。
スコープ
- Telegram
- Weixin
- DingTalk
- Feishu
明示的な対象外
- Slack は引き続き対象外です。
- QQ Bot のライフサイクルステータス UI も引き続き対象外です。
- プラグインの例も、ライフサイクルステータス UI の対象外です。
- DingTalk のターミナル絵文字も対象外です。
レビュアーマトリックス
| チャネル | サポートされるライフサイクルイベント | ネイティブインターフェース | started の動作 | text_chunk の動作 | ターミナルの動作 | 未サポート / no-op の理由 | 対象テストファイル |
|---|---|---|---|---|---|---|---|
| Telegram | started, completed, cancelled, failed | タイピングインジケーター | 既存のチャットごとのタイピングループを1回開始します。重複した started イベントによってループが追加されることはありません。 | ライフサイクルフックによって無視されます。レスポンスコンテンツは通常の返信パスを通じて続行されます。 | 任意のターミナルイベントでタイピングループを停止し、古いインターバルを残しません。 | tool_call にはネイティブなステータスインターフェースがなく、アダプター UI は必要ありません。 | packages/channels/telegram/src/TelegramAdapter.test.ts |
| Weixin | started, completed, cancelled, failed | タイピングインジケーター | アクティブなチャットに対して setTyping(chatId, true) を1回呼び出します。重複した started イベントによってタイピング状態が再スタックされることはありません。 | ライフサイクルフックによって無視されます。レスポンスコンテンツは通常の送信パスを通じて続行されます。 | ターミナルイベントで setTyping(chatId, false) を呼び出します。開始の失敗時にローカル状態をクリアするため、後続の started で再試行できます。 | tool_call には個別のステータスインターフェースがなく、追加のメッセージを送信すべきではありません。 | packages/channels/weixin/src/WeixinAdapter.test.ts |
| DingTalk | started, completed, cancelled, failed | 受信メッセージへの eye リアクション | コンバレーション ID が利用可能な場合、既存の eye リアクションを1回アタッチします。 | ライフサイクルフックによって無視されます。レスポンスコンテンツは通常の送信パスを通じて続行されます。 | ターミナルイベントで eye リアクションを解除します。これにはキャンセル後に遅延解決するアタッチの競合も含まれます。 | 直接ロボット Webhook チャットではリアクションに必要なコンバレーション ID が公開されていないため、ライフサイクルステータスは no-op となります。tool_call にも対象内の UI はありません。 | packages/channels/dingtalk/src/DingtalkAdapter.test.ts |
| Feishu | started, completed, cancelled, failed | ストリーミングカードのステータスラベル | 既存のカードストリームがアクティブな間、カードを実行中状態に維持し、実行中ラベルのスペースを確保します。 | ライフサイクルフックによって直接消費されません。コンテンツのストリーミングは、既存のレスポンス/カードストリームフックが所有したままです。 | ストリーミングされた回答本文を上書きすることなく、カードのステータスラベルを完了、キャンセル、または失敗として確定します。 | カードはすでに回答ストリームとターミナルステータスラベルのみを使用しているため、tool_call は非表示のままです。 | packages/channels/feishu/src/adapter.test.ts, packages/channels/feishu/src/markdown.test.ts |
| QQ Bot | なし | なし | No-op. | No-op. QQ Bot は引き続きアウトバウンドメッセージ送信を通じて返信チャンクをストリーミングしますが、ライフサイクルステータス更新を通じては行いません。 | No-op. | このチャネルにはタイピングやタスクステータスのエンドポイントがなく、QQChannel は設計上 onPromptStart、onPromptEnd、および onTaskLifecycle を空にしています。 | packages/channels/qqbot/src/send.test.ts, packages/channels/qqbot/src/api.test.ts |
| Plugin example | なし | WebSocket プロトコルメッセージのみ | ライフサイクルステータスに対して No-op。 | ライフサイクルステータス処理の外側で、onResponseChunk からモックプロトコルの chunk メッセージタイプを介してレスポンスチャンクをストリーミングします。 | ライフサイクルステータス処理の外側で、レスポンス完了時に最終的なアウトバウンドメッセージを送信します。 | モックチャネルはトランスポートの配線のみを示すものであり、ネイティブなタイピング、リアクション、またはステータスインターフェースを持っていません。 | integration-tests/channel-plugin.test.ts |
レビュー備考
- Feishu のライフサイクル
text_chunkは、ライフサイクルフック内で引き続き no-op です。そこで回答コンテンツの追加や更新は行いません。 - Slack は対象外のため、意図的にこのマトリックスから除外されています。
- DingTalk のターミナルイベントは、このスコープ内では既存の eye リアクションの解除のみを行います。ターミナル絵文字は追加されません。
Last updated on