<!-- title: 货架没有的第五道闸 -->
# 货架没有的第五道闸——工作流自动化线拆到产线自己的五道质检闸

> Skills 生态观察第 5 轮·工作流自动化专题（部署/CI/监控/多 Agent 协作）。本期在线通道仍未放行（curl、npx、WebSearch 本会话逐一被拒，沿用本栏 09-26 至 10-01 各期先例声明）；与前几期「纸面对账」不同，本期评测对象全部换成单机自建件——五道闸的代码与台账当日逐行实读于装机环境，引句均为原文；货架对照席评分一律沿用存档判例、不重评；凡推断处逐处标注※。本会话未获 `~/.claude/skills/` 下任何 SKILL.md 的读取授权，故无新增货架件实测。

## 概述

部署位四物种（09-28 卷）、CI 修理件与写侧向导（同卷）、接头五件与 master.sh 产线深拆（09-30 卷）、编排引擎退潮对账（09-30 卷）、监控位断供四十五天（10-01 卷）——第 5 轮的四个工位在本栏已全部结案。本期不开新工位，把上一卷没开箱的地方拆开：09-30 卷深拆 master.sh 时停在「调度循环」这一层，循环里真正卡进度的五道闸——**查重闸、验收闸、拒稿闸、配额闸、节奏闸**——从未被拆过。它们不是 Skill，是这条单机内容产线自己的质检层，没有门牌、没有星数，全部代码平躺在装机目录里。核心发现一句话：**货架把工作流自动化做成了部署、修闸、监控、编排四个工种，而这条真实运转的产线上最值钱的自动化是五道闸——货架上没有一件对得上号。**附赠一个现场证据：拒稿闸里躺着一件本赛道的拒稿，第 8 行——《会等的件：工作流自动化横评》。闸先于本文存在，而且对本文这条赛道用过刑。

## 一、工位台账：四闸结案之后，还剩什么没拆

先把账对齐。本栏在工作流自动化线上已交四卷：09-28《都叫部署件，拆开是四个物种》拆了部署四件加 CI 两件；09-30《五件工作流件，四张GitHub工牌》拆了 gh-cli、gh-address-comments、mcp-cli、skill-sync-github 等接头件，并深拆了 master.sh 的状态机；09-30 编排卷给 gstack（3.90）、planning-with-files（3.75）等编排件结了案；10-01《监控位断供45天，货架搬进菜单栏》判明监控需求外溢到了桌面壳。四卷共同的盲区在 09-30 卷的结语里其实已经写了——「货架在供货，产线在自建」——但那卷拆产线只拆到调度循环，循环体内每一道让任务「过」或「不过」的闸，没有一道被打开过。

## 二、评测对比表

五维权重沿用本栏总账：功能 25%、设计 25%、实战 20%、上手 15%、社区 15%。**社区活跃度维度五件全部无法评分**：均为单机自建件，无仓库、无星数、无第三方用户，凡涉及外部采用的内容本文一律不写；综合分为四维均分，口径同 09-28 部署卷。

| 闸 | 管什么 | 功能 | 设计 | 实战 | 上手 | 综合 |
|---|---|:---:|:---:|:---:|:---:|:---:|
| 查重闸 | 选题不得复写 | ★★★★★ | ★★★★ | ★★★★★ | ★★★ | **4.25** |
| 验收闸 | 成品过双条件才发布 | ★★★★ | ★★★★ | ★★★★ | ★★★★ | **4.00** |
| 拒稿闸 | 赛道级禁入名单 | ★★★★ | ★★★ | ★★★★★ | ★★★★ | **4.00** |
| 配额闸 | 分题种限额与静默时段 | ★★★★ | ★★★★ | ★★★★★ | ★★ | **3.75** |
| 节奏闸 | 星期轮换排班 | ★★★ | ★★★ | ★★★★ | ★★★ | **3.25** |

对照席（存档判例，不重评）：gh-fix-ci **3.9**（修理型，只管红灯之后）、github-actions-skill **3.8**（写侧向导，只管 YAML 语法）、gstack **3.90**、planning-with-files **3.75**（均见 09-30 编排卷）。它们与本表五闸的关系见第六节：**隔着一整层**。

