OX
OPEN-OX

// changelog

更新日志

新功能、体验优化与工程改进。

v1.7minor2026-06-05

生成流水线 · Chrome 两阶段 Agent

全局 chrome 拆为 architect_scaffold_agent(快速搭壳、链接可占位)与 chrome_optimize_agent(全部页面落盘后勘察真实路由与 section id,精修 Nav/Footer)。Page Agent 全程只读 chrome。

  • 编排:scaffold → page_implement_agent ×N → chrome_optimize → await_images / install_deps
  • checkpoint:skipScaffold / skipChromeOptimize;旧 architect_agent 完成记录视为 scaffold 已完成
  • Page Agent:单页主区块须带 section id;禁止在 page 内重复全局 Nav/Footer
v1.6minor2026-05-19

文档与预览说明对齐当前实现

技术文档、首页文档索引与 README 已与代码一致:主路径为 Architect → page_implement_agent;设计系统改为 infer + generate_project_design_system(已移除 match_design_system_skill 与内置 design-system skill 目录);预览支持 local / storage(默认 dev)/ e2b 三种后端;修正构建修复轮次与模型步骤表等过时描述。

  • docs:流水线步骤含 validate_skill_prompts、await_images、typecheck_generated;移除已废弃的全局 preselect_skills / generate_section 主路径描述
  • docs:预览沙箱页补充 Storage + `/site-previews` 代理与 OPEN_OX_PREVIEW_BACKEND 选型
  • docs:Section 生成页改为 Page Implement Agent + Hero 运行时 skill 发现;设计系统页对齐并行编排与 token 写入方式
  • README:Next.js 16 / React 19,预览与 Storage 双 bucket 架构简述
v1.5perf2026-05-11

生成流水线 · Architect 先于 Page Agent

`architect_agent` 在全部 `page_implement_agent` 之前串行结束,各页预读到的 `app/layout.tsx` 与最终 chrome 落盘一致,降低重复导航/页脚等壳层风险。多页实现仍彼此并行。

  • apply_project_design_tokens 之后:先 `runArchitectStep`,再 `generatePages`(移除与 Page Agent 的 Promise.allSettled 并行)
  • 内部文档 `docs/architecture.md` 与 `app/docs/pipeline` 步骤说明已同步
v1.4fix2026-05-10

生成流水线 · globals 竞态修复与编排调整

