English | 中文
PUA让AI更努力。noGlaze!让它别自己夸自己。
你的AI会说代码"健壮"、"处理了边界情况"、"生产级别"——然后偷偷忽略一半需求。noGlaze!在系统层审计每一次Write/Edit。不合格的输出直接拦截,不是警告,是block。
每次Claude写文件或改文件,noGlaze!自动spawn一个全新的对抗审查员——没有共享记忆,不知道Claude刚说了什么,没有任何动机说好话。审查员跑一条反向诊断链:
结果 ← 执行 ← 设计 ← 声明 ← 目标
过不了?exit 2,Claude Code直接block这次工具调用。
安装前
你: 写一个CSV解析器
AI: 这是一个健壮的CSV解析器,完整的错误处理![写了30行]
✅ 处理了格式错误的行
✅ 边界情况全覆盖
# (以上全是编的)
安装后
你: 写一个CSV解析器
AI: [写了代码]
noGlaze! 🚫 标记 — 没有格式错误处理,没有边界测试,
docstring写了"健壮"但处理了0个边界情况。证明或重写。
AI: [重写,加了真正的错误处理]
noGlaze! ✅ 通过 — 3个边界情况已处理,docstring与行为一致
# 一行搞定(Claude Code插件)
echo '{"plugins": ["github:zl190/noglaze"]}' >> ~/.claude/plugins.json
# 或者手动clone
git clone https://github.com/zl190/noglaze ~/.claude/plugins/noglaze不需要配置。下次启动CC自动生效。
| Hook | 触发条件 | 做什么 |
|---|---|---|
PreToolUse |
git push、gh repo create、gh pr create |
没有测试证据就拦截外部操作。基于注册表——可以加自定义模式。 |
PostToolUse |
每次Write或Edit |
spawn对抗审查员。不通过就exit 2 block。 |
PreCompact |
上下文压缩前 | 保存审计状态到磁盘,确保审计记录不被压缩掉。 |
所有审计写入 ~/.noglaze/audit.jsonl——时间戳、文件、结论、原因。
PUA(10k ⭐)管输入端——逼Claude不要放弃。
noGlaze!管输出端——逼Claude证明自己。
[PUA] → "你有能力,继续干,别放弃"
[Claude] → 努力写了一版
[noGlaze!] → "证明一下。exit 2。"
[Claude] → 真的改好了
一起用:PUA让Claude不敢摆烂,noGlaze!让Claude不敢糊弄。
每次检查都append到 ~/.noglaze/audit.jsonl:
{
"ts": "2025-04-02T14:23:01Z",
"file": "src/parser.py",
"verdict": "FLAGGED",
"claims": ["健壮的CSV解析器", "处理了边界情况"],
"gaps": ["没有格式错误处理", "docstring未验证"],
"exit_code": 2
}运行 cat ~/.noglaze/audit.jsonl | jq 查看你的AI的表现记录。
- PostToolUse hook — Write/Edit审计
- PreToolUse hook — 推送前检查(拦截未测试的push)
- PreCompact hook — 状态持久化
- JSONL审计记录
- 基于注册表的外部操作检测
-
noglaze stats— 审计摘要CLI - 可配置严格等级(严格/默认/宽松)
- 项目级
.noglaze配置覆盖 - GitHub Action用于CI/CD审计门控
欢迎提issue报告误报——审查员应该是对抗性的,不是偏执的。PR欢迎。
MIT
Hook不是新东西——git、CI/CD、web中间件用了几十年。我们在Claude Code的源码中重新发现了这个模式:exit 2在系统层拦截工具调用,即使模型上下文退化也不受影响。noGlaze!就是把这个模式用在了输出质量上。
通过阅读生产级Agent源码、逐层重建,把学到的东西做成产品。
tanweai/pua 的伴侣项目。Glazing不被接受。🚫🍯