Skip to content

rfc: Next.js and Nuxt plugins for element-to-source mapping #2

Description

@coconilu

Context

目前 PickFix 的元素点选能力主要基于 HTML 标签、class、id、selector、rect、htmlHint 等运行时 DOM 信息。

这对简单 UI 修改已经有帮助,但在真实项目中,仅靠 HTML 信息并不总是足够。为了让 AI agent 更精准地修改代码,PickFix 需要知道被点选元素对应的源码位置,例如组件文件、行列信息、组件名等。

Next.js 和 Nuxt 是当前项目已有示例支持的两个框架,因此可以优先探索对应插件能力。

Goals and non-goals

Goals:

  • 提供 Next.js 插件,增强元素到源码文件的映射能力。
  • 提供 Nuxt 插件,增强元素到源码文件的映射能力。
  • 在点选元素时,为 agent 提供更精准上下文:
    • source file
    • line / column
    • component name
    • framework metadata
  • 保持 PickFix 对目标项目尽量低侵入。

Non-goals:

  • 本 Issue 不要求一次性支持所有框架。
  • 本 Issue 不要求完美覆盖所有构建模式。
  • 本 Issue 不直接实现 Vite / Astro 插件。

Proposed design

初步方向:

  1. 为 Next.js 提供 PickFix 插件或开发期增强能力。
  2. 为 Nuxt 提供 PickFix module/plugin。
  3. 在开发模式下给 DOM 注入额外 metadata,例如:
    • data-pf-source-file
    • data-pf-source-line
    • data-pf-component
  4. bridge 在点选元素时读取这些 metadata。
  5. web UI 和 agent prompt 使用这些源码信息生成更精准上下文。

Trade-offs and risks

  • 不同框架、构建工具、React/Vue 编译链路差异较大。
  • Source mapping 可能受开发模式、生产构建、minify、HMR 影响。
  • 插件会增加目标项目集成成本。
  • 需要避免泄露敏感源码路径到不可信环境。

Affected packages

  • packages/bridge
  • packages/cli
  • apps/web
  • examples
  • docs
  • not sure

Rollout plan

  1. 先调研 Next.js dev overlay / source metadata 可行性。
  2. 设计统一 metadata schema。
  3. 实现 Next.js prototype。
  4. 实现 Nuxt prototype。
  5. 更新 bridge element metadata。
  6. 更新 agent prompt,让源码位置进入上下文。
  7. 增加 examples 和文档。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions