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:artifacts
pnpm check:quality
pnpm clean:artifacts
pnpm exec tsc --noEmit --pretty false
pnpm test
pnpm db:migrate
pnpm db:generate
推荐提交前至少运行:
pnpm check:quality
AUTH_TRUST_HOST=true PORT=3001 pnpm dev
SMOKE_BASE_URL=http://127.0.0.1:3001 pnpm smoke:routes
目录结构
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/ Quality gates and Playwright CI
部署与运维
- 生产部署建议使用受控反向代理,并只在 Host 头可信时设置
AUTH_TRUST_HOST=true。 - 首页公开接口应保持快速返回,慢数据库或外部服务异常时返回缓存或 fallback。
- 生产日志默认通过
LOG_LEVEL=info控制,敏感字段会被lib/observability脱敏。 - Playwright workflow 独立于基础质量门禁,避免把密钥依赖和 e2e 成本混入每次 lint/typecheck。
详细说明:
开发边界
/classic和/chat/[id]旧 Chat UI 已重定向到/。/api/chat暂时是内部生成 API,不作为公开旧 Chat 页面入口。- Canvas、Agent、图像处理和后台设置仍有大型历史模块,后续应按领域继续拆分。
- License 以仓库根目录 LICENSE 为准;本阶段未修改许可证和版权主体。
Description
Languages
TypeScript
97.4%
HTML
1.4%
Shell
0.5%
JavaScript
0.4%
Python
0.2%
Other
0.1%