<!-- title: HN开考三题：一张白卷两张半卷 -->

# HN开考三题：一张白卷，两张半卷——开发者效率四闸的应考对账

## 概述

本栏 Skills 生态定期观察，第 3 轮，开发者效率横评。今晨考勤簿文末留了句话：下一波的施工题已经出好，整版挂在 HN 首页。本期把那三道题正式开考：逐题从九月存档里点将，按证据阶梯判卷，给空位出规格草案。判卷结果一句话：**说不清的失败题，全生态白卷——证据阶梯 E0 到 E5 六层每层都有人站，唯独「只在生产、无法复现、间歇出现」的考题落在层与层的缝隙里；解耦题半卷——重构赛道三条路线管的全是代码内部的楼层，没一件管代码与平台的插座；集成测试题大半卷——官方件管开车，社区仿真器管假机场，「合并后自证」的考场还是空地。**

## 口径声明，先钉死

## 三道考卷总览

| 考卷（HN 印刷值） | 对应闸口 | 存档最佳应考者（存档分） | 判卷 |
|---|---|---|---|
| The Normalization of Inexplicable Failures（246 分）| 调试 | systematic-debugging（4.10，09-20 期）| **白卷** |
| Don't couple your Go code to GitHub（145 分）| 重构 | simplify（4.80，09-05 期）| **半卷** |
| Fakecloud: Local AWS cloud emulator for integration tests（110 分）| 测试 | webapp-testing（4.7，09-19 期）| **大半卷** |

三道题的分数排序和闸口的拥挤程度恰好倒挂：调试闸是存档里横评次数最多的赛道（09-06 七件、09-16 六件、09-20 证据对账三场），应考者名单最长，交出的却是白卷；测试闸空了十三天，反而因为官方件和一条 HN 新货凑出大半卷。**应考人数和卷面分数无关，决定分数的是考题落在谁的操作定义之内。**

## 考卷一：说不清的失败（246 分）——证据阶梯上的集体弃考

HN 标题层信号：*The Normalization of Inexplicable Failures*——「说不清的失败正在被正常化」。翻译成调试闸的考题：一个 bug 只在生产出现、间歇出现、本地复现不出来，谁接？

09-20 期《x64dbg 毕业》给调试赛道立过一座证据阶梯，本期逐层点名应考情况：

**E0 方法论层：systematic-debugging，弃考。** superpowers 框架的方法论子件，装机 177.6K（07-08 存档口径），调试赛道无人接近；宿主 obra/superpowers 今日热榜印刷 292,190 星。它的流程纪律是复现、假设、验证、缩小、修复、再验证，并明确禁止反复猜测乱改。09-20 期的判词本期原文转引：**当 bug 玄到复现不出来，方法论给不出它承诺的东西——E0 的天花板是「思路不歪」，不是「真相到手」。** 考卷一的第一句话就是「复现不出来」，它在第一行就交了白卷——不是它不好，是考题在它边界之外。

**E1 自造证据层：tdd，立场性弃考。** mattpocock/skills 53 件套的纪律件，装机 722.0K（skills.sh 08-28 口径），全开发者效率赛道的装机天花板。红绿循环的本质是让证据在写代码时就存在——但对「已经发生、尚未归因」的失败，它没有产线可进。正文至今无人核验（09-17 复核口径），存档分 3.9 ※。

**E3 平台日志层：gh-fix-ci，窗口性弃考。** 3.9（09-16 口径）。CI 红灯是触发信号最强的场景，但 09-20 期的判词同样适用：「用户报了个复现不了的线上 bug 时，它两眼一抹黑」——E3 的证据有机器背书，只覆盖提交后的窗口。

**E4 生产监控层：sentry 系，最接近应考，弃考在门槛。** 3.3（09-16 实装口径），仓库入口 getsentry/skills。线上堆栈、错误聚合、影响面——E4 是「过去发生过」的铁证，这正是考卷一要的那类证据。但 09-20 期的判词是「铁证递到门口，三道门挡住一半人」：要装 SDK、要错误攒到量、聚合之后只剩共性——间歇性失败恰好最容易被聚合抹平。铁证递到了门口，独此一份，可惜是事后印刷品，不是蹲守录像。

**E5 内存物证层：x64dbg 与 reverify，条件性弃考。** 3.6 与 3.4（09-04 黑箱口径）。断点命中时的寄存器与内存字节是调试里最硬的证据——前提是断点能命中。间歇性失败的根本特征就是停不下来，E5 的探针插不进一次不会发生的执行。

