fischer-agentkit/src/agentkit/bus/protocol.py

62 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""MessageBus Protocol — Agent 间通信抽象层。"""
from __future__ import annotations
from typing import Any, Callable, Awaitable, Protocol as TypingProtocol, runtime_checkable
from agentkit.bus.message import AgentMessage
@runtime_checkable
class MessageBus(TypingProtocol):
"""Agent 间通信总线协议。
支持三种通信模式:
- 点对点publish() 指定 recipient
- 广播publish() 不指定 recipient或 broadcast()
- 请求-响应request() 等待对方通过 correlation_id 回复
"""
async def publish(self, message: AgentMessage) -> None:
"""发布消息。如果 message.recipient 为 None则广播。"""
...
async def subscribe(
self,
agent_name: str,
handler: Callable[[AgentMessage], Awaitable[None]],
) -> None:
"""订阅消息。handler 在收到消息时被调用。"""
...
async def unsubscribe(self, agent_name: str) -> None:
"""取消订阅。"""
...
async def request(
self,
message: AgentMessage,
timeout: float = 30.0,
) -> AgentMessage:
"""请求-响应模式。发送消息并等待回复。
Args:
message: 请求消息
timeout: 超时秒数
Returns:
响应消息
Raises:
TimeoutError: 超时未收到响应
"""
...
async def broadcast(self, message: AgentMessage) -> None:
"""广播消息给所有订阅者。"""
...
async def health_check(self) -> bool:
"""健康检查。"""
...