用户反馈前置查询¶
触发场景:每次用户报 bug / 提反馈 / 提需求。 起因:本会话很多次"用户报 X → 我直接读源码 → 错过同款历史 ISSUE / agent code review 后才发现关联(如 ISSUE-0008 vs SPEC-006)"。 目标:把 CLAUDE.md 的"先查 INDEX"从口号变成肌肉记忆。
总原则¶
用户反馈
↓
**第一动作**:grep 关键词查 issues/ + wiki/ + rules/
↓
**第二动作**:看 docs/_todo.md 是否已记录类似项
↓
**第三动作**:才开始读源码
关键:先看历史 = 节省后续重新发现 + 避免回归。
按反馈类型的具体命令¶
1. UI / 显示问题¶
# 看是否有同款历史 UI bug
grep -rn "<关键词>" docs/issues/ | head
ls docs/rules/UI* docs/rules/改设置* docs/rules/禁止*
# 关键 rules(每次必看)
cat docs/rules/ui-change-pre-check.md # 4 步清单
cat docs/rules/no-mutilation-fix.md # 反例
例:用户报"chip 显示错位" → 先 grep -rn "chip" docs/issues/ → 找到 0021-状态chip参差不齐 → 看现有解决方案。
2. 抓取相关(HEAD / GET / tab / 多阶段)¶
cat docs/rules/scrape-pipeline-decision-table.md # mstage 标签完整速查
grep -rn "mstage\|pipeline\|scrape" docs/issues/
ls docs/wiki/multi-stage-scrape-pipeline.md docs/wiki/domain-state-machine.md
例:用户报"matsudental.com 显示失败" → 应该 grep mstage docs/issues/ 找 0069 → 知道是 UI 漏改,不是真失败。
3. SW kill / 持久化 / 窗口 / Tab¶
cat 更新规则.md | grep -A 50 "第七章" # 16 条铁律
grep -rn "SW kill\|持久化\|windows\|tab" docs/issues/ docs/wiki/
ls docs/wiki/tab-lifecycle-and-watchdog.md docs/wiki/ext-reload-lifecycle.md
例:用户报"几十个新标签页累积" → 应该 grep windows docs/issues/ + 看 wiki/Tab生命周期与看门狗 → 找到 0070 + 0072。
4. jsstore / IndexedDB / 数据库¶
grep -rn "jsstore\|where:\s*{\s*taskId\|enableSearch" docs/issues/ \
src/utils/jsstore/search-data.ts # ⚠️ 顶部注释是高频踩坑
cat docs/wiki/shared-queue-architecture.md
例:用户报"已删任务的数据还在" → 应该看 search-data.ts:67-91 注释(where:taskId 坑)+ ISSUE-0071。
5. 设置 / Settings 字段¶
# 改 settings 前必看(CLAUDE.md 明确)
cat docs/rules/settings-change-pre-check.md
cat docs/wiki/settings-field-semantics.md
grep -rn "settings\|enableXxx" docs/issues/ docs/wiki/
6. 调度 / 并发 / 队列¶
cat docs/wiki/shared-queue-architecture.md # 字段语义与名字暗示常不一致
grep -rn "manageQueue\|pumpTasks\|controlTask" docs/issues/
7. 用户隐私 / 安全 / 导出¶
例:用户报"导出文件含我的私域名" → 找 0073 → 知道 v0.10.103 后已脱敏。
8. MV3 / 持久化 / alarms / 定时¶
cat 更新规则.md # 第七章 + 历次大事件
pnpm scan:mv3 # MV3 陷阱扫描
ls docs/rules/mv3-persistence-pitfall-checklist.md
9. 任意关键词(兜底)¶
# 总入口(按相关度)
KW="<用户提到的关键词>"
grep -rn "$KW" docs/issues/INDEX.md # ISSUE 索引
grep -rn "$KW" docs/wiki/INDEX.md # wiki 索引
grep -rn "$KW" docs/rules/ # 所有 rule
grep -rn "$KW" docs/_todo.md # 已知待办
已修同款问题的标志¶
看到 ISSUE 含 audit_grep 字段说明已有自动检测:
修类似问题时应该:
1. 跑 pnpm scan:issue-coverage — 看是否还在 0 命中
2. 加新 audit_grep 防退化(修类似但不同的 case)
反例(本会话漏查的)¶
| 用户反馈 | 我做了 | 应做 | 后果 |
|---|---|---|---|
| matsudental.com "失败" | 直接读源码 | grep mstage docs/issues/ → 找 0069 |
多花 5 分钟才理解是 UI bug |
| 几十个新标签页 | 直接读 scrape-window.ts | grep windows docs/issues/ + wiki |
错过 v0.9.x SW kill 经验 |
| 清空不刷新 | 直接看 local-toolbar.tsx | grep clearSearchData docs/issues/ |
错过同 pattern 历史 |
| SPEC-006 cascade 删 | 直接写 removeByQuery | 应看 search-data.ts:67-91 + grep ISSUE-0008 | 命中老坑,agent 找到才修 |
工具支持¶
pnpm scan:issue-coverage # 跑所有 ISSUE 的 audit_grep
pnpm scan:mv3 # MV3 持久化陷阱
pnpm scan:error-handling # 静默吞错检测
pnpm docs:check # broken link + frontmatter
每次 commit 都自动跑 — 通过 = 没引回归。
给 AI 的强提示¶
如果用户报问题但 AI 直接读源码没 grep INDEX: - ❌ 几乎一定会错过历史 - 90% 概率重复历史踩坑 - 修法可能跟过去不一致
正确流程:
用户报问题
↓
**MUST**:先 grep 关键词在 docs/issues/INDEX.md
↓
**MUST**:找到 ≥ 1 个候选 → 读那个 ISSUE 看是否同款
↓
**MUST**:看 audit_grep 字段判断是否已有防退化
↓
然后才看源码
相关¶
- [[00-meta-rule|00-元规则]] — 自动建档
- 每版本沉淀检查表 — 沉淀必做
- 修bug全字典扫描 — 改 bug 前的全局搜索
- MV3持久化陷阱清单(更新规则.md 第七章)— 改 SW 代码必看