feat: expose agent collaboration metadata

This commit is contained in:
2026-06-14 15:35:24 +08:00
parent 3f75c966c2
commit 7b7c82309c
6 changed files with 546 additions and 107 deletions
@@ -26,6 +26,26 @@ class AgentService:
def __init__(self, db: Optional[AsyncSession] = None):
self._db = db
self.llm_service = LLMService(db)
def _agent_collaboration_metadata(self, agent: Agent) -> Dict[str, Any]:
metadata = {
"agent_id": str(agent.id),
"agent_code": agent.code,
"agent_name": agent.name,
"collaboration_role": agent.name or agent.code,
"collaboration_mode": agent.mode,
}
if agent.model_id:
metadata["model_id"] = str(agent.model_id)
return {key: value for key, value in metadata.items() if value}
def _attach_agent_collaboration(self, event: Dict[str, Any], agent: Agent) -> Dict[str, Any]:
enriched = dict(event)
collaboration = dict(enriched.get("collaboration") or {})
for key, value in self._agent_collaboration_metadata(agent).items():
collaboration.setdefault(key, value)
enriched["collaboration"] = collaboration
return enriched
async def chat(
self,
@@ -52,12 +72,15 @@ class AgentService:
"""
if agent.mode == 'autonomous':
async for event in self._chat_autonomous(agent, conversation, user_message, attachments):
yield event
yield self._attach_agent_collaboration(event, agent)
elif agent.mode == 'dialog_flow':
async for event in self._chat_dialog_flow(agent, conversation, user_message, application_id, form_code, attachments):
yield event
yield self._attach_agent_collaboration(event, agent)
else:
yield {'type': 'error', 'content': f'不支持的模式: {agent.mode}'}
yield self._attach_agent_collaboration(
{'type': 'error', 'content': f'不支持的模式: {agent.mode}'},
agent,
)
async def _chat_autonomous(
self,