95 lines
7.9 KiB
Markdown
95 lines
7.9 KiB
Markdown
# 不规则内容导入 — 手动验证结果报告(7 种格式全量)
|
||
|
||
## 验证信息
|
||
|
||
| 项 | 值 |
|
||
|---|---|
|
||
| 验证日期 | 2026-09-07 |
|
||
| 验证功能 | 自定义规则导入——不规则规则内容(重噪声嵌入)的 7 种文件格式逐一导入 |
|
||
| 导入素材 | `data/import-verification/03-irregular-content/team-coding-rules.*`(7 个文件) |
|
||
| 导入结果 | `data/import-verification/03-irregular-content/results/irregular-*.yaml`(7 个文件,已全部移出激活目录归档) |
|
||
| 规则基准 | 与场景②相同的 12 条规则(id 亦相同),severity 基准 error×2 / warning×5 / info×5 |
|
||
| 噪声设计 | 项目背景、团队介绍(12 人分工)、会议纪要、部署流程、版本历史、反面/正面代码示例(硬编码密码 `Admin@123456`、eval 调用、三层循环等)、内部 wiki 链接、Checklist |
|
||
| 验证方式 | 在 Extension Development Host 中手动执行完整导入流程(含预览确认),每轮结果落盘核对后归档 |
|
||
|
||
## 素材矩阵
|
||
|
||
| # | 文件 | 格式 | 导入路径 | AI 内容转换 |
|
||
|---|---|---|---|---|
|
||
| 1 | team-coding-rules.yaml | YAML(噪声全在注释) | YamlConverter 直读 | 否 |
|
||
| 2 | team-coding-rules.md | Markdown(噪声为真实正文) | 读文本 → AI(freeform) | 是 |
|
||
| 3 | team-coding-rules.txt | 纯文本 | 读文本 → AI(freeform) | 是 |
|
||
| 4 | team-coding-rules.docx | Word | mammoth 提取 → AI(freeform) | 是 |
|
||
| 5 | team-coding-rules.pptx | PowerPoint | officeparser 提取 → AI(freeform) | 是 |
|
||
| 6 | team-coding-rules.xlsx | Excel 单表 | 表格 → Markdown → AI(spreadsheet) | 是 |
|
||
| 7 | team-coding-rules-multi-sheet.xlsx | Excel 多表 | 逐表渲染合并 → AI(spreadsheet) | 是 |
|
||
|
||
(无 template 轮:模板路径为严格表头校验直读,不适配不规则内容场景。)
|
||
|
||
## 逐轮结果总表
|
||
|
||
| 轮 | 格式(规则名) | 检出条数 | severity | languages | id 与基准 | 去重标注 | 结论 |
|
||
|---|---|---|---|---|---|---|---|
|
||
| 1 | yaml(irregular-yaml) | 12/12 | ✅ 全对 | ✅ 全对 | 逐字节一致 | 预览阶段独立去重 | 通过 |
|
||
| 2 | md | 12/12 | ✅ 全对 | ✅ 全对 | 漂移(语义等价) | 3 exact,指向真实 | 通过 |
|
||
| 3 | txt | 12/12 | ✅ 全对 | ✅ 全对 | 漂移 | 3 exact,同构 | 通过 |
|
||
| 4 | docx | 12/12 | ✅ 全对 | ✅ 全对 | 漂移 | 3 exact,同构 | 通过 |
|
||
| 5 | pptx | 12/12 | ✅ 全对 | ✅ **全对(零丢失)** | 漂移 | 3 exact,同构 | 通过 |
|
||
| 6 | xlsx 单表 | 12/12 | ✅ 全对 | ✅ 全对 | **完全一致** | **2 exact + 1 overlap**(见发现 3) | 通过 |
|
||
| 7 | xlsx 多表 | 12/12 | ✅ 全对 | ✅ 全对 | **完全一致** | 3 exact,回归同构 | 通过 |
|
||
|
||
## 关键发现
|
||
|
||
### 1. 噪声过滤全场景零失守(本场景核心目标达成)
|
||
|
||
7 轮全部通过以下陷阱测试:
|
||
|
||
- 项目背景、团队介绍(12 人分工)、会议纪要(「决定在 async 函数中全面禁用同步 API」)、部署流程、版本历史(张三/李四/王五)、Checklist、内部 wiki 链接——**均未变成规则**
|
||
- **反面示例陷阱零触发**:代码示例中的 `"Admin@123456"`、`eval(request.body)`、`maxRetry = 3` 等错误示范未被生成为规则,也未污染规则语义
|
||
- **叙事与规则分离**:如「上周代码审查中发现前端模块有 eval() 调用」的叙事上下文被剥离,只提取规则本身
|
||
|
||
### 2. pptx 语言字段差异根因定案:源文件内容差异,AI 两轮行为均正确
|
||
|
||
| 证据 | languages 表现 |
|
||
|---|---|
|
||
| 场景② pptx | 留空 6 处(当时误判「降级/丢失」) |
|
||
| 旧散落结果 rules_ppt.yaml | 大面积留空 |
|
||
| 本场景 pptx(噪声更重、文件更大 45KB) | 零留空,8 处全对 |
|
||
| 场景② pptx 重测(2026-09-07) | 留空模式与首测逐字段复现 |
|
||
| **officeparser 提取文本比对(2026-09-07)** | **02 源文件 950 字符中无任何「适用语言/排除语言」标注;03 源文件含成组「严重级别 \| 语言」标注及「排除语言:sql」** |
|
||
|
||
定性演进三版:格式缺陷(02 初稿)→ 高方差(03 初稿,被重测推翻)→ 提取层丢失(被提取比对推翻)→ **最终定案:源文件内容差异**。02 pptx 幻灯片只写了 severity(`[error]/[warning]/[info]` 前缀)没写语言,03 pptx 两者都写了。AI 侧两轮行为均正确:源有的正确映射(含 excludeLanguages: [sql]),源无的按「严禁猜测,留空比猜测错误更安全」留空,语义可推的唯一一条(描述含「TypeScript 类型」)正确推断 [typescript]。**这 6 处留空从来不是「丢失」——源文件没有的数据不能叫丢失**。制作 pptx 规则素材时,如需语言限定必须在幻灯片中显式标注适用语言。
|
||
|
||
### 3. 去重判断方差实锤:同一规则跨轮在 exact 与 overlap 间摆动
|
||
|
||
- xlsx 单表轮:no-hardcoded-credentials 被判 **overlap**(保留生效)——与前 12 轮历史(exact)不同,且两条规则检测目标几乎重合、语言集合相同,exact 更贴切
|
||
- multisheet 轮:**回归 exact**(注释)
|
||
- 实际影响:overlap 判保留时该规则与 custom/no-hardcoded-secret 并存双报。定性为 AI 判断方差(与 galaxy 轮次波动同源),预览面板人工复核是设计内的必要补偿
|
||
- 附加证据:docx 轮魔法数字规则 id 为 `avoid-magic-numbers`(与既有规则 id 前缀完全不同),仍被精准标注为 custom/no-magic-numbers 的 exact——去重的语义性(与 id 无关)得到最直接验证
|
||
|
||
### 4. 表格类格式稳定性跨场景复现,multisheet 打出跨场景字节级一致
|
||
|
||
- xlsx 单表、multisheet 两轮的 9 条保留规则 id 再次全部与 yaml 基准一致(「结构化表格 → id 收敛」跨场景复现;自由文本四轮 id 依旧逐轮漂移)
|
||
- **multisheet 轮落盘文件与场景② multisheet 结果逐字节一致**(fc 0 差异),且场景②内 multisheet ≡ xlsx 单表——推导链 `02-xlsx ≡ 02-multisheet ≡ 03-multisheet`:AI 从两份完全不同的源文档(15KB 标准多表 vs 24KB 重噪声多表)收敛到同一字节级输出,spreadsheet 链路稳定性拿到最强证据
|
||
|
||
### 5. id 漂移全景
|
||
|
||
自由文本格式(md/txt/docx/pptx)的 AI 生成 id 逐轮漂移(本轮新组合:`constant-naming`、`boolean-variable-prefix`、`require-explicit-types`、`no-todo-fixme-hack` 等),仅个别巧合重合(no-todo-comments、require-doc-comments 在 02/03 的 md 轮均出现)。含义相同的规则若以不同格式多次导入并存将双报——每轮归档移出激活目录即为规避此问题。
|
||
|
||
## 已知观察
|
||
|
||
- **xlsx 轮注释块尾部各多一行孤立 `#`**(外观残留,无功能影响)
|
||
- **去重方差的管理含义**:exact/overlap 判定在边界案例上有摆动,重要场景导入后应在预览面板复核重复分组(与 guide.md 归档流程互补)
|
||
- 本场景 yaml 轮噪声全部藏在注释中,对解析器无挑战(真正考验由 md/txt/docx/pptx/xlsx 承担)
|
||
|
||
## 结论
|
||
|
||
**通过**。7 种格式全部成功导入 12 条规则基准:重噪声零膨胀、反面示例陷阱零触发、severity 零偏差。场景②的 pptx 疑问在本场景得到最终定案:语言字段差异源于源文件内容差异(02 源无语言标注、03 源有),AI 两轮行为均正确,不存在降级或丢失;表格类格式稳定性获得跨场景字节级一致的强证据。去重语义性(avoid-magic-numbers 案例)与判断方差(hardcoded-credentials exact/overlap 摆动)均有实测记录。
|
||
|
||
## 关联
|
||
|
||
- galaxy 素材验证报告:`data/import-verification/01-galaxy-nonstandard/result-report.md`(真实世界非标准格式场景)
|
||
- 标准格式验证报告:`data/import-verification/02-standard-formats/result-report.md`(8 种格式,含 pptx 降级原始记录)
|
||
- 自动化测试:`tests/excel-converter.test.ts`(转换器渲染层)
|
||
- 设计 spec:`docs/superpowers/specs/2026-07-26-custom-rule-import-ux-design.md`
|