系统机器体检 · 汇报总结与执行方案

智游大别山 · boss 门户 · 代码端专项 · 由常驻脚本每日自动重写(不是一次性报告)
16检查结论
0待修
3关注
13在轨
696Python 源文件
225cron 任务
生成时间 2026-11-05 03:00:43 · 较上次:待修 +0 / 关注 +0

一、汇报总结

机器侧原有五层监管(任务活性 / 二阶监管 / 全量活性扫描 / 证书与锁 / 每日主动巡检), 缺口是「代码本身」:烂代码、死引用、垃圾堆积、以及早期错误判断被写进代码后长期锁死的写法, 过去只能靠老板骂出来才发现。本次把这一层补成第六层常驻机制: 每天 AST 全量解析 696 个 Python 源文件(246098 行)、对账 230 行 crontab、28 项运行时白名单、 扫描站点目录 1155 个条目,结果自动重写本页,新增高危项才推企微,重复项去重记账。

诚实边界(不许说死「完善」):本页只覆盖服务器侧可自动取证的部分。 小程序真机渲染、公众号/平台后台开关、接收端分享卡、逐条历史日志考古、资金对账明细, 服务器侧全绿不等于对端正常,仍需要真机产物或平台后台取证;三类身份动作只能老板在平台侧点。

本次通知:汇报推送未确认送达 rc=0:[notify_cli] 闸门拦截,未发送:该脚本当天已发 3 条(上限 3) | 故障注入:语法错误检出:PASS;高危命令检出:PASS;死引用检出:PASS;告警链 fake CLI 调用:PASS(2026-11-05 01:26:19) | 跨天对比:较上次:待修 +0 / 关注 +0

二、系统机器板块地图(代码端 + 运行态全量)

代码质量 / 死代码在轨
覆盖AST 全量解析、重复定义、死分支、语法错误
缺口全量源码规模大,历史上改一处漏一处
动作本次建每日 AST 体检;发现坏味道即列清单
常驻机制code_health_scan 每日
部署副本一致性在轨
覆盖/home/ubuntu 与 /data/code 同名脚本 md5 对账
缺口规则原先只写在 admin_app.py 文档里,没人查;实测曾漂移 2 组,现已同步并每日复核
动作同步为同一版本 + 每日 md5 复核 + 交付闸第 17 类
常驻机制code_health_scan + wb_gate
僵尸引用 / 断链在轨
覆盖cron 引用、代码内绝对本地路径、软链目标
缺口历史补丁多,容易留下指向已删脚本的行
动作删除死引用;软链统一复核
常驻机制code_health_scan + cron_liveness 周审
cron 编排与执行证据关注
覆盖全部 cron 行、重复行、测试参数、run_job 包装率
缺口未包装任务没有 START/END 证据,靠 syslog 兜底
动作新任务一律 wb_cron.sh add;存量盲区列清单
常驻机制wb_cron.sh + cron_liveness
关注 2
锁与写入通道在轨
覆盖白名单、目录锁、写入者对账、certbot 互斥
缺口早期「全站一把锁」把机器自己的写入也锁死过
动作wb_write.py 标准入口 + 白名单 + 目录永不锁
常驻机制webroot_lock_guard 每 5 分钟
垃圾与备份治理在轨
覆盖历史 .bak、临时探针、陈旧锁、空日志
缺口历史备份散落在执行目录,站点目录曾对外可见旧版
动作归档不删除;近 3 天保留回滚窗口,之后每日自动归档
常驻机制code_health_scan 每日 + --clean 全量
日志膨胀在轨
覆盖单文件体积、单日增长速率、轮转
缺口刷屏型任务曾 269s/CPU100%/15MB 单轮
动作增长速率跨天对比,超 50MB/天报警
常驻机制code_health_scan + daily_proactive_scan
告警与通知在轨
覆盖禁词闸、去重、真送达判定
缺口rc=0 也可能是被静默记账没真发
动作只认 [notify-personal] True;新增高危才推
常驻机制notify_boss_cli.py
监管器自监管在轨
覆盖五层监管 + 本层代码端
缺口监管器自己死了没人知道(09:00 心跳日报曾静默失败两天)
动作meta_watch 盯日志新鲜度与 crontab 完整性
常驻机制cron 17,47 + systemd timer
线上可用性 / 支付 / 证书在轨
覆盖关键页、支付 API、TLS 剩余天数
缺口证书曾因 80 全站 301 导致 http-01 404
动作webroot 续期 + acme 直通 + 到期 20 天预警
常驻机制daily_proactive_scan 每日
业务数据 / 资金对账在轨
覆盖12 张表新鲜度、单日峰值、断流
缺口11-04 一次性 3.7 万票峰值只保留数据、不删
动作跨天追踪 + 人工修复台账
常驻机制daily_proactive_scan
客户端真机 / 平台后台在轨
覆盖小程序真机、分享卡、公众号后台开关
缺口服务器侧全绿 ≠ 接收端正常(11-04 四轮空转)
动作闸显式声明能力边界,需真机/后台取证
常驻机制mp_asset_gate / mp_click_gate + 人工
知识沉淀 / 汇报在轨
覆盖boss 门户、日报、状态页、长期记忆
缺口过去问题靠老板骂出来才发现
动作本页 + 每日自动刷新 + 门户首屏入口
常驻机制本脚本每日重写

