lava-auto-code
lava-auto-code 是一个面向公司 AI coding 流程的 VS Code 扩展原型。它把开发者进入工作流的第一段流程收敛到 VS Code 内:登录门禁、环境预检、Lava 工作区识别与项目初始化。当前版本是扩展基础版,后续 PRD 导入、设计生成、任务拆分、Claude Code prompt 交接、构建验证和发布流程仍是占位能力。
项目定位
公司的目标是在不建设重型 AI Workflow 平台的前提下,把标准化研发流程落到开发者本地 VS Code 工作区。lava-auto-code 作为公司插件入口,负责流程状态、环境检查、项目上下文和后续发布验证;代码生成阶段计划交给 Claude Code 等本地 coding 工具承载。
当前实现聚焦 MVP 基础能力:
- 提供 VS Code Activity Bar 中的 lava-auto-code 侧栏入口。
- 未登录时侧栏展示登录页,登录后侧栏展示身份信息和流程步骤。
- 在 VS Code 编辑器内容区打开详情页签,展示当前步骤的详细操作页面。
- 使用 mock session 模拟企业登录,后续可替换为真实 SSO。
- 在项目操作前检查必需 VS Code 插件和本地工具链。
- 扫描当前工作区第一层目录中的 Lava server/web 项目结构。
- 采集参数并创建最小 Lava 项目结构。
- 将 PRD、设计、任务、验证和发布流程展示为后续占位入口。
技术栈
| 模块 |
技术 |
| VS Code 扩展主进程 |
TypeScript, VS Code Extension API |
| Webview UI |
Vue 3, Vite, TypeScript |
| 单元测试 |
Vitest, Vue Test Utils, jsdom |
| 构建与打包 |
TypeScript, Vite, vsce |
| XML 解析 |
fast-xml-parser |
运行要求:
- Node.js 20 或兼容版本
- npm
- VS Code 1.90.0+
- Git
- Java
- Maven
- Gradle 可选
功能说明
1. 登录门禁
MockAuthProvider 使用 VS Code SecretStorage 保存本地 mock session。用户输入任意非空企业账号和工作空间即可登录,退出登录会清除 session、环境预检结果和已识别项目。
该实现只用于第一版产品状态验证,不具备真实权限控制。真实 SSO 可通过替换 AuthProvider 接口实现。
2. 环境预检
环境预检由 EnvironmentPreflightService 执行,检查结果会决定项目扫描和初始化是否可用。
必需 VS Code 插件:
- lava-auto-code 自身
- Claude Code,支持
anthropic.claude-code 和 claude.claude-code
- Java / Spring Boot 开发支持,支持
vscjava.vscode-java-pack 和 vmware.vscode-spring-boot
本地工具链:
git --version
java -version
mvn -version
gradle -version,可选,缺失时只提示 warning
必需 Skill 会检查当前用户主目录下的 Claude Code 目录:
~/.claude/skills/db-design-guide/SKILL.md
~/.claude/skills/lava-backend-guide/SKILL.md
~/.claude/skills/lava-frontend-guide/SKILL.md
缺少 VS Code 插件时,界面会打开 VS Code 扩展搜索入口;本地命令失败时会展示失败原因并允许重新检查。
3. Lava 工作区扫描
LavaWorkspaceScanner 会从当前 VS Code workspace folder 开始,只检查当前根目录和第一层文件夹。只要某个目录的直接子目录同时包含 *-server 和 *-web,就会识别为一个 Lava 工作区项目。
例如目录结构如下时:
lava-order-admin/
├── lava-order-admin-server/
└── lava-order-admin-web/
扫描结果会显示第一层文件夹名称 lava-order-admin。扫描时会跳过 node_modules、target、build 和 .git 目录。识别成功后会展示:
- 项目名称
- 根路径
- Git remote
- server/web 结构摘要
- 技术栈摘要
- 识别置信度
该扫描面向多微服务工作区,不要求用户在 PRD 导入前选择单个项目。
4. Lava 项目初始化
LavaProjectInitializer 支持采集项目元数据并在当前 workspace root 下创建最小项目结构。
表单字段包括:
- Git 仓库地址
- 项目名称
- Artifact ID
- Group ID
- 基础包名
- Java 版本
- Spring Boot 版本
- 构建工具,Maven 或 Gradle
- 服务端口
- Lava 核心组件
Maven 项目会生成 pom.xml、src/main/java 包目录和 src/main/resources。Gradle 项目会生成 settings.gradle、build.gradle 和相同源码目录。当前只是最小结构,不是完整企业脚手架。
目录结构
.
├── src/
│ ├── auth/ # AuthProvider 抽象和 mock 登录实现
│ ├── environment/ # 环境预检和命令执行
│ ├── lava/ # Lava 项目扫描和初始化
│ ├── shared/ # extension 与 webview 的共享协议类型
│ ├── webview/ # VS Code Webview Provider
│ └── extension.ts # 扩展激活入口
├── webview-ui/
│ ├── src/
│ │ ├── components/ # Vue 工作台组件
│ │ ├── App.vue # Webview 根组件和状态流转
│ │ └── main.ts
│ ├── vite.config.ts
│ └── tsconfig.json
├── prototype/ # 静态原型保留目录
├── openspec/ # OpenSpec 变更说明、设计和任务
├── resources/ # 扩展图标等资源
├── dist/ # 构建输出
├── package.json
├── tsconfig.json
├── tsconfig.extension.json
└── vitest.config.ts
快速开始
安装依赖:
npm install
运行类型检查:
npm run typecheck
运行测试:
npm test
启动 Webview 本地预览:
npm run dev
侧栏预览默认打开在 /,详情页签预览可访问 /?surface=detail。
构建扩展和 Webview:
npm run build
打包 VSIX:
npm run package
打包成功后会生成:
dist/lava-auto-code-0.1.5.vsix
开发命令
| 命令 |
说明 |
npm run dev |
启动 Webview UI 的 Vite 本地预览,使用浏览器 mock 的 VS Code API |
npm run build |
先构建 Webview,再编译扩展主进程 |
npm run build:webview |
使用 Vite 构建 Vue Webview 到 dist/webview |
npm run build:extension |
使用 tsc 编译扩展代码到 dist/extension |
npm run typecheck |
同时检查扩展和 Webview 类型 |
npm run typecheck:extension |
只检查扩展 TypeScript |
npm run typecheck:webview |
使用 vue-tsc 检查 Webview |
npm run lint |
当前等同于 npm run typecheck |
npm test |
运行 Vitest 单元测试 |
npm run package |
构建并使用 vsce 打包 VSIX |
在 VS Code 中调试
- 运行
npm install。
- 运行
npm run build,确保 dist/webview 和 dist/extension 已生成。
- 在 VS Code 中打开项目根目录。
- 启动 Extension Development Host。
- 在新窗口 Activity Bar 中打开 lava-auto-code。
- 登录后在侧栏点击流程步骤或详情按钮,在编辑器内容区打开 lava-auto-code 详情页签。
- 也可以执行命令
lava-auto-code: Open Workbench 打开侧栏并聚焦详情页签。
如果 Webview 中提示 请先运行 npm run build:webview,说明 Webview 静态资源还没有构建。
工作流状态机
当前工作台状态由 extension host 管理,并通过 message protocol 同步到侧栏 Webview 和编辑器详情 WebviewPanel。
login
-> environment
-> project
-> workspace-ready
状态说明:
login:未登录,只展示登录页。
environment:已登录,等待或展示环境预检结果。
project:环境已通过,但还没有已准备 Lava 项目。
workspace-ready:已扫描或创建至少一个 Lava 项目。
受保护操作会在 extension host 中再次校验 session 和环境状态,避免只依赖前端按钮禁用。
登录后 UI 分为两个 surface:
- 侧栏:显示账号、工作空间、当前项目摘要、流程步骤、打开详情页签和退出登录。
- 详情页签:显示环境预检、Lava 项目准备,以及后续流程的详细页面。
侧栏点击流程步骤时会打开或聚焦详情页签,并由 extension host 更新共享 stage。详情页签内运行预检、扫描或创建项目后,侧栏步骤状态会同步更新。
Extension 与 Webview 通信
共享协议位于 src/shared/protocol.ts。
Webview 发往 Extension 的消息包括:
ready
login
logout
openDetailPanel
navigateStage
runPreflight
installDependency
scanWorkspace
createProject
openPrdPlaceholder
Extension 发往 Webview 的消息包括:
测试覆盖
当前测试重点覆盖:
- mock 登录校验、session 保存和退出登录
- 环境预检依赖状态、缺失插件和可选 Gradle warning
- Maven / Gradle Lava 项目扫描
- 无 Lava 项目时返回空列表
- Vue 登录、侧栏导航、详情页渲染和工作台组件基础交互
- 扩展端详情页签单例打开和多 Webview 状态广播
运行:
npm test
打包和安装
生成 VSIX:
npm run package
在 VS Code 中安装:
code --install-extension dist/lava-auto-code-0.1.5.vsix
安装后可以通过 Activity Bar 中的 lava-auto-code 图标进入侧栏工作台,也可以执行命令:
lava-auto-code: Open Workbench
退出登录命令:
lava-auto-code: Logout
当前边界
当前版本不包含以下能力:
- 真实 SSO、用户权限、团队或 workflow 版本接口
- 公司后端或模型网关调用
- PRD 上传和解析
- 概要设计、详细设计和任务拆分生成
- Claude Code prompt 生成或自动发送
- Claude Code 会话状态监听
- 自动构建、测试、打包和发布
- 完整 Lava 企业脚手架模板
- 本地 workflow / skill pack 缓存、签名和加密
这些内容已在 2026-06-01-ai-coding-workbench-requirements.md 和 openspec/changes/add-auto-code-plugin-foundation/ 中作为后续规划方向保留。
后续演进方向
- 将
MockAuthProvider 替换为真实 SSO provider。
- 接入公司后端,获取用户、项目、团队、workflow pack 和权限。
- 实现 PRD 导入、hash 记录和任务上下文创建。
- 通过公司模型网关生成设计文档、任务拆分和一次性 coding prompt。
- 调研 Claude Code VS Code 插件可用的 URI 或命令入口,支持 prompt 交接。
- 在用户标记编码完成后执行 git diff、构建和测试命令。
- 将验证结果、diff 摘要和发布状态回写流程数据。
相关文档
2026-06-01-ai-coding-workbench-requirements.md:AI coding workbench 的完整需求框架。
openspec/changes/add-auto-code-plugin-foundation/proposal.md:当前基础版本的变更提案。
openspec/changes/add-auto-code-plugin-foundation/design.md:当前基础版本的架构设计和取舍。
openspec/changes/add-auto-code-plugin-foundation/tasks.md:当前基础版本的任务清单。