Skip to content

Refactor/ai agent data structure - #4070

Merged
hubin4826 merged 101 commits into
masterfrom
refactor/ai-agent-data-structure
Jul 31, 2026
Merged

Refactor/ai agent data structure#4070
hubin4826 merged 101 commits into
masterfrom
refactor/ai-agent-data-structure

Conversation

@luoluoTH

Copy link
Copy Markdown
Contributor
  1. 新版ai
    第一种方式合并

@luoluoTH luoluoTH added the need more test 需要更多的测试 label Jul 31, 2026
@luoluoTH
luoluoTH requested a review from Copilot July 31, 2026 06:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

PR CI 汇总

状态:全部通过

  • ✅ i18n(renderer src/main zh/zh-TW/en)
  • ✅ i18n(engine-link zh/zh-TW/en)
  • ✅ ESLint(renderer src/main)
  • ✅ TypeScript(renderer src/main)
  • ✅ ESLint(engine-link-startup)
  • ✅ TypeScript(engine-link-startup)
  • ✅ 图片/视频体积
  • ✅ Vitest(main / renderer / engine-link;test 同目录·别名·相对路径)
  • ✅ Prettier

由 pull_request test workflow 自动生成

@hubin4826
hubin4826 requested a review from Copilot July 31, 2026 07:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

b1rdfree and others added 24 commits July 31, 2026 15:41
1、重构ai-agent数据层结构,拆分颗粒化,并降低渲染性能压力
2、调整定义,并全局替换
1. 将自由对话review放入状态机、将任务规划异步扩展信息放入meta里,状态机新增一个update:number同步数据更新
2. 状态机新增删除元素的方法(未完成)
3. 更新会话的request数据方法,屏蔽了source字段
1. 将未引入使用的定义进行引入
2. 将状态机里的update字段对应的数据字段进行注释
3. 新增syncId数据和处理逻辑,
4. 给handleGrpcOutputEvent方法包裹try-catch
5. 将会话数据都抄送至日志窗口中
6. 完善日志数据处理逻辑和发送逻辑
7. 新增UI主动往列表里放入一条数据方法
8. 删除老版的grpcAIMessageHandlers文件
1. 将内存数据currentCasualTaskID移动到状态机中
2. 给item和group渲染定义新增nodeId字段,代表组的标识
3. 删除ReActChatRenderElement定义里的cacheOrder和dataOrigin,以及相关定义枚举
4. 完善了状态机里dispatchStreamingNode字段的处理逻辑和定义
5. 调整数据逻辑机里的handleSendMessage方法(未完成)
6. 新增公共方法handleTaskPlanEnd,处理任务规划结束后的所有数据和状态的变化、调整了pushLogToOtherWindow逻辑
7. 调整所有grpc流数据的处理逻辑
1. 将AITree文件里的TODO注释逻辑调整, 并删除注释
2. 删除了全局所有使用generateTaskNodeID方法的逻辑,并删除该方法,统一使用了任务的taskID
3. 删除isValidTaskIndex方法和对应所有使用到的逻辑位置
4. 解决master新增AI逻辑在旧版本的冲突问题
1. meta数据新增问题队列和记忆库数据的轮询器,并开发相关的逻辑
2. 删除了STREAM_GROUP对应的ChatStreamGroup定义,因为该定义在数据内无意义
3. 调整了dispatchStreamingNode的逻辑,新增deleteElementNode方法
4. 补充了会话的进行集合,会话的所属页面来源,调整了会话开始后的启动必须逻辑,调整了sendMessage方法里的review处理逻辑
5. 调整task_review和tool_review的逻辑
6. 优化代码
perf:抽离组单纯的UI组件
b1rdfree and others added 17 commits July 31, 2026 15:43
initLoading 期间允许发 recovery_history;仅非初始化的 grpcLoadMore 防重入。dequeue 用渲染树 items 判断前端临时问题是否已上屏,避免 contents 被视窗回收后 replaceItemToken 失效。
- useLoadOlder 对齐之前useLoadHistory:startReached 触发 recovery_history、
  firstItemIndex 前插补偿防视口跳动、loading 期间请求排队结束后补发
- rangeChanged/scrollToIndex 按绝对 index 换算 firstItemIndex 偏移
- Header 转圈改用真实在途状态 grpcLoadMoreLoading
- 视窗 hydrate/方向预取/淘汰逻辑保持不变
      先注释视窗回收删除 contents 的逻辑,避免问题 uuid 在 dequeue 替换前被清掉导致对不上。

fix:删除不需要得提示
perf:wf如果当前有正在执行得会话,需要先关闭当前会话;然后再重启点击得会话;如果当前点击得会话处于执行中得状态,那么就提示点击得会话正在执行中,不让切换
fix:修复点击任务详情在深度会话和任务tab之间反复切换问题
- handleLoadMore: 消息处理中(casualLoading/taskStatus=processing)禁止 gRPC
  向上加载,排队等处理结束后补发;IDB hydrate 不受影响
- handleSendMessage: grpcLoadMoreLoading 期间禁止发送消息,提示稍后再发
- 两道闸门对称,避免 gRPC 历史查询与流式写入并发导致后端表死锁
- chatStore: 加载 immer MapSet 插件(execFileRecord 为 Map)
- AIReActChatContents: defaultItemHeight 调整为 32,注释 increaseViewportBy
- AIAgentChatTemplate: 去掉 defaultItemHeight
打字机 hook 里用 shouldType 控制:
只有组件生命周期内status=start 才启用打字,挂载即 end
(IDB 缓存历史)直接对齐完整内容不打字。

- aiStream: 抽取 dispatchStreamToUI 公共方法,历史/实时统一首包上屏
- useTypedStream: 新增 shouldTypeRef,未见 start 时 alignToFull 不打字
- 流结束后直接对齐全文,不把积压再慢慢打完
- AIReActChatContents: defaultItemHeight 调整为 26
避免 ensureSession 造空池误判执行中;修复 render/content 写链 finally 无法自清;delete/replace 补齐结构落库;孤儿 session 与批量清库路径完善。
应用启动时 indexedDB.deleteDatabase 删除旧库释放磁盘,
失败/blocked 不影响新库预热;旧库引用(useAIMessageData)已是 dead code。
ipcRenderer.send 无法触发 ipcMain.handle,改为 invoke;
日志转发不需要等返回值,用 void 忽略 Promise。
@luoluoTH
luoluoTH force-pushed the refactor/ai-agent-data-structure branch from f4b53dc to 8a9e669 Compare July 31, 2026 07:44
b1rdfree and others added 6 commits July 31, 2026 15:47
覆盖 Controller/utils/chatStore/handlers/persist/emitter 的 A-F 全量场景,
补齐执行态查询与删除/结构落库相关断言;日志转发改为 invoke,fixture 补齐 isHistory。
解构 renderNum 并 alias 转换函数,消除 render-result-naming-convention 误伤。
fix:修复切换会话报错当前会话在执行中
@luoluoTH
luoluoTH force-pushed the refactor/ai-agent-data-structure branch from db6c5ee to 5578086 Compare July 31, 2026 08:48
@Vernon818 Vernon818 added ready and removed need more test 需要更多的测试 labels Jul 31, 2026
@hubin4826
hubin4826 merged commit 2a372f4 into master Jul 31, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants