Files
2026Technology-Competition/_AI_USAGE_LOG.md
T
范智鹏 a734cdf009 refactor: 品牌重命名 + maxTokens 支持 + 设置面板简化
- CodeGuard → Code Purifier / 净码特工(displayName、命令、配置标题)
- 新增 ai.maxTokens 配置项,所有 Provider 及 fixer 传入 maxTokens
- AI 引擎增强:repairJsonEscapes + JSON 解析 fallback + 详细错误信息
- 设置面板规则管理改为文件级(list/delete .yaml),addRule 改为 AI 从 Markdown 生成 YAML
- yaml-parser 简化:移除 config.yaml 的 enable/disable 过滤逻辑
- 审查报告面板:errorBanner 优先显示具体错误、lint 诊断显示 suggestion、移除 translatedDiagnostics 独立渲染
- merger 中 translatedDiagnostics 覆盖原始 lint 诊断 message/suggestion
- HTML linter 配置项、测试用例重写、typescript-eslint 移入 dependencies
2026-07-20 20:24:40 +08:00

89 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI Usage Log
| 日期时间 | 范式步骤 | 修改摘要 | 中间产物 | 涉及文件 | 使用模型 |
|---------|---------|---------|---------|---------|---------|
| 2026-07-10 18:10 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 编写代码审查插件设计文档(design spec | design spec | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 18:35 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 重构 AGENTS.md,补充项目开发命令、架构、代码规范等工程上下文 | 无 | AGENTS.md | deepseek-v4-flash |
| 2026-07-10 18:50 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增适配器层设计(6 小节),更新架构为四层,简化编排器,同步文件结构 | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 19:05 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增自定义规则系统、设计文档 §12 章节、模板文件 | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md .code-review/rules/security-rules.yaml .code-review/rules/coding-conventions.yaml .code-review/config.yaml | deepseek-v4-flash |
| 2026-07-10 19:18 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 完善 AI 审查引擎设计(Provider 策略模式、两并行请求、Prompt 模板、错误处理),同步命令/配置 | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 19:31 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增自动修复模块设计(动态上下文、两阶段匹配、批量预览、快照撤销) | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 19:39 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增审查面板设计(Tab 布局、交互设计 UI、消息通信 PanelMessage | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 22:42 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增审查面板 HTML 预览 + UI 说明文档 | 无 | docs/superpowers/specs/review-panel-preview.html docs/superpowers/specs/review-panel-ui.md | deepseek-v4-flash |
| 2026-07-10 ~22:45 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增 §13 设置面板节(设计决策、配置模块、面板布局、规则文件管理) | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 22:51 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 新增设置面板 HTML 预览 + UI 说明文档 | 无 | docs/superpowers/specs/setup-panel-preview.html docs/superpowers/specs/setup-panel-ui.md | deepseek-v4-flash |
| 2026-07-10 23:03 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 重建设置面板 UI(快速开始三步骤、引擎标签、卡片表单、紫色主按钮、按钮状态机),更新 §13 设计文档及 HTML/UI 说明 | 无 | docs/superpowers/specs/setup-panel-preview.html docs/superpowers/specs/setup-panel-ui.md docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 23:04 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 设置面板新增输出语言下拉框(中文(简体)/ English / 日本語),同步更新 HTML/UI 文档/设计文档 | 无 | docs/superpowers/specs/setup-panel-preview.html docs/superpowers/specs/setup-panel-ui.md docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 23:07 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 补充遗漏内容:配置项新增 ai.provider/ai.model/ai.endpoint 和 7 种语言的 linters enum,补全菜单集成和视图容器 JSON;新增结果合并器 MergedReport 接口和 Markdown 导出模板;新增 esbuild 构建脚本和开发流程;新增测试文件结构和四类测试场景;新增运行时/开发依赖清单和外部工具版本;新增 31 个源文件清单和 8 个核心函数签名 | 无 | docs/superpowers/specs/2026-07-10-code-reviewer-design.md | deepseek-v4-flash |
| 2026-07-10 23:30 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 拆分为6 Phase 分步实施计划 | implementation plan | docs/superpowers/specs/2026-07-10-implementation-plan.md | deepseek-v4-pro |
| 2026-07-10 23:33 | ③ 方案设计 | 将实施计划拆分为 20 个独立步骤文件 | step-by-step files | docs/superpowers/specs/implementation-steps/*.md | deepseek-v4-pro |
| 2026-07-13 18:30 | ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Phase 1 基础层:公共类型定义 + 配置管理模块(5 个配置文件) | 按 docs/superpowers/specs/implementation-steps/01-phase1-base-layer.md 直接编码,无中间产物 | src/types.ts src/config/ai.ts src/config/linter.ts src/config/fixer.ts src/config/secret.ts src/config/index.ts | deepseek-v4-flash |
| 2026-07-13 18:40 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 2.1 适配器接口:adapter.ts re-export | 按 docs/superpowers/specs/implementation-steps/02-phase2.1-adapter-interface.md 直接编码,无中间产物 | src/adapters/adapter.ts | deepseek-v4-flash |
| 2026-07-13 18:45 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 2.2 ESLint 适配器:ESLintAdapter + eslint 移入 dependencies | 按 docs/superpowers/specs/implementation-steps/03-phase2.2-eslint-adapter.md 直接编码,无中间产物 | src/adapters/eslint.ts package.json | deepseek-v4-flash |
| 2026-07-13 18:55 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 2.3 Stylelint 适配器:StylelintAdapter + stylelint 依赖 + tsconfig skipLibCheck | 按 docs/superpowers/specs/implementation-steps/04-phase2.3-stylelint-adapter.md 直接编码,无中间产物 | src/adapters/stylelint.ts package.json tsconfig.json | deepseek-v4-flash |
| 2026-07-13 19:20 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 2.4 sql-lint 适配器:SqlLintAdapterCLI 子进程调用 sqlfluff + 方言映射) | 按 docs/superpowers/specs/implementation-steps/05-phase2.4-sql-lint-adapter.md 直接编码,无中间产物 | src/adapters/sql-lint.ts | deepseek-v4-flash |
| 2026-07-13 19:25 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 2.5 PMD 适配器:PmdAdapter + PmdRunner.java + 规则集 XML4 个文件) | 按 docs/superpowers/specs/implementation-steps/06-phase2.5-pmd-adapter.md 直接编码,无中间产物 | src/adapters/pmd.ts jars/pmd/PmdRunner.java jars/pmd/pmd-java-ruleset.xml jars/pmd/pmd-jsp-ruleset.xml | deepseek-v4-pro |
| 2026-07-13 19:35 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 2.6 JSP 适配器:JspAdapter + jsp-extractor2 个文件) | 按 docs/superpowers/specs/implementation-steps/07-phase2.6-jsp-adapter.md 直接编码,无中间产物 | src/adapters/jsp.ts src/jsp/jsp-extractor.ts | deepseek-v4-flash |
| 2026-07-13 19:40 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 3 编排器:Orchestrator + debounce 工具(2 个文件) | 按 docs/superpowers/specs/implementation-steps/08-phase3-orchestrator.md 直接编码,无中间产物 | src/orchestrator/orchestrator.ts src/utils/debounce.ts | deepseek-v4-pro |
| 2026-07-13 19:45 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 4.1 AI Provider 基础设施:base/deepseek/openai + factory4 个文件) | 按 docs/superpowers/specs/implementation-steps/09-phase4.1-ai-provider.md 直接编码,无中间产物 | src/ai/providers/base.ts src/ai/providers/deepseek.ts src/ai/providers/openai.ts src/ai/factory.ts | deepseek-v4-flash |
| 2026-07-13 19:50 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 4.2 AI 引擎 + SchemarunAIReview 双并行请求 + 响应类型定义 + CustomRule 补充入 types.ts | 按 docs/superpowers/specs/implementation-steps/10-phase4.2-ai-engine.md 直接编码,无中间产物 | src/ai/schema.ts src/ai/engine.ts src/types.ts | deepseek-v4-pro |
| 2026-07-13 19:55 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 4.3 自定义规则系统:yaml-parser(简易 YAML 解析 + 加载过滤逻辑) | 按 docs/superpowers/specs/implementation-steps/11-phase4.3-custom-rules.md 直接编码,无中间产物 | src/rules/yaml-parser.ts | deepseek-v4-flash |
| 2026-07-13 20:00 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 4.4 结果合并:mergeResults → MergedReport | 按 docs/superpowers/specs/implementation-steps/12-phase4.4-merger.md 直接编码,无中间产物 | src/merger/merger.ts | deepseek-v4-pro |
| 2026-07-13 20:10 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 4.5 自动修复:generateFix + applyFix + matchAndValidate + batch + snapshot/undo | 按 docs/superpowers/specs/implementation-steps/13-phase4.5-fixer.md 直接编码,无中间产物 | src/fixer/fixer.ts | deepseek-v4-pro |
| 2026-07-14 20:54 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 4.6 报告导出:reportToMarkdown | 按 docs/superpowers/specs/implementation-steps/14-phase4.6-report-export.md 直接编码,无中间产物 | src/utils/report.ts | deepseek-v4-flash |
| 2026-07-14 20:58 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 5.1 命令注册 + extension.ts 更新:8 个命令注册、extension 正式入口、package.json 贡献点(commands/keybindings/viewsContainers/views/menus/configuration | 按 docs/superpowers/specs/implementation-steps/15-phase5.1-commands-extension.md 直接编码,无中间产物 | src/activation/commands.ts src/extension.ts package.json | deepseek-v4-flash |
| 2026-07-14 21:06 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 5.2 设置面板:SetupViewProvider(快速开始三步引导/AI 模型配置/API Key/输出语言/自定义规则管理/连接测试)+ getAIConfig + 面板交互命令(setApiKey/selectProvider/selectModel/selectLanguage/saveAndTest/toggleRule | 按 docs/superpowers/specs/implementation-steps/16-phase5.2-setup-panel.md 直接编码,无中间产物 | src/views/setupView.ts src/config/ai.ts src/activation/commands.ts src/extension.ts | deepseek-v4-pro |
| 2026-07-14 21:10 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 5.3 审查面板:ReviewPanel Webview(三 Tab 切换/统计卡片/问题列表/postMessage 通信/降级提示)+ commands.ts 集成(review/openPanel/exportReport 对接面板) | 按 docs/superpowers/specs/implementation-steps/17-phase5.3-review-panel.md 直接编码,无中间产物 | src/panel/webview.ts src/activation/commands.ts | deepseek-v4-pro |
| 2026-07-14 21:13 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 6.1 构建脚本:esbuild 打包脚本 + package.json 脚本更新(build / vscode:prepublish | 按 docs/superpowers/specs/implementation-steps/18-phase6.1-build-scripts.md 直接编码,无中间产物 | scripts/build.mjs package.json | deepseek-v4-flash |
| 2026-07-14 21:14 | ⑤ 编码实现 → ⑥ 审查验证 | Phase 6.2 工具脚本:PMD JAR 下载脚本 + 生产打包脚本 + vsce 依赖 + package.json 脚本更新 | 按 docs/superpowers/specs/implementation-steps/19-phase6.2-tool-scripts.md 直接编码,无中间产物 | scripts/download-pmd.mjs scripts/package-prod.mjs package.json | deepseek-v4-flash |
| 2026-07-14 21:20 | ⑤ 编码实现 → ⑥ 审查验证 | 打包 VSIX:优化 .vscodeignore、补全 README、创建 placeholder icon | 无 | .vscodeignore README.md images/icon.png | deepseek-v4-flash |
| 2026-07-14 21:35 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 | Bug fix: codeReviewer.openSetup 添加 try/catch 错误处理和用户提示回退 | 无 | src/activation/commands.ts | deepseek-v4-flash |
| 2026-07-14 21:52 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: stylelint 模块找不到(.vscodeignore 排除 .mjs 文件 + CJS/ESM 互操作) | 初版只改了 .vscodeignore 没改 CJS/ESM,第二次迭代才补了动态 import | .vscodeignore src/adapters/stylelint.ts | deepseek-v4-flash |
| 2026-07-14 22:04 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 设置面板 TreeView → WebView 重构,对齐 setup-panel-preview.html 卡片式 UI 设计 | `type StylelintModule = typeof import('stylelint')` 类型废弃 → 改为内联 interface;`Awaited<typeof import()>` 试错 → 改为 `as` 断言 | package.json src/views/setupView.ts src/extension.ts src/activation/commands.ts src/adapters/stylelint.ts | deepseek-v4-flash |
| 2026-07-14 22:16 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 重写快速开始区域:替换步骤圆圈为卡片布局,步骤编号改为 1/2/3 圆形数字,第三步增加快捷键和面板指引副标题 | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-14 22:24 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 审核引擎三卡片纵向 → 横向三等分布局 | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-14 23:00 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 新增 6 个 AI ProviderGemini/Claude/腾讯混元/智谱AI/月之暗面/阿里通义),合并 DeepSeek/OpenAI 为通用兼容类,Provider 切换联动模型下拉 | 先试了为每家单独写类,后改为 OpenAICompatibleProvider 统一类 + 子类注入 ID | src/ai/providers/openai-compatible.ts src/ai/providers/gemini.ts src/ai/providers/claude.ts src/ai/providers/deepseek.ts(删) src/ai/providers/openai.ts(删) src/ai/factory.ts src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-15 22:06 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: 模型提供商/名称下拉框不显示 — 真正根因是 JS 消息传递(ready→initConfig)未送达导致 select 永远空;改为在 getHtml() 模板中直接渲染 option,彻底不依赖异步消息 | 第一轮错误修复(只加 CSS min-height+try-catch)无效,第二轮改为 HTML 模板直接嵌入 option 数据才解决 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-15 22:17 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: 更换提供商模型不联动 + 徽章显示异常 — 发现 JS 全程未执行(内联脚本被 CSP 屏蔽),JS 改为外部文件 vscode-resource 加载,provider 数据嵌入 JSON script tagchange 事件前端直接查表更新模型下拉 | 第 3 轮:内联 addEventListener(仍不执行),第 4 轮:改为外部 JS 文件才解决 | src/views/setupView.ts src/views/setupView.js scripts/build.mjs scripts/copy-webview-js.mjs package.json | deepseek-v4-flash |
| 2026-07-15 22:25 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 新增 Base URL 输入框 + setEndpoint 消息处理 + initConfig 同步端点值 | 第一版给了初始值(config.endpoint),用户要求去掉,第二版清空 value 保留 placeholder | src/views/setupView.ts src/views/setupView.js | deepseek-v4-flash |
| 2026-07-15 23:04 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 | 修复 badge 判定逻辑:providerBadge 改为 provider&&modelapiKeyBadge 改为 apiKeyConfigured&&endpointpushConfig 补充 endpoint 字段 | 无 | src/views/setupView.ts src/views/setupView.js | deepseek-v4-flash |
| 2026-07-15 23:14 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 API Key 模块三个问题:①去掉 programmatic 设置输入框值消除竞态;②去掉 URL 自动填入;③清理死代码 | 无 | src/views/setupView.js | deepseek-v4-flash |
| 2026-07-15 23:25 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 inline onclick/onchange 无法调用 IIFE 内函数(postMsg/addRule/toggleRule/deleteRule 未暴露到全局),暴露到 window | 初版分析为 CSP 问题已修复,实际是 IIFE 作用域隔离 | src/views/setupView.js | deepseek-v4-flash |
| 2026-07-15 23:34 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 全量重命名 endpoint → baseUrl16 文件 73 处。config 键 ai.endpoint→ai.baseUrl(破坏性变更),所有函数/变量/接口/elementId 同步更名 | 无 | src/config/ai.ts src/ai/providers/base.ts src/ai/providers/openai-compatible.ts src/ai/providers/claude.ts src/ai/providers/gemini.ts src/ai/factory.ts src/ai/engine.ts src/views/setupView.ts src/views/setupView.js package.json docs/superpowers/specs/*.md | deepseek-v4-pro |
| 2026-07-16 18:22 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: Base URL 输入框不显示已保存值(initConfig 未设置 baseUrlInput.value+ API Key 已配置时输入框填入 •••••••• 可编辑视觉提示 | 初版用 placeholder 用户反馈不可编辑 → 改为 value | src/views/setupView.js | deepseek-v4-flash |
| 2026-07-16 18:30 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: 用户输入 API Key 后失焦被 pushConfig 覆写为 ••••••••,增加保护条件仅初始/空值时覆写;讨论是否传真实密钥给 webview,确认安全策略,保持 •••••••• 方案 | 尝试评估是否传真实密钥给 webview → 用户确认保持 •••••••• 方案 | src/views/setupView.js | deepseek-v4-flash |
| 2026-07-16 18:41 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: isBaseUrlConfigured 误判空字符串(用户 settings.json 有 "" 导致 globalValue 非 undefined),改为 !! 检查非空;setBaseUrl 空值时存 undefined 而非 "" | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-16 18:48 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 去掉选择提供商自动填入 Base URL 的功能(移除 setProvider 中 cfg.update ai.baseUrl 行及无用 import | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-16 18:53 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: 清除 URL 后 initConfig 又把默认值填回,改为 pushConfig 仅 baseUrlConfigured 为 true 时才传保存值 | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-16 19:06 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 保存并测试连接时,Base URL 未配置也报错提示,不再静默使用默认值 | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-16 21:18 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 快速开始三步序号动态高亮:完成=绿色(#3fb950)、有后继步骤完成但本步未完成=黄色(#f0883e)、默认=灰色 | 三态逻辑先在"仅步骤3触发才变黄"和"任意后继触发变黄"间迭代一次 | src/views/setupView.ts src/views/setupView.js | deepseek-v4-flash |
| 2026-07-16 21:57 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 addRule/deleteRule 不同步规则定义文件:addRule 现在在 .code-review/rules/user-rules.yaml 创建模板定义;deleteRule 从 user-rules.yaml 移除规则项 | 无 | src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-16 22:36 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 | 品牌命名:CodeGuard → 净码特工 · Code Purifier,更新 package.json/extension.ts/README.md 及所有历史文档 | brainstorm 过渡方案: 码鉴 CodeLens / 智评 AIReview / 码析 CodeSense 均被废弃 | package.json src/extension.ts README.md docs/superpowers/specs/*.md | deepseek-v4-flash |
| 2026-07-17 20:21 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 | 设置面板显示所有规则(含禁用):CustomRule 增加 enabled 字段,loadActiveRules 返回全部规则并用 enabled 标记启用状态,设置面板展示全部规则(禁用开关为 off),AI 审查前过滤仅启用规则 | 无 | src/types.ts src/rules/yaml-parser.ts src/activation/commands.ts src/views/setupView.ts src/views/setupView.js | deepseek-v4-flash |
| 2026-07-17 20:39 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 设置面板改为文件列表展示(无开关无规则详情):去掉 enable/disable 机制;新增 listRuleFiles()addRule 改为选择 .md 文件 → AI 生成规则 YAML → 写入文件;deleteFile 删除整个 .yaml 文件 | 方案经历 3 轮迭代:①按文件分组+开关 → ②只显示文件名+删除+添加 → ③添加改为 AI 读取.md 生成 | src/types.ts src/rules/yaml-parser.ts src/activation/commands.ts src/views/setupView.ts src/views/setupView.js | deepseek-v4-flash |
| 2026-07-17 21:03 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Phase 6.3 测试:7 个测试文件(fixtures/ 3 样本 + 4 测试 suite+ 修复 webview JS 和 TS 输出碰撞问题 | config.test.ts 按实际 API 调整(getLinterConfig→getLinterForLanguage 等);extension.test.ts 改用 getCommands 绕过 publisher 缺失;发现并修复 setupView.js 被 copy 脚本覆盖 TS 编译产物致扩展无法激活的 bug | src/test/fixtures/sample.js src/test/fixtures/sample.css src/test/fixtures/Sample.java src/test/adapter.test.ts src/test/config.test.ts src/test/merger.test.ts src/test/pipeline.test.ts src/test/extension.test.ts scripts/copy-webview-js.mjs scripts/build.mjs src/views/setupView.ts | deepseek-v4-flash |
| 2026-07-18 14:19 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 | 手动测试样本:每种语言带真实 bug 的文件,供用户安装插件后手动验证审查功能 | 无 | src/test/manual/buggy.js src/test/manual/buggy.css src/test/manual/buggy.sql src/test/manual/Buggy.java src/test/manual/buggy.jsp | deepseek-v4-flash |
| 2026-07-18 14:51 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | bug fix: stylelint 无配置文件导致静态分析跳过 CSS bug。在 StylelintAdapter 中内置 11 条默认规则,检测到 workingDir 无外部 .stylelintrc 时自动 fallback | 无 | src/adapters/stylelint.ts | deepseek-v4-flash |
| 2026-07-18 15:23 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 | 修正内置规则:移除 stylelint v17 无效的 color-hex-case,替换为 color-hex-length + color-named | 先用 color-hex-case('lower')发现无效 → 测试验证后替换 | src/adapters/stylelint.ts | deepseek-v4-flash |
| 2026-07-18 15:42 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | bug fix: import('stylelint') 返回 ESM namespace {default:{lint}},直接调 i.lint 为 undefined 抛 TypeError 被静默吞掉;同时修复静态分析错误不显示的问题(error 挂在 degraded 下,AI成功则不显示) | 第1轮只改 stylelint.ts,用户测试仍无问题→第2轮发现 import 未取 .default + panel 缺独立错误横幅 | src/adapters/stylelint.ts src/panel/webview.ts | deepseek-v4-flash |
| 2026-07-18 15:51 | ① 用户提出 → ⑤ 编码实现 | AI 审查解析失败时附带原始响应文本方便排查;修复错误横幅重复显示(errorBanner + degradedBanner 合并为单条) | 无 | src/ai/engine.ts src/panel/webview.ts | deepseek-v4-flash |
| 2026-07-18 16:20 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 静态分析标签页 linter 消息按 outputLanguage 翻译:在 buildLinterList() 和 reportToMarkdown() 中从 translatedDiagnostics 查找匹配翻译替换原始消息 | 无 | src/panel/webview.ts src/utils/report.ts | deepseek-v4-flash |
| 2026-07-18 16:22 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 ruleId/originalRuleId 不匹配:同时注册带前缀和不带前缀两种 key 到 transMap | 第一次只用 exact match 失效,改为双 key | src/panel/webview.ts src/utils/report.ts | deepseek-v4-flash |
| 2026-07-18 16:24 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 重构:翻译逻辑从视图层移到数据层 merger.ts mergeResults 中直接替换 linterDiagnostics message | 视图层 transMap 方案废弃;改用数据层替换 | src/merger/merger.ts src/panel/webview.ts src/utils/report.ts | deepseek-v4-flash |
| 2026-07-18 16:36 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 静态分析标签页同步显示 translatedSuggestionmerger.ts 匹配翻译时一并设置 suggestion 字段 | 无 | src/merger/merger.ts | deepseek-v4-flash |
| 2026-07-18 16:38 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 静态分析标签页 WebView 渲染 suggestionbuildLinterList 中增加建议行显示 | 无 | src/panel/webview.ts | deepseek-v4-flash |
| 2026-07-18 16:40 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | AI 响应解析失败时附带原始响应文本:catch 中传入 e.message 而非固定字符串 | 无 | src/ai/engine.ts | deepseek-v4-flash |
| 2026-07-18 16:42 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 AI 返回 JSON 中未转义双引号导致解析失败:prompt 增加转义说明 + repairJsonEscapes 容错后处理 | 无 | src/ai/engine.ts | deepseek-v4-flash |
| 2026-07-18 19:17 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: AI 审查标签页不再显示 translatedDiagnostics(静态分析翻译结果重复渲染),只保留 aiFindings | 无 | src/panel/webview.ts | deepseek-v4-flash |
| 2026-07-18 19:28 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 诊断 PMD 报"Java 11+ 未安装"原因(缺少 PMD JAR + PmdRunner.java 未编译 + API 不兼容 PMD 7.26.0);下载 PMD 7.26.0 JAR 包 4 个到 jars/pmd/lib/;重写 PmdRunner.java 适配 7.26.0 APIaddRuleSet(Path)→addRuleSet(String)setInputFilePath/setReportWriter→config.createRenderer()+pmd.files().addFile());编译生成 PmdRunner.class | 初版编译原 PmdRunner.java 报 API 不兼容(2 个方法不存在),改为 PMD 7.26.0 新版 API | jars/pmd/lib/pmd-core-7.26.0.jar jars/pmd/lib/pmd-java-7.26.0.jar jars/pmd/lib/pmd-javascript-7.26.0.jar jars/pmd/lib/pmd-jsp-7.26.0.jar jars/pmd/PmdRunner.java jars/pmd/PmdRunner.class | deepseek-v4-flash |
| 2026-07-19 13:38 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 真正根因:缺少 12 个 PMD transitive 依赖(slf4j/antlr/saxon 等);CycloneDX SBOM 解析依赖版本→下载全部 16 JAR;简化 PmdRunner.java;修复 pmd.ts catch 误判(message.includes('java') 太宽);重构 build.mjs 去掉 jars→out 重复拷贝 | 先试 pmd-dist ZIP(404)→改 GitHub Release(网络不通)→最后用 Maven CycloneDX 解析依赖版本 | jars/pmd/lib/*.jar(16) jars/pmd/PmdRunner.java src/adapters/pmd.ts scripts/build.mjs scripts/download-pmd.mjs vscode-code-reviewer-0.0.1.vsix | deepseek-v4-flash |
| 2026-07-19 13:48 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 PmdRunner.class 找不到:重构路径解析为 resolvePmdDir(),探测 4 个候选位置并用 fs.existsSync(PmdRunner.class) 验证;简化 getExtensionRoot 回退逻辑 | 无 | src/adapters/pmd.ts | deepseek-v4-flash |
| 2026-07-19 14:33 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 修复 AI 审查 JSON 解析失败:repairJsonEscapes 漏了 `:` 导致 key 结束 `"` 被误加 `\`;保留 prompt 转义指令,预处理增加 `/\\"/g``"` 处理过度转义 | 无 | src/ai/engine.ts | deepseek-v4-flash |
| 2026-07-19 14:56 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | ESLintAdapter 集成 eslint:recommended + @typescript-eslint/recommended 作为内置规则集;typescript-eslint 从 devDependencies 移至 dependencies | 方案 1(只改项目 eslint.config.mjs)被否;方案 2(适配器兜底自定义规则集)用户质疑"谁定义的推荐"→改为官方推荐规则集 | src/adapters/eslint.ts package.json | deepseek-v4-flash |
| 2026-07-19 21:50 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: JSP 中 `<script>` 块 JS 代码误用 `.ts` 后缀 lint 导致 `no-redeclare` 漏检 — ESLintAdapter 兜底 filePath 从硬编码 `'untitled.ts'` 改为检查 `document.uri.scheme === 'untitled'` 决定扩展名 | 第一轮用 `document.fileName || 'untitled.js'` 不够 — virtual doc 的 fileName 是 `'Untitled-1'` (truthy),兜底永远用不上;第二轮改为检查 `document.uri.scheme === 'untitled'` | src/adapters/eslint.ts | deepseek-v4-flash |
| 2026-07-19 22:04 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | Bug fix: VS Code 将 `.jsp` 识别为 `html` 语言 ID 导致 Orchestrator 静默返回空 — 尝试用 `contributes.languages` 注册 `.jsp`/`.jspx``jsp` 语言 | 方案曾被采纳,后因副作用被替换 | package.json | deepseek-v4-flash |
| 2026-07-19 22:25 | ① 用户提出 → ⑤ 编码实现 → ⑥ 审查验证 | 改用 `JspAdapter` 支持 `html` 语言 ID + 新增 `linters.html` 配置(默认 `jsp`),移除 `contributes.languages`,保留 HTML 编辑功能;`JspAdapter` 改为 mockDocument 替代 `openTextDocument`,避免 untitled 临时文档 | `contributes.languages` → 丢失 HTML 语言特性 → 弃用;`closeTextDocument` → API 不存在 → 改为 mockDocument | src/adapters/jsp.ts package.json | deepseek-v4-flash |
| 2026-07-19 22:35 | ① 用户提出 → ② 需求澄清 → ③ 方案设计 → ④ 人类审批 → ⑤ 编码实现 → ⑥ 审查验证 | 根因修复:AI 响应被截断因未设置 `max_tokens`。ChatOptions 加 maxTokens 字段;config 加 getAIMaxTokens()(默认 8192);package.json 加配置项;所有 provider 实现使用该值 | 无 | src/ai/providers/base.ts src/config/ai.ts package.json src/ai/providers/openai-compatible.ts src/ai/providers/claude.ts src/ai/providers/gemini.ts src/ai/engine.ts src/fixer/fixer.ts src/views/setupView.ts src/test/config.test.ts | deepseek-v4-flash |
| 2026-07-20 20:01 | ① 用户提出 → ⑤ 编码实现 | Bug fix: SqlFluffViolation 接口字段与 sqlfluff JSON 输出不匹配(line_no→start_line_noline_pos→start_line_posrule_code→code,缺 end 字段),导致行号显示 LNaN、ruleId 显示 undefined | 无 | src/adapters/sql-lint.ts | deepseek-v4-flash |
| 2026-07-20 20:17 | ① 用户提出 → ⑤ 编码实现 | Bug fix: mergeResults 中用 originalRuleId 作 Map key 导致同 ruleId 的多条诊断(如两个 PRS)后覆盖前,翻译错误;改为按索引位置一一对应匹配 | 无 | src/merger/merger.ts | deepseek-v4-flash |