Skip to content

Releases: Elisabeth15501/ai-weekly

v4.0.0 — 安全整改闭环 + 代码健康 + 可发布性

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 24 Sep 18:34

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_token classic 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.py 725→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 — 合规整改 + 发布前合规门禁(建议所有用户升级)

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 22 Sep 14:17

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 WARN
  • pytest:21 passed
  • validate_report.py:25/25 通过
  • 残留的 2 处 proxy 系 Chart.js 库内部 _proxy 变量名,与网络代理无关

升级建议

建议所有用户升级,尤其是从 SkillHub 等国内平台获取本技能的用户——
旧版文档中的措辞可能导致技能在平台上被判定违规。
无破坏性变更,直接覆盖即可。

v3.6.0 — 市场图表不再依赖 JS:新增服务端 SVG 轨

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 22 Sep 14:17

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,建图失败自动回退 SVG
  • updateChartColors() 不再无条件假设 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.py 337(新)、market.py 709、render.py 546、
    generate_site.py 465 —— 全部在 P0#4 上限内

升级建议

无破坏性变更,直接覆盖即可。如果你此前遇到过「图表空白」,本版就是针对它的修复;
即使你的浏览器一切正常,也会改用 Chart.js 轨,观感与交互完全不变。

v3.5.3 — 渲染修复批:能力卡归位 + 图表可见 + 开源榜兜底

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 22 Sep 14:17

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.py 465(上限 500)、leaderboard.py 800(上限 800)

升级建议

无破坏性变更,直接覆盖即可。本版之后建议一并升级到 v3.6.0——图表可见性问题在那一版才真正解决。

v3.5.2 能力卡如实反映飞书推送 + 自动化启用国内数据

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 22 Sep 08:12

变更(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 数据状态条披露抓取日期

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 20 Sep 16:45

修复(对抗式代码审查 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 — 数据可信批:时效徽章 + 数据状态条

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 20 Sep 16:07

对标 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 — 译文源默认开启 + 能力卡 + 代理探测

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 15 Sep 15:26

对标 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 — 历史周报回填中文 + 发布可拉取译文源

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 10 Sep 08:16

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.py 4 期均通过(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.6
  • manifest.json version 3.4.6
  • CHANGELOG.md 3.4.6 条目

详见 CHANGELOG.md

v3.4.5 — 市场数据口径路由(国内优先)

Choose a tag to compare

@Elisabeth15501 Elisabeth15501 released this 09 Sep 19:05

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.py 497 行(主入口上限 500)、最大模块 leaderboard.py 797 行(上限 800)

升级建议

无破坏性变更,直接覆盖即可。若你希望市场板块明确以国内口径为主,运行时加 --region cn。