-
Notifications
You must be signed in to change notification settings - Fork 0
AI Weekly Optimization Plan v5
方案范围:v3.6.1 → v4.0.0(安全整改闭环 + 代码审查落地 + 三问定案) 版本:2026-09-24 | 基于三份现有资料综合编制:
outputs/ai-weekly-三问定案-2026-09-23.md(预检门禁 / 外部网站 / 同类对标)outputs/ai-weekly-v4.0.0-安全整改方案-2026-09-24.md(应对 ClawHub 231 条 Findings)deliverables/gstack/code-review-ai-weekly-2026-09-24.md(安全审计 + Clean Code + 对抗式审查,含第三阶段客户端模板面)适用对象:
Elisabeth15501/ai-weekly仓库。当前线头状态:v3.6.1 → v4.0.0 整改已发(v4.0.0 待平台审核);P0 安全闭环(含 P0-4 argv token、P0-5 classic PAT 撤销)已于 2026-09-25 全部闭合并推送1911d1b;P1 合规门禁(防复发核心)已于 2026-09-25 落地并推送1435750(独立门禁 skill + XSS 守护加固 + 页脚来源对齐);P2 代码健康(P2-1…P2-7 全 7 项)已于 2026-09-25 完成并推送1b700c4;P3-1 SKILL.md 瘦身已于 2026-09-25 完成并推送b505241(~16k→约 2.6k tokens,完整版迁references/SKILL_full.md);v4.0.0 已于 2026-09-25 完成 bump(a77e023)+ SkillHub 发布(versionId 375389,待审)+ GitHub Release;P1-2 发布实测已发,Tp4 量化受阻(详见 §3 P1-2)。
v4.0.0 的由来是两轮外部审查同时暴露问题:ClawHub 的 231 条 Findings + 本仓库的彻底代码审查。拆开看:
| 来源 | 核心结论 | 当前状态 |
|---|---|---|
| ClawHub 231 Findings | 真问题仅 2 条(且同源:凭据形态);其余 ~229 条是 Tp4「声明与代码不匹配」的系统性误判(声明面只覆盖 99 个随包文件里的 26 个) | 10 个文件已改;回归全过;.gitattributes 裁剪已生效 |
| 代码审查(gstack) | 🔴 3 处已实测复现的存储型 XSS + TLS 校验全局关闭;后又发现客户端模板第二套注入面 | XSS 服务端侧 d756141 已修、客户端侧 b51b34a 已修且本会话 jsdom A/B 全绿;TLS 已恢复 |
| 三问定案 | 预检门禁该做、外部网站不做、对标学 aihot 瘦身 + embodied 领域收窄 | 门禁已建(1435750 + ai-weekly-publish-gate);SKILL.md 未瘦身;钉钉通道缺失 |
一句话:真正要改代码的安全问题已全部清零(XSS×3、TLS、argv token、classic PAT 撤销均落地),防复发机制中"门禁 + XSS 守护 + 页脚来源对齐"已随 1435750 固化;可发布性中 bump 与 SkillHub 发布已完成(2026-09-25),Tp4 是否下降待 ClawHub 扫描 / SkillHub 审核出报告后量化。
Go / No-Go 现状:🟢 安全项 Go(🔴 0、P0 全闭环);🟢 合规门禁(P1-1)已上线 1435750;🟡 发布实测(P1-2)已发 SkillHub(v4.0.0, 待审),Tp4 量化待补(无 ClawHub CLI + SkillHub 审核未出报告);AIGC/免责标识(P1-3)与 XSS 守护(P1-4)已落地。
| 编号 | 目标 | 成功标准 |
|---|---|---|
| G1 安全闭环 | 所有 🔴/🟠 级安全问题清零,达到可公开发布 | Go/No-Go → 🟢;jsdom A/B:pre VULNERABLE / post CLEAN |
| G2 合规可审计 | 私有预检门禁上线 + 声明面完整 + AIGC/免责标识齐备,发布审核可追溯、可防复发 | 门禁拦截 BLOCK 词族;发布后拉扫描对比 Tp4 条数 |
| G3 代码健康 | 消除循环依赖、重复实现、零引用模块;单文件 ≤800 行;阈值单一来源 | Clean Code 红项 6→0;无延迟 import |
| G4 分发与可发现性 | SKILL.md 瘦身降加载成本;补齐钉钉通道;可选 aihot 源;改名避撞车 | SKILL.md slug 版 ≤ ~8k tokens;钉钉可推送 |
| G5 可持续运营 | 门禁回灌闭环 + 自动化周期巡检,把痛点固化成机制 | automation 周期跑门禁 + 双周巡检 |
每条含:问题 → 依据 → 改进动作 → 验收。
P0-1 客户端模板注入面(renderInsights 覆盖服务端预渲染)
- 问题:
renderInsights()在DOMContentLoaded用innerHTML整体覆盖服务端已转义的预渲染,使服务端修复在浏览器里被绕过;n.category/ search-sourcekey等裸插值可逃逸出属性。 - 依据:code-review §8.8(第二阶段审计 + 本会话 §8.8⑤ A/B 全绿)。
- 动作:已落地
b51b34a(M1–M14 加固escapeHtml/jsStrInAttr/safeUrl+ 6 条静态闸门)。本会话已用 jsdom 真 DOM 复刻 V1–V5:pre VULNERABLE(6 处注入)、post CLEAN、良性数据 5/5 等价、闸门非恒真、所有on*双引号定界无活动漏洞。 - 验收:A/B 结论归档;单测 39 passed;
pre_tree/post_tree对照留存于tmp_verify/。
P0-2 服务端 market.py 三处 URL/标题裸插值
- 问题:
market.py:506 / :652 / :701的 url 未做协议白名单、title 未转义;render.py的_safe_url未下沉导致 market.py 没用到。 - 依据:code-review §1(F-01…F-03,真跑复现
<a href="javascript:...">、正文裸<svg onload=...>)。 - 动作:已落地
d756141——safe_url下沉utils.py并去重三份拷贝,market.py 三处应用;R-1…R-4 同类漏网一并修。 - 验收:12 项转义回归测试通过;端到端恶意参数实跑 payload 不落地。
P0-3 TLS 证书校验全局关闭
- 问题:
utils.py:267-270CERT_NONE+check_hostname=False被_http_get/_probe继承,所有榜单抓取不验证书,MITM 可篡改写入发布 HTML。 - 依据:code-review §1(🟠 TLS)。
- 动作:已落地
d756141恢复系统默认校验。 - 验收:33 源 × 开/关校验两轮结果集完全一致、SSL 失败 0、真回归 0。
P0-4 deploy_ghpages.py token 进 git argv ✅ 已完成(2026-09-25,commit 1911d1b)
- 问题:Critical 数据流 finding #1 表面闭合(改
Bearerheader),但同文件 push 路径仍把 token 塞进-c url...insteadOf的 argv,ps可见。 - 依据:code-review §5 #1、§8.2。
- 动作:将 push 凭据注入由 argv(
-c url...insteadOf)改为GIT_CONFIG_*环境变量注入(参照refresh_deploy.py:55-58),新增_resolve_git_token()统一解析凭据;switch_pages_source()同步改用。 - 验收:5 项机器化测试全绿——令牌只出现在
GIT_CONFIG_VALUE_0环境变量、不进 argv;非 push 命令不注入;无凭据时干净失败。
P0-5 .github_token classic PAT 回落 + 撤销令牌 ✅ 已完成(2026-09-25,commit 1911d1b + 用户已撤销令牌并删文件)
- 问题:旧代码
deploy_ghpages.py回落消费.github_token;磁盘曾有一枚 40 字符 classic PAT(整账号repo权限、1 年有效、落盘技能目录)。 - 依据:code-review §5 #2、v4.0.0 整改方案 §7①(好消息:已被
.gitignore忽略、未进历史、未泄露)。 - 动作:删除 fallback 分支(代码不再读取
.github_token);凭据来源改为gh auth token(OAuth、不落盘)>$GITHUB_TOKEN/$GH_TOKEN;用户已于 2026-09-25 在 GitHub 撤销该 classic PAT 并删除本地.github_token文件。 - 验收:代码不再读取
.github_token(测试 T4 验证即使文件存在也不被消费);令牌在 GitHub 侧状态为 revoked;磁盘文件已删除。
P1-1 私有预检门禁 skill(防复发核心) ✅ 已完成(2026-09-25,commit 1435750 + 独立 skill ai-weekly-publish-gate)
- 问题:平台审核是服务端三道线,本地无法复现;通用合规器误报率极高(本跑 78 项约 28 误报)。
- 依据:三问定案 §1(三层判定 + 私有规则集 + 回灌闭环)。
- 动作:独立新建门禁 skill
ai-weekly-publish-gate(不并入skillhub-publish),只编码踩过的坑——🔴 BLOCK(下架教训词族、把功能描述成"解决访问限制"、--proxy写成"恢复访问")、🟡 WARN(依赖未钉版、缺 AIGC 标识、文档与代码不符)、🔵 INFO(已知误报默认静音);通用扫描器只做粗筛 + 私有白名单过滤;publish 后拉 TRACE + 审核状态回灌进规则集(--learn写回gate_feedback.json:learned_blockers 作额外 BLOCKER、whitelist 静音已知误报)。compliance_check.py重写:新增回灌闭环、白名单静音、check_dep_pinning(依赖钉版 WARN)、INFO 默认静音、私有白名单过滤。 - 验收:门禁能拦 BLOCK 词族;回灌闭环可把新坑自动追加;11 项
test_p1_guards.py全绿、全仓 100 文件扫描 0 BLOCKER/0 WARN(exit 0);全量测试 50 passed。
P1-2 声明面补全 + 发布面裁剪(治本 + 治标) ✅ 已完成(2026-09-25 ClawHub 实测)
- 问题:声明面只覆盖 26/99 文件,ClawHub 逐文件比对必然判 mismatch。
- 依据:v4.0.0 整改方案 §3(§10.1 已加完整模块清单;
.gitattributesexport-ignore已git add生效;.clawhubignore已加)。 - 动作:已发布(2026-09-25)——v4.0.0 bump(
a77e023)+ SkillHub 发布(versionId 375389,待审)+ GitHub Release v4.0.0 + ClawHub 发布 v4.0.0(fileCount 91,已上线);发布前门禁误报已修(aaa19a0:扫描循环排除 dev-only 文件 + 将其排除出发布包,避免字面「翻墙」负面样例随包分发)。 -
Tp4 量化(ClawHub 实测,2026-09-25):从 ClawHub CLI(npx 缓存 v0.23.3)拉取 v3.6.1 与 v4.0.0 扫描报告对比——TP4 条数 1(已降级 benign)→ 0;clawscan verdict suspicious → benign(摘要明确「能力与声明目的一致」)。SKILL.md 瘦身未引发 TP4 回升,整包连贯性反而更好,P1-2 治本目标达成。
⚠️ 两点如实记录:① v4.0.0 的skillspector.json为 null(NVIDIA SkillSpector 该版本未产出结果,服务端缺口,非代码回归)——故 v3.6.1 的 23 条 MCP Tool Poisoning 维度无法在 v4.0.0 复核;② static-analysis 在 v4.0.0 反而报 2 条,但均经核对为注释误报(a.setup_pages_source.sh:9用法示例注释里$env:GITHUB_TOKEN="<fine-grained-token>"示例,含占位、无真实凭据;b.utils.py:265文档注释描述「历史实现曾关闭校验」,实际代码utils.py:277已改ssl.create_default_context()恢复默认校验,P0-3 真修到位)。即真实安全面改善(TLS 真恢复),仅扫描器被注释字面触发。若后续要彻底清零 static 维度,需改注释措辞(去check_hostname = False/GITHUB_TOKEN="..."字面)。 - 验收:✅ ClawHub 发布成功(fileCount 91)+ SkillHub 发布成功(fileCount 98,待审);✅ Tp4 实测 1→0、verdict suspicious→benign;
⚠️ skillspector 维度因服务端 null 未复核、static 2 条为注释误报(可选清注释)。
P1-3 AIGC 标识 + 金融免责
- 问题:发布物缺内容标识,且页脚
BASE_SOURCES(Gartner/IDC…)恒定渲染、与真实数据来源(DEFAULT_*_SOURCE)不一致。 - 依据:v4.0.0 整改方案 §5(页脚已实装"AI 辅助编制 / 不构成投资建议");code-review §4-D3(诚实性唯一被违反项)。
- 动作:已做页脚标识 + §9.1/README 免责;页脚两套来源名单不一致(#8)已于
1435750订正——market.py的BASE_SOURCES改为与DEFAULT_MARKET_SOURCE/DEFAULT_FUNDING_SOURCE/DEFAULT_CN_MARKET_SOURCE/DEFAULT_CN_FUNDING_SOURCE实际引用机构一致(Grand View Research / Crunchbase / CB Insights / 中国信通院 / IT桔子 / 新浪创投Plus / Stanford HAI / LMMarketCap),并加注释要求同步维护;SKILL.md页脚说明同步对齐,消除文档/代码 mismatch。 - 验收:产出 HTML 含标识;页脚来源名与真实来源一致(代码 + 文档双对齐)。
P1-4 check_xss_safe 守护收窄 + 安全声明校准 ✅ 已完成(2026-09-25,commit 1435750)
- 问题:XSS 守护只查 JSON 变量裸
</script>与href="javascript:/data:",对属性逃逸与正文裸<script>无感。 - 依据:code-review #6。
- 动作:加固
validate_checks/keywords.py的check_xss_safe()——对_XSS_JSON_VARS的 raw 文本同时查裸<script(正文标签)与\bon[a-z]+\s*=事件处理器属性逃逸(新增raw_event_handler字段),保留danger_href检查;README 安全声明已收窄(不夸大"已全部覆盖")。 - 验收:恶意属性逃逸样本被门禁拦下(
test_p1_guards.py覆盖);README 声明与代码一致。
P2-1 canon_key 下沉灭 2 个循环依赖 ✅ 已完成(2026-09-25,commit 1b700c4)(性价比最高)
- 依据:code-review §1 排障手、#10。
- 动作:新建无依赖叶子模块
canon.py承载canon_key/canon_display/_norm_model/ORG_PREFIXES/别名索引;leaderboard_sources/model_meta/leaderboard_checks改为从canon导入,消除leaderboard↔model_meta、leaderboard↔leaderboard_checks两环(不再靠延迟 import)。 - 验收:无延迟 import;单测 50 passed(39 旧 + 11 新);
leaderboardre-export 面保留canon_key/canon_display等。
P2-2 cli_utils 复用率提升(1/18) ✅ 已完成(2026-09-25,commit 1b700c4)
- 依据:code-review §1(18 入口仅 1 个用)。
- 动作:新模块
leaderboard_snapshot.py的 best-effort 单文件读取(_load_cn_snapshot/_load_cache)改用cli_utils.load_json_soft(失败告警降级返回 default);外部可调用入口的裸json.loads改造因涉及可空传播决策,留待后续拍板(本次未动)。
P2-3 清理死代码 ✅ 已完成(2026-09-25,commit 1b700c4):零引用 types.py、闲置 errors.py 4 工厂、使用率≈0 的 v2 兼容层。
- 动作:删除零引用的
types.py(__init__模块计数 11→10);删除errors.py中零引用的err_bad_backend/err_deploy_cmd_failed/err_feishu_bad_webhook/err_cos_sdk_missing及对应ERR_*常量;保留活跃项err_missing_file/UserFacingError/print_error/write_log等。 - 验收:无死代码告警;
__init__docstring 计数与模块数一致。
P2-4 leaderboard.py 拆分降体量 ✅ 已完成(2026-09-25,commit 1b700c4)
- 依据:code-review §1(725 行;
generate()39 参数)。 - 动作:抽出快照/缓存子系统到新模块
leaderboard_snapshot.py(路径常量CACHE_PATH/CN_SNAPSHOT_PATH/SNAPSHOTS_DIR+ 10 个读写/构建函数);leaderboard.py经 re-export 保留全部对外 API,体量 725→592 行。 - 验收:pytest 50 passed;
leaderboard对快照子系统再导出面完整。
P2-5 陈旧阈值三处统一 ✅ 已完成(2026-09-25,commit 1b700c4)(const.py=14 / news.py=3 / 模板硬编码 >3)
- 依据:code-review §1-D、#9。
- 动作:统一收敛到
const.py单一来源——const.py定LEADERBOARD_STALE_DAYS = 3(周报语义:>3 天即非本周);news.py改为从const再导出;render.py向meta注入snapshot_stale_threshold;模板news_site_template.html改读meta.snapshot_stale_threshold || 3。 - 验收:
const==news==pkg==3一致;模板阈值与 Python 端同源。
P2-6 leaderboard_fetch.py:35-39 注释与值对齐 ✅ 已完成(2026-09-25,commit 1b700c4)
- 依据:code-review #8、§1-D(注释谎称 240s,实际 180)。
- 动作:修正误称注释——
OVERALL_FETCH_CAP_S = 180为整体截止、单源隔离已兜底;标注"提到 240s 计划暂未启用,改此常量即可"。决议:维持 180s(用户未要求变更),仅修注释与值对齐。
P2-7 refresh_snapshot.py 硬编码绝对路径 ✅ 已完成(2026-09-25,commit 1b700c4)
- 问题:写死
C:/Users/elisa/WorkBuddy/2026-07-30-23-56-35/...且随包分发。 - 依据:code-review §1-D。
- 动作:改为可选环境变量
AIWEEKLY_WS_SNAPSHOT注入工作区副本路径;未设置则跳过同步并提示;--no-sync仍可完全跳过;移除个人路径。 - 验收:个人绝对路径已从源码移除;
py_compile通过;文档更新。
P3-1 SKILL.md 瘦身(15.7k → ~2.3k tokens) ✅ 已完成(2026-09-25,commit b505241)
- 依据:三问定案 §3.4、§4 #4(aihot 是现成答案;ClawHub 有 8192 token 上限)。
- 动作:SKILL.md 由 ~64KB(~16k tokens)精简为 ~12KB(约 2.6k tokens,低于 8192 上限),保留全部运行时关键规则(零脑补/不编造、XSS 守护、合规与免责、网络自适应降级、关键命令、硬规则、本周看点要求)与触发词;完整内容精确复制至
references/SKILL_full.md(随仓库 GitHub 可访问),第十节声明面补充该文件,声明面对齐未丢失;version维持 3.6.1(bump v4.0.0 待用户拍板,本次未动)。 - 验收:frontmatter YAML 解析通过;token 估计约 2.6k(84% 缩减);触发能力不变。
P3-2 dingtalk_bot.py 补第 3 通道
- 依据:三问定案 §2、§4 #3(
delivery/零实现,README 仅口头提及)。 - 动作:新增钉钉 webhook 推送(≈30 行),扩展
--channels dingtalk。
P3-3 可选接 aihot 结构化新闻源
- 依据:三问定案 §4 #5(API 化中文源,比裸 RSS 结构化)。
- 动作:
--news-source aihot可切换,默认仍走 RSS。
P3-4 改名避撞车(ai-industry-weekly / ai-weekly-digest)
- 依据:三问定案 §4 #6(同名
@user_507a5056/ai-weekly相关度 0.1096 第一,但 12 下载/0 安装)。 - 动作:评估后改名,避免检索同名混淆。
| 阶段 | 范围 | 关键项 | 出口标准 |
|---|---|---|---|
| 阶段一 · 安全闭环 | P0-1…P0-5 | 客户端/服务端 XSS、TLS、argv token、PAT 撤销 | 🔴 0;jsdom A/B 全绿;Go/No-Go 解除 No-Go |
| 阶段二 · 合规可审计 | P1-1…P1-4 | 门禁 skill、发布实测验证 Tp4、标识校准 | 门禁上线;发布后扫描对比报告 |
| 阶段三 · 代码健康 | P2-1…P2-7 | 灭环、清死代码、拆大文件、阈值统一 | ✅ 已完成(1b700c4);Clean Code 红项 6→0 |
| 阶段四 · 分发增长 | P3-1…P3-4 | 瘦身、钉钉、aihot、改名 | 加载成本降;通道补齐 |
建议顺序:P0 全闭环(发布前置)→ P1 门禁(防复发)→ P2 低风险债优先(P2-1 性价比最高)→ P3 增长项可并行。
发布动作:bump 已完成(2026-09-25,commit a77e023 + tag v4.0.0 + GitHub Release);SkillHub 发布已完成(versionId 375389,待审);ClawHub 发布 v4.0.0 已完成(fileCount 91,已上线),Tp4 实测 1→0、verdict suspicious→benign(详见 §3 P1-2)。
-
门禁回灌闭环是最大杠杆:通用合规器走不通(误报率太高),只有你自己的私有门禁 + 绑定账号历史的回灌能做到"把痛点固化成机制"。独立于
skillhub-publish,被 automation 周期调用。 - 自动化巡检:沿用既有双周巡检习惯,把"门禁 + 安全项复跑 + Tp4 对比"纳入 automation,不靠人记。
-
验证口径(已被本会话沉淀进
static-html-injection-audit技能):- 客户端模板必须做 jsdom DOM 级 PoC(产物里看不到注入元素,因卡片是 JS 拼的);
- 回归闸门必须证 非恒真(pre 触发、post 干净,双判);
- 改动前后 良性数据等价性(转义函数对良性输入须为 no-op)。
-
诚实性优先:文档与代码不符本身就是雷区(审核语义理解会读叙事)。统一口径为「本地执行 + 联网取数 + 用户自持托管(BYO hosting)」,不为了"不依赖外部网站"砍掉 GitHub Pages 这个
view_url唯一来源。
| 项 | 性质 | 谁定 |
|---|---|---|
撤销 classic PAT + 删 .github_token(P0-5) |
✅ 已完成(2026-09-25 撤销令牌+删文件+代码断根 1911d1b) |
已完成 |
| 私有预检门禁 skill 上线(P1-1) | ✅ 已完成(2026-09-25 落地 1435750 + 独立 skill ai-weekly-publish-gate) |
已完成 |
| XSS 守护加固 + 页脚来源对齐(P1-3#8/P1-4) | ✅ 已完成(2026-09-25 1435750) |
已完成 |
| 发布后拉扫描验证 Tp4 是否降(P1-2) | ✅ ClawHub 发布 v4.0.0(fileCount 91,已上线)+ SkillHub 发布(versionId 375389,待审);Tp4 实测 1→0、verdict suspicious→benign(skillspector 维度因服务端 null 未复核,static 2 条为注释误报) | 已完成 |
| bump 版本号到 v4.0.0 | ✅ 已完成(2026-09-25,commit a77e023 + tag v4.0.0 + GitHub Release) |
已完成 |
| P2 代码健康 7 项(P2-1…P2-7) | ✅ 已完成(2026-09-25 落地 1b700c4) |
已完成 |
| 发布后拉扫描验证 Tp4 是否降;若不降是否拆卫星 skill | ✅ 已实测:Tp4 1→0(未降),无需拆卫星 skill;skillspector 维度因服务端 null 未复核 | 已完成 |
cn_leaderboard_snapshot.json 是否真随包分发 |
功能取舍(被 .gitignore 排除但代码 8 处引用兜底) |
你 |
OVERALL_FETCH_CAP_S 180 vs 240 |
抓取成功率 | 你定 + 我改 |
| 外部网站 / 中心化周报集成 | 已定:不做(增益≈0、风险从零变你担责) | 已定 |
- 🔴 0:3 处 XSS 全修(服务端+客户端)、TLS 恢复、argv token 消除(env 注入,
1911d1b)、classic PAT 撤销(用户已撤销+删文件) - 🟠 门禁上线(P1-1
1435750+ 独立 skillai-weekly-publish-gate)、XSS 守护加固(P1-41435750)、AIGC/免责标识齐备(P1-3);P1-2 已发 SkillHub(待审)+ ClawHub 发布 v4.0.0(已上线),Tp4 实测 1→0、verdict suspicious→benign(skillspector 维度服务端 null 未复核、static 2 条注释误报) - 单测 50 passed(11 新 + 39 旧);合规门禁无 BLOCKER/WARN(全仓 100 文件 exit 0)
- jsdom A/B:pre VULNERABLE(结构注入 >0)/ post CLEAN(0)— P0 已归档,本轮未重跑
- Clean Code 红项 6→0;无循环依赖延迟 import(P2-1
canon.py叶子化);无零引用模块(P2-3 删types.py+errors.py4 工厂);leaderboard.py725→592 行(P2-4 拆leaderboard_snapshot.py);阈值单一来源const.py(P2-5);去硬编码路径(P2-7AIWEEKLY_WS_SNAPSHOT)— 全部1b700c4 - SKILL.md slug 版 ≤ ~8k tokens(实际约 2.6k,
b505241);钉钉通道可推送(P3-2 待做) -
git archive HEAD发布面 0 泄漏敏感文件;声明面 0 遗漏 - Go/No-Go → 🟢(P1-2 已发 SkillHub 待审 + ClawHub 发布 v4.0.0 已上线;Tp4 实测 1→0、verdict suspicious→benign,skillspector 维度因服务端 null 未复核)