Files
makelore/README.md
brother7 1e23028b4b
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
merge: 集成共享 Agent Browser 调试能力
需求:将 Agent Browser 独立功能提交合并到包含 AI 设计 Workspace 的最新主线。

实现:保留双方模块初始化、Host API 路由和 README 产品说明。

# Conflicts:
#	electron/api/context.ts
2026-07-31 14:56:45 +08:00

108 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Makelore 2.0
**一念成光,万物可创。**
Makelore 是一个面向软件与视觉创作的 AI 桌面工作台。当前版本为 `2.0.0`,包含两个已开通产品模块,并保留一个学习模块入口:
- `Makelore CodeAI 编程`:管理本地项目、项目 Agent、会话、文件上下文、代码变更和运行时。
- `Makelore CanvasAI 绘画`以设计项目Workspace组织 Agent 对话、方向确认、图片/视频生成任务和私有结果。
- `Makelore LearningAI 学习`:数学与知识宇宙主题的学习入口,当前暂未开通;开屏页和模块切换菜单保留置灰入口,不能进入。
作品广场、素材广场、发布上传和云部署页面不属于 Makelore 2.0 工作台。项目成果预览 `/deliverables` 继续保留。
## 当前产品状态
- 桌面技术栈Electron、React 19、Vite、TypeScript、Zustand、Tailwind CSS。
- AI 编程运行时Electron Main 管理项目内声明的 `opencode-ai` 依赖Renderer 不直接启动或调用运行时。
- 共享开发浏览器AI 编程右侧提供项目级浏览器,用户与 Agent 查看并调试同一实时页面、Console 和 Network支持本地与公网开发地址。
- 后端边界Renderer 通过 Main 所有的 Host API 访问认证、模型、同步、更新、语音、图像与运行时能力。
- AI 绘画:每个设计项目固定一个设计 Agent。Agent 先通过持续对话收敛 Brief用户确认服务端 Quote 后才创建图片或视频任务;任务进度与对话互不阻塞,并在统一列表中展示。生产环境使用 Works Square 云端 Workspace 契约,上游不可用时明确报错。
- 视觉系统:单一浅色主题,品牌蓝 `#3A5578`、星火橙 `#F26A3D`、白色画布与低饱和蓝灰层级。
- 品牌资产:生产 SVG、PNG、应用图标、托盘图标与安装器视觉位于 [`resources/brand/`](resources/brand/README.md) 和 `resources/icons/`
## 安装与开发
项目使用 `package.json` 中固定版本的 pnpm。
```bash
pnpm install --frozen-lockfile
pnpm run dev
```
开发环境中的 AI 绘画创作空间默认使用仅供开发的本地适配器它会把设计项目、对话、Quote 和生成任务保存在本机用户数据目录,并生成本地预览。也可以使用下面的显式命令启动同一模式:
```bash
pnpm run dev:image-workspace:local
```
该模式只允许在未打包应用中启用,使用独立开发数据,并保持与生产相同的 Workspace-first 接口。打包应用和生产环境只使用云端适配器,云端失败不会回退到本地。
## 质量检查
```bash
pnpm run typecheck
pnpm run lint:check
pnpm test
pnpm run build:vite
```
Electron E2E
```bash
pnpm run test:e2e
```
## 打包
```bash
pnpm run package:mac
pnpm run package:win
pnpm run package:linux
```
各平台打包脚本会先准备目标平台所需的 Python 与运行时资源,产物写入忽略的 `release/` 目录。
## 代码结构
| 路径 | 职责 |
| --- | --- |
| `src/` | React Renderer、页面、组件和状态管理 |
| `electron/` | Electron Main、Preload、Host API、运行时与系统能力 |
| `shared/` | Main 与 Renderer 共享的契约和项目配置 |
| `.opencode/` | 随产品提供的 Skill 与 OpenCode 插件 |
| `resources/` | 品牌、图标和打包资源 |
| `scripts/` | 运行时准备、图标生成、打包与验证脚本 |
| `tests/` | Vitest、Electron runtime 与 Playwright 测试 |
## 架构约束
- Renderer 的后端调用统一经过 `src/lib/host-api.ts``src/lib/api-client.ts`
- Renderer 不直接调用 Electron IPC 或本地运行时 HTTP 地址。
- Electron Main 负责认证、秘密存储、运行时生命周期、代理、同步和系统集成。
- AI 编程项目配置以项目内 `.niancode/project.json` 为准;项目文件和会话保持本地。
- AI 绘画 Renderer 只调用 Main-owned Host APIMain 负责 Works Square Token 刷新、snake_case 契约映射、结构化错误和私有媒体 Range 转发。
- AI 绘画使用独立的云端 Workspace 边界,不回退到 AI 编程项目数据,也不向 Renderer 暴露 Provider、模型、Prompt、存储 URI 或远端登录 Token。
- AI 编程的 Agent 配置是项目所有的;稳定 id 用于保持会话兼容显示名称可以修改。AI 绘画的设计 Agent 是固定产品能力,不作为用户可增删的项目实体。
### 共享开发浏览器
- Electron Main 持有 sandboxed `WebContentsView`、项目级持久浏览器配置和 CDP 连接;被调试页面不获得 Makelore Preload、Node.js 能力或 Host API 凭证。
- 用户和 Agent 操作同一个页面。Renderer 只负责显示、收起和布局Agent 通过 Main 代理的页面级 CDP 工具导航、读取 Console/Network 和执行调试命令。
- 非 Web 协议、文件注入、跨目标及宿主级命令会被阻止。面板收起或被弹窗遮挡时隐藏原生页面并暂停 Agent 调试;该能力独立于发布和部署。
### 项目联系人与会话
- 新项目默认没有联系人或 Agent用户在项目内手动创建联系人时必须填写名称、预设头像、职责和精确的 `provider/model`,提示词与 Skill 属于后置高级设置。
- 一个联系人可以拥有多条互相独立的 OpenCode Session联系人、会话、归档时间、置顶和未读数分别由项目配置与 `.niancode/conversations.json` 保存。
- 联系人展开后按时间展示会话,默认显示前五条,更多会话通过“更多会话”展开;每条会话只显示一行精简的最新消息预览和右侧时间,归档按钮仅在悬浮或聚焦会话卡片时出现,选中联系人会在卡片上保持明确的展开状态反馈。
- 创建联系人后先进入联系人对话,首条消息发送时才懒创建 OpenCode Session新会话从干净上下文开始标题从“新对话”在首条消息发送后自动生成也支持手动重命名。
- 不同 Session 由 OpenCode 自己并发运行;同一 Session 的后续消息按顺序排队。Makelore 只展示运行中、待处理和未读状态,不增加额外的全局并发锁。
- 归档联系人或单个会话前必须确认;归档会停止对应运行、保留历史,并可从列表底部恢复。未读按会话记录,打开一个会话只清除它自己的未读数。
- OpenCode 的问题与权限请求在当前会话内联处理,不自动批准;上下文压缩沿用 OpenCode 自动机制,在最新消息位置显示“正在压缩上下文”。
## 兼容标识
Makelore 2.0 继续保留既有 `niancode` 包名、应用 id、协议、数据目录、环境变量、API 请求头和服务标识,以兼容现有安装与服务。它们是内部技术契约,不是对外品牌名称。
本仓库只描述当前产品状态,不保存旧产品的任务记录、设计过程、工作日志或迁移历史。