Merge project-scoped agent conversations into main

This commit is contained in:
2026-09-28 16:34:18 +08:00
23 changed files with 555 additions and 181 deletions

View File

@@ -5,11 +5,11 @@
智能体图标跟随发布定义:Yuxi 将原生 `icon` 固定到发布快照,Works Square 转为公开地址 `icon_url` 下发。Makelore 顶栏、邀请、面板标题、欢迎区和消息行统一读取该字段;缺失或加载失败时回退到既有 `avatar_id`。每个新问题取当前发布定义,已接受问题保持原版本;自定义图标使用正常图像渲染,内置像素头像保持像素样式。
详见[图标集成记录](../30-worklog/tasks/20260926-merge-agent-avatar-ml-92dc837e.md)。
Code 咨询由 Works Square 运营下发的 Yuxi 智能体执行,不内置老师/朋友分类。Main 按账号/稳定智能体 ID 保存唯一持续聊天,Renderer 按同一身份保存文字草稿。顶栏直接选择智能体,恢复历史/空态与未读;没有新话题加号或话题下拉框。每次接受问题固定当前项目、Pi 公开消息及发布版本;项目、Pi 来源或版本变化时只轮转内部 Yuxi 线程,带入有预算的公开近期交流。历史聊天文本不能扩大本轮文件范围。Main 执行三个只读工具并回传结果;学生支付咨询模型费用,个人 Agents 保持创建者付费。正文只接收云端主线程文本,其他线程事件仍推进游标。Code 默认 Agent、项目下操作会话及 Pi 执行保持项目边界。
Code 咨询由 Works Square 运营下发的 Yuxi 智能体执行,不内置老师/朋友分类。Main 按账号/项目/稳定智能体 ID 保存唯一持续聊天,Renderer 按同一身份保存文字草稿、分页缓存及阅读位置。顶栏直接选择智能体,恢复当前项目的历史/空态与未读;没有新话题加号或话题下拉框。每次接受问题固定当前项目、Pi 公开消息及发布版本;同项目 Pi 来源或版本变化只轮转内部 Yuxi 线程,带入该项目有预算的公开近期交流。切换项目恢复另一个聊天,历史与云端 checkpoint 不跨项目复用。Main 执行三个只读工具并回传结果;学生支付咨询模型费用,个人 Agents 保持创建者付费。正文只接收云端主线程文本,其他线程事件仍推进游标。Code 默认 Agent、项目下操作会话及 Pi 执行保持项目边界。
顶栏与打开的咨询栏共享 useTeacherCompanion 提供的只读目录/配置刷新结果;刷新入口独立于旧跟进条件,保持账号/智能体聊天及草稿身份。当前联系人资料可更新,执行版本仍由 Main 在每轮接受时冻结;介绍卡和真实气泡共同参与原生作品预览避让。
顶栏与打开的咨询栏共享 useTeacherCompanion 提供的只读目录/配置刷新结果;刷新入口独立于旧跟进条件,保持账号/项目/智能体聊天及草稿身份。当前联系人资料可更新,执行版本仍由 Main 在每轮接受时冻结;介绍卡和真实气泡共同参与原生作品预览避让。
TeacherConversationStore 在 userData/agent-conversations/<account>/<agent> 保存轻量索引和独立轮文件,每页50轮;SSE只发送当前轮与元数据,Renderer 按请求身份合并分页和流。Main 持久保存已读,阅读锚点只缓存在当前窗口。已登记项目的旧话题仅在账号和config_id明确时按来源身份导入,保留原文件;不明身份记录单独只读。讨论卡按项目保存,引用与带回操作核对原项目/Pi 来源。新下发聊天停止旧Renderer定时跟进;独立主动观察任务尚未纳入,未来建议须幂等投递同一聊天。详见[已接受决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
TeacherConversationStore 在 userData/agent-conversations/<account>/<agent>/projects/<projectId> 保存轻量索引和独立轮文件,每页50轮。Host API /api/coding/projects/:projectId/agent-conversations/:agentId 绑定历史、发送、SSE、取消、讨论、保存和已读;接受锁、缓存与订阅也按项目隔离。SSE只发送当前轮与元数据,Renderer 按请求身份合并分页和流,排除另一项目的迟到响应。Main 持久保存已读,阅读锚点只缓存在当前窗口。旧全局轮按 request.projectId 或 origin.projectId 分入项目,保留原请求身份、映射已读、复制对应讨论,强制新云端执行段;中断后幂等续接且不修改原文件,无项目归属的轮只保留原档案。更早项目话题仍按账号、config_id和来源身份导入去重。旧全局草稿仅由记录的项目接纳,原记录保留。引用与带回操作核对原项目/Pi 来源。新下发聊天停止旧Renderer定时跟进;独立主动观察任务尚未纳入,未来建议须幂等投递相应项目的同一聊天。详见[已接受决定](../10-decisions/ADR-2026-09-22-coding-teacher.md)。
## Current Architecture