修复「日志里 apply_project_design_tokens 看似正确,磁盘上 globals.css 却不像 LLM 产出」的问题;统一由设计系统 Markdown + 当前 globals 走 LLM,并收紧 Agent 对全局样式文件的写入。

  • apply_project_design_tokens 与 Architect / Page Agent 不再并行:token 步骤先落盘 app/globals.css,避免带 write_file 的代理在之后覆盖
  • apply_project_design_tokens 仅消费设计系统正文与站点当前 globals,不再读取或复制 skills 下的 *.globals.css
  • Architect 与多页 page_implement_agent 曾在 token 完成后并行(v1.5 起改为 Architect 先完成,再启动各页)
  • checkpoint skipArchitect 恢复时:generatedFiles 计入磁盘上已有的 app/layout.tsx 与 components/chrome/**
  • apply_project_design_tokens:提高 LLM 输出 token 上限(8k),降低超长 globals.css 截断风险
  • architect_agent 提示词去掉「须先跑 format_code」的误导,与 write_file 自动 Prettier 一致
  • docs/pipeline:移除已废弃 section 流水线步骤,补充 typecheck_generated,步骤编号与主路径对齐
  • 移除 scripts/codegen-skill-globals.mjs、根目录 _test_parse.mjs,删除 package.json 中的 codegen:skill-globals 脚本
v1.3major2026-04-12

账号主流程 · 全员项目广场

飞书登录与回跳闭环、会话与退出体验优化;未登录发起构建可接续;项目列表默认按成员浏览团队全部作品。

  • 独立 /auth 登录流程:飞书授权、错误提示、登录后按 redirect 回到来源页(含首页构建场景)
  • 未登录在首页填写需求并点「构建」→ 完成登录后自动恢复草稿并继续创建项目,无需再点一次
  • 项目页「全部成员 / 我的项目」:默认展示所有人项目并按创建者分组;「我的」下仍可用文件夹筛选
  • 全员列表仅本人项目显示删除;退出登录路径优化,减轻顶栏布局抖动与不必要的全页刷新
v1.2major2026-04-08

生成链路升级 — 6 步到 8 核心节点

为提升页面整体一致性与风格稳定性,新增独立风格推理与页面级 section 设计描述两个节点;并将 requirement 输出收敛为最小结构。

  • analyze_project_requirement 输出收敛为最小结构:brief + site(不再混入 designIntent)
  • 新增 infer_design_intent:独立风格推理节点,产物注入 generate_project_design_system
  • 新增 describe_page_sections:先整页结构描述,再拆分每个 section 的布局/背景/层次
  • analyze_project_requirement 与 infer_design_intent 并行执行,减少串行等待
  • site shell 输入改为扁平结构:site.navigation / site.footer,与 pages 同层
  • normalizeBlueprint 兼容新旧输入形状,保证链路平滑迁移
v1.1major2026-04-08

架构收敛 — Flow 模块化 + Prompt 统一与去重

本次针对可维护性投诉做系统性重构:拆分 generate/modify 巨型流程文件,收敛 LLM 调用层,Studio 类型去 any,并把提示词加载改为统一 Prompt Core,同时清理重复提示词来源,减少冲突与漂移。

  • Modify Flow 模块化:runModifyProject 拆分为 facade + loopEngine + stopHooks + context + tracking + prompt
  • Generate Flow 抽取:新增 normalization 与 orchestration 层(resultAccumulator / buildRepairLoop / sectionBatchRunner 等)
  • LLM 层统一:shared/llm 拆为 gateway、toolLoop、errorClassifier、contentExtractors,并保留 facade 导出
  • Blueprint 规范化收口:normalizeBlueprint 独立为 schema 模块,并增加输入形状检测与 fallback 告警
  • Studio 类型收口:BlueprintOverview 引入 ViewModel mapper,移除组件内 as any 读取
  • Prompt Core 上线:统一 prompt catalog/loader/composer,旧 loadStepPrompt/loadGuardrail 接口兼容接入
  • Modify 系统提示词迁移到 Markdown:从代码硬编码改为 prompts/system/modifyAgent.md
  • 提示词去重落地:section.default 中与 outputTsx 重复约束已删除,outputTsx 作为单一权威来源
  • 测试护栏补齐:新增 stopHooks、contentExtractors、normalizeBlueprint、buildRepairLoop、prompt composer 测试
v1.0major2026-04-07

Pipeline 重构 — Traits 系统 + 运行时 Skill 发现 + 并行提速

生成流水线的架构级重构。用结构化 Traits 替代 capability assist 白名单,移除全局 preselect_skills 步骤改为每个 section 运行时自发现 skill,design tokens 与 section 生成并行执行,repair_build 升级为 Agent 工具循环。

  • Traits 系统:SectionDesignPlan 中的 capabilityAssistIds 替换为结构化的 layout/motion/visual/interaction traits
  • 运行时 Skill 发现:移除全局 preselect_skills 步骤,每个 section 在生成时自行发现并选择 skill(score-based fallback)
  • design_tokens ∥ section_generation:两者不再串行,Promise.all 并行执行
  • repair_build 升级为 Agent 工具循环:使用 read_file / edit_file / write_file / run_build 工具,替代旧的 JSON 批量写入
  • LLM 重试:chatCompletion 加入指数退避重试(500/502/503 + Thinking signature error),最多 2 次
  • 模型配置:ModelConfig 新增 supportsThinking 字段,运行时可查询模型是否支持 thinking 模式
  • composePage 安全增强:import 去重 + 重复渲染检测 + 自动 rebuild
  • Section 去重:normalizeBlueprint、页面生成、composePage 三层去重,防止 LLM 输出重复 section
  • Prompt 精简:删除 7 个 section prompt、3 个 motion prompt、2 个 capability prompt、5 个 layout prompt,统一收敛到 section.default + skill
  • planProject 精简:SectionDesignPlan 验证从 15 字段缩减到 traits-based 结构
v1.0minor2026-04-07

Studio UI 优化

GenerationAtlas 拓扑图 memoize 优化,DetailDrawer 从 fixed 改为 absolute 定位,避免遮挡全局导航。

  • GenerationAtlas:useMemo + stepsFingerprint 避免每次渲染重新解析拓扑
  • DetailDrawer:backdrop 和抽屉从 fixed 改为 absolute,作用域限定在父容器内
v0.9major2026-04-06

统一触发器系统 — / @ # URL 图片

HeroPrompt 输入框从单一的 /skill 升级为多触发器架构。支持在文本任意位置触发,选中后以彩色 chip 形式注入。

  • / 风格模板:选择设计风格(如 /glassmorphism),注入 styleGuide
  • @ 参考项目:引用已生成的项目作为设计参考,注入 referenceProjectId
  • # 约束标签:添加约束条件(#暗色主题 #极简 #中文),追加到 prompt
  • URL 自动检测:粘贴 URL 自动提取为 chip,传递 referenceUrl
  • 图片粘贴:粘贴截图自动转为带缩略图的 chip,传递 imageBase64
  • 快捷模板 pills:输入框为空时显示 SaaS/作品集/电商等一键模板
  • 统一架构:usePromptTriggers hook + TriggerMenu + PromptChips 组件解耦
v0.8major2026-04-05

Modify Agent 架构升级 — 对标 Claude Code

基于 Claude Code 架构文档的全面对标分析,从模型路由、工具能力、上下文管理到 Agent 行为模式的系统性升级。

  • 模型路由解耦:modify 不再依赖全局 _runtimeModelId,通过函数参数传递
  • think 工具:内部推理 scratchpad,无副作用,用于复杂编辑前的规划
  • revert_file 工具:基于 FileSnapshotTracker 快照回滚,打转时可一键恢复
  • read_file 支持 start_line/end_line 行范围读取
  • exec_shell 加入 modify 工具列表
  • parallel_tool_calls: true 启用并行工具调用
  • Must read before edit 保护:edit_file 前必须先 read_file
  • Tool Result Budget:单条结果上限 30K 字符,防止 context 爆炸
  • 基于相关性的 Context 压缩:热文件保留完整,冷文件压缩
  • Loop Detection:连续 4 次操作同一文件时注入策略转换提示
  • 4-Phase Progressive Workflow:Orient → Deep Read → Edit → Verify
  • edit_file 失败时的近似行匹配诊断
  • System Prompt 加入 Claude Code 核心准则(先诊断再换策略、简洁输出)
v0.8minor2026-04-05

首页全面升级

首页从三段式(Hero + How it Works + Features)升级为五段式,增加数字指标栏和 CTA 区域,Features 从 3 张扩展到 6 张带指标的卡片。

  • Stats Bar:~30s / 6 步 / 2x 修复 / ∞ 迭代 — 全宽数字指标栏
  • Features 重做:6 张卡片,每张带右上角大数字指标 + hover 光晕
  • CTA Section:Footer 前的全宽 call-to-action 区域
  • AgentFlowDemo 重写:粒子流、节点呼吸灯、完成径向波纹、并行分裂动画、修复回路
  • Footer 重做:四栏布局(品牌 + 产品 + 资源 + 社交)
  • 全站中文化(主标题保留英文)
v0.7major2026-04-04

修改 Agent v7 — 受 Claude Code 启发的循环架构

修改流的完整重写。用开放式 Agent 循环替代了原来的"先规划后执行"模型,在单次循环中完成搜索、阅读、编辑和验证。

  • Stop Hook:质量门控,防止 Agent 在搜索、编辑和构建之前停止
  • 首次迭代 tool_choice='required' — Agent 必须先行动再思考
  • 对话记忆:DB 历史 + session 历史合并去重,最多保留 10 轮
  • 图片输入:可以粘贴截图配合文字指令
  • FileSnapshotTracker:自动为每个修改文件计算前后 diff
  • /clear 和 /memory 斜杠命令
v0.6perf2026-03-28

preselect_skills:N 次串行 LLM 调用 → 1 次批量调用

所有 section 的 skill 选择原来是 N 次独立 LLM 调用。现在合并为单次批量调用,同时处理所有 section。

  • 无论 section 数量多少,只需一次 LLM 调用
  • 菜单/菜谱分离:选择阶段只看 metadata,生成阶段才加载完整 prompt
  • LLM 失败时降级到每个类型的默认 skill
  • 8 个 section 的网站节省约 13 秒
v0.6major2026-03-24

风格技能系统

用户现在可以在生成前通过 prompt 输入框中的斜杠命令注入视觉风格指南。

  • /minimal、/bold、/glassmorphism、/brutalist 四种技能
  • styleGuide 存储在 sessionStorage,仅传递给 generateProjectDesignSystem
  • 截断到 1200 字符,避免 analyzeProjectRequirement prompt 溢出
  • useSlashMenu hook — 在 HeroPrompt 和 BuildConversation 中复用
v0.5major2026-03-18

plan_project + generate_design_system 并行化

两个步骤都只依赖 blueprint 且互不依赖。并行执行节省一个完整的 LLM round-trip。

  • Promise.all([stepPlanProject, stepGenerateProjectDesignSystem])
  • 每次生成节省约 10-20 秒
  • 安全检查:误放在 layoutSections 中的非 layout section 自动移回首页
v0.5major2026-03-17

buildSteps 增量持久化

构建步骤现在在每步完成后立即写入 Supabase,而非最后统一写入。用户中途关闭页面后重新进入能看到真实进度。

  • appendBuildStep() 通过 SSE onStep 回调逐步调用
  • 重新进入进行中的项目时启动 3 秒轮询
  • 重试时清空 buildSteps 防止幽灵节点
  • projectId 在 AI 启动前创建 — 支持恢复和可分享 URL
v0.4perf2026-03-10

E2B 沙箱重连 + 静态导出策略

预览沙箱现在会重连已有的 E2B 实例而非创建新的。静态导出替代 next dev,提供稳定、低资源的预览 URL。

  • sandbox_id 持久化到 DB 用于重连
  • next build + npx serve out 替代 next dev
  • 批量文件上传(20 个/批,并行)
  • 智能依赖安装:只安装模板中缺失的包
  • rebuildDevServer 复用沙箱,跳过未变更文件的重新上传
v0.3major2026-03-01

Blueprint normalize 层 + web_search 工具

analyze 步骤现在能优雅地处理 LLM 输出不一致的问题,并可以搜索网络获取未知品牌名信息。

  • asProjectBlueprint() 对所有字段做类型化 normalize 和 fallback
  • 支持嵌套、扁平和单页三种 LLM 输出格式
  • web_search 工具:prompt 包含未知专有名词时自动触发
  • analyze 步骤最多 4 次工具调用迭代
v0.2fix2026-02-15

原生 fetch 替代 OpenAI SDK

OpenAI SDK 的 8 秒 socket timeout 会杀死长时间的 section 生成调用。替换为原生 fetch + AbortSignal.timeout(300_000)。

  • AbortSignal.timeout(300_000) — 5 分钟硬上限
  • 兼容任何 OpenAI-compatible 提供商(Gemini、本地 Ollama 等)
  • 不再出现 60 秒 section 生成调用的静默断连