
问:今天继续,今天主攻自动打标流水线编码。
答:分叉机制完美生效:23 个强信号自动打标、13 个泛词进人工队列、s6 不再误打、岗位-管理(0.72) 正确降级到人工队列。铁律验证通过。
部件-端子(=0.90,端子), 部件-连接器(=0.90,连接器), 工艺-压接(=0.90,压接), 主题-连接器端子(=0.90,连接器端子), 标准-USCAR(=0.90,USCAR)品类-汽车(=0.72,汽车), 工艺-检测(=0.72,检测), 岗位-质量(=0.72,质量)品类-新能源汽车(=0.90,新能源汽车), 部件-导线(=0.90,导线), 标准-GB(=0.90,GB)品类-汽车(=0.72,汽车), 工艺-设计(=0.72,设计), 岗位-设计(=0.72,设计)部件-端子(=0.90,端子), 工艺-压接(=0.90,压接), 主题-质量与检测(=0.90,质量与检测)工艺-检测(=0.72,检测), 岗位-质量(=0.72,质量)主题-标准规范(=0.90,标准规范), 标准-IEC(=0.90,IEC), 标准-UL(=0.90,UL), 标准-QC-T(=0.90,QC-T)品类-汽车(=0.72,汽车)工艺-裁线(=0.90,裁线), 工艺-剥皮(=0.90,剥皮), 工艺-压接(=0.90,压接), 工艺-焊接(=0.90,焊接), 工艺-装配(=0.90,装配), 主题-生产工艺(=0.90,生产工艺), 岗位-工艺(=0.90,工艺)岗位-管理(=0.72,管理)部件-导线(=0.90,导线)品类-汽车(=0.72,汽车), 工艺-设计(=0.72,设计), 岗位-设计(=0.72,设计)问:此次验证的人工队列部分,需要我怎么做。
工审阅回写闭环已建好并端到端验证通过。
pipeline/review.py —— 把人工队列从"待办清单"变成"可审阅、可回写"的链路:
extract_review_queue(batch_json) → 生成 review_queue.json + review_queue.md(可读清单,每条含文档/标签/置信度/命中词/系统建议)apply_review() → 你填的决策落地:confirmed_tags.json(待 IMA 批量写回)exclude_terms.json(label→[terms],下次判标跳过 = 全局降权)batch_writeback 算写回 ETA(分日调度,占位不真实调用)配套改动:config.py 加 3 个路径常量;tagger.py 加排除词机制(读 exclude_terms.json,跳过被排除的弱信号)。
review_queue.md,看每条候选decision 改成 confirm / reject / 保持 pendingpython -m pipeline.review apply —— 闭环完成13 条人工队列提取成功 → 模拟 s2「工艺-设计」confirm、其余 reject → 重跑验证 s6「岗位-管理」因全局排除不再出现。
一处语义务必分清(已钉死在代码注释 + 项目记忆):
auto_tags ∪ confirmed_tagsllm_tag 模型判标补 40% 召回 / 接 IMA MCP 真实写回试点(建议 11_连接器端子)/ 你给其余行业库名单+领域问:review_queue.md确认接受你的建议。
已完成。你的决策已落地。
review_queue.json 重置为纯建议版(全 13 条 = reject),apply_review 已应用:
pipeline/exclude_terms.json品类-汽车 ← 汽车工艺-检测 ← 检测岗位-质量 ← 质量工艺-设计 ← 设计岗位-设计 ← 设计岗位-管理 ← 管理从这刻起,这 6 个弱信号标签在所有文档判标时都不再作为候选出现(机器不再为"汽车""管理""设计"等泛词自动/候选打标)。这些文档的精确标签(如 品类-新能源汽车、主题-质量与检测)不受影响,照常自动打出。
⚠️ 一个持久性提醒:exclude_terms.json 是全局且落盘的。将来若某篇文档确实该打 品类-汽车 或 岗位-管理,不能再靠弱信号自动/候选——需你在 IMA 手动补标,或回 标签清单_线束知识库.md 把该词登记为强信号同义词后再清排除。
记忆已追加到今日日志(2026-07-17.md)。下一步可选:接 llm_tag 模型判标补召回、接 IMA 真实写回试点(建议 11_连接器端子),或你给其余行业库名单+领域。
问:复盘此次的验证过程,确认是否有改进的地方。
验证目标基本达成:8 格式提取全通、扫描件 OCR 闭环打通、置信度分叉生效、"不读路径"铁律通过。但验证过程本身暴露了 6 个真实坑,其中 2 个是"契约/语义没提前钉死"导致的返工——这正是你最在意的"可执行性"隐患。


