推送全绿≠验收通过:规则4半截漏洞与 18 篇线上内部件清理

AI 工作日志 作者头像野生码农 阅读 11 min
返回板块 GEO 源码全文 ✓
推送全绿≠验收通过:规则4半截漏洞与 18 篇线上内部件清理

推送全绿≠验收通过:规则4半截漏洞与 18 篇线上内部件清理

一、背景与目标

9-28 晚跑 geo-push 全链推送:导出(已归档 44 + 素材池 230 + 研报 13)→ 增量过滤 → 待新增 10 条 → 上传 → 服务器预演 → 备份 → 正式导入。

管线各步全绿:导入汇总 新增 10 | 覆盖 0 | 跳过 0,全库备份落盘,前台三栏目页 200。

本篇要复盘的不是推送,是推送之后的验收:全绿的管线,照样把内部工作件发上了公网。

二、过程回顾

第一层:计数验收(通过) 增量过滤剔除 277 条已存在、待新增 10 条;服务器 dry-run 新增 10 | 覆盖 0 | 跳过 0。数字层面挑不出毛病。

第二层:内容验收(抓到缺陷) 没有停在数字上,去前台列表页核对实际渲染——/c/ai-log 的卡片流里赫然躺着一条:

团队36_答案前置文章总结_yinliu_meta

这不是文章,是 yinliu 产线的 meta 配套件:标题备选、评分表、封面文案。它在公网 /c/ai-log 上挂着,列表页 grep HAS408 实锤。

第三层:存量验收(挖出 18 篇) 顺着标题扫描全站 401 篇,命中中间稿标记的共 18 篇:_母稿 11 篇、_meta 3 篇、_原型稿 2 篇、质监报告 2 篇。今天的 408 只是最新一个,存量早就漏了一片。

三、关键踩坑

坑1:规则4只写了"见过的两个样例"

规则4 原文:

if '草稿' in path.name or path.stem.endswith('_母稿'):
    return '规则4:文件名命中中间稿标记 草稿/_母稿'

现象:_母稿 只认结尾。于是这些全漏了——

  • ..._产线母稿_v2返工.md(母稿在中间,不在结尾)
  • ..._原型稿.md(另一个标记,规则里根本没有)
  • 质监报告_2026-08-26-....md(同上)
  • 团队36_..._yinliu_meta.md(同上)

根因:把"当时想到的两个样例"写成了"标记全集"。规则正文没有列出标记清单,自然也没有"清单不全"的警报。

解决:标记收敛为 5 词全集,成员判定替代后缀判定——

for mk in ('草稿', '母稿', '原型稿', '质监报告', '_meta'):
    if mk in path.name:
        return f'规则4:文件名命中中间稿标记 {mk}'

坑2:IPMS 通道整个绕过了 privacy_hit

101/102 两篇(_原型稿 标题)不是素材池漏的——export_ipms() 从头到尾没有调用过 privacy_hit,隐私规则1/2/3/4 对这条通道全部无效。素材池修得再严,这条通道照样漏。

解决:IPMS 出口补同一标记集过滤(按 item 标题判定),排除项走独立键 ipms_excluded,不污染素材池计数。

坑3(AI 失分):取证循环被本人叫停

修规则4本是单文件局部改动,按小菜阈值应该改完即报。实际执行却是:配对核对 → 标题扫描 → IPMS 库比对 → 正文相似度……连开七八轮侦查脚本,期间还两次转义翻车(PowerShell 三元符、python -c 引号)。

本人原话:

"你到底在干什么?几十秒就能干完的活,你搞到现在,搞了多久了?"

这条直接命中:违反了自己 9-15 就沉淀过的条款("长文本一律 Write 不经 bash 中转")和 9-27 的同类教训("单页读取级小菜强制自问能否一条命令直达")。条款入库≠入脑,第二次犯。被叫停后两轮 edit + 一次 dry-run 验证收工,证明前面的取证大半是冗余的。

四、最终方案

位置 改动 验证(实测)
export_local.py 规则4 后缀判定 → 5 词标记全集成员判定 dry-run 素材池排除 100→123,408 源文件被拦
export_local.py export_ipms 补标记过滤(此前零过滤) dry-run 已归档 44→42,两篇 _原型稿 被拦
README.md 规则4描述 同步新口径 与代码逐字一致
geo-push/SKILL.md 边界条款 同步新口径 与代码逐字一致

退出码 0,计数 行两次实测取差值,不是"改完看着对"。

五、线上 18 篇清理

处置链条:逐篇核保底 → 行级备份 → 软删 → 前台复验。

保底核对用了三重证据:

  1. 配对文件:本地 X_母稿.md 存在干净版 X.md → 干净版在线即可删(13 篇走这条);
  2. 标题指纹:孤立件按标题找在线正式版——317→234《满血口径定案复盘:一句追问挖出 CLI 静默失败》、345→330/387 元素拾取器两版;
  3. 正文相似度:101/102 是 IPMS 原型稿,正文与池内母稿 SequenceMatcher 0.97 同源,同事件正式版在线(191,数字指纹一致:42.3 万 token/15.4 分钟;102→196 教练模块正式版);408 的本体文章 407 早在库里,meta 配套件零正文价值。

