OX
OPEN-OX

// docs / generate-project-trace

Generate Project:Skill 与 Prompt 拼装 Trace

runGenerateProject 流水线里组件 skill 如何选出、各 Agent 的 system/user 如何拼接,以及日志里能看到什么。 对照代码:runGenerateProject.tssteps/pageImplementAgent.tsshared/agentRuleBundles.tsshared/files.ts

Guardrail 白名单、默认推断与合并规则见仓库 docs/architecture-section-prompts.md
路径约定:下文 steps/prompts/ 等目录均相对于 ai/flows/generate_project/,除非写为 ai/prompts/…

1. 总览:与提示词相关的阶段

阶段System 主要来源User 主要来源
analyze_project_requirementsteps/analyzeProjectRequirement.md + outputJson用户 prompt / 蓝图输入
plan_projectsteps/planProject.agent.md + outputJson规范化蓝图 JSON
generate_project_design_systemfrontend + steps/generateProjectDesignSystem.md蓝图 + 可选 styleGuide
apply_project_design_tokensfrontend + steps/applyProjectDesignTokens.mdglobals + 设计系统
preselect_skills(内联 selector)短 system各 section 的 skill metadata(无正文)
generate_section见 §3见 §4
architect_agentfrontend + steps/architectAgent.md + 工具循环蓝图 + design-system + 现有文件
page_implement_agent / compose_pagefrontend + steps/pageImplementAgent.md / steps/composePage.md已生成文件 + chrome 契约(layout.tsx)
repair_buildfrontend + steps/repairBuild.md + outputJson构建日志 + 相关文件

2. Skill:预选与正文加载

  1. 预选 preselectSkillsForSections:按 section.type discoverSkillsBySectionType 收集候选;一次 LLM 返回 selections[fileName] = skillId | null; 非法或缺失时用 fallback: true 候选。
  2. 传入 stepGenerateSection({ preselectedSkillId }):已传则不再调用 stepSelectComponentSkills
  3. 正文 loadSkillPrompt(id)prompts/skills/{id}.mdnull 则 skill 块为空。

3. page_implement_agent:System 拼接(与代码一致)

steps/pageImplementAgent.tscomposePromptBlocks(["frontend", pageImplementAgent 步, …rules]), 其中 …rules = resolvePageImplementAgentRuleIds().map(loadGuardrail),id 列表见 shared/agentRuleBundles.ts。各 id 映射到 prompts/rules/<id>.md(如 section.default.md)。可选追加环境变量 PAGE_IMPLEMENT_AGENT_EXTRA_RULES(逗号分隔 id)。

Design system 在用户消息正文;预选 Hero skill 在用户消息末尾块;不在此 system 列表中。

Architect Agent 的规则栈:resolveArchitectAgentRuleIds()(默认含 section.navigationoutputTsxframerMotionVariants)。

4. generate_section:User 消息块

buildUserMessageDesign Systemglobals.cssProject Context → Roles / Task Loops / Capabilities → Known RoutesPage Context Section to Generate(含完整 designPlan,列出 guardrailIds capabilityAssistIds)。

5. capabilityAssistIds → 文件

getCapabilityAssistPath

  1. prompts/capabilities/{id}.md 存在则用之
  2. effect.motion.*prompts/motions/motion.*.md(去掉 effect. 前缀)
  3. pattern.*prompts/layouts/{去 pattern. 前缀}.md
  4. 否则回退 capabilities/{id}.md(通常需 hasCapabilityAssist 过滤)

6. 日志:.open-ox/logs/generate_project/

每步目录下 output.json(section 步)含 skillIdsection.designPlan 等; 完整 systemPrompt / userMessage 在内存 StepTrace.llmCall,默认不落盘到该 JSON。

7. 新提示放哪(速查)

下表中的 prompts/ 均指 ai/flows/generate_project/prompts/

目的位置
全局写代码约定ai/prompts/systems/frontend.md
红线 / section 共用规则prompts/rules/*.md(清单见 agentRuleBundles.ts;含 section.default、project.*)
组件气质 skillprompts/skills/*.md + frontmatter
版式 patternprompts/layouts/*.md 或 prompts/capabilities/pattern.*.md
动效prompts/motions/motion.*.md + effect.motion.* id
红线 guardrailprompts/rules/*.md(允许 ID 由规则文件扫描,见仓库 docs/architecture-section-prompts.md)
某一步任务prompts/steps/{name}.md
JSON/TSX 输出格式prompts/rules/outputJson.md、outputTsx.md