원클릭으로
fact-extract
当用户说“提取事实 / 提取 fact / 从 PDF 抽事实”时激活。按确定性流程检查安装与配置后,默认直接用 fact-extract run 全流程提取。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
当用户说“提取事实 / 提取 fact / 从 PDF 抽事实”时激活。按确定性流程检查安装与配置后,默认直接用 fact-extract run 全流程提取。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
当用户要启动 agentic loop、使用 one-click auto、通过 Python API 调用完整流程、或在运行过程中接收 callback 和 heartbeat 事件时使用此 skill。如果用户当前主要是在准备或维护 `.xdev` 数据,先转到 xdev skill。
当文档内容过长无法一次查看、需要搜索关键词定位信息、或需要按页按节点浏览 DocJSON/PDF 结构时使用此 skill。适合与 xdev、agentic-extract 配合做长文档阅读与定位。
当用户要求更新 extract-agent 版本号、补 changelog、构建 dist、推送代码、或发布到 PyPI 时使用此 skill。只用于维护者发版,不用于日常 workspace 提取。
当用户需要准备或维护 workspace 数据、导入或同步 PDF、查看文档、定义 schema、管理标注、调试 program.py、或运行评估时使用此 skill。如果用户只是想启动 agentic loop 或通过 Python API 一键运行完整流程,转到 agentic-extract skill。
当你需要定义提取 schema、为文档标注数据、分析业务含义、生成业务指导文档时激活此 skill。在评估前必须先完成 schema 定义和数据标注。
当你需要编写或修改 program.py 提取代码、分析评估错误、调试提取逻辑、选择提取策略时激活此 skill。
| name | fact-extract |
| description | 当用户说“提取事实 / 提取 fact / 从 PDF 抽事实”时激活。按确定性流程检查安装与配置后,默认直接用 fact-extract run 全流程提取。 |
当用户表达以下意图时,直接使用本 skill:
fact-extract run。xdev run、agentic-extract run。llm-once(等价于 llm --max-chunk-chars 0,单次调用不分 bundle)。--no-reflect 可关闭。--section-mode auto 开启 LLM 全书段落分段(断点续跑、自动重试),--no-section-strict 允许跳过失败分组。uv tool install extract-agent
验证:
fact-extract --help
fact-extract 支持环境变量:
export FACT_EXTRACT_MODEL="<MODEL>"
export FACT_EXTRACT_API_BASE="<API_BASE>"
export FACT_EXTRACT_API_KEY="<YOUR_API_KEY>"
若未设置环境变量,执行时必须显式传:
--model--api-base--api-key已配置环境变量时:
fact-extract run \
--pdf "<PDF_PATH>" \
--planner-backend agentic \
--extractor-backend llm-once \
--max-workers 32 \
--facts-dir "<FACTS_DIR>"
未配置环境变量时:
fact-extract run \
--pdf "<PDF_PATH>" \
--planner-backend agentic \
--extractor-backend llm-once \
--model "<MODEL>" \
--api-base "<API_BASE>" \
--api-key "<YOUR_API_KEY>" \
--max-workers 32 \
--facts-dir "<FACTS_DIR>"
fact-extract --help执行后至少检查:
jq 'length' "<FACTS_DIR>/manifest.json"
ls "<FACTS_DIR>/sources" | head
ls "<FACTS_DIR>/plans"
判定标准:
manifest.json 存在且事实数 > 0sources/ 下有证据文件plans/<book_id>.json 存在llm-once 出现部分任务失败时,从 extract 阶段续跑
fact-extract run \
--from extract \
--plan "<FACTS_DIR>/plans/<BOOK_ID>.json" \
--extractor-backend llm-once \
--max-workers 32 \
--facts-dir "<FACTS_DIR>"
若无环境变量,补充 --model --api-base --api-key。
<FACTS_DIR>/:
plans/<book_id>.json:计划与任务状态parts/<book_id>/<task_id>/:分片中间产物manifest.json:最终事实清单sources/*.txt + *.json:最终证据(evidence 粒度,json 含完整属性)sections/<book_id>.json:段落分段结果(--auto-section 时生成)logs/agents/<book_id>/:planner/worker 对话与流日志(流日志包含 tool_use/tool_result)pendingdone 或 failed(并记录 attempts/fact_count/source_count/error)run-workers 默认仅执行非 done 任务;--all 会重跑全部任务并先置 pendinge1, e2, ...)<table> 格式作为一条 evidenceevidence_refs(如 ["e1", "e3"])source_idssource.txt 存 evidence 文本(段落或表格 HTML)source.json 包含完整属性:{"evidence_id":"e1","doc":"...","group":N,"paragraph_index":0,"kind":"section"}fact-extract enrich 是事实提取的后处理阶段,对已提取的事实进行结构化知识抽取。
事实提取完成后(manifest.json 和 sources/ 已生成),需要从事实中提取实体、属性、关系、事件时使用。
fact-extract enrich \
--manifest <FACTS_DIR>/manifest.json \
--batch-size 10 \
--max-workers 32
--batch-size(默认 10)控制每次 LLM 调用包含的事实数。支持断点续跑,checkpoint 按 fact 级别保存,batch_size 可随时更改。
<FACTS_DIR>/enriched/<fact_id>.json<FACTS_DIR>/manifest.enriched.json每条事实会被扩充四个字段:
{
"id": "fact_0001",
"summary": "孙悟空大闹天宫,打败十万天兵",
"source_ids": ["e0001"],
"entities": [
{"name": "孙悟空", "type": "人物"},
{"name": "天宫", "type": "地点"}
],
"attributes": [
{"entity": "孙悟空", "attr": "能力", "value": "七十二变"}
],
"relations": [
{"subject": "孙悟空", "predicate": "大闹", "object": "天宫"},
{"subject": "孙悟空", "predicate": "打败", "object": "十万天兵"}
],
"events": [
{"action": "大闹天宫", "agent": "孙悟空", "patient": "天兵天将", "location": "天宫", "time": null}
]
}
# 1. 事实提取
fact-extract run --pdf book.pdf --facts-dir facts
# 2. 关系提取
fact-extract enrich --manifest facts/manifest.json
# 3. 查看结果
jq '.[0] | {summary, entities, relations}' facts/manifest.enriched.json