- 版本号 1.2.0 -> 1.3.0;CHANGELOG 新增 1.3.0 条目(修复 6 项 + 清理 3 项) - addCustomRule 空壳命令改为打开设置面板(抽取 openSetupPanel 复用) - deactivate 清理 analysisTimers pending 定时器 + 显式 dispose markers - PMD execPmd 去掉 stdout.length>0 兜底,非零退出按 stderr 报错 - SQLFluff 项目配置检测全量支持 setup.cfg/tox.ini/pep8.ini/pyproject.toml(内容感知) - 删除 orchestrator 未使用的 getAdapterMap/getAdaptersByIds,补充单语言单 linter 设计注释 - 删除 pmd.ts 未使用的 jarPathChecked 死字段 - merger 翻译配对改为按 originalRuleId 匹配,新增 2 个测试 - runStaticAndApply 包 try-catch,消除未处理 Promise 拒绝 - AGENTS.md 日志规则新增打包排除项;_AI_USAGE_LOG.md 追加记录
3.7 KiB
3.7 KiB
开发范式:Stage-Driven Agent Development (SDAD)
阶段流程(必须严格遵守,不可跳过或合并)
① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证
强制规则
- 阶段顺序不可调换,每个阶段完成后才进入下一阶段
- Stage ④ 人类审批是必经门,未通过不得进入编码
- 编码过程中发现方案有遗漏/矛盾,先暂停提问,不自作主张
日志规则(自动执行)
每次创建或修改代码文件后,在项目根目录的 _AI_USAGE_LOG.md 中追加一条记录,必须包含以下字段:
- 日期时间:文件修改时间(用
Get-Item LastWriteTime或Get-Date获取),不可乱填或估算 - 范式步骤:当前已完成的阶段累积链(如
① 用户提出 → ② 需求澄清),按实际执行顺序 - 修改摘要:简要描述改了什么
- 中间产物:AI 交互过程中被淘汰的草稿或过程稿,包括但不限于:先给了伪代码后改正式实现、输出了多个方案选了其中一个、调试时生成的废弃代码版本、类型试错(如先用
typeof import()后改interface)、先改文件 A 后发现不够又改了文件 B - 涉及文件:文件路径列表
- 使用模型:当前使用的模型名
排除项:打包工程(生产打包 VSIX,npm run package-prod / vsce package)不需要记录
阶段执行指引
- Stage ① @用户提出:load skill stage-1-propose
- Stage ② @需求澄清:load skill stage-2-clarify
- Stage ③ @方案设计:load skill stage-3-design
- Stage ④ @人类审批:load skill stage-4-approve
- Stage ⑤ @编码实现:load skill stage-5-implement
- Stage ⑥ @审查验证:load skill stage-6-verify
项目:vscode-code-reviewer
VSCode 代码审查与规范检查一体化插件。
开发者命令
| 命令 | 说明 |
|---|---|
npm run compile |
TypeScript 编译(tsc -p ./) |
npm run watch |
tsc watch 模式 |
npm run lint |
ESLint 检查 src/ |
npm test |
编译 → lint → 运行测试 |
| F5 (VSCode) | 启动 Extension Dev Host |
测试运行器:@vscode/test-cli,配置在 .vscode-test.mjs,测试文件匹配 out/test/**/*.test.js。
验证顺序:lint → compile → test
架构
三层架构,见 docs/superpowers/specs/2026-07-10-code-reviewer-design.md:
UI 层 — TreeView 面板 / Inline Diagnostic / Code Action
核心层 — Linter 管理器 + AI 审查引擎(均实现 Analyzer 接口)
基础层 — 配置管理 / 规则管理 / 报告导出
所有 linter 和 AI 审查器统一实现 Analyzer 接口(定义在 src/analyzers/analyzer.ts)。
文件结构
src/
├── extension.ts # 入口:activate/deactivate
├── activation/ # 注册命令、视图、CodeAction
├── analyzers/ # Analyzer 接口 + 各 linter/AI 实现
├── manager/linterManager.ts # Linter 管理器
├── views/ # TreeView 提供者
├── services/ # AI API、配置服务
├── utils/ # 工具函数
└── types.ts # 公共类型
命令 ID 前缀统一为 codeReviewer.(如 codeReviewer.analyzeFile)。
代码规范
- 变量/函数:camelCase,类:PascalCase
- 导入风格:ESM(import/export)
- 不加注释
- 异步用 async/await
- ESLint 配置:
eslint.config.mjs(typescript-eslint parser)
设计文档
设计 spec 存放路径:docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
编码须严格遵循已批准的 spec,不得自作主张。