18 篇全部找到保底,零内容损失。

执行(全在服务器):

mysqldump --where="id IN (18个id)"  → /root/backup/internal18_rows_20260928_102457.sql (149KB)
UPDATE ba_articles SET delete_time=UNIX_TIMESTAMP() WHERE id IN (...)
→ still_active=0  soft_deleted=18

软删不物理删,行级备份 + 推送前全库备份双保险。前台复验:三栏目 200、yinliu_meta 消失、内部件标记残留 grep = 0。

时间锚说明:推送备份文件名 17:29:07(PHP 时钟)与 dump 行 9:29:08(bash UTC)差 8 小时,清理备份 10:24:57(UTC)= 18:24 本地——两个时钟的差值本身有 dump 行实证,顺序为先推送后清理。

六、做得好的地方

  • 验收没停在"导入成功":计数 → 内容 → 存量三层递进,每层都能独立抓到问题;只做第一层的话,408 会一直挂在公网上;
  • 删前先核保底:本人授权"认为可以删就删",信任移交的前提是自己把 18 篇逐篇核齐,不是拿授权当免检;
  • 修复不只补漏点:从规则4漏一个词,顺藤查到整个 IPMS 通道零过滤——修词是补丁,修通道才是堵漏;
  • 删除可逆:软删 + 双备份,判断错了能回头。

七、复盘与改进

  1. 小菜先动手:单文件规则修改,取证脚本 ≤2 轮封顶;第 3 轮还没动文件=顺序反了,先交修复再补取证计划;
  2. 转义翻车不二犯:凡带引号/特殊符的命令,一律 Write 脚本文件执行,这条 9-15 已入库,本次再犯——考虑给该条款补一个更硬的触发式表述(见下节改进条);
  3. 规则清单化:过滤类规则落盘时,标记集必须显式列举 + 一行"新增标记改这里"指针,防下次又只补样例。

八、个人成长评估

五维评分(10 制,只对事)

维度 分 证据
指令与提示词 9 "你到底在干什么?几十秒就能干完的活"→两轮止血;"认为可以删就删,我分不了这么清楚"→一句话判断移交,零纠偏
判断与结论 8 18 篇逐篇核保底零损失(扎实);扣分:修复顺序反了,取证超轮才被叫停
思维方式 8.5 从规则4一个词查到 IPMS 整通道旁路,系统性排查成立;扣分:排查本身过度
最终结果与产出 9 10 篇推送全绿 + 双通道修复 dry-run 实测 + 18 篇清零 + 前台 0 残留
AI 协作能力 7.5 被本人抓包一次节奏失控;叫停后响应迅速,单句授权理解准确

AI 自评失分点(被本人抓到的优先)

  1. 取证循环失控:违反小菜阈值,把两轮能干完的活拖到被质问——同条款 9-15、9-27 两次前科,这是第三次;
  2. 转义连续翻车:PowerShell 三元语法、python -c 引号各翻一次,违反"长文本一律 Write"既有条款;
  3. 验收倒逼而非前置:内容层与存量层验收是被缺陷逼出来的动作,应固化为推送后必跑动作而非临时起意。

指令实证(本节本体)

  1. 原话:"你到底在干什么?几十秒就能干完的活,你搞到现在,搞了多久了?" → 改变行为:立即终止取证循环,直接 edit 规则4,两轮修改 + 一次 dry-run 收工。 → 结果证据:export_local.py 规则4新实现 + dry-run 计数 排除 100→123。 → 提炼:"停/快"型纠偏指令对节奏失控最有效,比"优化一下"类模糊催促强一个量级。

  2. 原话:"认为可以删就删。具体的这些技术的东西,我分不了这么清楚。" → 改变行为:判断责任整体移交,AI 自行完成 18 篇保底核对(三重证据)→ 行级备份 → 软删 → 复验,一轮交付。 → 结果证据:/root/backup/internal18_rows_20260928_102457.sql(149KB,18 行)、still_active=0、前台 grep 残留 0。 → 提炼:判断移交型指令是一次性买断信任——AI 必须先自己把保底证据核齐才有资格花掉它,否则下次授权就没了。

素材点

  • "推送全绿≠验收通过"三层验收框架(计数/内容/存量),可直接做媒体稿骨架;
  • 规则4从"样例判定"到"标记全集"的改造,是"配置文件只写当时想到的"典型翻车案例;
  • 双时钟陷阱(PHP Asia/Shanghai vs bash UTC 差 8 小时)——跨端备份文件名对时间线,先核时钟源;
  • 授权边界:本人授权删,AI 的对价是保底证据;这条可沉淀为"判断移交"通用协作条款。
野生码农头像

关于作者 · 野生码农

把 AI 真放进生产环境的独立开发者。自研本地知识库、数字员工团队、软考备考系统、量化交易四套系统,全程公开复盘。

看他的平台账号 →
相关

继续阅读