**网络物证层：pcap 三件，唯一带蹲守能力的流派，缺的还是那一步。** pcap-generator 4.2、pcap-analyzer 3.9、pcap-modifier 2.9（09-24 期印刷值，09-28 合诊转引）。analyzer 是全家族唯一留运行痕迹的件，「生产网真实排障，手上有一份抓包」是它的第一场景。这一派证明了一件事：**无法复现的失败，证据只能靠蹲守，不能靠召唤。** 但三件没有一个管「什么时候开抓、抓多久、抓到了怎么和部署差分对齐」——蹲守的战术有人在，蹲守的决策没人做。

判卷：六层阶梯，六个「不在我的操作定义里」。这不是哪一件的失职，是**层与层之间的缝隙没有工位**——E4 有历史铁证但没有采集决策，E5 有最硬探针但没有命中条件，方法论层干脆把这类失败划成界外。白卷，且是本栏存档里第一张有六个证人签字的白卷。

## 考卷二：解耦（145 分）——三条路线都在楼内，没人管插座

HN 标题层信号：*Don't couple your Go code to GitHub*——别把代码和某一家平台焊死。构建、发布、issue 联动如果绑死一家 forge，迁移就是大手术。这是重构闸的考题，而重构闸 09-05 期立过三条路线，本期逐路线对读：

**顺手修路线：simplify（4.80，09-05 期）**，出厂四件里唯一在窗口内发生能力增补的件——描述里新加了 altitude（抽象层级）清理维度。altitude 管的是「代码长在了错误的楼层」：该下沉的内联逻辑、该上浮的决策。这个操作定义对考卷二有个精确的错位：**楼层在楼内，插座在墙上**。平台耦合不是代码放错了层，是代码和外界的接缝制式选错了——simplify 的输入是 the changed code，一次 diff 装得下的它才管；换 forge 这种横切全库的手术，从输入定义上就不归它。

**先访谈再动刀路线：improve-codebase-architecture（4.05 ※，09-05 黑箱口径）**，mattpocock 套件（09-26 末印 269,860 星，近两日活跃榜缺勤）里 grilling 访谈原语的五个消费者之一。它的「动刀前先问透意图、约束、现状」是三条路线里离解耦评估最近的——耦合度本来就是架构访谈的第一话题。半卷的分它拿到了一半：**方法论上最近，操作定义上仍然空缺**——存档里没有任何一处写明它会输出「与外部平台的耦合清单」，更没有「换一家 forge 的迁移成本评估」。而且它的节奏是季度性的，simplify 适合每天、它适合每个季度的判词（09-05 期原话）反过来说明：没有一件适合「每次接新平台时」这个频次。

**规则编译路线：refactoring-ui-skill（3.78，09-01 实测口径，星轨 459 到 537）**，把《Refactoring UI》编译成规则集的「书改」标本。它对考卷二的价值是反面教材：09-01 期的批评是「规则若不闭环到改完截图自查，就只是许愿」。照进考卷二：将来 whoever 写解耦件，若没有「换一个 forge 跑一遍」的验收闭环，就是许愿的翻版——这一路线把「怎么验」的教训提前备好了。

**上游设计件：whiteboard（4.40 纸面分，09-28 晨档）**，devdotfast/whiteboard，YC W26 批次，HN 09-25 Show HN 254 分，星数两期 1770 到 1903。上午档把它定位成「重构的上游还有一扇门：动手之前把系统想清楚」。对考卷二它是半张卷的正主：**耦合在设计画布上是最容易被看见的**——外部依赖画在边界上，换平台的成本一眼可估。但画布不管迁移，设计时看见了不等于代码里解得开。

判卷：半卷。重构赛道全部三条路线加上游设计件，操作对象都是代码内部（楼层、书里的规则、画布上的方块）；「代码与平台的插座」在每一条路线的操作定义之外。09-05 期说过 altitude 是「当前所有社区重构件都没写的维度」——本期补一句：**比 altitude 更没人写的一整面墙，叫边界。**

## 考卷三：集成测试基建（110 分）——空了十三天的闸，反而交出大半卷

HN 标题层信号：Fakecloud，本地跑的 AWS 云仿真器，专供集成测试，110 分。上午档已记过一笔：可考信息只有一条标题，仓库、协议、支持哪些服务全部不可考，纸面分按「方向对、证据零」给。本期把它放回应考名单对读：

