设计路由器mcp
分组编译器是GPT-5.4 Codex的第一个设计路由器。
此仓库是前端工作的预生成层,模型可以在其中干净地实现,但需要更好的设计先验。它不会在v1中修补repos、运行浏览器或对屏幕截图进行评分。它选择最合适的锚包加上少量的支持示例,并呈现一个代码优先的防复制上下文包,供host agent在编码前使用。
当前范围
- 仅限网站v1
- 家庭:
- website.local_service - website.homepage_hero
- 锚包:
- holland_dirt_black_yellow_v1 - peachtree_flooring_light_residential_v1 - sweet_peach_beauty_editorial_v1 - tnt_cabinetry_craftsmanship_v1 - providence_medspa_editorial_v1
- 支持银行:
- ga_smb_selected_bank_v1 - 现在涵盖了最初的GA SMB领先文件夹获奖者以及22个独立的Telegram HTML工件站点,这些站点可以作为完整的代码示例进行路由 - 当磁盘上存在这些截图时,Telegram添加的内容现在还携带了所有者首次重新设计/当前工件表面的预览图像路径 - ga_smb_fullpage_march20_v1 - 3月20日,从 *-full.html 获胜者+ screens/*.png - 仅在捐赠者优先的路径下使用,因此默认的支持银行路径保持稳定
产品合同
阅读 docs/PRODUCT_CONTRACT.md 第一。
封闭词汇表和包创作规则存在 docs/GOLDENSET_SPEC.md.
当前数据包行为:
- 将真实的源代码还原到数据包的前面,这样模型就能在规则墙之前看到锚语法
- 船舶实际锚代码模式,包括完整的英雄部分(如果是正确的单位)
- 在正常的紧凑包中保持一个主锚作为结构中心;更广泛的交叉锚校准现在保留给显式的宽库模式,因此紧凑的运行不会平均为较弱的通用输出
- 从选定的源站点摘录真实支持示例代码,而不是单独摘要
- 支持显式路由配置文件,因此编译器可以重放旧的探索性混合(
legacy_exploration),保留更严格的专业过滤器(specialty_hardened),或使用新的恢复供体基线(hybrid_survivor_v1) - 支持库示例现在可以从任一站点源目录加载(
index.html加可选styles.css)或者是一个独立的HTML工件文件,因此即使源代码作为单个导出的站点文件到达,所选示例也可以公开真实的整个页面代码 - 当这些预览资源存在于磁盘上时,选定的支持示例现在也会在渲染的数据包中显示本地预览图像路径,因此主机可以在路由代码旁边打开路由的供体视觉效果
- 当前默认路由配置文件为
hybrid_survivor_v1:它保留了后来TNT领导的手表/工艺捐赠者组合,同时在需要时仍允许更窄的传统重播路径 - 当前源优先数据包现在可以将英雄捐赠者从页面锚点中分离出来:恢复/监视通道保留TNT或Peachtree用于较低的页面节奏,同时为第一帧借用荷兰风格的黑暗英雄语法
- 当前的源头第一包现在也干净地划分了美容车道:med spa页面可以保持
providence_medspa_editorial_v1借用时作为页面锚点sweet_peach_beauty_editorial_v1作为第一个框架英雄捐赠者,当简报想要更轻松的编辑美语法 - 支持显式数据包配置文件,因此渲染器可以重放较旧的历史数据包系列:
- current_source_first_v1 - march12_exploratory - march15_foldfit
- 历史数据包配置文件保留了旧的散文优先顺序、浏览器审查默认值和更严格的折叠拟合/资产路径语言,这些语言是复制保存的手表系列MCP数据包所必需的,而不是默默地将其标准化为新的源代码优先构建器
- 当缺少源代码摘录时,不再制作通用的回退示例HTML/CSS
- 支持示例现在可以发货
section_job_excerpts在数据包中,当存在真实的源代码块时,英雄部分的捐赠者与英雄代码一起可见 - 明确地告诉Codex打破其本地业务和SaaS后备模式
- 支持显式
include_full_library当有意希望进行广泛模式转储时,覆盖加载该系列的完整代码语料库 - 支持显式
full_code_mode覆盖活动锚点和选定示例上完整源文件的交换支持摘录 - 通过以下方式支持显式供体优先模式
donor_selection_mode = "site_donor_first_v1"加donor_count = 3,因此路由器只能暴露一小部分完整的网站捐赠者名单,而不是正常的支持示例子集 - 捐赠者优先的数据包现在保留了3月20日的整页银行选择权,在主播、英雄捐赠者和支持者之间执行硬三网站捐赠者预算,并在完整的捐赠者源文件之前发布明确的捐赠者角色部分
- 支持显式
pattern_lock覆盖,生成所需的结构借用图、支持角色分配和禁止的布局移动 - 模式锁现在发出更柔和的支持模式指导:支持示例应在页面中有意义的地方留下可追溯的借用信号,但不应全部强制进入第一帧
- 支持显式
pattern_lock_strictoverride,它添加了一个槽级结构映射和一条指令来修改锚点外壳,而不是重新解释它 - 支持显式
pattern_lock_exact覆盖,保留锚壳和最强的支撑设备,而不会强制进行文字设备计数或附件混乱 - 明确表示没有人为的输出或代码限制,并推动完全实现的、高度详细的前端,而不是压缩的通用输出
- 默认几何体采用角度或低半径处理,除非简短或源图案明确要求更柔和的圆形形状
- 为荷兰风格的分级或屋顶提示发出明确的深色车道图像规则和几何护栏,因此GPT-5.4 Codex被推向图像导向的证明,而不是抽象的深色板回退
- 现在可以检测到工作室、修复、诊所和学院等专业高端通道,因此路由和数据包语言停止将这些利基转化为通用的家庭服务输出
- 美容车道现在有专门的主播家庭,而不是默认乘坐桃树,因此医疗水疗路线可以使用真正的治疗引导页面外壳和单独的轻度美容英雄捐赠者
- 强化紧凑型支撑示例选择,这样当存在更清洁的先例时,平静或专业车道就不会明显脱离家庭密集型承包商的参考,如屋顶或建筑
- 发出明确的第一遍最小条和特殊证明表面契约,因此模型被推向编写的折叠证明,而不是短存根页或填充卡的延续
- 现在发出一个通用的英雄证明对象契约,因此高级主页停止发送带有令牌图像框的文本引导的第一帧
- 现在,对专业/编辑通道发出明确的编辑英雄约束,因此工作室和修复英雄们决定采取一种由形象主导的行动,而不是堆叠的信任/统计/支持机制
- 现在明确地防止编辑英雄漂移,即校样插图变成第二张英雄卡片,CTA延伸成全宽板,或者覆盖副本被困在插图下方
- 当前源代码优先观看/编辑数据包不再采用CTA下的校对行;如果图像加插图已经包含了英雄,那么第一帧应该更简单,更多的图像引导
- 现在发出一份单次投球合同,因此第一次传球被视为销售资产,而不是期待浏览器审查救援的草稿
- 现在,它发出了一种更柔和的英雄折叠纪律契约,因此第一帧将手机药丸、信任信号、CTA和一个支持/证明行保留在里面
1512x812无需将提示转化为像素预算数学 - 现在明确要求手机CTA在手机上保持可见,并将第一帧下方的悬挂式防伪插图视为失败的英雄
- 现在将挂在桌面屏幕截图折叠下方的英雄支持/证明行视为首次通过失败,即使CTA仍然适用
- 现在,当英雄已经携带主CTA时,显式地保持温暖/明亮的分割英雄头更安静,因此顶部栏不会与第一帧竞争或花费整个外壳预算
- 现在,在一个主要场景和一个次要证明面上为温暖的住宅分裂英雄戴上帽子,而不是让芯片轨道和额外的证明卡堆积成一个底部沉重的英雄
- 现在发出一个部分身份契约,因此较低的页面会交替使用轮廓、校样系统和细节密度,而不是重复一张通用的分割卡或相等的卡壳
- 现在,它发出了一种深度和细节的契约,所以下面的折叠部分带有混凝土壁龛防护装置,而不是通风的填充物副本
- 现在,在页面最强的中间部分之后,明确保留一个稍后的页面证明上升或决策权重表面,这样下半部分就不会逐渐变成礼貌的回顾卡
- 发出较软的节适配合约,因此Codex可以收紧死间距和重复语法,而不会将强节过度压缩为通用的单屏幕块
- 现在明确地告诉Codex在正常流程中保持below-fold结构,为同一节中的任何重叠保留空间,并阻止sidecards或档案面板碰撞到后面的行中
- 现在明确要求在有边框的卡片内有喘息的空间,并对地图或抽象图进行受保护的标签处理,这样密集的证明部分才能保持清晰,而不是变成狭窄的人工智能杂乱
- 发出明确的滚动编排契约:高级平滑滚动加上向下滚动时隐藏/向上滚动时显示的标题,除非简报覆盖了它
- 仅将运动视为增强:数据包现在明确禁止隐藏默认显示空白整页证明或无JS呈现的状态
- 发出明确的资产路径规则,使其本地化
shared_assets/图像必须从输出目录中正确解析,而不是默默地传送损坏的验证表面 - 默认值
host_browser_review选择加入而不是始终打开,这样核心数据包就可以保持源优先,一次性完成 - 当请求浏览器审查时,它告诉宿主编码代理在浏览器或本地预览中打开真实页面,保留第一次通过时最强烈的视觉效果,并将“更安全但不那么引人注目”视为失败的修订
- 浏览器审查现在明确检查了部分拥有的背景、文本/背景对比度、英雄叠加/插入碰撞、折叠下方结构碰撞、卡间距狭窄和难以辨认的图表标签,因此这些修复程序存在于MCP中,而不仅仅是一次性修复
/tmp清理通行证 - 仍然默认避免原始的整个项目转储,并在
25k硬顶 - 完整库和完整代码一起只支持作为实验性覆盖,而不是默认的数据包形状
当前基准真理:
wave21是prompt-6美容经典,也是高级构图的更好默认视觉上限wave25作为深度/完整性证明分支仍然有用,但不应将其视为全局美观目标
基准和手写的目标数据包在这里:
本地设置
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev,mcp]'重要包装/运行时注意事项
goldensets/ 与模块打包在一起(design_router_mcp/goldensets)用于标准安装。 对于开发过程中的源代码编辑, DESIGN_ROUTER_MCP_REPO_ROOT 仍然可以用于覆盖查找位置。
运行测试
PYTHONPATH=src .venv/bin/pytestMCP使用
MCP传输现已实施。使用stdio design-router-mcp 入口点。
# Start local MCP server
pip install -e '.[mcp]'
design-router-mcp --repo-root /path/to/design-router-mcp您也可以直接从Python调用生成的工具进行兼容性测试:
python - <<'PY'
from design_router_mcp.mcp_server import resolve_design_packet
print(resolve_design_packet('{"surface":"website.local_service","task":"Build a homepage for a grading contractor","stack":"html_css","tone":["dark","industrial"],"layout_mode":"homepage","constraints":["fit 1512x812","phone CTA above fold"]}'))
PYPython用法
from pathlib import Path
from design_router_mcp.pack_loader import load_repository_packs
from design_router_mcp.render_context import build_context_packet
from design_router_mcp.router import DesignRouter
from design_router_mcp.schemas import DesignContextRequest
repo_root = Path("/absolute/path/to/design-router-mcp")
loaded_packs = load_repository_packs(repo_root)
router = DesignRouter(loaded_packs)
request = DesignContextRequest(
surface="website.local_service",
task="Build a homepage hero section for a dirt and grading contractor.",
stack="html_css",
tone=["premium", "industrial", "high-contrast"],
layout_mode="homepage",
constraints=["fit 1512x812", "phone CTA above fold", "5-star trust badge visible"],
anti_patterns=["template feel", "soft SaaS gradients", "marketing-agency vibe"],
)
resolution = router.route(request)
packet = build_context_packet(request=request, resolution=resolution)
print(packet.markdown)命令行用法
design-router-packet --request-json '{
"surface": "website.local_service",
"task": "Build a homepage hero section for a dirt and grading contractor.",
"stack": "html_css",
"tone": ["premium", "industrial", "high-contrast"],
"layout_mode": "homepage",
"constraints": ["fit 1512x812", "phone CTA above fold", "5-star trust badge visible"],
"anti_patterns": ["template feel", "soft SaaS gradients", "marketing-agency vibe"]
}'将数据包写入磁盘而不是stdout:
design-router-packet --request-file request.json --output packet.md完整库覆盖:
design-router-packet --request-json '{
"surface": "website.local_service",
"task": "Build a homepage hero for a residential interior painting contractor.",
"stack": "html_css",
"tone": ["premium", "light", "residential", "restrained"],
"layout_mode": "hero",
"constraints": ["fit 1512x812", "phone CTA above fold", "trust signal visible"],
"anti_patterns": ["dark industrial framing", "template feel"],
"include_full_library": true
}'模式锁定覆盖:
design-router-packet --request-json '{
"surface": "website.local_service",
"task": "Build a homepage hero for a residential interior painting contractor.",
"stack": "html_css",
"tone": ["premium", "light", "residential", "restrained"],
"layout_mode": "hero",
"constraints": ["fit 1512x812", "phone CTA above fold", "trust signal visible"],
"anti_patterns": ["dark industrial framing", "template feel"],
"pattern_lock": true,
"max_examples": 4
}'严格模式锁覆盖:
design-router-packet --request-json '{
"surface": "website.local_service",
"task": "Build a homepage hero for a residential interior painting contractor.",
"stack": "html_css",
"tone": ["premium", "light", "residential", "restrained"],
"layout_mode": "hero",
"constraints": ["fit 1512x812", "phone CTA above fold", "trust signal visible"],
"anti_patterns": ["dark industrial framing", "template feel"],
"pattern_lock": true,
"pattern_lock_strict": true,
"max_examples": 4
}'完整代码覆盖:
design-router-packet --request-json '{
"surface": "website.local_service",
"task": "Build a homepage hero for a residential interior painting contractor.",
"stack": "html_css",
"tone": ["premium", "light", "residential", "restrained"],
"layout_mode": "hero",
"constraints": ["fit 1512x812", "phone CTA above fold", "trust signal visible"],
"anti_patterns": ["dark industrial framing", "template feel"],
"pattern_lock": true,
"pattern_lock_strict": true,
"full_code_mode": true,
"max_examples": 4
}'精确模式覆盖:
design-router-packet --request-json '{
"surface": "website.local_service",
"task": "Build a homepage hero for a residential interior painting contractor.",
"stack": "html_css",
"tone": ["premium", "light", "residential", "restrained"],
"layout_mode": "hero",
"constraints": ["fit 1512x812", "phone CTA above fold", "trust signal visible"],
"anti_patterns": ["dark industrial framing", "template feel"],
"pattern_lock": true,
"pattern_lock_strict": true,
"pattern_lock_exact": true,
"full_code_mode": true,
"max_examples": 4
}'故意排除
- 无嵌入
- 产品代码中没有浏览器自动化
- 无回购突变
- 没有从任意项目自动生成包
- MCP传输现在通过
design-router-mcpStdio入口点
