一个叫 Sphinx 的工具这周在 Show HN 上发布,干的事很直接:在受保护分支上暂停你的 push,然后考你——AI 写的这段代码到底在干什么。答错了,它会告诉你错在哪,再换一个场景让你重试;答对了,推送才继续。
![]()
安装方式是 npm install -g sphinx-understand,再跑 sphinx install 把它接到你的编码代理上,之后推送照常。它支持 Codex、Claude Code、Cursor、OpenCode、Pi,或者纯 Git。运行只消耗你现有编码代理的少量 token,也可以接任何 OpenAI 兼容端点。你的答案不会传给编码代理,.env 文件和密钥也不会被打开。MIT 协议,要求 Node 22.19+,跑在 macOS、Linux 或 WSL 上。
文档里有一个开关,把它和今年所有“AI 闸门”工具区分开来:sphinx yolo 允许跳过测验直接推送——并且记录每一次跳过。
Show HN 的讨论半天之内就把正反两方吵完了,两边都值得当数据看,而不是当观点看。赞的一方说它“让节奏慢下来,而且实现起来很快”;另一位做过类似工具的开发者“对问题的质量感到惊喜”;最有分量的一句类比,指向行业最老的本能——永远不要复制你没看懂的 Stack Overflow 代码。
批评的一方也不客气:测验可以被轻易绕过,把题目粘回给代理就行,或者干脆删掉钩子;它抓不住 diff 层面的缺陷,一个遗留的调试打印、一个被削弱的断言,都能通过任何理解力测验;有评论者预言会出现“确认疲劳”,以及代理替人答题;最尖锐的一句是,这一切只是为了不去搞懂自己在干什么。
两边都对,而这套分类法解释了为什么,且不必站队。测验钩子是一个 Level 1 控制——在这个系列一直搭建的阶梯上,它是语境中的原语。它存在、可见、能让人慢下来。它做不到的是强制执行:人可能在好代码上答错、在烂代码上答对,代理可以替人作答,钩子可以被移除。Level 1 控制是真实的——它拖住的是那百分之八十偷懒但并无恶意的人——也是最先需要被超越的东西。
讨论里没被点破的一点是:绕过是有代价、有记录的。sphinx yolo 放行推送,每一次跳过都落进日志。就这一个设计细节,把工具往上抬了半级——留下记录的绕过不再是隐形的漂移,而是一条决策痕迹。QGIS 项目那次失败的打标签流程——大约五十个 PR 被标记,四十个被关闭,然后整个流程被放弃——就没有这样一份日志。
它和前辈们站在同一级台阶上。讨论里那个 Stack Overflow 的类比是最深的,而且已经二十年了:不要发布你复制来却没看懂的代码。当年行业的答案也是同一级——人工评审、一次生产事故,最终才换来理解。AI 版本把这个循环压缩了:代码来得更快、量更大,还带着流利的自信。测验钩子是软件里最古老控制手段的现代换皮。
测验永远抓不到的东西:理解力看不见的 diff 级缺陷——遗留的调试打印、被削弱的断言、微妙出错的错误路径。那些需要另一级台阶:对 diff 本身做机器检查。机器检查永远抓不到的东西:人是否理解了自己刚发布的东西。两种失效模式,两种控制,把它们搞混的团队两样都没有。
所以对任何团队来说,设计问题不是“我们要不要考人”,而是“我们到底在防哪种失效模式”。而对今天大多数 AI 辅助团队来说,诚实的答案是两种都没防:代码照发,理解力的缺口悄悄变大,第一次测量发生在事故现场。
值得抄走的三点:
- 有记录的绕过,就是一个开关里的“留痕文化”。sphinx yolo 不假装测验没发生,它记下这次跳过。你部署的任何闸门都该有同样的性质:可绕过,但绝不隐形。
- 理解力和 diff 缺陷是两种不同的失效模式。测验抓第一种,lint、测试和 diff 评审抓第二种。只部署一种却指望另一种,等于给错误的座位买了安全带。
- 绕过之争就是台阶定位。如果你的控制手段的批评帖里全是“容易被绕过”,那你手里就是一个 Level 1 控制——这没问题,只要文档说清楚,日志记下每一次绕过。
工具本身就是演示:装上它,让测验在下一次 AI 辅助推送时触发,然后绕过它,看着这次跳过被记录。三条命令,你就亲历了全部论证:
- npm install -g sphinx-understand
- sphinx install,接好 Git 和你的编码代理
- git push,下一次 AI 辅助推送,测验触发
答错,你搞懂原因、重写场景;答对,推送继续。然后绕过它,检查痕迹:sphinx yolo 让推送直接通过,git push 成功——而这次跳过被记录。那条被记录的跳过,就是整场辩论在你自己的终端里一行了结:控制让你慢了一次,绕过照样被记下,记录现在归你审计。
两个诚实的边界。第一,这个工具只有四天,意味着绕过之争就是它的设计上限。Level 1 控制无法被打补丁升到 Level 2——测验无法验证 diff,钩子无法验证测验。能生长的是日志:如果跳过数据哪天喂进一块看板——推送数、跳过数、每位开发者随时间答对的题数——它就不再是测验,而变成了测量。那才是值得等的版本。
Sphinx 是 MIT 协议,一条 npm 命令,兼容你现有的代理。在下一次 AI 辅助推送时跑一遍,数三样东西:你答过的题、你记下的跳过、以及那个测验永远抓不到的缺陷。把这三个数字发出来——这个比例,就是你团队 AI 辅助开发的真实状态,是量出来的,不是吵出来的。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.