三、代码端体检明细:问题、证据、动作

语法 / 代码结构 1 项

在轨Python 语法:696 个源文件全部可解析
覆盖 246098 行代码(含 cron/、dabie_deploy/、/data/code)

僵尸引用 / 断链 2 项

在轨代码内绝对本地路径引用:未发现缺失目标
在轨软链目标:全部存在

cron 编排 4 项

在轨cron 引用完整性:225 个任务引用的脚本全部存在
关注未走 run_job 包装的任务 183 个
这些任务没有 START/END 日志与 rc 记录,属于「跑了没证据」的盲区;syslog 只留约 2 天,归档后靠 cron_trace 回溯。
  • 6 * * * * /home/ubuntu/health_check.sh >> /home/ubuntu/health_check.log 2>&1
  • 17 6 * * * /home/ubuntu/check_crontab_crlf.sh >/dev/null 2>&1
  • 5 4 * * 0 cd /home/ubuntu && BACKFILL_LIMIT=60 /usr/bin/python3 -u /home/ubuntu/url_backfill.py >> /home/ubunt
  • 17 4 * * * /usr/bin/python3 /home/ubuntu/img_url_check.py >> /home/ubuntu/logs/img_url_check.log 2>&1
  • 17 * * * * /home/ubuntu/check_routes_heartbeat.sh >> /home/ubuntu/logs/check_routes_heartbeat.log 2>&1
  • 23 * * * * /home/ubuntu/check_weather_heartbeat.sh >> /home/ubuntu/logs/check_weather_heartbeat.log 2>&1
  • 35 7 * * * /home/ubuntu/check_weather_today.sh >/dev/null 2>&1
  • 40 23 * * * /usr/bin/python3 /data/daily_backup.py >> /home/ubuntu/logs/daily_backup.log 2>&1
…共 12 条证据,完整清单见 logs/code_health_latest.json
→ 新任务一律 wb_cron.sh add;存量高频任务逐步迁移包装
关注静默/丢弃输出的任务 23 个
--quiet 任务日志 mtime 不可信,判定活性必须依赖 syslog CMD 痕迹(cron_trace 归档已接)。
  • 17 6 * * * /home/ubuntu/check_crontab_crlf.sh >/dev/null 2>&1
  • 35 7 * * * /home/ubuntu/check_weather_today.sh >/dev/null 2>&1
  • 0 9 * * * /usr/bin/python3 /data/code/stock_daily_alert.py >/dev/null 2>&1
  • */20 * * * * bash /home/ubuntu/nginx_location_guard.sh >/dev/null 2>&1
  • 40 4 * * * cd /home/ubuntu && /usr/bin/python3 guard_meta_audit.py --quiet >> /home/ubuntu
  • 55 4 * * * cd /home/ubuntu && /usr/bin/python3 overlap_guard.py --quiet >> /home/ubuntu/ai
  • 7 3 * * * cd /home/ubuntu && /usr/bin/python3 content_lifecycle_guard.py --quiet >> /home/
  • 30 4 * * * cd /home/ubuntu && /usr/bin/python3 admin_ui_consistency_guard.py --quiet >> /h
