Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

quirkybird/Altpatch

Repository files navigation

AltPatch

AltPatch 是一款面向前端研发流程的智能改动工具:通过 Alt + Click 直接定位页面元素对应源码,并生成可执行 patch,缩短从需求到代码落地的路径。

当前阶段以 Vite 插件 为核心形态;后续将扩展为 浏览器插件,覆盖更广的在线页面调试与协作场景。

项目定位

  • 当前主线:Vite 插件 + 本地运行时面板 + OpenAI Compatible LLM
  • 核心目标:把"定位元素 -> 生成改动 -> 应用文件 -> 回滚历史"串成一个连续工作流。
  • 未来方向:在保留本地工程上下文能力的基础上,扩展浏览器插件形态,支持跨站点、跨环境的交互式改动建议。

核心能力

  • Alt + Click 页面元素后自动解析源码位置(文件/行/列)。
  • 内置运行时面板(Shadow DOM 挂载),支持 Quick TextAI Assist 两种改动模式。
  • 基于 OpenAI Compatible 接口生成结构化 patch,并支持流式输出。
  • 支持单文件和多文件改动(自动或指定目标文件)。
  • 支持应用、撤销、历史恢复、跳转 VS Code。
  • 提供独立 API 路由,支持嵌入 Vite Dev Server 或独立 Express 服务。

仓库结构

altpatch/
├─ apps/
│ ├─ demo-vite-react/ # 演示应用(Vite + React)
│ └─ server/ # 可选独立服务端(Express + WS)
├─ packages/
│ ├─ vite-plugin-altpatch/ # Vite 插件入口(主产品形态)
│ ├─ altpatch-ui-runtime/ # 运行时面板与交互逻辑
│ ├─ altpatch-api/ # API 路由注册与请求处理
│ └─ server-core/ # LLM、diff、文件安全访问等核心能力
└─ turbo.json # Turborepo 任务编排

环境要求

  • Node.js 18+
  • pnpm 10+

快速开始(Monorepo)

pnpm install
pnpm --filter @apps/demo-vite-react dev

启动后访问 Vite 开发地址,在页面中按 Alt + Click 即可打开 AltPatch 面板并定位元素。

在 Vite 项目中接入

当前仓库内示例(apps/demo-vite-react/vite.config.ts)使用方式如下:

import { defineConfig, loadEnv } from 'vite'
import react from '@vitejs/plugin-react'
import { altpatch } from '@quirkybird/vite-plugin-altpatch'
export default defineConfig(({ mode }) => {
 const env = loadEnv(mode, process.cwd(), '')
 return {
 plugins: [
 react(),
 altpatch({
 projectRoot: process.cwd(),
 apiPrefix: '/api',
 locator: {
 env: 'development',
 dataAttribute: 'path'
 },
 llm: {
 apiKey: env.ALTPATCH_LLM_API_KEY,
 baseUrl: env.ALTPATCH_LLM_BASE_URL,
 model: env.ALTPATCH_LLM_MODEL,
 timeoutMs: Number(env.ALTPATCH_LLM_TIMEOUT_MS ?? 60000),
 maxTokens: Number(env.ALTPATCH_LLM_MAX_TOKENS ?? 16384)
 }
 })
 ]
 }
})

插件配置项

altpatch(options) 支持以下参数:

  • projectRoot?: string:项目根目录,用于文件安全读写范围。
  • apiPrefix?: string:API 前缀,默认 /api
  • enableInDevOnly?: boolean:默认仅在 serve 生效;设为 false 可在 build 场景也启用。
  • locator?: { enabled?: boolean; env?: string; dataAttribute?: string }
  • llm?: { apiKey?: string; baseUrl?: string; model?: string; timeoutMs?: number; maxTokens?: number }

说明:mockModify 目前在类型中保留,但未在主流程启用。

LLM 配置

AltPatch 使用 OpenAI Compatible 协议,核心环境变量如下:

  • ALTPATCH_LLM_API_KEY(必填)
  • ALTPATCH_LLM_BASE_URL(默认 https://api.openai.com/v1)
  • ALTPATCH_LLM_MODEL(默认 gpt-4o-mini)
  • ALTPATCH_LLM_TIMEOUT_MS(默认 30000)
  • ALTPATCH_LLM_MAX_TOKENS(可选)

建议在本地使用 .env.local,并确保该文件不会被提交到公开仓库。

可选:独立服务端模式

除 Vite 插件内置 API 外,也可以单独启动服务端:

pnpm --filter @apps/server dev

默认地址:

  • http://127.0.0.1:7331/health
  • ws://127.0.0.1:7331/ws

可用环境变量:

  • ALTPATCH_PORT:服务端口(默认 7331)
  • ALTPATCH_ROOT:项目根目录(默认 INIT_CWDprocess.cwd())

API 概览

以下路由由 @packages/altpatch-api 提供,前缀默认 /api:

  • GET /health
  • GET /api/llm-config
  • POST /api/read-file
  • POST /api/modify
  • POST /api/modify-stream(SSE)
  • POST /api/modify-multi
  • POST /api/diff
  • POST /api/write-file
  • POST /api/write-files
  • POST /api/open-in-editor

常用开发命令

根目录

pnpm dev
pnpm build
pnpm typecheck
pnpm test
pnpm clean

子项目

pnpm --filter @apps/demo-vite-react dev
pnpm --filter @apps/demo-webpack-react dev
pnpm --filter @apps/server dev
pnpm --filter @quirkybird/vite-plugin-altpatch typecheck

当前边界

  • 目前主流程围绕 Vite 开发态设计,定位与交互能力在本地开发体验最完整。
  • 代码插桩目标主要是 jsx/tsx 文件。
  • LLM 改动质量依赖提示词质量、上下文范围与模型能力。

路线图(Roadmap)

Phase 1(进行中)

  • Vite 插件产品化
  • 运行时面板交互和多文件 patch 体验完善
  • API 稳定性与错误可观测性增强

Phase 2(规划中)

  • 浏览器插件形态(Browser Extension)
  • 面向线上页面的元素定位与上下文桥接
  • 与本地工程、CI、代码托管平台的联动能力

常见问题

1) 按 Alt + Click 没有反应

  • 确认在开发服务器(vite dev)中运行。
  • 确认 altpatch() 已加入 vite.config.ts
  • 确认 locator.enabled 未被关闭。

2) 生成 patch 报配置错误

  • 检查 ALTPATCH_LLM_API_KEY 是否存在。
  • 检查 ALTPATCH_LLM_BASE_URL 是否为有效 URL。
  • 检查模型名是否可用、超时和 token 配置是否合理。

3) 文件写入失败

  • 确认 projectRoot 指向正确工程根目录。
  • 确认目标文件位于允许读写范围内。

贡献

欢迎提交 Issue / PR,建议附上:

  • 复现步骤
  • 期望行为与实际行为
  • 关键日志(脱敏后)
  • 运行环境(Node、pnpm、系统)

License

待补充。

About

AltPatch 是一款让开发者通过 Alt + Click 直接定位页面元素并 生成可执行代码补丁的智能前端改动工具。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /