|
|
@@ -117,6 +117,7 @@
|
|
|
<AgentDetailPanel
|
|
|
:messageIndex="activeAgentDetail.messageIndex"
|
|
|
:agentName="activeAgentDetail.agent"
|
|
|
+ :agentId="activeAgentDetail.agentId"
|
|
|
:messages="messages"
|
|
|
@close="closeAgentDetail"
|
|
|
/>
|
|
|
@@ -279,7 +280,7 @@
|
|
|
const previewFile = ref<AttachedFile | null>(null);
|
|
|
const previewEditable = ref(false);
|
|
|
const showFileList = ref(false);
|
|
|
- const activeAgentDetail = ref<{ messageIndex: number; agent: string } | null>(null);
|
|
|
+ const activeAgentDetail = ref<{ messageIndex: number; agent: string; agentId?: string } | null>(null);
|
|
|
const activePanel = ref<'chat' | 'skill' | 'sub-agents' | 'schedules'>('chat');
|
|
|
const scheduleListForDetail = ref<any[]>([]);
|
|
|
const showScheduleDetail = ref(false);
|
|
|
@@ -1050,10 +1051,14 @@
|
|
|
|
|
|
const handleAgentDetailClick = (data: AgentDetailData) => {
|
|
|
// 同一个 agent 再次点击则关闭面板
|
|
|
- if (activeAgentDetail.value?.messageIndex === data.messageIndex && activeAgentDetail.value?.agent === data.agent) {
|
|
|
+ if (
|
|
|
+ activeAgentDetail.value?.messageIndex === data.messageIndex &&
|
|
|
+ activeAgentDetail.value?.agentId === data.agentId &&
|
|
|
+ activeAgentDetail.value?.agent === data.agent
|
|
|
+ ) {
|
|
|
activeAgentDetail.value = null;
|
|
|
} else {
|
|
|
- activeAgentDetail.value = { messageIndex: data.messageIndex, agent: data.agent };
|
|
|
+ activeAgentDetail.value = { messageIndex: data.messageIndex, agent: data.agent, agentId: data.agentId };
|
|
|
previewFile.value = null;
|
|
|
showScheduleDetail.value = false;
|
|
|
}
|
|
|
@@ -1309,7 +1314,8 @@
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
- // thinking_token - 模型思考过程内容
|
|
|
+ // thinking / thinking_token - 模型思考过程内容
|
|
|
+ case 'thinking':
|
|
|
case 'thinking_token':
|
|
|
if (normalizedContent) {
|
|
|
if (data.source === 'subagent' && data.agent_id) {
|
|
|
@@ -1330,7 +1336,8 @@
|
|
|
if (data.agent && data.agent !== 'system') {
|
|
|
upsertStep(aiMsg.thinkingSteps!, {
|
|
|
type: 'executing',
|
|
|
- agent: data.agent,
|
|
|
+ agent: data.cn_agent || data.agent,
|
|
|
+ agentId: data.agent_id,
|
|
|
message: data.message || '',
|
|
|
timestamp: Date.now(),
|
|
|
});
|
|
|
@@ -1355,7 +1362,10 @@
|
|
|
case 'agent_todos':
|
|
|
case 'updated_todo_list': {
|
|
|
const agentName = data.cn_agent || data.agent || '智能助手';
|
|
|
- const existingIdx = aiMsg.thinkingSteps!.findIndex((s) => s.type === 'updated_todo_list' && s.agent === agentName);
|
|
|
+ const agentId = data.agent_id;
|
|
|
+ const existingIdx = aiMsg.thinkingSteps!.findIndex(
|
|
|
+ (s) => s.type === 'updated_todo_list' && (agentId ? s.agentId === agentId : s.agent === agentName)
|
|
|
+ );
|
|
|
if (existingIdx !== -1) {
|
|
|
aiMsg.thinkingSteps![existingIdx].todos = data.todos || [];
|
|
|
aiMsg.thinkingSteps![existingIdx].timestamp = Date.now();
|
|
|
@@ -1363,6 +1373,7 @@
|
|
|
aiMsg.thinkingSteps!.push({
|
|
|
type: 'updated_todo_list',
|
|
|
agent: agentName,
|
|
|
+ agentId,
|
|
|
todos: data.todos || [],
|
|
|
message: data.message || '任务进度已更新',
|
|
|
timestamp: Date.now(),
|
|
|
@@ -1379,6 +1390,7 @@
|
|
|
upsertStep(aiMsg.thinkingSteps!, {
|
|
|
type: 'executing',
|
|
|
agent: data.cn_agent || data.agent || '智能助手',
|
|
|
+ agentId: data.agent_id,
|
|
|
tool: (data.cn_tools || data.tools || []).join('、'),
|
|
|
message: data.message || '',
|
|
|
timestamp: Date.now(),
|
|
|
@@ -1392,6 +1404,7 @@
|
|
|
upsertStep(aiMsg.thinkingSteps!, {
|
|
|
type: 'tool_result',
|
|
|
agent: data.cn_agent || data.agent || '智能助手',
|
|
|
+ agentId: data.agent_id,
|
|
|
tool: data.cn_tool || data.tool || '',
|
|
|
message: data.message || '执行完成',
|
|
|
timestamp: Date.now(),
|
|
|
@@ -1408,6 +1421,7 @@
|
|
|
upsertStep(aiMsg.thinkingSteps!, {
|
|
|
type: 'agent_done',
|
|
|
agent: data.cn_agent || data.agent || '智能助手',
|
|
|
+ agentId: data.agent_id,
|
|
|
message: `${(data.message || '审查完成').replace(/(\d+ms)/g, '')}${data.duration_ms ? `(${(data.duration_ms / 1000).toFixed(0)}s)` : ''}${data.progress ? ` [${data.progress}]` : ''}`,
|
|
|
timestamp: Date.now(),
|
|
|
});
|
|
|
@@ -1433,7 +1447,8 @@
|
|
|
case 'tool_select': {
|
|
|
upsertStep(aiMsg.thinkingSteps!, {
|
|
|
type: 'tool_call',
|
|
|
- agent: extractAgentName(normalizedContent),
|
|
|
+ agent: data.cn_agent || extractAgentName(normalizedContent),
|
|
|
+ agentId: data.agent_id,
|
|
|
tool: normalizedContent,
|
|
|
message: `选择工具:${normalizedContent}`,
|
|
|
timestamp: Date.now(),
|
|
|
@@ -1444,7 +1459,8 @@
|
|
|
case 'error':
|
|
|
upsertStep(aiMsg.thinkingSteps!, {
|
|
|
type: 'tool_result',
|
|
|
- agent: '系统',
|
|
|
+ agent: data.cn_agent || '系统',
|
|
|
+ agentId: data.agent_id,
|
|
|
message: `❌ 执行失败:${normalizedContent}`,
|
|
|
timestamp: Date.now(),
|
|
|
});
|