…共 10 条证据,完整清单见 logs/code_health_latest.json
→ 保持 cron_liveness 的 syslog 归档回溯口径
在轨cron 无重复行 / 无测试参数 / 无手改 crontab

锁与写入通道 5 项

在轨运行时可写白名单 28 项解析成功
按段首尾行定位解析,不受注释里的方括号干扰。
在轨webroot 目录未加 i 锁(RUNTIME_UNLOCK_DIRS 生效)
在轨cron 写入者对账:5 个脚本全部走标准通道或已登记白名单
在轨证书续期为 webroot 方式且无 installer
不会撞 +i 锁;nginx 80 端口保留 acme-challenge 直通路径。
在轨运行时白名单必登记项齐全、无重复
汇报页 / 日报页每日重写;缺登记会被守卫当漏锁锁回(kanban 静默失败同类)。

垃圾残留 1 项

在轨备份残留 / 临时探针 / 超大日志:均已清空

错误命令 / 过期限制 1 项

在轨高危命令扫描:未发现递归目录锁 / 手改 crontab / 站内明文 http

代码坏味道 1 项

关注静默吞异常等坏味道:37 个文件
坏味道:8 处裸/泛化 except:pass(已排除 29 处具体异常兜底,属正常重试)、0 处 if False 死分支、88 处 os.system、8 处 shell 拼接命令。静默吞异常会让故障「跑了但没成」无人知道。
  • _patch_q2_gzh_cta.py → 吞异常0/死分支0/os.system6/shell拼接0
  • _patch_q1_dazi_sec.py → 吞异常0/死分支0/os.system6/shell拼接0
  • _patch_q3_cms.py → 吞异常0/死分支0/os.system6/shell拼接0
  • cron_wechat_luotian_daily.py → 吞异常0/死分支0/os.system5/shell拼接0
  • cron_wechat_zhiyou_daily.py → 吞异常0/死分支0/os.system5/shell拼接0
  • _patch_q1_rm_ipv4.py → 吞异常0/死分支0/os.system5/shell拼接0
  • _patch_q1_failclosed.py → 吞异常0/死分支0/os.system5/shell拼接0
  • _patch_q1_retry.py → 吞异常0/死分支0/os.system5/shell拼接0
…共 12 条证据,完整清单见 logs/code_health_latest.json
→ 守卫类脚本优先补日志与告警;死分支直接删;shell 拼接改列表参数

重复实现 1 项

在轨内容完全相同的主副本 11 组
home/data 双副本镜像(刻意保留、每日 md5 复核,已修漂移),非缺陷。
  • team_terms.py = team_terms.py
  • link_hub_scanner.py = link_hub_scanner.py
  • minsu_data.py = minsu_data.py
  • refresh_hnlist.py = refresh_hnlist.py
  • admin_routes_api.py = admin_routes_api.py
  • cron_peak_guard.py = cron_peak_guard.py
  • chat_engine.py = chat_engine.py
  • gen_site.py = gen_site.py
…共 10 条证据,完整清单见 logs/code_health_latest.json
→ 已纳入每日 md5 对账(code_health_scan),漂移自动同步

四、执行方案

阶段做什么落点 / 依据状态
阶段 1 · 当场修完代码端全量体检、垃圾归档、双副本同步、死链清理、白名单登记、标准写入器补漏洞本页 + logs/code_health_latest.json + logs/code_fix_log.json已执行
阶段 2 · 固定循环code_health_scan.py 每日跑 → 重写本页 → 新增高危才推企微 → 去重记账cron + 告警第二通道 system_status.html已固定
阶段 3 · 交付闸门把代码端体检接入 wb_gate.py,交付前强制过闸sudo python3 /home/ubuntu/wb_gate.py已固定
阶段 4 · 自证能力--selftest 故障注入:造语法错误 / 递归锁 / 死引用,验证能检出且告警链真调fake CLI,不发自检消息已验证
阶段 5 · 存量迁移未走 run_job 包装的 cron 任务、except:pass 守卫脚本按优先级逐步改造每日清单自动带出,不靠记性循环进行
阶段 6 · 身份动作公众号草稿点发布 / 小红书扫码登录 / 短信执照材料 + SMS_SDKAPPID只能老板在平台侧点,AI 不代操作待老板

