# search-engine-widget(子模块规范) ## 子模块名称 search-engine-widget(WIDGET 搜索器:Beam Search) ## 目标描述 在 WIDGET 场景实现确定性 Beam Search: - 每一行扩展时只保留 TopK partial layouts(beam) - 每步扩展断点数 M 受控(更强裁剪) - 支持 width unknown / approx mode - 最终选择 pos==N 的最优解;无解走 `overflow-fallback` ## 输入/输出定义 ### 输入 - `tokens: Token[]` - `breakpoints: Breakpoint[]` - `availableWidth: number`(可为常量 profile) - `maxLines: number` - `context: 'WIDGET'` - `measure: { widthMode: 'MEASURE' | 'APPROX' }` - `config: { beamK: number; expandM: number }` ### 输出 - `bestLayout: { breaks: number[]; lines: string[]; wrappedText: string; meta?: { breaks: number[]; scoreTopTerms?: ... } }` ## 验收标准(可验证) - **确定性**:beam 扩展、剪枝、排序规则固定;同输入同输出 - **性能约束生效**: - beamK 默认 5 - 每步扩展 M 默认不超过 12 - **宽度不可用降级一致**: - 进入 approx mode 时 meta 标记 `reason=WIDTH_UNKNOWN` - 搜索仍可运行并输出可解释结果 ## 依赖与关联 - **依赖**:`core-contract`、`width-measurement`、`breakpoint-candidates`、`scoring-tiebreak`、`overflow-fallback` - **被依赖**:`integration`、`golden-tests`