Releases: Elisabeth15501/ai-weekly
Release list
v4.0.0 — 安全整改闭环 + 代码健康 + 可发布性
ai-weekly v4.0.0 — 安全整改闭环 + 代码健康 + 可发布性
发布日期:2026-09-25
Commit:aaa19a0(main)
Slug:ai-weekly(SkillHub)/ @clawhub_<handle>/ai-weekly(ClawHub 同步)
一句话
彻底清零可公开安全问题、建立防复发合规门禁、消除技术债,并把技能文档精简到 ClawHub 8192 token 上限以内。
Security(已清零,可公开发布)
- P0-1 客户端模板注入面(DOM 覆盖式 XSS)孪生补齐 escapeHtml/safeUrl/jsStrInAttr,12 项转义回归测试守护。
- P0-2 服务端
market.py三处 URL/标题裸插值(存储型 XSS)+ 4 处同类漏网(</script>突破、属性内 JS 字符串、href 缺协议白名单、CLI 文本裸插值)。 - P0-3 TLS 证书校验全局关闭恢复为默认校验证书链与主机名。
- P0-4
deploy_ghpages.py部署凭据由 argv 改为GIT_CONFIG_*环境变量注入,令牌不进ps。 - P0-5 删除
.github_tokenclassic PAT 回落分支,凭据来源改为gh auth token(不落盘)>$GITHUB_TOKEN/$GH_TOKEN。
Compliance(防复发)
- P1-1 私有预检门禁
ai-weekly-publish-gate上线(编码下架教训词族 / 「解决访问限制」叙事 /--proxy写成"恢复访问"等坑;publish 后--learn回灌闭环)。 - P1-2 修复门禁自身误报:扫描循环排除 dev-only 文件(门禁单测含负面样例「翻墙教程内容」),并把这些文件排除出发布包。
- P1-3 页脚来源名单与
DEFAULT_*_SOURCE对齐;AIGC/免责标识齐备。 - P1-4
validate_checks/keywords.py的check_xss_safe()加固(查裸<script与on*属性逃逸)。
Changed(代码健康 P2)
- P2-1 下沉
canon_key到无依赖叶子模块canon.py,消除循环依赖。 - P2-2
leaderboard_snapshot.py的 best-effort 读取改用cli_utils.load_json_soft降级。 - P2-3 清理死代码(零引用
types.py、4 个零引用工厂及ERR_*常量)。 - P2-4 抽出快照/缓存子系统到
leaderboard_snapshot.py,leaderboard.py725→592 行(re-export 保兼容)。 - P2-5 陈旧阈值统一收敛到
const.py(=3)。 - P2-6
leaderboard_fetch.py注释与值对齐。 - P2-7
refresh_snapshot.py硬编码个人路径改为AIWEEKLY_WS_SNAPSHOT环境变量。
Docs(P3-1)
SKILL.md由 ~16k tokens 精简为 ~2.6k tokens(ClawHub 8192 上限内);完整内容迁至references/SKILL_full.md,第十节声明面对齐未丢失。
验证
pytest全量 50 passed(含 12 项转义回归 + 6 项客户端模板静态闸门)。compliance_check.py现报 ✅ 无 BLOCKER / WARN。- 安全修复端到端以恶意 CLI 参数实跑生成器,payload 均未原样落地;改动前后整页渲染逐字节等价。
- TLS 影响实测:33 个数据源开启/关闭校验结果集完全一致,SSL 失败 0 例。
完整改动
git log a77e023..aaa19a0 --oneline:bump 4.0.0 + 合规门禁误报修复 + SKILL.md 瘦身 + P2 代码健康整改(详见 CHANGELOG.md [4.0.0])。
v3.6.1 — 合规整改 + 发布前合规门禁(建议所有用户升级)
ai-weekly v3.6.1 — 合规措辞整改 + 发布前合规门禁
发布日期:2026-09-22
前置版本:v3.6.0(2026-09-22,市场图服务端 SVG 轨)
⚠️ 本版为合规导向的强制升级,建议所有用户升级。
这一版解决了什么
2026-09-22 18:21,本技能在 SkillHub 被判定「内容审核不通过:违法犯罪」并下架。
自查确认:问题不在功能,在文档措辞。 本版完成整改,并把「发布前没人检查措辞」
这个根因本身也补上了——新增一道可执行的合规门禁。
问题定位
判定链路是三段式的:
文档出现网络访问规避类敏感词(7 处 / 3 个文件)
→ 文档同时给出出站代理参数的配置示例
→ 该示例的用途被描述为「改善对海外源的访问」
→ 被判定为「提供规避网络管理的方法」→ 违法犯罪
技能功能本身完全合法(读公开 RSS、读公开榜单页面),但文档把它叙述成了
"帮你访问被阻断资源"——功能被叙事拖下水了。
补充解释一个疑问:CHANGELOG 里 3.4.x 那次「合规化」为什么没救回来——
那次改了部分表述,但敏感词本身留着了,而词才是触发器。
Changed
- 移除网络访问规避类敏感词共 7 处 / 3 个文件:该类词在国内内容语境中法律含义明确,
容易被判定为「提供规避网络管理的方法」。相关段落改写为中性表述——不再把海外源的
可达情况描述成需要解决的问题,而是明确为预期内的降级路径 - 出站代理参数说明重新定位:
--proxy/HTTPS_PROXY改为
「企业内网要求全部出站流量经统一代理」这一通用网络架构的适配说明
(pip / npm / git / curl 均具备的标准 HTTP 参数),并明写
「仅用于合法的企业内网出站场景,不提供也不支持任何规避网络管理措施的能力」 - 方案优先级重排:海外源不可达时的路径改为
「接受降级(推荐)→ 自备数据注入 → 企业内网代理」,删去把配置代理置顶的导向 - FAQ Q17/Q18 重写,删除「为访问英文 RSS 源而配置代理」这类建议性表述;
deploy.py、mirror.yml、manifest.json、news_site_template.html同步去敏感化 utils.py原注释中的不当措辞改为客观描述:部分站点对自报爬虫 UA 返回 429,
改用常规 UA 以正常获取公开 RSS- 运行期提示与 CLI 帮助同步收口:
diagnostics.py的四条「人话提示」、
generate_site.py的--proxy帮助文案、render.py的快照时效告警、
fetch_ai_news.py的源不可用提示,均不再把出站代理与「改善对海外源的访问」绑定,
统一改为「企业内网出站」定位 + 「预期内的降级路径」叙述
一个容易漏的点:文档层改完不等于收工。运行期打印的提示字符串、
--help文案
同样在平台语义审核的范围内——第 7 处修改就是这么找出来的,整改时务必连这些一起扫。
Added
SKILL.md §9.0《网络访问合规声明》
明确写入:本技能不提供、不指导、不支持任何规避网络管理措施的能力;不使用非公开接口、
不破解访问控制、不伪造身份绕过鉴权;海外源不可达时,以「降级到国内源 + 随技能附带的
离线快照」为既定行为,并在报告中如实标注来源与快照日期。
scripts/compliance_check.py —— 发布前合规门禁(208 行)
把本次事故的规则固化成一道可执行的检查——此前发布链路里没有任何环节会检查措辞,
这才是事故能发生到上架的根本原因。检查四类,命中 BLOCKER 即退出码 1:
| 类别 | 内容 |
|---|---|
| BLOCKER | 网络访问规避类敏感词。中文按子串匹配;英文按词边界匹配 |
| WARN | 把功能描述成「解决某类访问限制」的违规叙事(6 条正则) |
| INFO | 出站代理提及,提示人工确认为「企业内网」定位 |
| SECRET | 疑似凭据泄漏(GitHub Token / API Key / AWS Key) |
另附 --dir 模式的发布产物卫生检查(凭据文件 / 本地记忆 / 缓存目录)。
设计要点:规则表以 base64 编码存放。 因为检查工具若把敏感词字面写进源码,
它自己就会被同一条规则判违规——这正是本次事故的教训。
门禁上线即抓到两处真问题:① 本 CHANGELOG 的 3.6.1 条目在「描述移除了什么」时
又把敏感词写了回去;② 规则表的ssr子串匹配误伤了translations_offline.json里的
swissre(瑞士再保险)——已改为英文词边界匹配。两处均已修复。
Unchanged
功能零变更:出站代理能力保留(标准 HTTP 客户端能力,并非本技能特殊功能),
RSS / 榜单抓取逻辑、降级链路、全部 CLI 参数与输出格式均未改动。
验证
- 敏感词全量扫描归零(含技能生成产物
AI_News_2026-09-21.html) compliance_check.py:0 BLOCKER / 0 WARNpytest:21 passedvalidate_report.py:25/25 通过- 残留的 2 处
proxy系 Chart.js 库内部_proxy变量名,与网络代理无关
升级建议
建议所有用户升级,尤其是从 SkillHub 等国内平台获取本技能的用户——
旧版文档中的措辞可能导致技能在平台上被判定违规。
无破坏性变更,直接覆盖即可。
v3.6.0 — 市场图表不再依赖 JS:新增服务端 SVG 轨
ai-weekly v3.6.0 — 市场图表不再依赖 JS:新增服务端 SVG 轨
发布日期:2026-09-22
前置版本:v3.5.3(2026-09-22,渲染修复批)
本版是图表渲染的一次架构性改动:6 张市场图从「只能靠 Chart.js 画」变成
「服务端先画好、Chart.js 再叠加增强」。任何查看环境都能看见图——这是本版唯一的目标。
为什么是 3.6.0
v3.5.3 把「图表不显示」诊断成高度塌缩,加了 height: 320px !important。这个诊断是错的,
而且制造了新问题:Chart.js 按父元素量画布尺寸,父级 .chart-card 高 541px,CSS 又把显示
压到 320px → 位图 520×541 对上显示 320,图被纵向压扁 1.69 倍。
真正的定位方法不是继续调高度,而是症状归类:
| 观察 | 推论 |
|---|---|
| 把 JS 全关,新闻卡 / 分类标签 / 排行榜行全部归零(它们都是 JS 客户端渲染) | —— |
| 但用户的症状是「新闻和排行榜正常,只有图表空白」 | JS 跑得起来 |
| 那么缺的就只剩 Canvas 2D(或 Chart.js 那一段) | 受限渲染环境(预览面板 / WebView / 隐私插件)拦的就是它 |
所以正确的修法不是「修高度」,而是去掉对 Canvas 的依赖。这是本版的立项理由。
Added
市场图双轨渲染(新模块 aiweekly/charts_svg.py,337 行)
| 轨 | 实现 | 何时生效 |
|---|---|---|
| SVG 默认轨 | 服务端直接画出 6 张内联 SVG 写进静态 HTML | 始终可见,零 JS / 零 Canvas,禁 JS 也行 |
| Canvas 增强轨 | Chart.js 逐张建图成功后才翻转 | 现代浏览器下叠加,悬停 tooltip 等交互不丢 |
- 6 张图(全球/中国规模与融资、赛道结构、头部集中度)全部覆盖
- 每根柱 / 每个数据点内含
<title>,无 JS 也能悬停看数值 - SVG 带
role="img"+aria-label(无障碍);沿用currentColor+fill-opacity
自动适配亮/暗主题,不用维护两套配色 preserveAspectRatio="xMidYMid meet"(不能用none,否则文字被拉伸变形)
防回归校验
validate_checks/market.py 的 M3 项新增硬校验:class="chart-svg" 必须出现 6 次,
且不得残留 [CHART_SVG_ 占位符。
Fixed
- 图表在受限环境不可见:原 6 张图完全依赖 Chart.js,环境不执行 JS 或
getContext('2d')
返回 null 时,initCharts()只剩「发现 Chart 不存在 → return」,页面留下 6 个空白框。
现由服务端 SVG 轨兜住 - canvas 纵向压扁 1.69×:每张 canvas 外包一层定高
.chart-canvas-wrap(320px),
让 Chart.js 直接量到 320px,位图与显示尺寸一致 initCharts()增加 Canvas 2D 可用性探测 + 整体 try/catch,建图失败自动回退 SVGupdateChartColors()不再无条件假设chart.options.scales.x/y存在
Changed(内部重构)
market.py新增resolve_chart_data():两条轨共用同一份默认值与序列,
消除「两轨各写一份默认值」的漂移风险- 顺序约束(易踩):
initCharts()里.charts-live类必须在new Chart()之前加——
包裹层要先有真实高度,否则 Chart.js 量到隐藏态的 0 高而塌缩
验证
三环境验收(headless Chromium 实测):
| 模式 | charts-live |
可见图 | 位图 vs 显示 |
|---|---|---|---|
| A 正常 JS | true |
6/6 | 520×320 vs 320 —— 无压扁 |
| B JS 关闭 | false |
6/6 | 走 SVG 520×320 |
| C Canvas 2D 被屏蔽 | false |
6/6 | 走 SVG 520×320 |
C 模式通过 hook
HTMLCanvasElement.prototype.getContext模拟隐私插件 / 受限渲染器 ——
正是「预览面板里图表空白」的场景。
validate_report全量 25/25 通过- 模块体量:
charts_svg.py337(新)、market.py709、render.py546、
generate_site.py465 —— 全部在 P0#4 上限内
升级建议
无破坏性变更,直接覆盖即可。如果你此前遇到过「图表空白」,本版就是针对它的修复;
即使你的浏览器一切正常,也会改用 Chart.js 轨,观感与交互完全不变。
v3.5.3 — 渲染修复批:能力卡归位 + 图表可见 + 开源榜兜底
ai-weekly v3.5.3 — 渲染修复批:能力卡归位 + 图表可见 + 开源榜兜底
发布日期:2026-09-22
前置版本:v3.5.2(2026-09-22,能力卡如实反映分发状态)
本版解决的全是「打开报告才会发现」的问题:三处渲染缺陷 + 两处工程守护回位。
功能语义零变更,改的只是「报告看起来对不对」。
这一版解决了什么
一句话:报告的逻辑内容早就是对的,但它长成了不该长的样子。
能力卡挤在标题正下方、市场图表是 6 个空框、开源模型榜的排名列显示 undefined——
这三件事都不影响数据正确性,但任何一个人打开报告的第一眼就会觉得它没做完。
主要变更
修复 1:能力卡从顶部移到报告末尾
原能力卡在 header 正下方,读者第一屏看到的是「本技能支持什么」而不是「本周发生了什么」,
观感上像一份未完成的半成品。现移到页脚之上,阅读顺序变为「新闻 → 排行榜 → 市场 → 能力说明」。
修复 2:市场图表不可见
原 canvas 只给了 max-height: 300px 而无显式高度,maintainAspectRatio: true 在父容器
无定高时算出的高度趋近 0,页面留下 6 个不可见的空框。本版改为固定 height: 320px +
6 张图 maintainAspectRatio: false。
⚠️ 事后修正:这个诊断不是根因。真正的原因是查看环境不执行 JS / 拿不到
Canvas 2D 上下文,本版的定高方案既没解决它,还引入了「位图 520×541 vs 显示 320」的
纵向压扁 1.69× 副作用。两项都在 v3.6.0 一并修掉了——请以 v3.6.0 的说明为准。
修复 3:开源模型排行榜渲染出 undefined
实时抓取的开源榜(LLM-Stats / HuggingFace)返回的行缺 rank 字段,模板直接取
r.rank 就渲染成 undefined。本版做双保险:
- Python 端:
leaderboard_fetch.inject_open_source_ranks()按当前顺序补1..n - JS 端:
renderLbBoards()渲染前对rank == null补i + 1
两层都生效——即使只有一层跑起来,页面也不会出现 undefined。
内部重构(行为等价)
- CLI/IO 适配层下沉:
generate_site.py的_CountingWriter/_parse_csv_arg/
_parse_num_arg迁至新模块aiweekly/cli_utils.py,主入口 502 → 465 行,
回到 P0#4「主入口 ≤500 行」硬守护之内(此前该守护已亮红) leaderboard.py拆模块收口:开源榜 rank 兜底逻辑落在leaderboard_fetch.py,
leaderboard.py收在 800 行(上限 800),未越线
验证
validate_report.py全量 25/25 通过(含模块体量、XSS、排行榜 schema、图表厚度)- 模块体量守护:
generate_site.py465(上限 500)、leaderboard.py800(上限 800)
升级建议
无破坏性变更,直接覆盖即可。本版之后建议一并升级到 v3.6.0——图表可见性问题在那一版才真正解决。
v3.5.2 能力卡如实反映飞书推送 + 自动化启用国内数据
变更(v3.5.2)
Changed
- 能力卡如实反映飞书推送状态:新增
--feishu-push开关,启用时标注「飞书推送(每周一·应用机器人)已启用」;仅显示状态与推送身份类型,绝不暴露 token / user_id / 群名(开发者隐私) - 受众分角色摘要修正误标:渲染层在
audience_summary为 None 时回退内置默认三视角(开发者/产品/自媒体)始终渲染;能力卡原误标「未启用」,现如实标注「已启用」 - 自动化(每周一 09:00)第 3 步默认启用:国内口径市场数据(已核实静态快照——信通院规模 9188/12000/17000 亿、新浪创投Plus 融资 391.51/656.04 亿)+
--feishu-push标注
仅改动 render.py / generate_site.py 两文件(能力卡逻辑 + 一个 CLI 开关),自动化 prompt 同步更新;推送代码(feishu_connector.py)未动。
v3.5.1 数据状态条披露抓取日期
修复(对抗式代码审查 A1/A4)
数据状态条(_build_data_status_bar)闭环「数据可信」立项目标:
- #1 实时源披露抓取日期:原实现丢弃 live 源的
snapshot抓取日期,仅展示「N 源实时」,削弱「数据可信」目标。现「数据源明细」对每个实时源列出「抓于 YYYY-MM-DD」,与快照源一致可核查。 - #2 缓存缺日期兜底:快照源缺失
snapshot时原静默不标,现显式标「未知日期」,不藏不确定性。 - #3 去除双重转义:原实现
name已html.escape又在明细处二次 escape;现统一在渲染时转义一次。
仅改动 scripts/aiweekly/render.py 一个函数体,签名/注入点/返回类型不变。
v3.5.0 — 数据可信批:时效徽章 + 数据状态条
对标 SkillHub 评测(v3.4.6 总分~4.73,短板 trust.domestic 4.4 / accuracy 4.6)落地的数据可信批:把数据口径的不确定性显式摊开。
• A1 每榜时效徽章增强:区分 🇨🇳 实时 / 🌐 实时 / 实时 与缓存 🇨🇳 快照@日期
• A4 数据状态条(服务端预渲染):报告顶部注入 [DATA_STATUS_BAR],输出「N 源实时 · M 源快照」并展开快照明细(含采集日期),禁 JS 也可见;无数据显式标注
• 修复:移除与模板原有 .lb-src-tag.live 重复的 CSS 规则,避免选择器覆盖冲突
守护:generate_site.py 维持 499 行,validate_report 25/25 全过
v3.4.7 — 译文源默认开启 + 能力卡 + 代理探测
对标 SkillHub 评测(v3.4.6 总分~4.73)落地的低成本 P0 批:
• F1 译文源默认开启:--translations-url 默认指向已发布 translations.json,新增 --no-remote-translations 开关,无本地模型开箱即得中文
• F2 离线译文包 translations_offline.json(175 条,仓库内),断网可译
• F3 新闻卡显式标注「未翻译·原文保留」,不再把英文假装成中文
• E1 能力自检卡服务端预渲染(禁 JS 可见)
• S3/C1 系统代理自动探测 utils.resolve_proxy():CLI>env>系统代理,异常静默降级
• S6 SKILL.md 补 TOC/限制总表/Demo 链接/目录职责边界
守护:generate_site.py 499 行,validate_report 25/25 全过
v3.4.6 — 历史周报回填中文 + 发布可拉取译文源
v3.4.6 — 历史周报回填中文 + 发布可拉取译文源
发布日期:2026-09-10
Commit:181945c
关联 PR/Issue:SkillHub 评测「可信任度·国内适配性」收尾
问题诊断
GitHub Pages 上周报没有中文翻译,实测发现并非全部缺失:8/24、8/31 两期全裸(9/07、8/17 正常)——根因是翻译依赖本地 Ollama 且失败静默,历史期一旦漏翻就永久是英文。RSS 保留期仅 ≈1 周,已无法回抓 2~3 周前的 news.json。
本次 v3.4.6 给出三层修复:外科手术式回填 + 可拉取译文源 + 翻译机制重构。
Added
scripts/backfill_translations.py(新):外科手术式回填——直接从已发布 HTML 提取NEWS_DATA,补译后原样写回。不需要原始 news.json。支持--check/--dry-run/--no-ollama/--emit-source- 远程译文源
translations.json:发布到 gh-pages,175 条 73KB,按原文 URL 索引 +title_key标题指纹校验。没有本地翻译模型的用户用--translations-url即可拿到中文 - 翻译三级取值:本地缓存 → 远程译文源 → 本地 Ollama。前两级都不需要本地模型
- SKILL.md § 8.4:翻译机制、译文源用法、历史回填命令
deploy_ghpages.py --extra:随周报一并发布附加文件
Fixed
- 短标题译文被误杀:
_ollama_translate阈值原固定 3 汉字,"Mother tongue"→"母语"(2字) 被判失败。新增MIN_CJK_TITLE=1 translate_items缓存全命中时return 0:改为返回复用条数Translator.stats["translated"]从不更新:新译条数永远显示 0- 回填不完整:只改
NEWS_DATA时「本周市场信号」卡仍是英文。新增patch_signal_cards()同步补.ms-cn注解
回填结果(线上已生效)
| 期次 | 英文条 | 回填前 | 回填后 | 校验 |
|---|---|---|---|---|
| 8/31 | 46 | 0 / 0 | 46 / 46 | 25/25 |
| 8/24 | 40 | 0 / 0 | 40 / 40 | 25/25 |
| 9/07 | 47 | 47 / 46 | 47 / 47 | 25/25 |
| 8/17 | 42 | 42 / 41 | 42 / 41(模型回显英文,合理失败) | 23/25 |
已知未处理
- 8/17 排行榜为空(23/25):榜单是实时数据,无法忠实重建历史快照——拿今天的榜冒充 8/17 的会误导读者,故不回填
验证
--translations-url https://elisabeth15501.github.io/ai-weekly/translations.json实测 47/47 命中(100%)validate_report.py4 期均通过(23~25/25,未达满分仅为历史数据限制)- 总源码行数 9285 行,硬守护(500/800)全部达标
完整改动
scripts/backfill_translations.py(NEW)scripts/aiweekly/translate.py(新增RemoteTranslationSource、修三个 bug)scripts/aiweekly/render.py(透传 remote_url)scripts/generate_site.py(增--translations-url)scripts/deploy_ghpages.py(增--extra)SKILL.md§ 8.4(新增)+ frontmatter version 3.4.6manifest.jsonversion 3.4.6CHANGELOG.md3.4.6 条目
详见 CHANGELOG.md
v3.4.5 — 市场数据口径路由(国内优先)
ai-weekly v3.4.5
对标 SkillHub 评测「可信任度·国内适配性 4.3」,本版补齐 A/B/C/D 四块里最后一块——市场数据口径路由。
连同 3.4.3、3.4.4 一起,构成针对「国内用户适配性」的一次完整改造。
这一版解决了什么
一句话:市场板块不再把「信通院白皮书上的数字」和「GVR/Crunchbase 的海外机构数据」标成同等可靠。
市场数据是静态快照注入的(WebSearch 核实后经 --market-data / --cn-market-data 注入),
所以国内适配的关键不在于能不能抓到,而在于两套数字该信哪个。本版把这件事明写进报告。
主要变更
新增:市场数据口径路由条
aiweekly/market.py::build_market_routing_note(region),随--region渲染- 服务端预渲染进静态 HTML,禁 JS 也可见
cn→ 「当前口径:国内优先,中国口径(信通院 / 新浪创投Plus / IT桔子)为主;全球口径属海外机构静态快照,仅作趋势对照,国内无法一手核实」global→ 全球为主,中国作区域对照;未判定 → 两套并列并提示核对快照日期
新增:图注可核实性标记
6 张市场图各自标注:
- 国内源(4 张):
✅ 国内公开数据,可自行核对 - 海外源(2 张):
🌍 海外机构静态快照 · 作对照(hover 有完整说明)
改进:口径判定复用排行榜结果
leaderboard_data["meta"]["region"](排行榜已解析出的实际网络区域)直接透传给渲染层,
市场口径与榜源口径用同一判定结果,不自做第二次网络探测。
文档
- 第四章「数据获取路由表」:市场数据 / 融资并购改为口径路由写法——
--region cn时国内源(信通院 / IDC 中国 / 艾瑞 / IT桔子 / 烯牛数据)为主,
国外源(GVR / Statista / Gartner / Crunchbase)为可选增强 - 新增 SKILL.md § 8.3:市场数据口径路由表,以及为什么海外机构数据不能与国内公开数据同等对待
连带的两个版本(本次一并发布)
v3.4.4 — 新闻源可达性体检
- 修三个真失效源:36氪(URL 缺
www被反爬拦截)、机器之心(RSS 已下线,替换为雷峰网 AI 科技评论)、VentureBeat(自报爬虫 UA 被限流 429,统一改浏览器 UA) RSS_FEEDS加region字段,--check-feeds按国内 / 国外分区统计- 新增
FEED_MIRRORS:HF Blog 主源失败自动回退hf-mirror.com - 源健康度 12/14 → 14/14(国内 5/7 → 7/7)
v3.4.3 — 触发方式与国内榜源
- SKILL.md § 1.1 新增 5 则多轮真实对话场景(澄清 / 纠偏 / 排障 / 边界 / 参数细化)
- 清除两个「假镜像」:
lmarena.org.cn(域名不存在)与aa-cn.mirror.xyz(返回无关博客页却 HTTP 200,有污染风险) - ModelScope 改用官方
openapi/v1/models(0% → 可用);新增 HF 镜像榜源;榜源命中数 3 → 6 - 新增
aiweekly/diagnostics.py:把专业告警翻译成「人话 + 下一步怎么办」
验证
validate_report.py:25/25 全部通过- 生成实测:115 条新闻,warnings=0 / errors=0
- 模块体量守护:
generate_site.py497 行(主入口上限 500)、最大模块leaderboard.py797 行(上限 800)
升级建议
无破坏性变更,直接覆盖即可。若你希望市场板块明确以国内口径为主,运行时加 --region cn。