feat: integrate learning module
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled

This commit is contained in:
inman
2026-08-16 20:52:16 +08:00
parent 26b52d76e3
commit 01bee3188b
107 changed files with 6318 additions and 12063 deletions

View File

@@ -2,12 +2,12 @@
**一念成光,万物可创。**
Makelore 是一个面向软件、视觉创作与智能机器人的 AI 桌面工作台。当前版本为 `2.0.0`,包含个已开通产品模块,并保留一个学习模块入口。模块入口页采用统一的横向卡片视觉,工作区左上角入口点击后返回模块入口页:
Makelore 是一个面向软件、视觉创作、互动学习与智能机器人的 AI 桌面工作台。当前版本为 `2.0.0`,包含个已开通产品模块。模块入口页采用统一的横向卡片视觉,工作区左上角入口点击后返回模块入口页:
- `Makelore CodeAI 编程`:管理本地项目、项目 Agent、会话、文件上下文、代码变更和运行时。
- `Makelore CanvasAI 绘画`以设计项目Workspace组织 Agent 对话、方向确认、文生图、单参考图生图、视频生成任务和私有结果参考图可从当前项目作品选择或从本地上传。Canvas 侧栏在“新建设计项目”上方提供“获取灵感”,进入服务端驱动的提示词博物馆。
- `Makelore RobotAI 机器`:管理机器人智能体、设备激活绑定、智能体配置与设备分配,让 AI 能力走进真实世界。
- `Makelore LearningAI 学习`数学与知识宇宙主题的学习入口,当前暂未接入;入口保持可见,点击暂不进入工作区
- `Makelore LearningAI 学习`浏览和下载 Works 课程,也可以从需求、材料与多媒体选项发起后台单课生成;下载后的 frozen 课程包由内置 OpenMAIC production Stage 播放
应用启动默认进入 AI 模块入口选择页。入口页可在未登录状态浏览;未登录用户点击已开通模块时进入浏览器授权,授权成功后回到入口选择页,已登录用户可直接进入对应工作区。
@@ -20,11 +20,12 @@ Makelore 是一个面向软件、视觉创作与智能机器人的 AI 桌面工
- 共享开发浏览器AI 编程右侧提供项目级浏览器,用户与 Agent 查看并调试同一实时页面、Console 和 Network支持本地与公网开发地址。
- 后端边界Renderer 通过 Main 所有的 Host API 访问认证、模型、同步、更新、语音、图像与运行时能力。
- 客户端更新Electron Main 按平台与架构选择更新源并保留原始诊断;设置页只显示一条脱敏后的中文状态。正式源缺少对应安装包时保持错误并允许重试,不会误报为已是最新版。
- 个人资料:姓名、年龄、性别与个人头像按账号同步到云端;头像支持 PNG、JPEG、WebP保存时自动居中裁剪并以圆形缩略图展示未设置或加载失败时回退为姓名首字母。
- 个人资料:姓名、年龄、性别与个人头像按账号同步到云端;首次登录进入模块选择页时会要求先完善姓名,首页欢迎语和主平台左下角账号区优先展示个人资料姓名;头像支持 PNG、JPEG、WebP保存时自动居中裁剪并以圆形缩略图展示未设置或加载失败时回退为姓名首字母。
- 会话观察同步:本地编程会话在一轮问答完成并进入空闲后,后台通过个人资料 PUT 上传该会话截至当前的完整问答快照;只保留用户/助手自然语言文本,过滤代码、路径、日志、工具调用、附件与产物。同步只从本地上行,云端不回写、不恢复或删除本地会话;失败数据留在本地等待重试。
- AI 绘画:每个设计项目固定一个设计 Agent并可包含多条互相独立的设计会话。消息、Brief、Quote 和 `turnRevision` 属于 Conversation图片/视频生成任务与资产属于 Workspace切换或新建会话不会创建新项目也不会隐藏项目任务。图片创作既支持文生图也支持从当前项目已完成作品或本地上传中选择一张参考图继续生成输入框支持直接上传参考图上传后可在候选区点击或输入 `@` 选择,并将所选资产随消息提交;视频沿用同一单图选择器绑定首帧。每条 Conversation 复用服务端持久 Agent Gateway Session已连接时 Agent 命令、流式回复和任务进度共用 WebSocket断流时使用幂等 REST 提交与低频同步。确认栏展示并允许编辑服务端最终提示词和 generation options分别展示清晰度、画幅和视频时长每次修改都会按当前 Quote 重新报价、刷新设计点,报价完成前不能确认,确认时将最新提示词与参数原值提交给后端。客户端不计算百炼尺寸、供应商价格或积分价格,服务端 Quote 是唯一计费准则。确认结果会按 Quote 对账,即使 Run 在任务落库后异常结束Workspace 任务仍会恢复到统一列表。生产环境使用 Works Square 云端 Workspace 契约,上游不可用时明确报错。
- AI 绘画项目栏会在当前项目下保留会话历史,默认显示最近五条消息摘要和更新时间,更多会话可展开;新建或点击历史条目都在同一项目中切换并恢复完整对话。
- AI 绘画项目支持从侧栏删除。确认删除时必须完整输入项目名称;删除后项目及其会话、任务、参考图和生成作品会从账户中隐藏且无法访问,不影响用户已另存到磁盘的副本。服务端采用软删除,数据库记录和对象存储暂不物理清理。未提交的任务会被取消并释放预留积分,已提交或运行中的任务继续后台结算但对用户隐藏;删除当前项目后自动打开最近更新的剩余项目,删除最后一个项目后进入空状态。
- AI 学习:默认主区直接展示课程广场,生成课程从全局左栏打开宽工作台;无材料请求使用 JSON有材料请求使用受限 multipart最多 5 个、单个 50 MiB、总计 150 MiB。大课在课程广场保持一张课程卡进入后按有序模块切换同一 production Stage。课程包先校验大小与 SHA-256 再原子安装音频、媒体与互动内容可离线播放Agent、ASR、PBL 与主观题评分通过 Main 白名单桥接并在离线或无权益时明确提示。
- 提示词博物馆只陈列经过审核的作品预览、Prompt、分类以及作者/来源/许可证信息,支持搜索、使用场景/风格/主体筛选和详情抽屉;“使用此 Prompt”只把原文带回当前 Canvas 会话输入框,不自动发送、不构成社区。列表和详情数据由服务端提供,客户端不打包数据集;服务端字段契约见 [`docs/prompt-museum-server-contract.md`](docs/prompt-museum-server-contract.md)。
- 视觉系统:单一浅色主题,品牌蓝 `#3A5578`、星火橙 `#F26A3D`、白色画布与低饱和蓝灰层级。
- 字体系统Renderer UI 内嵌 Inter Variable 与 Source Han Sans SC按字符范围统一中英文代码、路径和日志使用独立等宽字体。
@@ -71,7 +72,7 @@ pnpm run package:win
pnpm run package:linux
```
Windows 打包脚本会先准备目标架构所需的 Python、uv 与 OpenCode 运行时资源,产物写入忽略的 `release/` 目录。Windows 正式包中的 OpenCode、Playwright MCP、Python 和 uv 均从安装目录解析;缺少本地资源时启动或产物验证会直接失败,不会回退到系统 Python、npm 或 npx 下载。Git、项目编译器和用户选择的浏览器仍属于项目/系统工具,不属于内置 OpenCode 运行时。macOS 与 Linux 的双架构产物需要分别完成对应架构的 staging 与产物验证后再发布。
Windows 打包脚本会先准备目标架构所需的 Python、uv 与 OpenCode 运行时资源,产物写入忽略的 `release/` 目录。正式发布还必须通过 `MAKELORE_LEARNING_PLAYER_ARTIFACT` 提供已解压且通过清单校验的 OpenMAIC 播放器产物CI 先按固定 URL 与 SHA-256 下载,未提供或校验失败会立即停止,安装包不依赖相邻源码仓库或被忽略的本机构建目录。Windows 正式包中的 OpenCode、Playwright MCP、Python 和 uv 均从安装目录解析;缺少本地资源时启动或产物验证会直接失败,不会回退到系统 Python、npm 或 npx 下载。Git、项目编译器和用户选择的浏览器仍属于项目/系统工具,不属于内置 OpenCode 运行时。macOS 与 Linux 的双架构产物需要分别完成对应架构的 staging 与产物验证后再发布。
## 代码结构
@@ -95,6 +96,7 @@ Windows 打包脚本会先准备目标架构所需的 Python、uv 与 OpenCode
- AI 编程项目配置以项目内 `.niancode/project.json` 为准;项目文件和会话主数据保持本地,问答观察快照按个人资料同步规则单向上行。
- AI 绘画 Renderer 只调用 Main-owned Host APIMain 负责 Works Square Token 刷新、Conversation 所属的服务端持久 Agent Session、单次 WebSocket ticket、双向命令/事件帧、断点续传与契约映射,并通过本机 Host API 的 SSE 投影同步任务状态。切换会话只重连对应流;注销或退出时关闭本地流并清除本机 Session-id 缓存,不删除服务端持久 Conversation Session。远端 Token 与 ticket 不进入 Renderer。
- AI 绘画使用独立的云端 Workspace 边界,不回退到 AI 编程项目数据,也不向 Renderer 暴露 Provider、模型、Prompt、存储 URI 或远端登录 Token。
- AI 学习的课程目录、生成、进度、Agent、ASR 与课堂 runtime 都经过 Main-owned 边界Renderer 不持有 Works Token、模型或 Provider 配置。云端绑定始终使用课程 aggregate `contentHash`,模块 id/hash 仅作为受控上下文;课堂 runtime 只允许固定能力路径,播放器不能自报课程身份或代理任意 URL。
- Prompt Museum 使用独立的 Main-owned Host API 代理Renderer 只接收分页卡片、详情和服务端返回的图片地址Works Square Token 只由 Main 持有。发布记录必须由服务端完成作者、来源、许可证和素材授权审核,模块不提供投稿、点赞、评论或排行榜。
- AI 编程的 Agent 配置是项目所有的;稳定 id 用于保持会话兼容显示名称可以修改。AI 绘画的设计 Agent 是固定产品能力,不作为用户可增删的项目实体。
@@ -108,9 +110,9 @@ Windows 打包脚本会先准备目标架构所需的 Python、uv 与 OpenCode
### 项目内置 OpenCode Skills
- 项目随产品提供 `agent-browser`(开发浏览器)、`frontend-slides`(项目演示)、`game-engine`(游戏引擎)、`grilling`(方案质询)和 `planning-with-files`(项目规划)个 OpenCode Skill。它们从 `.opencode/skills/` 打包,并由 Electron Main 安装到受管的 OpenCode 配置目录。
- 创建项目伙伴时,只有 `grilling``planning-with-files` 默认勾选;`frontend-slides``game-engine` 作为专项能力可手动选择。用户可以在创建或维护伙伴时调整选择。最终选择写入项目 Agent 的 `skillIds`,未选择的 Skill 保持拒绝权限。
- `grilling` 会在复杂实现前逐项确认高影响决策,用户确认前不执行变更。`planning-with-files` 只在复杂、可分阶段或需要跨会话恢复的任务中使用,并把 `task_plan.md``findings.md``progress.md` 保存到当前项目 `.niancode/agent-planning/`,不在项目根目录生成规划日志
- 项目随产品提供 `agent-browser`(开发浏览器)、`frontend-slides`(项目演示)、`grilling`(方案质询)和 `planning-with-files`(项目规划)个 OpenCode Skill。它们从 `.opencode/skills/` 打包,并由 Electron Main 安装到受管的 OpenCode 配置目录。
- 创建项目伙伴时,`agent-browser``grilling``planning-with-files` 默认勾选;`frontend-slides` 作为专项能力可手动选择。用户可以在创建或维护伙伴时调整选择。最终选择写入项目 Agent 的 `skillIds`,未选择的 Skill 保持拒绝权限。
- `grilling` 会在复杂实现前逐项确认高影响决策,用户确认前不执行变更。`planning-with-files` 只在复杂、可分阶段或需要跨会话恢复的任务中使用,并把 `task_plan.md``findings.md``progress.md` 直接保存到当前项目根目录,不写入 Skill 安装目录、用户目录或 `.niancode/agent-planning/`
- `frontend-slides` 只在用户准备项目展示、汇报或结题时自动调用,生成项目目录中的固定 16:9 HTML 演示和相对路径素材;它不生成 `.pptx`,不访问云部署服务。
### 项目伙伴与会话