六个功能件 · 三层结构
架构
闭环由六个功能件组成,数据层是纯文件(JSONL/JSON),Web 层是薄壳。 除规则提取外全链路无模型依赖 —— 埋点和分析在任何环境都能跑。
8个命令行命令CLI Commands
12条 HTTP 路由HTTP Routes
2条埋点事件Ingest Events
5种修正原因Reason Labels
6个规则状态Rule States
76个测试Tests Passing
1处用到大模型Single LLM Call
SYSTEM MAP
一图看全:从一次人工修正,到一条能回流的规则。
左边是现网跑着的编目链路,右边是可被审核、可灰度、可回滚的规则。 中间四段流水线,每一段都产出可直接阅读的文件,而不是只留在模型里的印象。 顶上那条线是全系统的硬约束:AI 可以自由归纳,但让规则生效必须有人签字。
总体架构图(窄屏可横向滚动)
实线是已实现且有测试覆盖的环节;虚线是仍在路线图上的回流段。
功能件与数据流
| 件 | 职责 | 输入 → 输出 | 依赖模型 |
|---|---|---|---|
| F1 修正埋点 | 工作台每保存一次字段修改落一条记录;HTTP webhook 与进程内函数双通道 | 修正事件 → corrections.jsonl | 否 |
| F2 差异分析 | 高频错误字段排行、错误模式分布、来源分布、置信度分箱检验 | 修正日志 → 分析报告 | 否 |
| F3 规则提取 | 对样本充足的字段,用 LLM 归纳「条件 + 动作 + 理由」草案,强制附样本证据 | 分析结果 → 规则草案 | 是(支持 dry-run) |
| F4 审核与灰度 | 状态机流转 + 一键回滚,审核必须署名 | 草案 → 生效规则 | 否 |
| F6 效果看板 | 规则生效日前后对比:修正率是否下降 ≥20% | 日志 + 生效日 → 验收判定 | 否 |
| F9 冲突检测 | 新规则与已生效规则同字段同条件时告警(不阻断) | 规则库 → 冲突徽标 | 否 |
规则状态机
规则回流到哪一层
上游编目链路按职责分层(配置 / 采集 / 解析 / 字段生成 / 联网补全 / 输出写入)。
每条修正记录都带 field_layer 标注,规则据此精确回流到对应模块 ——
改一层,不动全链路。这是「白盒可局部优化」原则在架构上的直接体现。
| 层 | 职责 | 典型规则回流形态 |
|---|---|---|
| L1 数据采集 | 多源拉取原始数据 | 调整数据源优先级、补采集路径 |
| L2 数据解析 | 快照 → 结构化字典 | 修解析定位、加清洗规则 |
| L3 字段生成 | 映射生成业务字段 | 加归一化规则、调 prompt 约束 |
| L4 联网补全 | 跨源交叉验证 | 补跨语种检索、实体消歧策略 |
四条不可绕过的红线
1 · reason 非空
修正原因是唯一的训练标签,空值直接抛异常,前端下拉框不可选空。
2 · evidence 非空
规则入库必须附原始修正记录摘要,否则审核人无从判断。
3 · 审核不可自动化
状态机跳步抛异常;错误规则批量放大的风险远大于审核成本。
4 · 坏数据不丢
webhook 校验失败的 payload 进 deadletter 队列,修好 schema 可重放 —— 100% 落盘包括错误数据。
存储与部署形态
数据层刻意选了纯文件:修正日志是可 grep 的 JSONL,规则库是可直接人工审阅的 JSON。 原子写(临时文件 + rename)+ 进程内锁保证单进程一致性;部署约束为单进程, 规模上限明确(数十人工作台足够),复杂度换来的是全链路可解释、可审计、可手工修复。