title: [ISSUE-0004] 设置字段命名望文生义,与实际语义矛盾 description: "设置字段名暗示与实际语义矛盾,反复出现(已写成铁律)" tags: [issue, settings] created: 2026-05-26 updated: 2026-05-26 type: issue status: fixed severity: medium
[ISSUE-0004] 设置字段命名望文生义,与实际语义矛盾¶
相关 wiki:
settings-field-semantics.md、shared-queue-architecture.md相关 rule:settings-change-pre-check.md
用户感知的现象¶
v0.10.12 之前¶
"实开 Tab 并发 = 同时进行的任务数?逻辑有问题!多个任务是共享序列的..."
v0.10.14 之前¶
"网站抓取也应该是多个网站共用一个序列的吧?...同时挖几个网站是不是不对?而是线程?"
UI 文案让用户做出基于错误模型的决策。例如: - 用户想跑 5 个任务,于是把「实开 Tab 并发」调到 5 —— 期望 5 × 5 = 25 个 Tab,实际只有 5 个(全局上限) - 用户想"同时挖 10 个网站"调到 10,但实际开 10 个 worker 线程(worker 数 ≠ 网站数)
根因分析¶
v0.10.0 把架构从"per-task"重写为"共享队列",但字段名没改:
| 字段 | 名字暗示 | v0.10.0+ 真实语义 |
|---|---|---|
maxConcurrentTasks |
"同时几个任务" | activeTabs.size 全局上限 |
deepScrapeConcurrency |
"同时几个网站" | worker 线程数全局上限 |
pagerConcurrency |
"翻页并发" | 全局 Fetch 并发(不是 per-task) |
requestConcurrency |
"请求并发" | 已废弃(v0.10.0 不再读) |
UI label 沿用字段名暗示 → 与代码实际行为矛盾。
修复方案¶
v0.10.12(第一次修)¶
maxConcurrentTasks label:
- 旧:实开 Tab 并发(= 同时进行的任务数)
- 新:实开 Tab 并发上限
- helper 加 banner 说明「共享队列 + 与任务数无关 + 1 任务也能用满 5 槽位」
v0.10.14(第二次修)¶
deepScrapeConcurrency label:
- 旧:同时挖几个网站
- 新:抓取并发上限(worker 线程数)
- helper 加 banner 说明「所有任务的待抓官网共用全局队列」
改动文件¶
| 文件 | 改了什么 |
|---|---|
src/sections/settings/view/settings-view.tsx |
多个 label / helper 改文案 + 加架构 banner |
验证方式¶
打开 settings → 高级·地图抓取 / 高级·网站抓取 → 确认: - 所有"并发"字段 label 含「上限」字样 - helper 含「全局共享」+ 具体例子 - 顶部有架构说明 banner
如何避免再犯¶
- 改 UI label/helper 之前必须先读对应源码顶部注释(特别是
batch-controller.ts/engine-manager.ts/task-manager.ts) - 字段名 ≠ UI 文案:字段名向后兼容不改,UI 文案可以改对
- 任何 "并发" 字段必须明示 "全局" 或 "per-X"
- 要给具体例子:「N=5 时 1 个任务 vs 5 个任务下分别如何」
- 写完 UI 改 docs/wiki/settings-field-semantics.md 同步表格
- 遵守
docs/rules/settings-change-pre-check.md
相关问题¶
无 — 但反复出现 2 次说明这是高频陷阱,已写入 更新规则.md 第七章 A 节作为铁律。