muse-agent-example/docs/plans/2026-08-22-阶段F-第二部分-知识链派发-抽取智能体.md

2.9 KiB
Raw Blame History

阶段 F 第二部分:知识链派发——抽取智能体

日期:2026-08-23 状态:已完成(离线绿 + 真实派发通过) 上游事实:候选 164 经决策通道采纳(署名 qingse),第 3 章正典落库(5131 字);接受意图 queue_chapter_extraction。

1. 意图

抽取智能体接入框架派发(边界合同:智能体框架记模型事件/raw,生产编排记知识草稿与业务回执),替代抽取直调链的生产使用;直调链保留为对照/回退,终态裁决按总 plan 用数据说话。

2. 设计

生产编排:注册抽取运行 → 读正典章全量正文 + 既有实体名
  ↓
派发抽取智能体(单次派发,探索与产出同一循环):
  输入 = 全量正文(注入,不经工具——工具读取会截断)+ 既有实体名 + 抽取合同
  工具白名单 = read_chapter_text、search_entities(查重与回读核验用)
  产出 = 结构化抽取 JSON(entities/relations/state)
  ↓
机械校验:normalize_extraction(证据必须正文逐字片段)
  失败 → 一次修复重派(只纠证据绑定,不新增条目)→ 仍失败 → salvage 保守收口
  ↓
落库:persist_extraction(muse_knowledge_draft,草稿态)→ 人确认转正(:8766)

关键取舍:

  • 正文注入而非工具读取:read_chapter_text 超长截断,证据逐字绑定要求全量正文,注入是唯一可靠路径;工具留给查重探索。
  • 单次派发(非两阶段):抽取产出是结构化 JSON,无长篇碎片化风险;探索与产出同循环。
  • 机械校验与落库全部复用既有可信适配层(normalize_extraction/salvage_extraction/persist_extraction),不新造合同。
  • 修复重派一轮(证据绑定是机械问题,对齐直调链既有语义);仍不合法走 salvage;salvage 失败失败关闭。
  • 证据归属:派发运行 {run_id}-extractor-v{N} 记事件/raw(trigger_detail 带 productionRunId),草稿落生产抽取运行。

3. 改动台账

文件 动作 原因
.agent/skills/extract-chapter-knowledge/scripts/dispatch_extraction_bridge.py 新增 抽取任务包装配 + 派发编排(校验/修复/落库/收口)
.agent/skills/extract-chapter-knowledge/scripts/extract_via_dispatch.py 新增 派发入口(显式 provider/model,真实调用需授权)
tests/skills/extract-chapter-knowledge/test_dispatch_extraction_bridge.py 新增 离线测试(7 项)

4. 验证结果

  • 离线测试 7/7 通过。
  • 真实派发(作品 12 第 3 章,extract-knowledge-w12-c3-20260823T150511,catproxy-anthropic/claude-opus-5,medium):
    • v1 派发完成但证据绑定未过 normalize_extraction → 桥自动触发 v2 修复重派 → 通过(修复路径首次真实验证)。
    • 18 条实体草稿 + 1 条叙事状态草稿落库(status=pending),看板与经验确认通道 :8766 可见,待人审转正。