- docs: 删除 CLAUDE.md / continuation.md / english-news-plan.md 及旧版 intlnews_usage.*,
统一迁移到 docs/{README,architecture,quickstart,usage,pipeline,configuration,deployment,development,faq}.md
- README: 精简为仓库入口,指向 docs/
- configs/sources.yaml: 更新注释指向新文档
- .env.example: 修正 DashScope Embedding 端点说明
Pipeline 修复:
- dedup/llm/embedding/vectorstore/reporter: 过滤 M2 no_content / 空正文,避免污染下游与 Qdrant
- dedup/pipeline: 改为先写唯一文件再写指纹,避免崩溃导致文章永久丢失
- crawler/orchestrator: sources_crawled 改为“尝试数”,成功数 = crawled - failed
- crawler/storage: write_index_jsonl 从文章路径推断日期,修复跨天/测试路径问题
- scheduler/pipeline: STEP_TIMEOUTS 实际生效(SIGALRM)
- scheduler/reporter: emb_count 排除 index.json;日报跳过无原文事件
- vectorstore/pipeline: payload 增加 source_ids;--recreate --all 时空日期也重建 collection
- app/cli: extract/dedup/translate/embed/index/pipeline 支持 --date;embed/index 支持 --all;crawl 全源失败返回非零
- scripts: domestic_full/crawl_8g/crawl_2g/pipeline 安全加载 .env;M1 全失败不标记且最终退出码=1
4.4 KiB
4.4 KiB
使用手册
1. CLI 命令(uv run en-news)
| 命令 | 功能 | 常用参数 |
|---|---|---|
crawl |
M1 抓取新闻 | --source/-s <id> 只抓单源;--profile/-p 指定 Profile |
extract |
M2 正文提取 | --source/-s <id> 只处理单源;--date/-d 指定日期 |
dedup |
M3 三层去重 | --date/-d 指定日期 |
translate |
M4 翻译+事件抽取 | --date/-d 指定日期 |
embed |
M5 向量生成 | --date/-d 指定日期;--all 处理全部日期 |
index |
M6 写入 Qdrant | --recreate 重建;--date/-d 指定日期;--all 全量回灌 |
search |
M6 语义检索 | 必需 query;--top-k 返回条数 |
report |
M9 生成日报并入库 | 无 |
pipeline |
M2→M6(+日报) | --skip-report 跳过日报;--date/-d 指定日期 |
mcp-server |
M8 启动 MCP 服务 | 无 |
示例:
# 只抓取 CNBC
uv run en-news crawl --source cnbc
# 单步正文提取
uv run en-news extract
# 搜索
uv run en-news search "美联储" --top-k 5
# 重建 Qdrant collection(慎用!会清空现有向量)
uv run en-news index --recreate
# 指定历史日期处理
uv run en-news translate --date 20260801
uv run en-news embed --date 20260801
uv run en-news index --date 20260801
# 全量回灌历史向量(--recreate 搭配 --all 时只会在首个日期重建 collection)
uv run en-news index --all
uv run en-news embed --all
2. Shell 脚本
| 脚本 | 用途 |
|---|---|
scripts/domestic_full.sh |
国内服务器全流程:M1 抓取 + M2→M6 管道 + 日报 |
scripts/domestic_full.sh --resume |
同上,但跳过当天已完成步骤 |
scripts/pipeline.sh |
仅 M2→M6 管道 + 日报 |
scripts/pipeline.sh --resume |
同上,支持步骤级断点续跑 |
scripts/domestic_crawl_8g.sh [source] |
8G headful + HTTP 代理抓取 M1 |
scripts/domestic_crawl_2g.sh [source] |
2G headless stealth 轻量抓取 M1 |
scripts/cleanup_logs.sh |
清理 14 天前日志 |
scripts/domestic_sync.sh [date] |
从海外服务器同步 raw 数据(海外已停用,保留兼容) |
2.1 全流程示例
cd /home/pi/intlnews
# 每天定时任务可执行
bash scripts/domestic_full.sh
# 手动中断后继续
bash scripts/domestic_full.sh --resume
2.2 步骤级断点说明
步骤状态记录在 data/run_state/{YYYYMMDD}.state:
- 每成功一个步骤追加一行,如
M1_crawl、M2_extract、M3_dedup、M4_translate、M5_embed、M6_index、report。 --resume只跳过已标记步骤;失败步骤不会标记,所以会从失败处重试。- 跨天自动失效,状态文件按天隔离。
3. MCP 服务(M8)
MCP 是给 Cherry Studio / Claude Code 等 Agent 客户端接入的研究工具层。
启动:
uv run en-news mcp-server
提供工具:
| 工具 | 功能 |
|---|---|
search_news |
语义检索新闻 |
search_by_stock |
按美股代码检索相关事件 |
search_by_sentiment |
按情绪倾向(利好/利空/中性)过滤检索 |
get_today_events |
获取当日重要投资事件 |
get_stats |
获取系统统计概览 |
具体接入方式由客户端决定,通常是在 MCP 配置中指向 uv run --directory /path/to/intlnews en-news mcp-server。
4. 日报查看
日报已结构化写入 MySQL:
- 主表:
news_reportreport_type = 'intl'ai_summary为 AI 日报摘要stats为 JSON 统计快照
- 明细表:
news_eventsection = 'intl'- 包含标题、摘要、来源、情绪、重要度、URL
可通过 SQL 查看最新日报:
SELECT id, report_date, generated_at, ai_summary
FROM news_report
WHERE report_type = 'intl'
ORDER BY report_date DESC, generated_at DESC
LIMIT 5;
5. 日志
- 全流程日志:
logs/domestic_full_{YYYYMMDD_HHMMSS}.log - 管道日志:
logs/pipeline_{YYYYMMDD_HHMMSS}.log - 运行时也实时输出到终端。
快速查看最近日志:
tail -100 logs/pipeline_$(ls -t logs/pipeline_*.log | head -1 | sed 's#logs/##')
6. 常见操作组合
| 目标 | 命令 |
|---|---|
| 只抓取新闻 | bash scripts/domestic_crawl_8g.sh |
| 从已有 raw 跑全管道 | uv run en-news pipeline --skip-report |
| 增量补齐翻译 | uv run en-news translate(自动跳过已有) |
| 只生成日报 | uv run en-news report |
| 搜索知识库 | uv run en-news search "关键词" |
| 启动 MCP | uv run en-news mcp-server |