ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Plate 的 Slate AR Perf:Slate v2 性能优化车道、基准目标注册表与最快安全停止规则

Plate 的 Slate AR Perf:Slate v2 性能优化车道、基准目标注册表与最快安全停止规则 Plate 的 Slate AR PerfSlate v2 性能优化车道、基准目标注册表与最快安全停止规则【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate在 Plate 仓库中slate-ar-perf是为 Slate v2 性能工作设计的 Agent 技能skill它把“再试一个优化”从拍脑袋的架构讨论变成一条可测量的循环每个优化动作packet都要跑基准命令、打印METRIC namevalue指标行并通过原生编辑器行为正确性检查后才能被保留。读完本文你将理解这条性能车道与slate-ar/Codex Autoresearch 的分层关系、目标注册表benchmarks/targets/slate-v2.json的完整契约结构、分页/虚拟化与大文档全选两套默认性能契约以及“最快安全fastest-safe”的停止条件与正确性闸门。一、车道定位在测量循环之上叠加性能策略.agents/skills/slate-ar-perf/SKILL.md 的 frontmatter 将其描述为“Slate v2 performance lane for Codex Autoresearch. Delegates generic loop mechanics to slate-ar/codex-autoresearch and adds target registry, fastest-safe stop rules, exactness gates, and pagination/virtualization defaults.”这句话精确刻画了三层层级关系层级组件职责通用状态机codex-autoresearch:codex-autoresearch包packet生命周期、日志、dashboard、深度研究、质量缺口、漂移、finalize、CLI 机制Slate 包装层slate-arSlate v2 专属默认值目标 cwd.tmp/slate-v2、会话文件.tmp/slate-v2/autoresearch.*、dashboard/status/finalization 入口、正确性路由性能车道slate-ar-perf性能目标策略、基准注册表、精确性闸门exactness gate、最快安全停止规则、分页/虚拟化默认契约SKILL.md 明确要求不要在这层重复通用的 packet/dashboard/finalization 机制Do not duplicate generic packet/dashboard/finalization mechanics here. Loadslate-arfor Slate wrapper behavior andcodex-autoresearch:codex-autoresearchfor the underlying Autoresearch state machine.从源码结构看这条车道还有一个日常入口 slate-ar-fast它负责“挑选或创建最热的性能目标然后运行slate-ar-perf”并内置了与slate-ar-perf一致的无回归规则No-Regression Rule和停止规则Stop Rules可视为slate-ar-perf面向“让我把它变快”这类模糊指令的快捷封装。二、适用边界何时走这条车道何时绕行SKILL.md 用两节清单划定了路由边界这是整个技能体系里避免“性能车道吃掉正确性修复”的关键设计。适用Use When用户显式调用slate-ar-perf用户说出fast、fastest、max perf、pagination、virtualization、benchmark等关键词或要求让某个 Slate v2 表面变快分页、虚拟化、超大文档、表格、渲染、布局、选区、打字、粘贴、滚动或挂载性能需要迭代优化存在或应该存在一个能打印METRIC namevalue的基准命令下一步动作取决于测量结果而不只是架构判断。不适用Do Not Use When场景应改用原因问题本质是正确性 bug需要直接修复slate-patch性能循环会掩盖缺失的 oracle目标过于模糊无法推断基准与正确性契约slate-ar-recipe目标发现或slate-plan架构框架没有可测量的决策问题产出是供用户评审的架构/API 提案slate-plan这是提案而非优化循环目标是 Plate 产品代码而非裸 Slate v2—该车道只覆盖 raw Slate v2三、自然模式与“最快安全”停止规则slate-ar-perf定义了三种自然模式fast/fastest/max perf/make it fastest最快安全模式挑选或恢复匹配的目标持续运行 packet直到命中以下任一停止条件达到目标 parity与基线/遗留实现打平或反超平台期plateau正确性阻塞架构阻塞剩余收益需要 API/运行时重构超出本车道不安全的 finalize / 脏工作树边界用户中断。pagination/virtualization除非用户给出更精确的目标否则直接套用本文第五节的分页默认契约。continue/resume/status/dashboard/finalize委托给slate-ar的操作员模式随后对下一个 packet 应用性能策略。其中 plateau 有精确定义Plateau means three consecutive valid correctness-green packets improve the primary metric by less than 5% and no safe P0/P1 profiler hypothesis remains.Do not stop at the first win.即连续 3 个有效且正确性全绿的 packet 对主指标的提升都小于 5%且不再有安全的 P0/P1 级 profiler 假设可验证。这个定义同时被 slate-ar-fast 的 Stop Rules 继承其停止条件还包括“目标阈值达成且 checks 全绿”“与 legacy 的 parity 达成”“下一个安全收益需要slate-plan”。四、目标注册表slate-v2.json 是迁移脊柱4.1 注册表的地位与默认路径SKILL.md 指定 benchmarks/targets/slate-v2.json 为性能决策的“migration spine”迁移脊柱它是基准问题、队列cohort、命令、指标、正确性检查、产物artifact与佐证文档的唯一事实来源。默认操作路径分 6 步# 1. 列出全部目标 pnpm bench:targets:list # 2. 检查注册表健康 pnpm bench:targets:check # 3. 生成或检查目标报告 pnpm bench:targets:report # 4. 对目标做只读 dry-run pnpm bench:targets:dry-run -- target-id # 5. 仅在有真实需要时初始化 .tmp/slate-v2/autoresearch.* 会话 node tooling/scripts/bench-targets.mjs autoresearch-init target-id # 6. 交给 slate-ar / Codex Autoresearch 做 setup 检查、基准 lint、 # checks 检查、packets、stale-run 检测、ASI、dashboard、keep/discard 决策与最终证据这些脚本在 package.json 中对应bench:targets:*一族最终都落到 tooling/scripts/bench-targets.mjs约 566 行。从源码结构看listTargets()L196 起按 id 排序后逐行打印id、family、primary metric、command四列这正是pnpm bench:targets:list的输出形态validateRegistry()L143-L194实现了注册表健康检查version必须为 1、targets非空、每个目标必须有id/question/owner/family/cwd/command、id 不得重复、cwd与artifacts[].path必须是仓库相对路径、metrics.primary必填、metrics.direction只能是lower/higher、metrics.printsMetric必须是布尔值、correctness.command必填、artifacts非空——pnpm bench:targets:check就是在跑这套校验脚本还内置了 Evidence Kitbenchmarks/editor/research/benchmark-registry.json的导入逻辑importEvidenceKitL104-L121把遗留证据库的 artifact 行机械地转换成目标注册表条目并打上migration.importedFrom溯源标记。4.2 目标契约的字段结构benchmarks/targets/README.md 定义了每个目标的完整契约字段id面向命令的稳定 idquestion该基准回答的决策问题owner运行时/包责任人family与kind报告分组如react-large-document/browser-tracecwd与command仓库相对的运行位置与完整命令metrics主指标、方向lower/higher、单位以及输出是否打印METRIC namevalueprintsMetriccorrectness防止“提速”破坏编辑器行为的命令artifacts目标产生的结果文件docs佐证证据链接thresholdspromotion/stretch/plateau 阈值migrationEvidence Kit 退役期间的临时溯源字段。当前注册表中共有 27 个目标见 benchmarks/targets/reports/slate-v2.md 的 SummaryTargets: 27Required artifacts 25Missing required artifacts 0覆盖react-large-document、react-pagination、react-locality、core-current、core-compare、history、clipboard、collaboration、issue-replay等 family。4.3 两个真实目标条目示例分页虚拟化与本文第五节契约直接对应——react-pagination-virtualized-char-burst{ id: react-pagination-virtualized-char-burst, question: Does rows800 virtualized pagination keep char-burst typing near staged table performance while DOM and page mounts stay bounded?, owner: slate-v2, family: react-pagination, kind: browser-trace, cwd: .tmp/slate-v2, command: bun run bench:react:pagination-virtualized-char-burst:local, metrics: { primary: pagination_virtualized_vs_table_ratio, direction: lower, unit: ratio, printsMetric: true, upgrade: Primary metric compares rows800 virtualized burst latency against the staged 500-row table burst in the same benchmark run. }, correctness: { command: PLAYWRIGHT_RETRIES0 PLAYWRIGHT_WORKERS1 bun playwright test playwright/integration/examples/pagination.test.ts --projectchromium -g \keeps rows800 virtualized pagination in the staged-class perf envelope|...\, policy: Promotion requires virtualized burst perf plus native pagination selection/editing correctness. }, artifacts: [ { path: .tmp/slate-v2/tmp/slate-pagination-virtualized-char-burst-benchmark.json, required: true } ] }这个条目展示了 SKILL.md 强调的两点原则在真实数据中的落地主指标命名了真实表面pagination_virtualized_vs_table_ratio而非泛化的benchmark_seconds且 correctness 命令直指 Playwright 集成测试里具体的原生行为用例。超大文档 legacy 对比——react-huge-document-legacy-compare的完整命令展示了环境变量的典型形态REACT_HUGE_COMPARE_LEGACY_REPO../../../slate \ REACT_HUGE_COMPARE_DISPOSE_DELAY_MS0 \ REACT_HUGE_COMPARE_SPLIT_SELECTION1 \ REACT_HUGE_COMPARE_ISOLATE_SURFACES1 \ REACT_HUGE_COMPARE_SURFACESv2DefaultRenderAuto,v2DomPresent \ REACT_HUGE_COMPARE_BLOCKS5000 \ REACT_HUGE_COMPARE_ITERATIONS5 \ REACT_HUGE_COMPARE_TYPE_OPS10 \ bun run bench:react:huge-document:legacy-compare:local其主指标为react_huge_doc_legacy_compare_worst_p95_ratio5,000 块下 v2 默认渲染/DOM-present 两条产品 lane 相对 legacy chunking-on 的最差 p95 比值promotion 阈值是1.5。注意LEGACY_REPO../../../slate的写法——这正是 SKILL.md 所说“声称 legacy parity 时对比../slate/../../../slate”的实例。此外react-huge-document-virtualized-type-to-paint目标给出了 SKILL.md 契约之外的量化阈值promotion 为react_huge_doc_type_to_paint_p95_ms 75stretch 为 50react-huge-document-full的聚合目标则要求react_huge_doc_full_max_budget_ratio 1且failure_count 0stretch 目标是 0.67。五、缺失目标策略一个具体 id 就是足够指令SKILL.md 对“目标不在注册表里”的情况给出了明确政策核心立场是不要强迫用户写“如果缺失就创建目标”这类长提示词。当target-id不在slate-v2.json中、且名称具体到可以推断出性能表面时应在同一趟工作里直接创建一等目标契约。被认定为“足够具体”的名称示例react-huge-document-select-allcore-observation-comparepagination-virtualized-fast-scrollhistory-fragment-undo-redo创建目标时有一组硬性规则先加注册表条目再初始化 Autoresearch 会话尽量复用或扩展最近的现有基准脚本只有在没有任何现有命令能诚实暴露该指标时才创建小型基准 owner基准从一开始就打印METRIC行主指标必须命名真实表面禁止泛化的benchmark_seconds若声称 legacy parity则对比../slate/../../../slate.tmp/slate-v2相对仓库根的上三级添加覆盖所涉原生编辑器行为的 correctness 命令初始化 AR 会话前先 dry-run 并跑pnpm bench:targets:check。若目标名含糊正确动作是停下来推荐一两个具体的 target id——而不是为缺失的基准目标再创建一个slate-ar-*包装技能slate-ar-perf独占性能目标的 bootstrap 职责。文档同时明确了迁移期的职责切分旧的 Slate v2bench:*package scripts 在迁移期间继续拥有“工作负载执行”而干净的分工是——目标注册表拥有决策契约基准脚本拥有运行时工作负载Autoresearch 拥有活动优化状态目标报告/历史拥有历史状态。policy块在 slate-v2.json 开头也有对应声明“Benchmark implementation lives with the runtime/package code it measures”等四条。六、精确性闸门性能收益不能以正确性受损为代价SKILL.md 的 Exactness Gate 一句话立论Performance wins do not count when the editor is less correct.在执行分页、虚拟化、隐藏 DOM、模型支撑的选区model-backed selection或分阶段渲染staged-render优化之前必须识别出确切的正确性 oracle 或浏览器 proof 命令若 oracle 不存在先用slate-patch或tdd补上在把某类原生行为用作基准队列之前先将其分类为“保留preserved”“有意降级intentionally degraded”或“范围外out of scope”冷路径估算只能当脚手架提示用不能当作权威的布局或选区真相若一个 packet 提速了但破坏了选区、输入顺序、IME、复制、粘贴、撤销、焦点或后续输入则记checks_failed或discard永不记keep。这一规则与 slate-ar 的全局原则一致“Slate correctness beats local metric movement.” 从注册表数据也能验证该闸门的落地方式多数目标以bun check快速 Slate v2 检查套件作为兜底 correctness 命令而性能关键目标则升级到针对性的 Playwright 用例例如react-runtime-node-fanout的 correctness 命令直接锁定packages/slate-react下test/provider-hooks-contract.tsx中 “fan out / full-document replacement” 两组用例并要求slate_react_runtime_node_fanout_count0才允许 promotion。七、分页默认契约Pagination Default Contract分页或页级虚拟化工作时除非用户给出更精确的目标一律从以下契约起步。目标路由http://localhost:3100/examples/pagination?page_layoutsinglestrategyvirtualizedrows800必选队列cohorts队列参数策略smallrows8staged 与 virtualizedtable-largerows500staged 与 virtualizedstressrows800或rows1000virtualizedtable-span表格跨至少 10 页—主指标越小越好快速打字突发fast typing burst的 p95或总交互延迟该路由的初始可交互时间initial interactive time从 staged 切换到 virtualized 的策略切换延迟快速滚动恢复时间fast scroll recovery time。次级指标丢失或被重排字符数DOM 节点数已挂载页数mounted page count页面 overscan 数可得时的 React commit 数或 render 数低成本可得时的堆heap估算。正确性检查全部为原生浏览器行为快速打字突发期间无跳过/重排字符插入换行insert break后后续输入的字符保持在光标之后点击左边距选中行首点击右边距选中行尾双击选中一个单词拖拽选区在顶部/底部附近能自动滚动跨可见页面内容的文本选区可用原生复制/粘贴/全选行为要么保留、要么被显式分类。基准输出必须打印METRIC行例如METRIC typing_p95_ms42 METRIC dropped_chars0 METRIC dom_nodes1840注册表中的react-pagination-virtualized-char-burst目标见 4.3 节即该契约的当前实现形态主指标pagination_virtualized_vs_table_ratio在同一次运行内对比rows800虚拟化突发延迟与 staged 500 行表格突发correctness 侧绑定 4 条 Playwright 用例staged 级性能包络、换行后模型光标处文本仍为 fast staged、原生双击选中投影分页单词、虚拟化选区落在折行末端。八、超大文档全选默认契约Huge Document Select-All对react-huge-document-select-all目标SKILL.md 规定创建或使用带如下契约的目标。必选队列5k 块对比 legacy SlateSlate v2 主超大文档 React 表面若分阶段/DOM-present 或虚拟化表面是产品路径则纳入原生键盘全选ModA而不只是程序化模型选区。主指标越小越好指标含义react_huge_doc_select_all_p95_ms全选操作的 p95 延迟react_huge_doc_select_all_worst_p95_ratio相对 legacy 的最差 p95 比值react_huge_doc_select_all_failure_count失败次数次级指标全选后的 DOM 节点数低成本可得时的 React commit 数可单独观测时的选区导出/导入耗时低成本可得时的整篇复制延迟。正确性检查ModA选中完整编辑文档全选后打字只替换一次所选内容undo 能一致地恢复前一份文档与选区复制返回所选文档的完整纯文本在分阶段、部分 DOM 或虚拟化渲染下大范围选区保持有效不得依赖隐藏的 debounce 或延迟式正确性。晋级promotion目标第一关worst p95 ratio 1.5且失败数为0最终目标worst p95 ratio 1.0或连续 3 个正确性全绿 packet 收益小于 5% 且无剩余安全 P0/P1 profiler 假设时进入 plateau。注意这套阈值与注册表中react-huge-document-legacy-compare的promotion: react_huge_doc_legacy_compare_worst_p95_ratio1.5相互呼应说明技能文档中的“默认契约”与注册表条目中的实际阈值是同一套数字的两个投影。九、Handoff性能循环的交付报告slate-ar-perf结束时Handoff 节要求报告以下内容这与 slate-ar 的 handoff 结构保持同一词汇表基准命令与主指标baseline、latest 与 best 三个数值kept / discarded / crashed / checks-failed 的 packet 计数使用的正确性检查被保留工作所改动的文件dashboard URL若已起服务下一个推荐 packet 或阻塞点。其中 packet 的四态kept/discarded/crashed/checks-failed正是 Exactness Gate 的可执行化正确性失败不会污染“best”序列而是单独计数并路由给slate-patch。十、小结决策契约、工作负载、活动状态与历史状态的四方分离slate-ar-perf的设计可以压缩为四条不变量决策可测量每个性能问题先落到注册表里一条带question、command、metrics.primary、correctness.command的目标记录pnpm bench:targets:check保证结构合法指标可解析基准输出必须打印METRIC namevalueprintsMetric: true的目标已在注册表中标注其余目标以upgrade字段标记“下次触碰时改用原生 METRIC 行”的升级方向正确性先于速度keep 判定必须同时满足“主指标改善 原生行为 checks 全绿”否则记checks_failed/discard停止有客观标准目标 parity、≤1.5→≤1.0 的晋级阈值、5%/3 连包的 plateau 定义以及架构阻塞时的slate-plan移交。对于希望在自己的编辑器仓库中复刻这一套体系的团队可直接参考 benchmarks/targets/README.md 的目标契约说明与 tooling/scripts/bench-targets.mjs 中list/check/dry-run/report/autoresearch-init五个子命令的实现以及 benchmarks/targets/reports/slate-v2.md 展示的报告形态由pnpm bench:targets:report从注册表与 artifact 汇总生成不执行昂贵基准。【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表