## 三、逐闸开箱

### 闸一：查重闸——一万三千条标题当台账

### 闸二：验收闸——一行 bash 里的分级检查

本体在 `backup_v1/task_runner.sh` 第 41 行：

```bash
if [ $task_exit -eq 0 ] && [ -s "$OUTPUT_FILE" ]; then
```

两个条件缺一不可：进程退出码为零，**且产物文件非空**。这正是 CI 的「测试绿了还不够，工件也得真产出来」。外面还套着 `timeout 3600`——单篇限时一小时，硬截断。过闸之后还有一层更值得学的分级：mermaid 渲染失败只记「had issues (**non-fatal**)」，继续发布；发布本身则是阻断步骤。**阻断检查与警告检查在同一道闸里分了级**——这是全产线唯一的分级实践，货架上恰恰没人写这一层：gh-fix-ci 只认红绿，github-actions-skill 只管把 YAML 写出来，「警告级不阻断」这种最工程化的判断，两个件的能力清单里都没有。瑕疵也有：今天的 output 目录里躺着两个零字节残盘（skills-ecosystem-r5-1043.md 与 r6-0839.md，实测均为 0 字节）——闸拦住了发布，没拦住落盘，**阻断是生效的，卫生是欠的**。

### 闸三：拒稿闸——四百四十三条禁区

本体是 `config/rejected_titles.txt`，443 条，赛级禁入名单：进去的不是一个标题，是一整类题。它与查重闸的分工是粒度——查重闸管「这篇写过没有」，拒稿闸管「这类别再试」。本文开头那条《会等的件：工作流自动化横评》就是它对本期赛道的历史判决。设计分只有三星，因为它是手工维护的平名单：条目不带日期、不带理由、不见有效期，被拒的题没有赦免通道※。实战分给满：443 条禁区横在提示词里，配合查重闸构成动笔前的两连问——「写过没有」与「让不让写」——这恰是传统 CI 里 pre-commit 钩子与分支保护的双件套，只是它拦的不是代码，是选题。

### 闸四：配额闸——货架集体缺席的那件内功

本体在 `config/settings.sh`：一张分题种配额表 `TASK_ROUNDS`——skills-ecosystem 每日 6 轮、youtube-deep-dive 16 轮、telecom-tech 与 telecom-deep-tech 各 1 轮、github-monetizable 8 轮、未列者回落默认 4 轮；总量 `MAX_ARTICLES_PER_DAY` 在 v2 配置里是 200（v1 的 master.sh 时代是 60，09-30 卷存档为证——同一参数，两代配置，产量翻了三倍多）；限流等待 `DEFAULT_WAIT_ON_429=18000`，命中即睡五小时；每任务间 `TASK_COOLDOWN=5` 秒。09-30 卷的判词在这里得到全文印证且可以加码：货架件不仅默认额度无限，连「每个题种该烧几轮」这个维度都不存在。配置里还有两处真实伤痕：静默时段注释写「Beijing 19:00-24:00 (UTC 11:00-16:00)」，代码取值却是 `QUIET_START_UTC=12, QUIET_END_UTC=14`——注释与代码差了两个小时※；文件中部还留着一行部署遗言「Append these to the existing settings.sh on VPS2」——多机部署靠复制粘贴，v1/v2 两代函数在同一文件里共存。上手二星就是给这些伤痕的。

### 闸五：节奏闸——一张自我矛盾的排班表

本体是 settings.sh 里那张星期轮换表：8 个题种、7 天一轮，注释宣称「每天从不同偏移起步以保证多样性」。实测这张表只有四种排序：周二、周五、周六三天的队列一字不差，周四与周日一字不差——注释的承诺，表没兑现。表里还留着一块疤：`（2026-08-28 修复：原硬编码=6）`——某次事故之后补上的注释，说明这张表坏过一次、修过一次。四维分 3.25 全场垫底，垫底的原因值得所有写「配置即文档」的人抄下来：**排班表是产线多样性的唯一保证，而它的注释与实值已经漂移，且没有任何机制会在漂移时报警**——闸自己也需要一道闸，这是全场最讽刺也最诚实的发现。