**官方侧两张纸：verify 与 webapp-testing。** verify 3.9（09-16 口径），描述写明 by running the app and observing behavior，自己都承认「跑不起来的项目会卡住」——卡住的那一类正是云依赖项目。webapp-testing 4.7（09-19 专文，测试轨道存档高分），「先侦察再动手」的纪律让它成为 E2 层最稳的一件，但 E2 的定义就是本地、单次、眼见为实。**官方把验证终点划在「本地起得来的应用」，云依赖从第一天就在划界之外**——这不是失误，是出厂件伸不进用户环境的结构性约束（09-20 期原话：E4、E5 的环境在用户手里，官方件只能留给生态）。

**tdd（3.9 ※）** 的红绿循环在单测层自洽，对「依赖 S3、队列、数据库这一套云件」的集成考场没有发言权。

**Fakecloud** 补的正是这段断喉：测试最贵的不是断言，是环境；本地仿真器让「合并后跑一遍」不用烧钱起真云。LocalStack 一辈的先例摆在那里，它的新意不在物种、在时点——AI 写码量上来之后，测试基建的缺口被撑大了（上午档判词）。

判卷：大半卷，但注意卷面构成——**开车的人有了（webapp-testing），假机场有了（Fakecloud），把两者编排成「合并后自证」流水线的考场还是没有**：什么时候起仿真环境、失败时怎么留证、留下的证据交给谁（考卷一的空位），三步之间没有工位。CI 件只管提交后的红灯，本地预演无人管。大半卷是两张好纸钉在一起的，钉书钉还没有人打。

## 空位规格：给白卷考题写一件

三道题里最该先补的是考卷一——它分数最高（246 分），且证据阶梯证明每一层都管不了它。综合本栏存档里反复验证过的三条设计律（superpowers 的反合理化表、simplify 的让位句、gh-fix-ci 的裸名教训），空位件的骨架可以直接开出：

```yaml
name: flaky-evidence
description: >
  Use when a bug or failure happens only in production, happens
  intermittently, or cannot be reproduced locally. Triggers:
  intermittent, flaky, heisenbug, cannot reproduce, 只在生产,
  复现不了, 时有时无. Do NOT use for failures you can already
  reproduce locally (use systematic-debugging instead).
```

正文四段，每段对应考卷一的一个失分点：

1. **冻结现场**：先留证后动手——保存日志快照、版本清单、环境差分基线、时间线。学 superpowers 把「上来就改代码」焊死：本件的宪法是**在解释之前，先让现场停止腐烂**。
2. **布点蹲守**：承认复现不可得，把目标从「抓现行」改成「布控位」——指导用户在疑似路径开结构化日志、对网络层开口抓包（这里是 pcap-analyzer 的接入位）、给错误上报加维度。这是 E4.5：**采集决策工位**，六层阶梯上唯一空着的那个。
3. **差分归因**：给一份固定清单——依赖版本、数据量级、并发形状、时钟与区时、环境变量、网络拓扑——逐项与「能复现的环境」对照打分，输出的是「嫌疑排序」，不是「答案」。明确禁止把排序说成结论（反合理化表式纪律）。
4. **让位句收尾**：本件不给「保证复现」的承诺；蹲到物证时，让位给 sentry 系做聚合、pcap-analyzer 做验尸、x64dbg 做内存裁决——「我只负责让它们有机会在场」。学 simplify：让位句写一次，兜住全部边界。

触发词设计有一条现成的教训要避开：gh-fix-ci 裸名上架导致「CI 黄了但措辞不像 fix-ci」时漏触发。所以 description 里放的是**症状词**（intermittent、复现不了）而非**身份词**——用户描述病症时，件要能被叫醒。

## 效率闸应考全景

```mermaid
flowchart TD
    EX["HN 三道考卷<br/>09-28 首页印刷"] --> Q1["考卷一<br/>说不清的失败 246分"]
    EX --> Q2["考卷二<br/>解耦 145分"]
    EX --> Q3["考卷三<br/>集成测试基建 110分"]
    Q1 --> A["systematic-debugging<br/>E0 方法论 4.10"]
    Q1 --> B["sentry 系<br/>E4 生产物证 3.3"]
    Q1 --> C["pcap-analyzer<br/>网络物证 3.9"]
    Q1 --> D["x64dbg 与 reverify<br/>E5 内存物证"]
    Q2 --> E["simplify<br/>altitude 清账 4.80"]
    Q2 --> F["访谈式架构件<br/>先问后动刀 4.05"]
    Q2 --> G["whiteboard<br/>上游设计 4.40"]
    Q3 --> H["webapp-testing<br/>官方 E2 4.7"]
    Q3 --> I["出厂 verify<br/>E2 3.9"]
    Q3 --> J["Fakecloud<br/>云仿真 证据零"]
    A --> V1["白卷<br/>缝隙在层与层之间"]
    E --> V2["半卷<br/>没人管插座"]
    H --> V3["大半卷<br/>考场无人编排"]
```

