feat: v4.0.0 大版本升级 - SQLite3 + ReAct Agent
- P0: 存储层 IndexedDB → SQLite3 (better-sqlite3),7张表 + FTS5全文搜索 - P1: Agent Engine 升级为 ReAct 模式(思考→行动→观察→反思) - P2: 新增 4 个工具(memory_search, memory_add, session_list, session_read) - P3: 上下文管理器(滑动窗口 + 摘要压缩 + 记忆注入) - P4: UI 改版(ReAct 执行面板样式 + 思考过程卡片) - P5: IndexedDB → SQLite 数据迁移支持 - MAX_LOOPS 10→15, MAX_LOOP_TIME 5min→10min, 错误自动重试 2 次
This commit is contained in:
@@ -43,6 +43,30 @@ contextBridge.exposeInMainWorld('metonaDesktop', {
|
||||
onMainLog: (callback: (data: { level: string; message: string; detail?: string }) => void) => {
|
||||
ipcRenderer.on('main:log', (_: unknown, data: { level: string; message: string; detail?: string }) => callback(data));
|
||||
},
|
||||
db: {
|
||||
saveSession: (session: unknown) => ipcRenderer.invoke('db:saveSession', session),
|
||||
getSession: (id: string) => ipcRenderer.invoke('db:getSession', id),
|
||||
getAllSessions: () => ipcRenderer.invoke('db:getAllSessions'),
|
||||
deleteSession: (id: string) => ipcRenderer.invoke('db:deleteSession', id),
|
||||
clearAllSessions: () => ipcRenderer.invoke('db:clearAllSessions'),
|
||||
saveMessage: (msg: unknown) => ipcRenderer.invoke('db:saveMessage', msg),
|
||||
getMessages: (sessionId: string) => ipcRenderer.invoke('db:getMessages', sessionId),
|
||||
saveMemory: (entry: unknown) => ipcRenderer.invoke('db:saveMemory', entry),
|
||||
getMemory: (id: string) => ipcRenderer.invoke('db:getMemory', id),
|
||||
getAllMemories: () => ipcRenderer.invoke('db:getAllMemories'),
|
||||
getMemoriesByType: (type: string) => ipcRenderer.invoke('db:getMemoriesByType', type),
|
||||
deleteMemory: (id: string) => ipcRenderer.invoke('db:deleteMemory', id),
|
||||
clearAllMemories: () => ipcRenderer.invoke('db:clearAllMemories'),
|
||||
searchMemories: (query: string, limit?: number) => ipcRenderer.invoke('db:searchMemories', query, limit),
|
||||
saveSetting: (key: string, value: unknown) => ipcRenderer.invoke('db:saveSetting', key, value),
|
||||
getSetting: (key: string, defaultValue?: unknown) => ipcRenderer.invoke('db:getSetting', key, defaultValue),
|
||||
saveToolCall: (tc: unknown) => ipcRenderer.invoke('db:saveToolCall', tc),
|
||||
getToolCalls: (sessionId: string) => ipcRenderer.invoke('db:getToolCalls', sessionId),
|
||||
saveTrace: (trace: unknown) => ipcRenderer.invoke('db:saveTrace', trace),
|
||||
getTraces: (sessionId: string) => ipcRenderer.invoke('db:getTraces', sessionId),
|
||||
exportSessions: () => ipcRenderer.invoke('db:exportSessions'),
|
||||
importSessions: (data: unknown) => ipcRenderer.invoke('db:importSessions', data),
|
||||
},
|
||||
workspace: {
|
||||
getDir: () => ipcRenderer.invoke('workspace:getDir'),
|
||||
setDir: (dir: string) => ipcRenderer.invoke('workspace:setDir', dir),
|
||||
|
||||
Reference in New Issue
Block a user