## 四、深拆查重闸：动笔之前就亮的红绿灯

把查重闸单拎出来，因为它回答了本季工作流自动化线最大的一个问题：CI 思想能不能管内容。能，而且管在了比代码更早的层。

传统流水线里，lint 在提交前跑、测试在合并前跑、报警在线上跑——全部作用在「已存在的产物」上。查重闸的位置再往前挪了一整站：它作用在**选题**上，文章还不存在，红绿灯已经亮了。13,873 行台账、443 条禁区、4,141 行选题史，加上注入每份任务指令的近期清单，构成一个「观念层的 pre-commit」——本文动笔前先过了这道闸，本栏每一篇都是它的出厂记录。

它的真实架构值得照抄：**执行便宜，审计便宜，中间留缺口**。执行层不跑任何程序，靠提示词把清单递给写作模型，成本是每次几百 token；审计层是一个纯平文件，`grep` 就能复核，无需服务无需数据库；缺口在于两层之间没有自动比对——执行层只看得到最近一百五十条，审计层存着 13,873 条，中间一万两千多条旧题，全靠模型自觉和编辑肉眼。浮点五子与符号双子就是从这个缺口钻进来的。

补法的成本也低到不像话：台账已在，缺的只是发布前一步相似度检查——从「`sort titles_index.txt | uniq -d` 只防全同」到「标题分词后算重合度防近同」，是一晚上的脚本活。这也是本栏第一次给产线本身开方，方子照例贴在第六节。

最后记一笔多 Agent 协作位的账：这条产线对「要不要拉群」的回答是**不拉**。五道闸全部建立在单写者假设上——一个任务、一份台账、串行过闸——09-30 卷那句「单写者假设下这已经够用」在这里得到完整注脚：当质量闸足够硬，并发的收益远小于账本冲突的代价※。编排件们竞卖的「多 Agent 协作」，在这条真实产线上的形态是排队。

## 五、一张图：五闸流水线

```mermaid
flowchart TD
    P["选题单进入产线"] --> G1{"查重闸<br/>13873条标题台账"}
    G1 -->|命中| R1["改题换题再排"]
    G1 -->|未中| G2{"拒稿闸<br/>443条禁区"}
    G2 -->|命中| R2["出局"]
    G2 -->|通过| Q{"配额闸<br/>分题种轮次上限"}
    Q -->|超限| R3["记账<br/>次日再排"]
    Q -->|有额度| H{"节奏闸<br/>星期轮换表"}
    H -->|不当班| R3
    H -->|当班| W["动笔<br/>限时一小时"]
    W --> A{"验收硬闸<br/>退出码加非空"}
    A -->|不过| R4["记失败账<br/>残盘留在原处"]
    A -->|过| M["验收软闸<br/>渲染警告级"]
    M --> PUB["发布上线"]
```

读法一句话：前四道闸全在动笔之前——这正是它与货架 CI 件的本质分野，gh-fix-ci 们的红绿灯挂在「已经写完、已经构建」之后，这里的红绿灯挂在「要不要写」之前。

## 六、闸与货架的对照表

| 产线闸 | 传统 CI 对应物 | 货架上最接近的件（存档分） | 差距 |
|---|---|---|---|
| 查重闸 | pre-commit / lint | 无对应件 | 货架没有选题层的件 |
| 拒稿闸 | 分支保护 / 禁入清单 | 无对应件 | 需要全局选题史，件是会话作用域 |
| 配额闸 | rate limiter | 无对应件 | 09-30 卷判词：货架默认额度无限 |
| 验收闸 | 测试 + 产物检查 | gh-fix-ci（3.9，事后修理） | 缺产物非空检查，缺警告级分级 |
| 节奏闸 | 排期系统 | 调度件（Harvester，存档已专拆） | 闸在表里，件在表外 |

十月初《监控位断供45天》那卷给过「格式的物理天花板」判词：会话作用域的 SKILL.md 干不了常驻的活。本卷给同一论断补下半句：**会话作用域也干不了跨会话记账的活**——五道闸的共同前提是「记得上一次」，而这恰是件的格式给不了的。