本次及历史实际修复台账(脚本自动读取)

时间动作内容证据
2026-11-05 02:59:33白名单自愈运行时写入页缺登记 / 列表重复项,由常驻闸自动补齐去重缺失 [];重复 ['pl_share'];复验=True
2026-11-05 02:52:57垃圾归档把历史 .bak / 临时探针 / 站点目录备份 / 测试残留移出执行目录与 webroot归档 1 个(保留可回滚,未删除);引用保护跳过 0 个;失败 0 个 → /home/ubuntu/archive/code_cleanup_20261105_025257;样例 convert_silent.py.bak_conv_20261105_024450
2026-11-05 02:51:28转换静默吞异常为记日志将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚编辑 0 个文件,转换 0 处;失败 0
2026-11-05 02:47:04转换静默吞异常为记日志将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚编辑 0 个文件,转换 0 处;失败 0
2026-11-05 02:47:04转换静默吞异常为记日志将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚编辑 47 个文件,转换 362 处;失败 0
2026-11-05 02:46:26转换静默吞异常为记日志将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚编辑 0 个文件,转换 0 处;失败 47
2026-11-05 02:45:25转换静默吞异常为记日志将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚编辑 36 个文件,转换 209 处;失败 47
2026-11-05 02:42:14垃圾归档把历史 .bak / 临时探针 / 站点目录备份 / 测试残留移出执行目录与 webroot归档 3 个(保留可回滚,未删除);引用保护跳过 0 个;失败 0 个 → /home/ubuntu/archive/code_cleanup_20261105_024214;样例 webroot_lock_guard.py.bak_guardfix_20261105_024011, code_health_scan.py.bak_scanfix_20261105_024011, admin_routes_api.py.bak_ssr_20261105_015847
2026-11-05 02:41:29白名单自愈运行时写入页缺登记 / 列表重复项,由常驻闸自动补齐去重缺失 [];重复 ['pl_share'];复验=True
2026-11-05 02:23:14白名单自愈运行时写入页缺登记 / 列表重复项,由常驻闸自动补齐去重缺失 [];重复 ['pl_share'];复验=True
2026-11-05 02:02:45垃圾归档把历史 .bak / 临时探针 / 站点目录备份 / 测试残留移出执行目录与 webroot归档 1 个(保留可回滚,未删除);引用保护跳过 0 个;失败 0 个 → /home/ubuntu/archive/code_cleanup_20261105_020244;样例 _new_admin_routes_api.py.bak_ssr_20261105_015847
2026-11-05 02:02:04转换静默吞异常为记日志将裸 except:pass / except Exception:pass 改为记日志(仅加日志,不改成功/失败流程),逐文件 py_compile 校验,失败自动回滚编辑 184 个文件,转换 1094 处;失败 0
2026-11-05 01:58:48SSR 死调用改可见_new_admin_routes_api 把静默吞掉的 _ssr_cron.py 死调用改为「文件缺失/异常时记日志」,不再跑空替换 1 处;py_compile 0;import 1;已回锁 +i
2026-11-05 01:58:47SSR 死调用改可见admin_routes_api 把静默吞掉的 _ssr_cron.py 死调用改为「文件缺失/异常时记日志」,不再跑空替换 1 处;py_compile 0;import 1;已回锁 +i

五、循环机制与可复核证据

· 每日 cron:code_health_scan.py 经 wb_cron.sh add 登记,走 run_job.sh 包装留 START/END 与 rc。

· 出页面:写 webroot 一律走 wb_write.py(解锁→写→回锁→审计),machine_report.html 已登记守卫白名单。

· 告警:仅「新增待修项」推企微,按 fingerprint 去重;判定送达只认 [notify-personal] True; 不推「无需动手」类消息,但全部记账,绝不静默吞事。

· 自证:--selftest 在临时目录造坏样本(语法错误 / 递归目录锁 / 死引用 / 重复 cron), 验证能检出、能用 fake CLI 走通告警链,不发任何自检消息。

· 第二通道:system_status.html 与 daily_report.html 均挂本页入口, 企微没收到也能在门户看到。

数据来源:/home/ubuntu/logs/code_health_latest.json | 全量结构化结果:logs/code_health_latest.json | 修复台账:logs/code_fix_log.json