风格化粒子动画依赖外部 CDN 的 Three.js,全站同域脚本策略会阻止其加载,导致 THREE 未定义。现在使用同域 ES module,保留原 Three.js 0.160.0、动画参数及 MIT 许可。 扶苏在 2026-11-04 09:44 收到的 gpt-image-2.5 HTTP 524 响应是 Cloudflare HTML 页面,错误正文被直接保存和显示。现在将这类响应显示为结果未确认的超时提示;已有历史消息在渲染时同样归一化,不改动原始记录。524 不触发自动模型切换,避免原任务结果未确认时再次生成。普通 HTML 文档和代码示例保持原样。 验证:原生产 CSP 下的本地浏览器验证粒子有可见像素、连续帧变化、窗口缩放及无外部请求、无脚本错误;637 项辅助测试通过、1 项原有跳过,包含供应商 524 只提交一次、结果未确认、不自动切换及正常 503 行为。TypeScript、改动文件 lint、凭据、日志脱敏、环境、元数据、测试与制品检查通过。 已知问题:全量 lint 仍有 1004 项历史诊断。524 的根因是上游长请求超时,本次修复错误展示与未确认结果的处理,不承诺消除线路侧偶发超时。
yedir-ai
yedir-ai 是一个面向商业化交付的 AI 设计工作台。它把 Lovart 风格的新首页、无限画布、Agent 工作流、图像生成与编辑、3D/CAD、本地 AI 配置中心和后台治理能力整合到同一个 Next.js 应用中。
这个仓库已经不再定位为通用 Chat 模板。旧 Chat 页面入口已移除,/api/chat 目前保留为 Canvas/Agent 等内部生成链路使用。
当前能力
- Lovart 风格首页:静态轻量壳优先渲染,站点配置、精选图、项目、教程和会员信息通过客户端渐进加载。
- Canvas/Agent 工作台:支持多模态生成、图片编辑、素材编排、Agent 模式和项目化创作流程。
- 图像与视频生成链路:支持 Gemini、Volcano、Qwen、FAL、RUXA、Krea、Runway、Midjourney 等可配置供应商。
- 3D / CAD 能力:集成 Tripo3D、World Labs、KittyCAD/Zoo,并支持后台模型别名和 Key 池配置。
- 后台设置中心:本地 AI 设置已拆分为领域组件,支持折叠持久化、状态摘要、快捷目录和统一 section shell。
- 生产治理:包含类型检查、lint、日志脱敏、首页公开接口缓存/降级、仓库污染物检查和 CI 质量门禁。
技术栈
- Next.js 16 App Router
- React 19 RC
- TypeScript
- Tailwind CSS + Radix UI
- Drizzle ORM + Postgres
- Auth.js
- Vercel Blob / S3-compatible object storage
- Playwright
- Ultracite / Biome
快速开始
准备 Node.js 20、pnpm 9.12.3 和 Postgres。
pnpm install
cp .env.example .env.local
pnpm db:migrate
AUTH_TRUST_HOST=true PORT=3001 pnpm dev
默认访问地址:
http://localhost:3001/
后台设置页:
http://localhost:3001/settings
未登录访问后台会重定向到 /login?callbackUrl=%2Fsettings。
环境变量
先从 .env.example 复制到 .env.local,再按部署环境填写真实值。不要提交 .env.local 或任何真实密钥。
最小本地运行通常需要:
AUTH_SECRETAUTH_URL或本地开发使用AUTH_TRUST_HOST=truePOSTGRES_URLBLOB_READ_WRITE_TOKEN或一组 S3 配置- 至少一个可用 AI Provider Key,或在后台设置中配置供应商
更多分组说明见 docs/deployment.md。
常用命令
pnpm dev
pnpm lint
pnpm check:logs
pnpm check:brand
pnpm check:ci
pnpm check:branch
pnpm check:env
pnpm check:secrets
pnpm check:metadata
pnpm check:tests
pnpm test:helpers
pnpm check:artifacts
pnpm check:quality
pnpm clean:artifacts
pnpm audit:security
pnpm verify:release
pnpm exec tsc --noEmit --pretty false
pnpm test
pnpm build
pnpm build:with-migrate
pnpm db:migrate
pnpm db:generate
推荐提交前至少运行:
git fetch origin --prune
pnpm check:branch
pnpm check:quality
pnpm audit:security
pnpm build
AUTH_TRUST_HOST=true PORT=3001 pnpm dev
SMOKE_BASE_URL=http://127.0.0.1:3001 pnpm smoke:routes
发布或创建 PR 前可使用一条命令串起质量、安全、生产构建和路由烟测:
SMOKE_BASE_URL=http://127.0.0.1:3001 pnpm verify:release
目录结构
app/ Next.js routes, route handlers, admin pages
components/ UI, Canvas, home, editor and product modules
components/home/lovart/ Lovart home focused render sections
lib/ DB, AI providers, storage, observability, domain logic
docs/ Deployment, operations, architecture and feature notes
tests/ Playwright e2e and route-level tests
.github/workflows/ Manual quality gates, dependency audit and Playwright CI
部署与运维
- 生产部署建议使用受控反向代理,并只在 Host 头可信时设置
AUTH_TRUST_HOST=true。 - 首页公开接口应保持快速返回,慢数据库或外部服务异常时返回缓存或 fallback。
- 生产日志默认通过
LOG_LEVEL=info控制,敏感字段会被lib/observability脱敏。 - GitHub Actions workflow 默认只允许手动触发,避免私有仓库免费额度被 push 自动消耗。
- Dependency Audit workflow 独立守住 high/critical 依赖审计基线,避免安全回归只靠人工发现。
- Playwright workflow 独立于基础质量门禁,避免把密钥依赖和 e2e 成本混入每次 lint/typecheck。
详细说明:
开发边界
/classic和/chat/[id]旧 Chat UI 已重定向到/。/api/chat暂时是内部生成 API,不作为公开旧 Chat 页面入口。- Canvas、Agent、图像处理和后台设置仍有大型历史模块,后续应按领域继续拆分。
- License 以仓库根目录 LICENSE 为准;本阶段未修改许可证和版权主体。
Description
Languages
TypeScript
96.4%
HTML
1.3%
JavaScript
1.1%
Python
0.4%
CSS
0.4%
Other
0.4%