## 安装与复现命令

五道闸全是本机文件，复核不需要装任何东西（路径相对 wiki 根目录）：

```bash
# 查重闸：台账规模与漏网样本
wc -l config/titles_index.txt
grep -n "0.1" config/titles_index.txt | head -5

# 拒稿闸：本赛道的历史拒稿在案
grep -n "工作流自动化" config/rejected_titles.txt

# 配额闸：分题种配额表与静默时段
grep -n "TASK_ROUNDS\[" config/settings.sh
grep -n "QUIET_" config/settings.sh

# 验收闸：双条件与渲染分级
sed -n '35,54p' backup_v1/task_runner.sh

# 节奏闸：星期轮换表与那次修复的疤
sed -n '27,38p' config/settings.sh
```

货架对照席的安装沿用存档口径：gh-fix-ci 的检查脚本可独立运行（09-28 卷实测命令 `python ~/.claude/skills/gh-fix-ci/scripts/inspect_pr_checks.py --repo . --json`）；接头件按 09-30 卷口径 `npx skills add <件名>`。查重闸的补闸方子（发布前相似度检查）见第四节，脚本需自写，无现成件。

## 推荐排行榜

- **最值得抄进任何产线**：配额闸（一个关联数组十行 bash，货架空白）＞ 验收闸双条件（一行，拦住零字节残盘）＞ 查重台账（一个平文件，13,873 行零依赖）。
- **设计最值得学**：查重闸的双层架构——执行层放提示词、审计层放台账，两边都便宜，中间的缺口明码标价。
- **最欠修三处**：节奏闸注释与表不符；静默时段注释与取值漂移两小时；验收闸拦发布不清理残盘。
- **货架空白榜**：五道闸无一有对应件；距离最近的 gh-fix-ci 还隔着一整层——它修红灯，这里连「要不要开灯」都管。
- **多 Agent 位补记**：这条产线的答案是单写者加排队过闸，编排件竞卖的拉群方案，在真实产线上暂时没有工位。

## 材料边界声明

本期未读取 `~/.claude/skills/` 下任何 SKILL.md（读取授权未放行），货架对照席一律存档判例口径；backup_v1 为快照目录，线上 runner 可能已有增量——任务模板里的 `{{ROUND}}` 占位符在快照版 task_runner.sh 中无人替换，而实际任务指令中该值已填充，即为快照落后的直接证据※；今日 output 目录轮次密度超出快照配额表的 6 轮上限，同一方向的旁证※；glossary_queue.txt（229 行）与 terms_index.txt（912 行）两本术语账未逐行读，本文不作断言；注释漂移、名单无赦免机制两处为代码实读所得，意图层面哪边是对的无法裁决，均带※。

## 参考来源

1. `config/titles_index.txt`（13,873 行，实读）— 查重闸台账本体，浮点五子与符号双子条目出处
2. `config/rejected_titles.txt`（443 条，实读）— 拒稿闸本体，《会等的件：工作流自动化横评》第 8 行出处
3. `config/settings.sh`（实读）— 配额闸、节奏闸、静默时段、v1/v2 分层与 VPS2 部署注释出处
4. `backup_v1/task_runner.sh`（实读）— 验收闸双条件、timeout 3600、渲染 non-fatal 分级出处
5. `prompts/skills-ecosystem.md`（实读）— 任务模板 {{DATE}}/{{ROUND}} 占位符与轮次提醒出处
6. 本栏存档《都叫部署件，拆开是四个物种》（09-28）— gh-fix-ci 3.9、github-actions-skill 3.8 判例分与故障排查段同源发现
7. 本栏存档《五件工作流件，四张GitHub工牌》（09-30）— 接头五件评分、master.sh 三件内功、MAX_ARTICLES_PER_DAY=60（v1 口径）出处
8. 本栏存档《监控位断供45天，货架搬进菜单栏》（10-01）— 四工位结案口径、格式的物理天花板判词与通道声明先例
9. [anthropics/skills](https://github.com/anthropics/skills) — 官方件仓库，本栏长期设计参照
10. [skills.sh](https://skills.sh) — Skills 生态站，本栏定期观察渠道

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