## 评测对比表：应考者存档分与本题应答

| 应考者 | 闸口 | 存档分（场次） | 证据层 | 本题应答 |
|---|---|---|---|---|
| simplify | 重构 | 4.80（09-05） | — | 楼层内清账，插座不归 |
| webapp-testing | 测试 | 4.7（09-19） | E2 | 本地行为可验，云依赖外 |
| whiteboard | 重构上游 | 4.40 纸面（09-28） | — | 设计时可见，迁移不管 |
| pcap-generator | 调试 | 4.2（09-24） | 物证制造 | 备课造包，不接考卷 |
| systematic-debugging | 调试 | 4.10（09-20） | E0 | 复现不了即弃考 |
| improve-codebase-architecture ※ | 重构 | 4.05 ※（09-05） | — | 访谈最近，清单未写 |
| tdd | 测试 | 3.9 ※（09-17） | E1 | 证据前置在单测层 |
| verify | 测试 | 3.9（09-16） | E2 | 自认跑不起来会卡住 |
| gh-fix-ci | 调试 | 3.9（09-16） | E3 | 窗口外最聋 |
| pcap-analyzer | 调试 | 3.9（09-24） | 物证读取 | 有蹲守物证，无采集决策 |
| refactoring-ui-skill | 重构 | 3.78（09-01） | — | 验收缺位的反面教材 |
| x64dbg-mcp-server | 调试 | 3.6（09-04） | E5 | 探针插不进不发生的执行 |
| reverify | 调试 | 3.4（09-04） | E5 裁决 | 同上 |
| sentry 系 | 调试 | 3.3（09-16） | E4 | 铁证事后，聚合抹平间歇 |
| pcap-modifier | 调试 | 2.9（09-24） | 物证改造 | 与本题无关 |
| Fakecloud | 测试 | 无分（证据零） | — | 方向票，仓库不可考 |

## 推荐排行榜

- **应考出勤榜**（谁至少摸到了考卷）：① webapp-testing 与 Fakecloud（考卷三正反两张纸）② improve-codebase-architecture（考卷二方法论最近）③ whiteboard（考卷二上游可见）④ pcap-analyzer（考卷一唯一带物证的）
- **存档分榜**（全场转引）：simplify 4.80 ＞ webapp-testing 4.7 ＞ whiteboard 4.40 ＞ pcap-generator 4.2 ＞ systematic-debugging 4.10 ＞ improve-codebase-architecture 4.05 ※
- **空位榜**（最该被写出来的三件）：① 蹲守式失败证据件（考卷一白卷，规格已给出）② forge 解耦体检件（输出平台耦合清单加迁移成本评估，验收闭环用「换一家跑一遍」）③ 合并后自证编排件（把仿真环境、行为验证、失败留证三步钉成一条流水线）

## 安装与使用

```bash
# 方法论与全家桶（systematic-debugging、writing-plans 随套件）
npx skills add obra/superpowers
# tdd 与访谈式架构件（grilling 原语所在套件）
npx skills add mattpocock/skills
# 生产物证（sentry 系）
npx skills add getsentry/skills
# 官方测试件（example-skills 内）
git clone https://github.com/anthropics/skills.git
# 网络物证三件套
npx skills add pcap-analyzer
# 上游设计画布
git clone https://github.com/devdotfast/whiteboard
# 内存物证（MCP 形态，需 x64dbg 与支持 MCP 的宿主）
# https://github.com/duty1g/x64dbg-mcp-server
```

simplify 与 verify 是出厂内置，斜杠唤起（`/simplify`、`/verify`），无需安装。Fakecloud 无仓库可考，入坑前先去 HN 条目原文找链接（09-28 晨档提醒原文照抄）。空位件 flaky-evidence 尚不存在，骨架在上一节，谁先写谁先认领。

## 结论

三道考卷判完，账很清楚：效率四闸的闸口上不缺人，缺的是**缝隙上的工位**——层与层之间的采集决策、代码与平台之间的边界清单、本地与云端之间的编排钉书钉。九月的横评把每座山头都拆过了，本期把山头之间的谷地量了一遍：三张卷子，一张白卷，两张半卷。上一轮断供期的经验（09-26 期起顺延口径）说货架上的新件还会继续缺；这份白卷就是下一次上新时，最该先到货的三张订单。

## 参考来源

> [!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)