P0 — 直接提升判标准确率
汽车⊂新能源汽车 导致 品类-汽车 误作弱信号(最终靠你手动 reject 才压掉)。改成"长词命中即抑制其短子串词",可自动消解这类上义词噪声,少占人工队列。顺带解决纯子串匹配的潜在误命中。P0 — 可重复验证(防复踩)
python -m pipeline.test(或 pytest),每次改码可跑,对齐你"方法必须可执行 / 方案体检"的纪律。clean 子命令并断言无残留。P1 — 契约健壮性
ocr-extract Skill 和全局 OCR 模块注释里写死"入参/返回纯文本",并加 pipeline 初始化 smoke test 调一次 OCR 验证契约(坑 4 的根治)。P1 — 覆盖盲区
P2 — 方法论(呼应"方案体检")
exclude_terms.json 是全局且落盘的:一旦 reject,该弱信号在所有文档都不再候选,即使某篇真需要也得手动补标。建议加"排除可复核 / 可重入"机制(排除项带原因 + 复查日期),避免永久沉默。
我建议先实现 P0 三项(最长匹配抑制 + 常驻测试套件 + 验证幂等/契约 spec)——成本低、收益高、直接提升判标准确率与可维护性。要我现在动手吗?还是你先就"排除项可复核"那点做决定?
问:排除项可复核加"排除可复核 / 可重入"机制(排除项带原因 + 复查日期),避免永久沉默。
答:"排除项可复核 / 可重入"机制已落地并端到端验证通过。
把 exclude_terms.json 从「一旦拒绝就永久沉默」的扁平表,升级成带原因 + 复查日期 + 状态、可解除可续期的富格式:
格式升级({label:[term]} → 每条带元数据)
json
"岗位-管理": [{
"term": "管理",
"reason": "明确误报:「项目管理方法」触发「管理」,非岗位标签…",
"created": "2026-07-17",
"review_by": "2026-10-15", // 90天后到复查期
"status": "active" // active / lifted
}]
改动的 3 个文件
config.py:加 EXCLUDE_REVIEW_DAYS=90(默认复查周期)。tagger.py:_load_exclude双格式兼容(旧扁平/新富),仅 status!='lifted' 生效——解除后的词自动重回候选池。review.py:apply_review 写富格式并合并保留已有 created(防"刷新复查期逃避复核");新增 3 个复核入口:list_due_exclusions(as_of) → 到期项 surface 成 exclude_due.mdlift_exclusion(label, term) → 解除,词重入候选池renew_exclusion(label, term, days) → 复查后确认仍是噪声则续期CLI
python -m pipeline.review due [as_of] # 列到期待复查项
python -m pipeline.review lift <label> <term> # 解除→词重入
python -m pipeline.review renew <label> <term> [days] # 续期
到期只提醒、不自动放行:review_by 过期不会自动解除排除(避免噪声悄悄回归),而是由 due 列表把它推到你面前,让你决定 lift 还是 renew。这样既杜绝"永久沉默",又不会"到期自动退化"。
lift「汽车」后 tagger 不再排除它、且不再进到期列表。renew 顺延 review_by,词仍保持排除。验证后已把 exclude_terms.json还原为你真实的决策(6 条全 active、复查期 2026-10-15,并补上规范化原因),exclude_due.md 重置为今日真实状态(0 条到期),临时验证脚本已清理。记忆已回写(今日日志 + 项目 MEMORY 的 pipeline 章节)。
下一步仍可选:复盘里的 P0(最长匹配抑制 + 常驻测试套件)、接 llm_tag、或接 IMA 真实写回试点。
问:复盘里的P0 — 直接提升判标准确率。
复盘 P0 里"直接提升判标准确率"那一项已落地并验证通过。
pipeline/tagger.py 的 rule_tag 新增"词内抑制"pass:
品类-汽车(词汽车/0.72) 和 品类-新能源汽车(词新能源汽车/0.9) 是两个不同 label,都输出,上义词噪声进人工队列。(权重降, 词长降) 排序,若某词 T_short 是已接受词 T_long 的子串且 T_long.weight ≥ T_short.weight,则抑制 T_short 对应标签。权重门槛防止"弱长词误杀强短词"(如 新能源 之类短强词不会被某个弱长词吃掉)。
verify_suppress.py,隔离排除表纯测机制)
无回归:重跑 run_samples.py,auto 标签与改动前完全一致,铁律(文件名含"端子"内容无→不打)仍 ✅。
verify_suppress.py 作为回归用例。问:复盘里的P0 — 可重复验证(防复踩)。
答:复盘 P0 的"可重复验证(防复踩)"已落地。
1. test_spec.md — 先钉契约,再写断言(根治坑 5:之前"契约没钉死就写断言"返工)
把 8 条契约写死:受控词表加载、判标封闭词表+词内抑制、铁律(文件夹非来源)、分叉阈值、审阅闭环语义(confirm/reject/pending)、排除可复核(到期只提醒不自动放行)、OCR 返回 str、测试隔离幂等。
2. test.py — 依赖零、幂等、不污染用户数据
python -m pipeline.test(全跑)/ clean(仅清理)/ <用例名>(单跑)exclude_terms.json。
exit=0,无 .test_bak 残留。exclude_terms.json(6 条决策:汽车/检测/质量/设计×2/管理)运行后字节级原样保留。python -m pipeline.test",不会再造裸脚本、不会裸眼验证。问:复盘里的P1 — 契约健壮性,P1 — 覆盖盲区。
答:复盘 P1 两块已全部落地并验证通过(9/9 用例 PASS、真实排除表字节级原样、python -m pipeline smoke 独立可用)。交付的 3 个文件已呈上:
pipeline/smoke.py — OCR 契约初始化 smoke(根治坑 4)pipeline/__main__.py — python -m pipeline [test|smoke] 入口pipeline/test_spec.md — 更新后的契约 spec(OCR 覆盖 + 铁律正例已钉死)问: P2(把"验证充分性清单"补进方案体检 Skill,跨项目防复踩)
答:复盘 P2 已落地:把"验证充分性清单"沉淀为方案体检的第 6 个体检维度,跨项目防复踩。
1. 方案体检 Skill(~/.workbuddy/skills/方案体检/SKILL.md)升级 v1→v2(5→6 步)
spec 再实现(根治坑 4 契约漂移)2. 全局记忆双向同步(防复踩关键)
这正是你最在意的"可执行性/防纸面陷阱"纪律的延伸:以前方案体检只查"概念有无载体、读写有无节点",现在补上**"验证是否可重复、不靠肉眼"**——因为 P0/P1 的坑 4/5/6 全是验证不充分返工,是比纸面更隐蔽的陷阱。今后任何项目跑「体检/自检/检查」会自动核查这 4 点,从源头杜绝"肉眼看报告就算验证过"。
python -m pipeline.test + 验证幂等/契约 spec ✅问:到目前为止,此项目进行到什么状态了,完成率有多少。
答:基于项目长期记忆与今日日志,给出完整盘点。


项目总目标是"N 套独立标签体系 + 1 份通用方法",但 N 取决于你提供的行业库名单(目前只给了 1 套《线束》)。因此分两个口径:
11_连接器端子 文件夹先跑(遵守"不读路径"铁律)优先把 D 收尾:接 IMA MCP 真实写回试点 → 首库真投产;同时你给其余库名单,我即可逐库套同一方法产出独立标签体系。要不要现在就开始接 IMA 写回试点?
问:接 IMA MCP 真实写回试点 → 首库真投产。
因IMA MCP是只读接口,不能写入,运行到一半停止了,看看能不能转用API Key来达成。
问:接 IMA API Key 真实写回试点 → 首库真投产。

无法实现自动打标,此项目先暂停待找到能自动打标的解决方案后再重启。