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:
+15
-3
@@ -46,6 +46,7 @@ import { PolicyEngine } from './harness/sandbox/permissions';
|
||||
import { SandboxManager } from './harness/sandbox/sandbox';
|
||||
import { PromptInjectionDefender } from './harness/security/prompt-injection-defense';
|
||||
import { OutputValidator } from './harness/verification/output-validator';
|
||||
import { UpdateService } from './services/update.service';
|
||||
|
||||
// ===== 步骤 1: 初始化日志系统(SYS 层)=====
|
||||
log.transports.file.level = 'info';
|
||||
@@ -98,6 +99,10 @@ async function initialize(): Promise<void> {
|
||||
log.warn('LLM not configured. Please set provider, baseURL, and model in Settings.');
|
||||
}
|
||||
|
||||
if (!apiKey && provider !== 'ollama') {
|
||||
throw new Error(`API key is required for provider "${provider || 'unknown'}". Please set it in Settings.`);
|
||||
}
|
||||
|
||||
const adapterConfig = { provider, baseURL, apiKey, defaultModel: model };
|
||||
switch (provider) {
|
||||
case 'agnes': return new AgnesAdapter(adapterConfig);
|
||||
@@ -150,6 +155,7 @@ async function initialize(): Promise<void> {
|
||||
];
|
||||
|
||||
// ===== Agent Loop =====
|
||||
// TODO: Re-read agent config on each runStream call or when config changes
|
||||
const ollamaNumCtx = configService.get<number>('ollama.numCtx');
|
||||
const agentMaxIter = configService.get<number>('agent.maxIterations');
|
||||
const agentTimeout = configService.get<number>('agent.totalTimeoutMs');
|
||||
@@ -187,13 +193,14 @@ async function initialize(): Promise<void> {
|
||||
windowManager.registerGlobalShortcuts();
|
||||
|
||||
// ===== Agent 状态同步到托盘 =====
|
||||
agentLoop.on('stateChange', (data: { previous: string; current: string }) => {
|
||||
agentLoop.on('stateChange', (data: { previous: string; current: string; state?: string }) => {
|
||||
const statusMap: Record<string, 'idle' | 'thinking' | 'executing' | 'error'> = {
|
||||
INIT: 'idle', THINKING: 'thinking', PARSING: 'thinking',
|
||||
EXECUTING: 'executing', OBSERVING: 'executing', REFLECTING: 'thinking',
|
||||
COMPRESSING: 'thinking', TERMINATED: 'idle',
|
||||
};
|
||||
trayManager?.setStatus(statusMap[data.current] ?? 'idle');
|
||||
const stateValue = (data.current || data.state) ?? '';
|
||||
trayManager?.setStatus(statusMap[stateValue] ?? 'idle');
|
||||
});
|
||||
|
||||
// ===== Agent 完成时发送系统通知 =====
|
||||
@@ -210,8 +217,13 @@ async function initialize(): Promise<void> {
|
||||
mainWindow, sessionService, configService, workspaceService,
|
||||
contextBuilder, agentLoop, toolRegistry, auditService,
|
||||
sessionRecorder, memoryManager, mcpManager, createAdapter,
|
||||
promptDefender, outputValidator,
|
||||
);
|
||||
|
||||
// TODO: Initialize UpdateService for auto-update functionality
|
||||
// const updateService = new UpdateService();
|
||||
// updateService.initialize(mainWindow);
|
||||
|
||||
// ===== 应用生命周期 =====
|
||||
app.on('window-all-closed', () => {
|
||||
// macOS: 保持应用运行(托盘模式)
|
||||
@@ -232,7 +244,7 @@ async function initialize(): Promise<void> {
|
||||
windowManager?.unregisterGlobalShortcuts();
|
||||
trayManager?.destroy();
|
||||
windowManager?.closeAll();
|
||||
try { await mcpManager.shutdown(); } catch {}
|
||||
try { await mcpManager.shutdown(); } catch (err) { log.error('[Shutdown] MCP shutdown failed:', err); }
|
||||
if (databaseService) { databaseService.close(); databaseService = null; }
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user