refactor: 移除多余依赖,统一 MUI 为唯一 UI 库
- 移除 radix-ui、clsx、tailwind-merge、class-variance-authority、react-router-dom - 前后端全面适配 MUI 组件,清理残留 Tailwind 工具类引用 - 优化 Agent Loop 引擎、IPC 处理器、Provider Adapter 等后端模块 - 新增 Agent 网络工具通用设计文档 v2
This commit is contained in:
+36
-13
@@ -125,7 +125,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
streamingContent: '',
|
||||
provider: '',
|
||||
model: '',
|
||||
contextWindow: 1_000_000,
|
||||
contextWindow: 0,
|
||||
|
||||
// ===== Actions =====
|
||||
|
||||
@@ -138,7 +138,9 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
const messages = (msgs as Array<{
|
||||
id: string; role: string; content: string;
|
||||
reasoningContent?: string; toolCalls?: unknown[];
|
||||
toolResult?: unknown;
|
||||
attachments?: Array<{ id: string; name: string; type: string; size: number; preview?: string; textContent?: string }>;
|
||||
iteration?: number;
|
||||
timestamp: number;
|
||||
}>).map((m) => ({
|
||||
id: m.id,
|
||||
@@ -147,10 +149,11 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
reasoningContent: m.reasoningContent,
|
||||
toolCalls: m.toolCalls as ToolCallInfo[] | undefined,
|
||||
attachments: m.attachments as AttachmentInfo[] | undefined,
|
||||
iteration: m.iteration,
|
||||
timestamp: m.timestamp,
|
||||
}));
|
||||
set({ messages });
|
||||
}).catch(() => {});
|
||||
}).catch((err) => { console.error('[AgentStore]', err); });
|
||||
}
|
||||
|
||||
// 从数据库加载该会话的 trace 步骤和 token 用量
|
||||
@@ -160,7 +163,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
if (data.traceSteps) set({ traceSteps: data.traceSteps as TraceStep[] });
|
||||
if (data.tokenUsage) set({ tokenUsage: data.tokenUsage as TokenUsage });
|
||||
}
|
||||
}).catch(() => {});
|
||||
}).catch((err) => { console.error('[AgentStore]', err); });
|
||||
}
|
||||
},
|
||||
|
||||
@@ -190,8 +193,16 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
});
|
||||
sessionId = session.id;
|
||||
set({ currentSessionId: sessionId });
|
||||
} catch {
|
||||
// 创建失败时静默
|
||||
} catch (err) {
|
||||
console.error('[AgentStore]', 'Failed to create session:', err);
|
||||
set({ agentStatus: 'error', isStreaming: false });
|
||||
get().addMessage({
|
||||
id: `msg_${Date.now()}_error`,
|
||||
role: 'system',
|
||||
content: `错误: 无法创建会话 — ${(err as Error).message}`,
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +231,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
window.metona?.sessions?.rename(sessionId, title);
|
||||
useSessionStore.getState().updateSession(sessionId, { title });
|
||||
}
|
||||
}).catch(() => {});
|
||||
}).catch((err) => { console.error('[AgentStore]', err); });
|
||||
}
|
||||
|
||||
if (sessionId && window.metona?.agent?.sendMessage) {
|
||||
@@ -257,22 +268,34 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
content: llmContent,
|
||||
images: llmImages.length > 0 ? llmImages : undefined,
|
||||
};
|
||||
window.metona.agent.sendMessage(messageWithImages, sessionId).catch(() => {});
|
||||
window.metona.agent.sendMessage(messageWithImages, sessionId).catch((err) => {
|
||||
console.error('[AgentStore]', 'IPC sendMessage failed:', err);
|
||||
set({ agentStatus: 'error', isStreaming: false });
|
||||
get().addMessage({
|
||||
id: `msg_${Date.now()}_error`,
|
||||
role: 'system',
|
||||
content: `错误: 消息发送失败 — ${(err as Error).message}`,
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
updateLastAssistantMessage: (delta: string) => {
|
||||
set((s) => {
|
||||
const messages = [...s.messages];
|
||||
const lastMsg = messages[messages.length - 1];
|
||||
const lastIdx = messages.length - 1;
|
||||
const lastMsg = messages[lastIdx];
|
||||
if (lastMsg?.role === 'assistant') {
|
||||
lastMsg.content += delta;
|
||||
// 不可变更新:创建新对象而非直接突变
|
||||
messages[lastIdx] = { ...lastMsg, content: lastMsg.content + delta };
|
||||
} else {
|
||||
messages.push({
|
||||
id: `msg_${Date.now()}_assistant`,
|
||||
role: 'assistant',
|
||||
content: delta,
|
||||
timestamp: Date.now(),
|
||||
iteration: s.currentIteration || undefined,
|
||||
});
|
||||
}
|
||||
return { messages };
|
||||
@@ -303,7 +326,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
|
||||
setProvider: (provider, model) => {
|
||||
// DeepSeek/Agnes 固定 1M,Ollama 从配置读取
|
||||
const ollamaCtx = provider === 'ollama' ? 128_000 : 1_000_000;
|
||||
const ollamaCtx = provider === 'ollama' ? 4096 : 1_000_000;
|
||||
set({ provider, model, contextWindow: ollamaCtx });
|
||||
// 异步读取 Ollama 实际配置
|
||||
if (provider === 'ollama' && window.metona?.config?.get) {
|
||||
@@ -311,7 +334,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
if (v != null && typeof v === 'number' && v > 0) {
|
||||
set({ contextWindow: v });
|
||||
}
|
||||
}).catch(() => {});
|
||||
}).catch((err) => { console.error('[AgentStore]', err); });
|
||||
}
|
||||
},
|
||||
|
||||
@@ -322,7 +345,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
saveTraceData: () => {
|
||||
const { currentSessionId, traceSteps, tokenUsage } = get();
|
||||
if (currentSessionId && window.metona?.sessions?.saveTrace) {
|
||||
window.metona.sessions.saveTrace(currentSessionId, { traceSteps, tokenUsage }).catch(() => {});
|
||||
window.metona.sessions.saveTrace(currentSessionId, { traceSteps, tokenUsage }).catch((err) => { console.error('[AgentStore]', err); });
|
||||
}
|
||||
},
|
||||
|
||||
@@ -341,7 +364,7 @@ export const useAgentStore = create<AgentState>((set, get) => ({
|
||||
const sessionId = get().currentSessionId;
|
||||
set({ agentStatus: 'idle', isStreaming: false });
|
||||
if (sessionId && window.metona?.agent?.abortSession) {
|
||||
window.metona.agent.abortSession(sessionId).catch(() => {});
|
||||
window.metona.agent.abortSession(sessionId).catch((err) => { console.error('[AgentStore]', err); });
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user