HYBRID_EFFORT_BY_TIER 已改名为私有 _EFFORT_BY_TIER,公开入口是 effort_for_tier();workflows 不变量 #5 与 pitfalls §1.1 同步改用 公开 API 描述。docs/plans/ 带日期的历史设计记录保持原样。 Refs #5528
2.9 KiB
开发陷阱清单
状态: Draft
读者: 核心开发、编程 Agent、代码审查者
范围: 4.x 开发中已知的结构性陷阱与兼容面联动要求
来源: MINERU-1 代码结构分析报告(SHANNON,2026-09-01),逐条对照代码复核后固化。行号以 commit 317428b8 为基准。
本清单收录的是"改动前必须知道,否则容易做错"的事项。每条给出代码锚点与正确做法;纯推测、无法操作的观察不收录。
1. 双轨兼容面的联动要求
1.1 backend 不再是入参
历史过渡层 resolve_tier_and_backend(tier, backend) 与 mineru-kit parse --backend 专家参数(含 pipeline/vlm-* 等别名)已移除:backend 只用于推断 tier,推断后即被丢弃,没有独立作用。backend_for_tier 派生链与 ParserRuntimeOptions.backend 内部字段也已删除。
- 新代码只走
tier;basic/standard/advanced 共用同一个 hybrid-engine,仅 effort 不同(effort_for_tier(),parser/tier.py的ParserRuntimeOptions(tier, effort))。 - 不要在任何 CLI / SDK / API 入口重新引入
backend入参,也不要恢复 backend 派生函数或内部字段。
1.2 共享文档协议与缓存必须同步
改外层结构时同步 DocVortex schema/readers、MinerU ParseResult 和 Doclib 缓存。 当前使用 schema 身份 + 版本 2.0 + metadata,通用接口拒绝旧协议;不能仅按版本号识别。 Doclib 缓存命中、覆盖、默认档位与压缩均使用专属 read_cached_middle_json,兼容转换旧 3.4.5 和 MinerU 2.0;压缩只合并转换后元数据一致的批次。 详见 envelope.md。
2. Alpha 高频迭代,公开 API 未稳定
4.x 处于 Alpha prerelease,迭代节奏约为日均 10 个提交,公开 API 未稳定(变更专门记录在 docs/next/api/changes.md)。
- 外部集成应 pin 具体 commit,不要跟浮动的 next HEAD。
- 内部改动涉及 NEXT v1 API 行为变化时,必须在
docs/next/api/changes.md追加条目。
3. 错误协议:设计已定、实现缺位的部分
docs/next/errors.md 已设计 user_action / retryable / docs_url 扩展字段,但 mineru/errors.py 的 error_response(errors.py:208)目前只输出 OpenAI 兼容的 {type, code, message, param},全仓无 Python 实现点。
- 依赖这些扩展字段的调用方代码不要提前编写。
- 补齐该缺口是自然切入点:改
errors.py的error_response与 CLI JSON 输出,并同步docs/next/errors.md状态。
4. 仓库约定速查
两条来自 AGENTS.md / CLAUDE.md 的硬约定,最容易在自动生成提交时违反:
- mineru 子模块之间只使用 relative import(
from .base import X),不用import mineru.xxx绝对导入。 - commit message / PR body 禁用
fixes|closes|resolves #n(会在 merge 后自动关闭 issue),用Refs #n。