7.3 KiB
7.3 KiB
Note
Status: Historical snapshot. Current refactor results and validated baseline are tracked in
CHANGELOG.md(updated 2026-04-07).
VLM 项目与 Skill 改进建议(2026-02-13)
1. 评估范围与依据
本建议基于以下真实运行结果与代码阅读:
- 实际整理流程:
scan -> parse -> analyze -> plan -> execute(dry-run)。 - 实际产物:
inventory.csv、identities.json、analysis.json、plan.json、plan_manual_review.csv。 - 关键代码:
src/vlm/parser.py、src/vlm/planner.py、src/vlm/cli.py、src/vlm/executor.py、skills/vlm-library-workflow/SKILL.md。
运行中观测到:
plan.json总操作4710,其中move=1623、quarantine=187、no-op=2900。- 人工复核候选
516条,其中:manual_review=349source_is_sample=92season>=20=75episode>=40=27truncated_title_pattern=8
这说明当前系统“可用”,但在真实复杂片源命名下,仍存在高风险误解析与误搬运窗口。
2. 代码层改进(按优先级)
P0(必须先做)
2.1 修复 parse_series 的 XXxYY 误匹配分辨率问题
现象:
1440x1080、1920x1080会被局部匹配成40x10、20x10,导致生成Season 40/S40E10、Season 20/S20E10这类错误目标路径。
根因位置:
src/vlm/parser.py:197,模式(\d{1,2})x(\d{1,2})过于宽松且允许子串匹配。
改进建议:
- 改为边界敏感模式,例如
(?<!\d)(\d{1,2})x(\d{1,2})(?!\d)。 - 增加“分辨率语境排除”规则:若匹配附近存在
1080/2160/720/480/p等特征,直接拒绝该候选。 - 对
x模式降置信度或增加二次校验(例如 title 长度、是否含明显编码标签)。
验收标准:
1920x1080、1440x1080不得触发季集解析。- 新增回归测试覆盖上述文件名。
2.2 在规划阶段阻断明显异常季集号
现象:
- 即便解析错误,
planner仍直接生成move操作,带来误改风险。
根因位置:
src/vlm/planner.py:300-372,仅检查needs_review/season is None/episodes empty,未对极端季集号做保护。
改进建议:
- 在
_create_series_operation增加阈值守卫(例如season > 15或episode > 100时改为no-op并标记manual review)。 - 阈值放入配置(如
plan.max_season,plan.max_episode),默认启用。
验收标准:
- 出现异常季集号时,不得进入
move/rename。 plan.json的summary_by_reason可见明确拦截原因。
2.3 Sample 片段默认不应参与主文件整理
现象:
Sample文件被移动为正片目标名,存在“样片覆盖正片语义”的风险。
根因位置:
- 解析/规划阶段未区分样片;
duplicate_keep也未惩罚 sample。
改进建议:
- 在扫描或规划阶段识别
Sample(路径段或文件名)。 - 默认行为:
no-op或优先quarantine,并提供开关(如plan.include_sample_files=false)。 - 在重复保留策略中将 sample 质量权重降到最低。
验收标准:
- sample 不再成为默认保留/搬运目标。
- 增加针对
.../Sample/...的单元测试与集成测试。
P1(高价值)
2.4 优化标题规范化策略,避免语义损伤
现象:
normalize_title()使用.title()会把CJ7 -> Cj7、R.I.P.D -> R I P D,并可能对中日文混排标题产生副作用。
根因位置:
src/vlm/parser.py:82-84。
改进建议:
- 默认不做
.title(),只做分隔符清洗与空白归一。 - 增加可选 title-case 开关,仅用于纯英文场景。
验收标准:
- 缩写与数字混排标题大小写保持稳定。
- 新增包含中日文与缩写的测试用例。
2.5 降低 dry-run 日志噪音,提升可审阅性
现象:
- dry-run 会输出大量逐条日志,审阅效率低。
根因位置:
src/vlm/executor.pydry-run 对每条操作记INFO。src/vlm/cli.py:771已做“Sample operations”,但日志层仍会刷屏。
改进建议:
- 默认将逐条 dry-run 日志降为
DEBUG。 - CLI 增加
--verbose-ops选项,按需打印全量操作。
验收标准:
- 默认 dry-run 输出聚合摘要 + 少量样本。
- 显式开启 verbose 时仍可查看全量。
2.6 提供内建“计划体检”命令
改进建议:
- 新增
vlm review-plan --input plan.json --output plan_manual_review.csv。 - 内建规则:异常季集号、sample、标题截断、高风险字符、手工审核项统计。
价值:
- 将当前人工脚本化能力产品化,减少执行前漏检。
P2(体验与可维护性)
2.7 丰富解析模式(尤其东亚命名)
建议新增模式:
EP01/E01独立模式(season 缺失时可推断S01或标记低置信)。第09話/第09集模式。S01 Complete、END、SP特判策略。
2.8 用“真实语料回放测试”补齐回归
建议:
- 在
tests/fixtures/维护匿名化真实文件名样本。 - 新增端到端测试:
parse -> plan断言“异常项不得进入 move”。
3. Skill 描述改进建议(vlm-library-workflow)
当前 skill 已具备主流程与安全意识,但还可增强“执行前闸门”与“环境兼容性”。
3.1 增加命令回退策略(vlm 不存在时)
问题:
- 当前文档默认
vlm ...,但实际环境可能仅支持uv run vlm ...。
建议:
- 在
SKILL.md与references/command-recipes.md增加规则:- 先试
vlm --help - 失败则自动切换
uv run vlm --help
- 先试
3.2 把“人工复核闸门”写入 Skill 强制流程
建议:
- 在
execute --confirm之前新增固定步骤:生成并汇报高风险清单。 - 若高风险计数 > 0,默认不执行确认,除非用户明确覆盖。
推荐规则(可直接写入 skill):
season>=20或episode>=40source_path包含Samplereason包含manual review- 标题截断模式(如路径中出现异常断裂片段)
3.3 在 Skill 中声明已知解析边界
建议:
- 明确列出“当前 parser 对某些命名存在误判风险(如分辨率触发
x模式)”。 - 遇到这些模式时,优先建议“复核并降级为 no-op”。
3.4 输出契约增加“风险摘要”
建议在 Output Contract 增加:
- 高风险条目总数与分类计数。
- 前 5 条代表样本。
- 执行建议(继续/暂缓)。
4. 推荐实施顺序(两周节奏)
第 1 周(风险收敛):
- 修
parse_series误匹配。 planner增加异常季集号保护。- sample 文件默认降级处理。
- 增加对应单测。
第 2 周(体验提升):
- 加
review-plan命令。 - 优化 dry-run 日志粒度。
- 迭代
vlm-library-workflowskill(执行前闸门 + 命令回退 + 风险摘要)。
5. 可直接转任务的条目
parser: 修复XXxYY与分辨率冲突,新增回归测试。planner: 增加max_season/max_episode风险闸门与配置项。planner/duplicate: sample 文件降权或默认不搬运。cli: 增加review-plan子命令。executor/logging: dry-run 默认聚合输出,逐条改为 debug。skill: 增加uv run vlmfallback 与执行前人工复核强制步骤。