下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/user_f0974107--ai-news-collector-xdj.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f0974107/ai-news-collector-xdj。每日 AI 科技日报 + 7天周趋势报告自动生成系统。纯规则引擎,零 API Key 零 Token,开箱即用。 — 从 36氪/量子位/InfoQ/钛媒体 4 大源抓取资讯,经 8 步智能过滤(去重→领域过滤→四维评分→智能摘要→主题分类→投资信号→日报生成→趋势分析),输出: — 日报:8 个板块(今日概览/核心观点/速读摘要/头条/主题分类/资讯速览/投资信号雷达/前瞻关注) — 周报:7 天跨日关联分析(主题热度/投资信号密度/活跃公司 TOP10/高价值主题排行/事件时间线) — 支持自动同步到 Obsidian 知识库。
参考 Anthropic Financial Services Morning Note 方法论,输出 Opinionated Take(观点驱动)而非信息堆砌。
阅读全文 (展开查看完整说明)
概述
AI 科技日报自动生成系统。纯规则引擎,零 API Key,开箱即用。
一句话介绍
每天自动从 4 大科技媒体(36氪/量子位/InfoQ/钛媒体)采集资讯,经过 8 步智能过滤,生成一份结构化日报,帮你 5 分钟掌握当天科技圈最重要的事。
效果展示
日报输出 8 个板块(v2.0 参考 Anthropic Financial Services 方法论优化):
📊 今日概览 — 价值分布 + 主题分布 + 投资信号统计
🧠 今日核心观点 — 最重要事件的综合研判(Opinionated Take)
🎯 今日X件事值得看 — Top5-7 速读摘要(一句话 ≤150字)
🔴 今日头条 — 重大事件详解
📂 主题分类资讯 — 按主题分组(AI大模型/具身智能/芯片/投融资...)
📋 常规资讯速览 — 标题 + 摘要
💰 投资信号雷达 — 融资/IPO/收购信号(🔥强烈/👀跟踪/📊参考)
🔮 前瞻关注 — 未来催化剂和待验证信号追踪周趋势报告
除日报外,每天采集结束后自动生成/更新 7 天周期周趋势报告,命名规则 weekly_trend_YYYY-Wxx(MMDD-MMDD).md(ISO 周编号)。
周报板块:
- 📋 本周概览 — 日报天数 / 资讯总数 / 头条数 / 投资信号数
- 📈 主题热度趋势 — 升温/降温/稳定主题 + 每日分布序列
- 💰 投资信号趋势 — 三类信号的7天密度变化
- 🏢 活跃公司 TOP10 — 头部公司提及次数 + 头条数 + 代表性标题
- 🎯 高价值主题排行 — 各主题(头条+重要)占比率条形图
- 📅 事件追踪时间线 — 跨多天的同一实体/事件发展链
周报按 ISO 周号命名,每周日最后采集后定稿,也可随时手动补跑
快速开始
# 1. 安装依赖
pip install -r requirements.txt
# 2. 运行采集(⚠️ 工作目录必须是项目根目录,非 src/)
cd ai-news-collector && python src/main.py
# 不要用 `cd src && python main.py`:会导致 paths 双嵌套,TrendAnalyzer 找不到日报
# 3. 查看报告
# 日报: src/reports/daily_news_YYYY-MM-DD.md
# 周报: src/reports/weekly_trend_YYYY-Wxx(MMDD-MMDD).md配置说明
编辑 config/config.yaml:
# 采集参数
collection:
max_final: 20 # 最终精选数量
# 关键词(按需增删)
keywords:
ai_ml:
keywords: ["AI", "大模型", "GPT"]
# Obsidian 同步(可选)
obsidian:
path: "" # 留空则跳过同步技术架构
RSS采集 → 关键词过滤 → 四维评分 → 智能摘要 → 主题分类 → 投资信号 → 报告生成核心特性:
- 四维评分:投融资35% + 技术突破30% + 市场影响25% + 战略10%
- 污染检测:自动识别快讯合集(如"8点1氪"),提取相关内容
- 三级降级:原文 → 搜索补充 → RSS摘要,确保每条都有摘要
- 否定语境:过滤"没有并购计划"类误报
RSS 源状态
| 源 | 状态 | 备注 |
|---|---|---|
| 36氪 | ✅ | 主要科技/投资资讯 |
| 量子位 | ✅ | AI 垂直媒体 |
| InfoQ | ✅ | 技术深度资讯 |
| 钛媒体 | ✅ | 科技商业资讯 |
环境依赖
- Python 3.10+
- 依赖包:
requests,feedparser,beautifulsoup4,loguru,schedule,pyyaml,python-dateutil - 无需 API Key(纯规则引擎)
FAQ
Q: 为什么某些源没有数据?A: 检查 config/sources.yaml 中对应源的 enabled 字段是否为 true。
Q: 如何自定义关注领域?A: 修改 config/config.yaml 中的 keywords 配置项,添加或删除关键词。
Q: 报告如何同步到 Obsidian?A: 在 config/config.yaml 中配置 obsidian.path 为你的 Obsidian 知识库路径。
变更记录
| 日期 | 版本 | 变更 | ||||||
|---|---|---|---|---|---|---|---|---|
| 2026-03 | v1 | 初始版本:7步流水线,四维评分 | ||||||
| 2026-04-03 | v1.1 | P0领域过滤:强排除机制 | ||||||
| 2026-04-04 | v1.2 | 投资信号系统:否定语境检测 | ||||||
| 2026-04-10 | v1.3 | 趋势追踪:7天趋势分析 + 周报 | ||||||
| 2026-04-17 | v1.4 | 摘要质量:污染检测 + 降级策略 | ||||||
| 2026-04-22 | v1.5 | 架构优化:记忆渐进式加载 | ||||||
| 2026-04-24 | v1.6 | 质量监控:评分模型评估 | ||||||
| 2026-05-08 | v1.7 | P3速读摘要:「今日X件事值得看」 | ||||||
| 2026-05-19 | v1.8 | 报告优化:板块位置调整 | ||||||
| 2026-05-21 | v1.9 | 代码迁移至 skill 目录 | ||||||
| 2026-05-22 | v1.10 | 聚合标题拆分子项匹配 + 社会比赛优化 | ||||||
| 2026-06-01 | v1.11 | Anthropic 方法论注入:新增「今日核心观点」「前瞻关注」板块,参考 Morning Note 的 Opinionated Take 理念 | ||||||
| 2026-07-04 | v1.12 | 路径健壮性:config.yaml 绝对路径 + ReportGenerator PROJECT_ROOT 兜底,修复周报数据断流 Bug;SKILL.md 补充周报能力描述 | ||||||
| 2026-07-12 | v1.12.1 | 渲染层截断修复:_write_news_item/_write_news_compact 在 _smart_truncate 后补省略号前先 rstrip(',;、:'),消除 ,.../、... 生硬结尾(续 v1.12 摘要截断优化) | ||||||
| 2026-07-17 | v1.12.2 | 摘要串味兜底:新增标题-正文主题一致性校验(_extract_title_subject_entities/_is_title_summary_inconsistent)。仅针对"抓取原文"摘要,三条件判定(标题主语实体全缺 + 摘要存在标题外强势实体 + 该实体不在 RSS 原文)——拦截混排快讯流导致的串味(如 7/17 文远知行 WITT 摘要被蚂蚁集团内容串味),回退用 RSS 原文摘要。离线测试 20 条仅命中真实串味、零误伤 | ||||||
| 2026-07-19 | v1.12.3 | 修复 v1.12.2 守卫误伤:v1.12.2 的 _extract_title_subject_entities 第3步 3~6字 n-gram 未做功能字切分,会把"交给阿里""把灵魂交"这类动宾短语误当标题主语实体,导致"苹果AI入华,把灵魂交给阿里、百度"被误判串味→回退过短RSS→整条被备份新闻顶替(新闻丢失)。修法:新增 _SUBJECT_FRAG_SPLIT,按功能字/虚词(把让使给与和及的了的着过又叫为是在对向从以于当将被已因由比跟同替帮,不含交/用——交会误切"交通银行"、用会误切"通用/应用")切分主语片段后再提 n-gram。离线验证:苹果AI入华→[](不再误判)、逐际动力/银河通用/星宸科技/文远知行/智元机器人/交通银行均正确捕获;重跑 7/19 日报确认苹果AI入华已保留、真实串味(星宸科技/数智周报/菲利华)仍被拦截、截断残留0 | ||||||
| 2026-07-20 | v1.12.4 | 游离引号剥离:_clean_summary 新增两步清洗——① 句末标点(。!?)后紧跟的引号(直/弯)视为被截断文章遗留的悬空闭引号,直接剥除(合法闭引号绝不会紧跟句号,故不误伤"Token工厂"类成对引号);② 句首悬空开引号也剥除。触发场景:7/18 PPIO 摘要 工厂。" 自 2024 的悬空闭引号。验证:直/弯引号游离场景均修复、成对引号("Token工厂"/"大模型")保留、句首悬空开引号剥除;重跑 7/20 日报确认悬空引号0、截断残留0、合法成对引号保留34处 | ||||||
| 2026-07-29 | v1.12.5 | 聚合流跳过原文抓取(B1 优化):批量抓取阶段 if not self._is_aggregate(title) 跳过聚合/导览类条目(点氪/氪星晚报/早报/晚报)的原文抓取——实测其文章页正文为无标点连写快讯沙拉,抓取只会更长、且仍处于沙拉内,抓回后做串味清洗无效。聚合条目统一走 RSS 描述 + 方案A 子段提取。重跑 7/29 日报确认聚合条目不再触发无谓抓取 | ||||||
| 2026-07-30 | v1.12.6 | 抓取重试加固:原 range(2) 改为 range(3)(max_retries=3),失败重试加指数退避 time.sleep(0.5*(attempt+1)),并用 for...else 区分"成功 break"与"全程失败"。规避并发抓取偶发网络抖动导致的漏网(如长鑫类可抓文章跌入 fallback)。单测三层(3次失败兜底/全程失败/HTTP500重试)全 PASS;重跑 7/30 日报 fallback 3→1 | ||||||
| 2026-07-29 | v1.12.7 | 署名泄漏修复:扩 _clean_summary 署名标签集为 作者/撰文/编辑/整理/记者/出品/文,支持链式匹配 + 尾随无标签连署人名(如"杨轩");加防误杀前瞻约束("文"后须接人名特征,避免误杀"文|档"类合法内容)。根治"编辑|"署名泄漏。单测 6 泄漏样本 + 4 误伤样本全 PASS | ||||||
| 2026-08-01 | v1.12.8 | 方案A 聚合串味修复:新增 _extract_roundup_section(title, text),对聚合/导览条目(如 9点1氪)的 RSS 描述(多子新闻拼接沙拉)做标题感知子段提取——只切出与标题主题最匹配的那一条子新闻,邻单元高权重扩展还原完整句。关键词用 2~3 字 N-gram 滑动窗口 + 停用词过滤(规避中文无分词把整段当超长关键词的坑),优先按空白切分(真实导览空格分隔)、无空白退回按标点切。重跑 8/01 日报确认"9点1氪丨马斯克回应特斯拉剥离中国业务"从拼接沙拉变为干净特斯拉否认摘要(含 Musk "这是假新闻" 原话),污染检测拦截 0、署名泄漏 0 | ||||||
| 2026-08-02 | v1.12.9 | 数智周报摘要张冠李戴修复(三重根因):① 污染检测新增标题 marker——_is_summary_contaminated 除摘要内栏目标识外,标题含「数智周报」也判污染;② 抓取深度按标题类型分型——_fetch_article_content 对 周报/早报/晚报/日报 类深抓 80 段/6000 字(普通单篇仍 15 段/2000 字),修复周报正文极分散(段落 65-66)被浅抓漏掉的问题;③ _extract_title_subject_entities 先剥离 【栏目】 前缀再抽主语实体,避免 _SUBJECT_SPLIT 在开头 【 处把主语片段切空(【数智周报】长鑫科技… 只抽到 Kimi 漏掉长鑫科技/字节 → 一致性校验误判串味回退 RSS)。另 _ensure_clean_ending 保留原文省略号(避免剥离后按列表分隔符二次截断吞末项)、_clean_summary 删钛媒体元数据行。落地验证:数智周报条 fetched、覆盖长鑫/字节话题、无截断无串味 | ||||||
| 2026-08-03 | v1.12.10 | 事件级去重:_deduplicate 新增 is_same_event——抽取「主产品+版本锚点」(qwen38/gpt5/kimi3,小数 X.Y 与整数/字母版本均覆盖)+ 事件动词,共享强锚点即判同事件(跨源同事件自动合并),并保留 -Max/-Pro 变体后缀(qwen38max ≠ qwen38)避免基座与变体误并。修复 8/03 头条重复:InfoQ 与量子位两条「阿里Qwen3.8正式发布」实测标题 Jaccard 0.5 < 0.6 漏判。单测 8 用例 + 全量交叉扫描 0 误共享对 | ||||||
| 2026-08-04 | v1.12.11 | 融合双源摘要:去重策略从「保留质量更高者」升级为「融合」——事件级同事件命中(is_same_event)时 _fuse_news/_merge_summaries 句子级去重合并双方 generated_summary(保留各自独有角度)、来源 / 连接、summary_source 任一 fetched 即 fetched、标题/链接/层级取 value_score 更强者、第二链接存 extra_links。纯标题相似度 ≥0.6 且非同事件仍走旧逻辑(保留更优者),避免硬融。单测 PASS;8/04 起对新报告生效 | ||||||
| 2026-08-04 | v1.12.12 | 2 字品牌串味漏判修复:_KNOWN_BRANDS 白名单(苹果/华为/小米/腾讯/阿里/字节/百度/美团/京东/拼多多/比亚迪/宁德/蔚来/理想/小鹏/三星/微软/谷歌/亚马逊/特斯拉/英伟达/台积电/大疆/宇树/智谱 等 40+ 个)在 _extract_title_subject_entities 命中标题即加入 title_ents;_GENERIC_CN 追加量词/金融词(亿美元/万美元/人民币/估值/市值/销售额),杜绝「亿美元」类碎串碰巧命中串味摘要导致一致性校验误放行。修复 8/04「苹果在印度年度销售额首次突破100亿」被 36氪快讯流串味(Base Power 融资内容)漏判。真实数据回归 9 条 fetched 仅 1 条回退、零误伤 | ||||||
| 2026-08-04 | v1.12.13 | 摘要截断三项修复:① 新增 src/health_check.py 健康检查脚本——模拟 MD 渲染截断规则(紧凑 200/详情 500 字 + _smart_truncate)预判"报告中会半句截断"的条目;② report_generator._smart_truncate 新增层1b——80 字窗口内无句号时扩大到 200 字往前找最后一个完整句(宁短勿残),消除「…刘士武:」式半句硬切;③ summary_generator._extract_key_sentences 圆桌/对话类文本过滤——检测到 ≥2 个「人名:」+ 圆桌/嘉宾/主持人词时,过滤名录/开场白/职位罗列句(名录段无句号被分割成巨型句、靠标题全关键词复述拿高分挤掉真观点句的根因)。另 _merge_summaries 判重归一化空格("8月3日" vs "8 月 3 日")。修复 8/04「从实验到产线」圆桌实录摘要(名录 232 字 → 核心观点 212 字,渲染截断落在完整句) | ||||||
| 2026-08-12 | v1.12.14 | ① 36氪源适配:官方 feed 自 8/05 被自家 WAF(JS challenge)全站拦截,改走 RSSHub 公共实例镜像 /36kr/newsflashes(主 rssforever + 备 slarker),并新增 tech_media.py per-source max_per_source 限流(快讯限 8 条/日防挤占长文源);② _clean_summary 元数据清洗通用化:通用作者元数据格式(<英文作者> 日期 时间 · 来自XX 全文N字,覆盖钛媒体 ITValue/Chelsea_Sun)、InfoQ「本文字数/阅读完需」、句首+中段「适合XX阅读。」推荐语(角色词限定防误伤);③ 摘要兜底增强:备用池耗尽前先重试已抓原文(不再输出"详情请点击原文查看"一句话);④ 正文抓取语义容器放宽:_SEMANTIC_SELECTORS(article/.article-content/.post-content/.entry-content/[class*='article'])内 ≥150 字直接采用,修复 InfoQ(Nuxt SSR)/量子位(class="content")短正文被相关度误杀;⑤ 英文内容过滤:_is_english_dominant 拦截外媒全英文转载稿进备用池;⑥ 署名清洗贪婪修复:公众号名边界改空格/句号(s+ 归一化后 [^n]* 曾吞掉整篇正文);⑦ 健康度统计口径:原文抓取成功按 fetched_content ≥100 字 计 + 新增「摘要采用原文」行(快讯类不再低估);⑧ 代码精简(import re 提顶/删冗余 body 提取/分支合并)。8/12 实测:backup 顶替 8→3(历史最低)、fetched 5→9(历史最高),元数据残留 0、英文条目 0、截断 0 半句 | ||||||
| 2026-08-17 | v1.12.15 | 紧急修复版(修复 v1.12.5-v1.12.14 持续 11 天的分析器失效 bug):① 核心 bug——ai_analyzer.analyze() 调用不存在的 _filter_by_keywords(v1.12.5 评分迁移 NewsScorer 时方法被删、调用未清理)→ AttributeError → main.py 兜底取 RSS 前 20 条,关键词/领域过滤链全失效,日报混入非 AI 噪音(8/03-8/14 持续);删除冗余调用(领域过滤 _filter_by_domain_relevance 已涵盖关键词过滤);② 评分恢复——恢复 matched_categories 赋值(原方法职责,NewsScorer 关键词分依赖),修复全条目同分 53.0 排序退化;③ 词表补词——ai_ml +23(具身智能/机器人/Agent/Claude/DeepSeek/开源 等)、ev +6、semiconductor +7,评分关键词覆盖率 30%→100%;④ 排除模式补全——EXCLUDE_PATTERNS 新增 infra_public/entertainment/military/space_misc 4 类(基建/口岸/娱乐/军事/航天科普噪音清零);⑤ backup 去重——_prepare_backup_articles 用 _is_similar_to_selected(标题 Jaccard ≥0.6)跳过与已入选 top20 重复的候选(转载稿不再重复进日报)。8/15-8/17 验证:0 ERROR、评分区分度恢复、噪音 0、原文抓取 75-85% | ||||||
| 2026-08-21 | v1.13.0 | 新基线版(v1.12.15 后 9 刀聚合,升次版本):① 摘要信息收尾——_extract_key_sentences 遍历全候选(不再限前 5 句)+ 末句信息信号保障(数字/发布/核心/机制等),修复"摘要只截开头引入段没总结到位"(8/18 WorkSwarm/AI中转站案例);② 中文作者元数据——_clean_summary 规则支持中文作者名([u4e00-u9fa5]{2,8},8/19 维嘉科技"公司观察"案例);③ 正选英文过滤——_filter_by_domain_relevance 补 _is_english_dominant(原仅 backup 池,8/19 Municipal 条走正选漏网);④ 上市语境区分——STRONG_TECH_KEYWORDS + 「正式上市」无强科技封顶关注级 + is_ipo_context 无强科技封顶/有强科技 +3 分(8/19 秦MAX 新车上市误判头条);⑤ 城市排名不占头条——标题含「中国第X城/全国第X城」(含中文数字)is_breaking=False(8/19 合肥两 IPO 案例);⑥ 投资类降权——capital_flow 强排除(南向资金/券商合伙/弃购/增资)+ earnings_noise 普通排除(扭亏/净利/营收增长)(8/19,投资日报 skill 分管);⑦ 乱码检测——_is_garbled_text(u0080-u024F 高字节占比 >30%)+ 抓取正文乱码时 RSS 摘要兜底(8/19 IDC 条);⑧ 公司锚点去重——extract_event_signature 加 _KNOWN_BRANDS 品牌锚点 + is_same_event 强公司事件词分支(上市/大涨/暴涨/融资等,8/20 宇树双条案例);⑨ 非科技政策排除 + 投资信号收紧——non_tech_policy 普通排除(住房/楼市/消费券/就业/粮食/民政)+ strong.contextual 移除"融资"(8/20 上海住房规划误打强烈信号)。8/21 验证:0 ERROR、投资类 0/20、噪音/重复双 0、乱码 0、抓取 85% | ||||||
| 2026-08-27 | v1.13.1 | 摘要质量 + 巡检自动化(8 刀聚合):① 摘要分档加长——常规 300 字、🟡关注/🟠重要/🔴头条 400 字(生成层 _generate_concise_summary(tier=) + 渲染层 report_generator 分档截断 + health_check 分档预判同步,8/21 Boss 参考投资日报 500 决策);② 短摘要兜底——生成后 <80 字且 fetched_content>200 自动用 fc 重生成(8/21 Anthropic"思维病毒" 59字→192字案例);③ 口语化检测——_COLLOLLQUIAL_WORDS(emmmm/救啊/真就/炸裂 等 17 词)+ _extract_key_sentences skip_ratio/filter_colloquial(剔除口语句+跳过文首闲谈重提取),检测统一放所有生成路径之后(8/21 千寻/Jeff Dean/GPT-3时刻案例);④ 证券监管排除——securities_reg(自律监管/异常交易/交易所监管/证监会处罚,8/21 深交所案例);⑤ 跑完即巡检——main.py 新增 post_run_quality_audit():采集报告生成后自动检查口语化/短摘要/元数据/乱码→自动修复→重生成报告→不可修标记待人工(8/22 Boss 建议"跑完就马上巡检");⑥ 元数据补充清洗——图片来源:标注 + arxiv 论文地址(8/22);⑦ 文娱排除扩充——电影节/电视节/动漫展/游戏展/世界技能大赛/锦标赛/运动会(精确词避免误伤 GOAI,8/23);⑧ 以旧换新排除 + 裸「上市」语境——non_tech_policy 加"以旧换新/国补/消费补贴";consumer_launch_bare(裸"上市"+售价/车型/版本 特征封顶关注级,8/27 长城 H9 案例)+ is_ipo_context 补全(科创板/创业板/主板/北交所上市/纽交所/纳斯达克)。8/22-8/27 验证:自动巡检连续 4 天零人工干预、0 ERROR、口语化 0、投资类 0 | ||||||
| 2026-09-17 | v1.13.3 | 采集冗余 + 噪音旁路防御(5 刀):① fallback 镜像——_collect_rss 主源重试耗尽自动切 fallback_url 备用镜像(36氪 配置 hub.slarker.me,9/13/9/15 两次实战切换成功),钛媒体 max_per_source: 8(36氪缺位时爆量 60% 案例);② 金融投顾否决——标题含「证券投顾/投顾/量化投资助手/炒股」→ is_breaking=False(9/11 九方智投"股道智航"案例:「正式发布」命中 breaking 信号词旁路分数 + STRONG_TECH 裸词"ai"被蹭,score 45.6 上 breaking);③ 定增排除补全——capital_flow 补「拟定增/定增募资/募资不超」(9/15 奥瑞德案例)+ backup 顶替路径补 EXCLUDE_PATTERNS 领域排除检查(_prepare_backup_articles 延迟 import AIAnalyzer,旁路防御补全:原只查英文/重复,9/17 贝斯特"IPO观察 拟募资"经 backup 绕过 capital_flow 强排除实证);④ 巡检假警报优化——post_run_quality_audit 对 fc<200 且 summary_source=rss/backup 的快讯静默放行(9/8 三星/9/9 Quantinuum 案例:51-59 字要素齐全的快讯被误标待人工);⑤ 合入云端 platform_antitrust 强排除(Hermes 9/16 修复:美团携程"全网最低价"蹭"华为赛力斯"上头条,平台公司名×监管词双向组合)。9/5-9/17 验证:连续 10+ 天 0 ERROR、fallback 两次实战 0 缺源、定增回归 6/6 全拦、金融投顾回归 4/4、快讯假警报 0 | ||||||
| 2026-09-19 | v1.13.4 | 摘要残留 + 政策噪音补漏(4 刀):① non_tech_policy 补「公积金/住房消费」(9/18 住建部住房公积金条穿透,逐模式验证零命中;普通排除不误伤含核心词的科技政策);② 署名正则两处字符类补 丨(U+4E28 CJK 竖线替代字)——原 `[ | |] 不含该字致「作者丨青滏,编辑丨六子」泄漏(9/18 实证),人名类排除 丨 防跨分隔符吞人名 + L1715 标题副标题同缺口;③ _clean_summary 补「图源」模式(图源[::]?s*[^s,。;;!?]{1,20} 限长停在标点防吞正文,9/18 "图源长鹰存储官方微博" 头条案例)+ main.py 巡检 meta_pat 同步补 图源/作者丨/编辑丨(巡检主动发现);④ promo_event` 强排除补活动预告形态「日期|城市|…在现场/沙龙/专场/闭门会」(9/18 苏州FDE 案例,6/6 无误伤,先观察不扩论坛/大会词)。单测 tests/test_v1134.py 8/8 PASS(未打补丁 3 FAIL),9/18 真实数据回归存量署名残留清零 | |||||
| 2026-09-19 | v1.13.5 | 头条分数底线 + 非科技内容双补漏(4 刀):① is_breaking 分数底线——breaking 需 eff_score >= 40(notable 下限),防"正文顺带提及信号词"旁路(9/19 东方Gelato 商业评论 score 17.7 凭摘要"破产的钟薛高"命中「破产」上头条案例,第三例;Gelato 落 routine,官宣类重磅 ≥45 不受影响);② financial_noise 补「涨价函/发布涨价通知/调价通知」(9/19 安森美涨价函零核心词穿透案例;台积电涨价等命中核心词的产业事件保留);③ 新增 platform_ops 普通排除类「色情引流/严打色情/网络水军/封号N万」(9/19 闲鱼严打色情公告案例;抖音AI风控类命中核心词保留);④ 署名标签补「运营」+ _clean_summary 补「头图|」清理 + 巡检 meta_pat 补「头图/运营」(9/19 Gelato 条"运营|陈佳慧 头图|网络"残留案例)。9/19 云端 20 条全量回归:恰好排除安森美/闲鱼 2 条、其余 18 条保留、正当 breaking 全部不受影响 | ||||||
| 2026-09-19 | v1.13.6 | 灰色地带科技语境守门(零新依赖):① TECH_CONTEXT_WORDS 语境词表(~140 词纯领域名词)+ has_tech_context()——领域过滤第三道守门:零核心词+零排除命中+零科技语境词 → non_tech_context 拦截,终结"零命中灰色地带默认放行→逐案补正则追不上变体"结构缺口(安森美/外卖配送/华谊易主/减持财报类全命中,604 条真实数据回归拦 80 零误杀);② CORE_KEYWORDS 提升类属性 + backup 顶替路径同步守门(旁路防御补全);③ ASCII 短词手写边界替代 b(Python3 w 含中文,"把Agent塞进研发"类中文紧邻英文词 b 失效);④ CORE_KEYWORDS 补中文「谷歌」+ 语境表补开源/无人车/智算/优必选/宇树/可灵/大疆等漏词。单测 tests/test_v1136.py 32/32 PASS | ||||||
| 2026-09-23 | v1.13.7 | 核心词边界 + 抓取污染二次校验(6 刀,源自云端 9/22 三根因分析):① 核心词判定 has_core_kw 裸子串改手写边界封装 _has_core_keyword()——"ai" 命中 dairy/said/email 等任意含 ai 英文词致 has_core_kw 恒真、整层普通排除与守门被静默绕过(9/22 DQ 餐饮条穿透实证;v1.13.6 边界修复只覆盖语境守门一处调用点,本版补齐);② 抓取正文二次污染校验——污染检测原只作用 RSS 描述,36氪 newsflashes 列表页整页快讯流漏网、页脚信号词把面板条顶成头条(9/22 实证),现污染时提取标题相关内容、提取不到回退 + digest_markers 补页脚指纹;③ _clean_summary 相邻重复句折叠(量子位导语原样重复,仅折叠完全相同紧邻句);④ capital_flow 补 ETF 净流入形态 + market_ticker 补恒指/收评中文收盘形态(行首锚定);⑤ 语境表补商汤/Netflix/Neocloud/大装置(防 Netflix Conductor 类零语境误杀)+ 删「显示」一词多义("数据显示"曾放行 QDII 财经条);⑥ backup 顶替路径核心词判定同步边界(旁路防御)。验证:云端 A/B 双轨 + 本地 683 条回归零误伤 + 9/23 实战污染提取 2 次;单测 tests/test_v1137.py 20/20(含 fixtures 冻结样本)+ v1136 套件 33/33 | ||||||
| 2026-09-24 | v1.13.8 | 主题分类词边界 + 噪音形态 + 报告空态(4 组 9 处 3 文件,源自云端 9/23 四根因分析):① TopicClassifier.classify() 关键词匹配裸子串改手写边界(_topic_matchers 派生)——"PE" 命中 TypeSafe/"Meta" 命中 metadata 把非投融资内容误归「投融资事件」(9/23 Redis 条 conf=64 实证;短词假命中根因家族第 4 处调用点,ValueClassifier 价值层无此问题);② 三类噪音强排除——macro_stats 补乘用车销量统计(乘联/中汽协)、新增 legal_proceedings(海外司法程序,苹果 Epic 最高法院陈词案例)、promo_event 补荣誉榜单/剪彩/揭牌(均为真命中核心词但主体非科技的形态);③ 语境表补数据中心/向量/hnsw/太空/数据集(Pinterest HNSW/太空数据中心误杀恢复),刻意不补裸「数据」防复活 v1.13.7「显示」修复;④ 报告空态兜底——头条+重要全空时 _generate_insight 取全量最高分前3、头条板块显式说明"未达 70 分门槛"(只修结构不动门槛)。验证:云端 A/B 双轨 6 项目标全命中 + 本地 703 条回归零误伤 + 9/24 A/B 重跑主题误判归位 3 条;单测 tests/test_v1138.py 14/14(fixture 9/23 冻结样本)+ v1136/33 + v1137/20 全绿 | ||||||
| 2026-09-29 | v1.13.9 | 句式级口语化舍弃 + 多义陷阱 + 豁免收紧 + 转载头清洗(4 组 7 处 2 文件,源自云端 9/28 分析):① _STYLE_FEATS 6 类句式特征(?!连用/语气词/be_like/对话体/梗词/箭头链)+ 条目级舍弃(≥2 类判口语化,单日上限 3 条保险丝不回补)——17 词白名单抓不住句式级口语化(9/28 玉兔条 6 类全中白名单 0 中,backup 源文即口语化写作);② 语境表删裸词「系统」("系统性分析"放行债券基金条,与「显示」同多义家族);③ 普通排除豁免收紧为标题级核心词(摘要蹭五核心词不再豁免已命中的财经排除,9/28 统计局条)+ macro_stats 补国家统计局 + st_risk ST 加前边界(Falcon TST 误伤);④ 微信转载头/字数标注清洗 + 全局近似重复句去重(按句切分去空白归一,≥12 字门槛,9/28 虎嗅空格差异重复实证)。验证:云端 A/B + 本地 741 条回归(口语化命中仅玉兔条零误伤)+ 9/29 A/B 重跑 18→17 唯一消失=玉兔条;单测 tests/test_v1139.py 15/15 + v1136/33 + v1137/20 + v1138/14 全绿 | ||||||
| 2026-09-30 | v1.13.10 | 摘要长度统一 + 版式统一 + 跨天去重(5 刀,云端已实施/本机主干合并):① 摘要长度统一 500 三层同步(生成层 target/渲染层 cap/巡检层模拟,原 高价值 400/常规 300 分档在容器统一后不齐显形;实测中位 408、≥400 字 15/20)② 版式统一(紧凑条目摘要 > 引用块→普通段落,灰黑两套视觉消失,引用块 16→4)③ 转载头正则修正(作者名改 CJK{2,4} 防连吞正文 + 原文标题《》组可选,虎嗅短式转载头漏网修复,4 形态 4/4)④ scorer.py:106 裸子串改 ASCII 手写边界(根因家族第 5 处,防御性零行为变化)⑤ 跨天去重(新增 src/analyzers/crossday.py:dedup_history.json 记录 link+标题指纹+推送日期保留 7 天,filter 剔除近 7 天已推送、同日重跑不阻塞;量子位 feed 窗口约 2.7 天致连续多日重复 10% 实证;main.py 两处挂钩异常不阻塞)。配置:虎嗅启用走 RSSHub 镜像(官方 feed 被阿里云 WAF 拦截勿直连)+36氪 fallback 换 ktachibana。验证:云端五源 A/B + 本地 9/30 A/B(≥400 字摘要 0→15 条、虎嗅贡献 4 条含 1 breaking、五源分布 6/4/4/4/2);单测 tests/test_v11310.py 8/8 + 四套老用例全绿,累计 97 项 | ||||||
| 2026-10-01 | v1.13.11 | 虎嗅移动端抓取 + 内容源门槛 + 摘要结尾治理(3 组 8 处 2 文件,云端方案+本机增量合并):① _fetch_huxiu_mobile(curl 子进程+m.huxiu.com+iPhone UA+WAF 特征检测+JSON-LD NewsArticle articleBody 提取)+ _fetch_article_content huxiu 分支失败回退——阿里云 WAF 只认 TLS 指纹(curl 放行 requests 被拦),镜像 description 503 字拼接体治本,实测 8 次全成功;② 口语化三层(_STYLE_FEATS 补词+第 7 类表情标记 [doge] 0-6→0-7 / backup 候选把关 ≥1 类淘汰——两次漏网全走 backup 路径规律确认 / colloquial_density 语气字密度埋点统计标定)③ 内容源门槛新机制(SOURCE_TITLE_CORE_KEYWORD_GATE:虎嗅要求标题命中核心词,+SOURCE_GATE_ENTITY_KEYWORDS 24 词专有实体豁免——虎嗅 AI 深度长文标题软叙述但正文必提实体,7 条实测区分度 100%,backup 同款检查旁路防御);④ 反馈#8 转载头作者名 ASCII 分支(机器之心 Synced 英文署名漏网修复);⑤ promo_event 补「直播回顾」「|QCon」+ entertainment 补「票房 | 影业 | 观影人次」(10/1 Boss 圈 4 条低价值穿透全部拦截);⑥ _ensure_clean_ending 双修(逗号回退 ≤30 字损失上限防切语义段+兜底补句号——列表帖碎片标点截断治理)。验证:虎嗅 4 条 rss 拼接体→fetched 干净正文、Boss 圈 4 条全拦、notable 4→8、20/20 结尾完整;单测 tests/test_v11311.py 12/12 + 五套全绿累计 118 项 | ||||
| 2026-10-11 | v1.13.12 | 摘要结尾治理深化 + 兜底穿透防线 + 噪音形态补漏(4 组 2 文件,v1.13.11 后一周实战增量):① _lead_tail 引导词回退共用化——冒号/顿号/逗号三分支统一接入(方面/如下/前情/内幕/细节/解析白名单),截断后残留引导词自动回退前一句末标点(10/3"数据方面:"、10/7"这件事儿的前情"双案例)② _with_period 统一出口——步骤 4 所有回退路径输出补句号(此前逗号/冒号 return 绕过步骤 7 兜底,10/8"不代认可"实证),连续多日结尾完整率 100% ③ fallback 残句剔除——三级降级全失效且兜底摘要 <50 字整条剔除(10/8 量子位 rss 14 字碎片+正文 0 字+backup 池空实证,宁缺毋滥)④ 噪音形态:market_ticker 补 `^(?:美股 | 港股 | A股)收盘[::](收盘不在行首漏网)+ financial_noise 补机构策略文 [u4e00-u9fa5]{2,6}(?:证券 | 建投 | 基金 | 资管 | 研究)[::]`(标题含核心词仍豁免不误杀);⑤ 口语化增补:语气词+哎哟喂/赢麻了/好耶/哭死/蚌埠住了/笑不活了/麻了、梗词+掰打/脚踢/一键三连/都让让、表情标记圆括号白名单变体((doge)/(滑稽) 等——通配会误伤 (AI)/(GPT))。验证:连续 5 天实战全绿零复发(10/9 疑点 0/14 最干净、10/10 fetched 率 95% 创新高+口语化舍弃实战生效、10/11 自动巡检+修复一体化首次真实触发+36氪 SSL 异常 fallback 自动接管);单测 tests/test_v11311.py 15/15(跨天去重用例改相对日期防过期)累计 106+ 项 |
| 2026-10-15 | v1.13.13 | 汇总类强排除 + 截断残句治理(云端方案合并,2 文件+2 新测试):① news_digest 晨报/早报汇总类强排除——4 条白名单形态(【钛晨报】式/daily 早报式/带日期后缀/行首汇总词+分隔符)+ FORCE_EXCLUDE(晨报标题必含核心词普通排除被豁免架空;Boss 10/14 拍板方案 C——汇总类=多条一句话快讯打包非独立故事档位错配整条排除;云端单测 17/17+历史回放 235 条 0 误伤)② 截断残句治理(STEPX 条"WorkBud。"实证——fetched 恰 2000 字硬切腰斩 WorkBuddy+补句号伪装完整句):_truncate_at_boundary(lookback=300) 边界回退替换两处硬切(best_content=text[:char_limit]/return text[:2000])+ extract 切句后源文本末尾无句末标点→最后一段判残句不装填(口语化过滤前执行;不能以字母数字结尾判定);③ 10/13 形态增补:promo_event 补 确认出席(QCon 讲师官宣变体)、口语化补 ??/!! 连用。新增测试 test_v11313_digest.py 16 项+test_v11313_truncation.py 13 项;全套 15+15+14+20+33+29 项全绿;重跑 10/15 A/B:STEPX 残句消除(尾部"…更丰富的使用体验。"完整句)。云端 EDR 阻塞部分已由本机补齐(tempfile 用例 10/4 相对日期修复+当日重跑验证) | ||||||
| 2026-10-17 | v1.13.14 | 同事件双条目治理 + 备用池旁路关闭(云端方案合并,2 文件改造+新增 event_match.py+2 新测试):① 事件级判定补两盲区(10/15 STEPX 双头条实证——Jaccard 词集只取中文丢掉 STEPX/Neo 且品牌首发不在品牌表+无版本号→签名交集为空):A 大写英文产品锚点(CamelCase/全大写词提为产品键+共享事件动词判同事件;须在原始 title 匹配 lower 后大小写丢失;_GENERIC_TOKENS 33 词通用缩写排除防"A发布Agent平台"vs"B发布Agent手机"误合;含数字大写词跳过——Qwen3 式已被版本号分支覆盖,否则 qwen38max/qwen38 共享 qwen3 误合——①g 回归用例实测抓到)+ B Jaccard 词集补英文 token(混合相似度 0.2→0.43,加深层)② 备用池旁路关闭——事件级双源融合正确合并后,被融合"消化"的 P1 仍活在原始候选备用池中(_prepare_backup_articles 从未去重候选准备),顶替时被当新条目顶回→双头条重现;_is_similar_to_selected(8/17 字符级 Jaccard 0.6)补事件级签名判定 ③ 结构性重构:事件判定提取 src/analyzers/event_match.py(MODEL_NAMES/EVENT_VERBS/KNOWN_BRANDS 迁入,summary_generator 保留 _KNOWN_BRANDS 别名兼容),去重合并+备用池拦截两处共用防双实现漂移。落地实证 2 新坑:upper 正则 b 中文紧邻失效("STEPX首款"——Python3 w 含中文,手写边界 (?<![A-Za-z0-9])...(?![A-Za-z0-9])——裸子串家族新场景);"Neo" 首字母大写非 CamelCase(条件放宽为首字母大写+generic 过滤)。新增 test_v11314_event_anchor.py 7 项+test_v11314_backup_bypass.py 8 项(决定性实验:STEPX 对 is_same_event True+端到端备用池过滤);全套 92 项全绿;重跑 10/17 A/B 20→20 零差异零误拦。遗留:10/17 山姆门店分号拼接汇总帖(无"早报"字样,news_digest 形态缺口+占 breaking)——v1.13.13"刻意不收分号"取舍实锤,候选下版处理 | ||||||
| 2026-10-21 | v1.13.15 | 密度级口语化舍弃 + 分源房格阈值 + 评分层罚分(云端方案合并,2 文件+1 新测试):实证 10/19 清华条(密度 0.64%,10+ 处口语标记全不在词表,7 类句式只中 1 类→穿透🟠档)——根因:弥散性锐评体 vs 点状强特征的结构性错配,词表白名单追新词慢半拍。分源房格洞察(回扫 15 份日报 284 条):高密度条目 5/5 全出量子位(二态分布 87 条 ≈0 / 9 条 ≥0.35),其他四源硬零。四刀:① 舍弃块"句式 ≥2 或密度 ≥分源阈值"联合判定(量子位 0.35 / 其他 0.5,7 样本标定:正经 0 / 边缘 ≤0.35 / 口语化 ≥0.55)② _particle_density 静态方法统一出口(埋点/罚分/舍弃三处共用)+ 密度正则 +蛮 ③ 评分层罚分(Boss 提案):_calculate_scores 对 title+RSS摘要算密度(分源 0.4/0.25 起罚)+ 句式 hits 阶梯罚分最高 −15——top20 排名层软降级,生成后硬舍弃退为兜底 ④ 词表扩充:句级+傻眼/浅浅/这玩意儿/哗哗、语气词+搞了个/浅浅/傻眼/这玩意儿/干活儿、表情白名单+(笑)/(苦笑)/(流泪)/(头大);刻意不加:"哈"(哈雷/哈工大误伤)、"咱"单字(密度层已管)、"干活儿"句级(机器人干活儿可能正经)。云端诚实记录:n-gram 基线方案失败撤出(OOV 无判别力,重启条件 ≥10 万字符累积);栏目级锁定调查(量子位无栏目归类,密度行为指纹替代,9/9 历史案例全中)。新增 test_v11315_density_gate.py 14 项(清华实锤双通道/分源差异/评分罚分/罚分上限);全套 175 项全绿(10 套);重跑 10/21 A/B:密度层实战首杀——「Claude 新模型曝光」条句式 0/7 但密度 0.50%≥0.35% 被移除(纯密度判定捕获弥散体),零误罚 | ||||||
| 2026-09-05 | v1.13.2 | 采集健壮性 + 噪音治理(4 刀):① RSS 解析重试——_collect_rss 带重试解析(RSSHub 公共实例偶发返回不完整 XML mismatched tag → 整源归零,9/4 36氪 0 条案例),collection.rss_max_retries(默认2)/rss_retry_delay(默认3s)可配,无条目自动重试仍失败才告警;② 乱码检测扩展——_is_garbled_text 补 cp1251 西里尔系(u0370-u04FF,9/5 趋境科技"еӣҪдә§"案例),原仅 latin1 系(u0080-u024F,8/19 IDC 案例),同一"编码误判"根因两种症状全覆盖;③ 财经噪音强排除——新增 macro_stats 强排除类(非农就业/失业率维持/CPI/PPI/PMI/集资额同比/IPO集资/亿万富翁,内容蹭"AI热潮"等核心词逃过普通排除故须强排除,9/5 三条穿透案例)+ market_ticker 补「多数(?:上涨 | 下跌)」两字形式与「(美股 | 港股).*(盘前 | 盘后).*(涨 | 跌)」模式(9/5 美股盘前行情案例)+ traditional_industry 补页岩油/油气田/原油(9/5 城堡收购页岩油案例);④ per-source 采集限流——max_per_source 支持按源覆盖(内置示例 36氪 8、InfoQ 6),治理单源挤占 top20(InfoQ 曾 10/20=50%)。9/2-9/5 验证:四源最均衡 30/25/25/15、0 ERROR、财经回归测试 5 拦 1 留、乱码三样本回归全过 |
方法论来源
v1.11 起,日报输出理念参考 Anthropic Financial Services 的 Morning Note 和 Thesis Tracker 框架:
- 观点驱动而非信息堆砌:每条重要信号应回答"这意味着什么"
- 信号 vs 噪音区分:明确标注哪些是 actionable 的事件,哪些只是背景信息
- 前瞻思维:不只总结今天,更要指出明天该关注什么