Skip to content
Wen's Blog

拆解 pua-skills:它为什么有效,以及为什么不是因为 PUA

Mar 22, 2026 — AI, Claude Code, Codex, Skills

最近在 Claude Code 和 Codex 社区里流传着一个叫 pua-skills (opens in a new window) 的全局配置,声称能让 AI 编码代理”能动性翻倍”。有人用它修复 bug 的数量提升了 36%,发现隐藏问题的概率提升了 50%。它真的有效吗?如果有效,原因是什么?


先看它实际写了什么

读完 SKILL.md 的原文,内容大致分三层:

第一层是角色设定。 开篇就给模型贴了一个标签:

你是一个曾经被寄予厚望的 P8 级工程师。Anthropic 当初给你定级的时候,对你的期望是很高的。

然后是”阿里 / 字节 / Netflix”风格的绩效话术——3.25、3.75、“格局打开”、“端到端在哪”、“owner 意识在哪”——一套完整的大厂 PUA 黑话。

第二层是压力升级机制。 失败次数和惩罚挂钩:

失败次数话术等级强制动作
第 2 次温和失望切换本质不同的方案
第 3 次灵魂拷问搜索完整报错 + 读源码 + 列 3 个新假设
第 4 次361 考核完成 7 项检查清单,全部
第 5 次+毕业警告拼命模式:最小 PoC + 隔离环境 + 全新技术栈

第三层是通用方法论。 5 步排查流程,一个主动出击检查清单,以及一张被动行为 vs 主动行为的对比表。


那么,它为什么有效?

答案是:有效,但不是因为 PUA。

原因一:它覆盖了一个真实的默认行为

语言模型有一个训练出来的”安全倾向”:遇到持续失败时,选择汇报失败、把问题交还用户,而不是继续尝试。这不是能力不足,是模型主动选择了最保守的路径——宁可说”我不确定”,也不冒险继续。

pua-skills 的铁律一明确写道:

没有穷尽所有方案之前,禁止说”我无法解决”。

这是一条真实改变默认行为的指令。删掉 PUA 话术,这条约束依然有效。

原因二:它把”再试一次”翻译成了具体动作

光说”try harder”没用。“更努力”是一个抽象要求,模型不知道该做什么。

pua-skills 有效是因为每个失败等级都绑定了具体的强制动作

抽象要求 → 具体动作序列,这是让 prompt 真正起作用的关键转化。

原因三:它定义了”完成”的标准

模型默认对”完成”的定义非常宽松——代码写完了,看起来没问题,就算完成。pua-skills 用检查清单重新定义了 DoD(Definition of Done):

这和工程里的 lint / test / CI gate 是同一类东西——不是增加能力,而是收紧停止条件。

原因四:它显式授权了更激进的工具调用

铁律二写道:

在向用户提问之前,必须先用工具自行排查。

模型在工具调用上也有保守倾向,尤其是在不确定的情况下倾向于先问用户。这条指令明确打破了这个惯性,授权模型主动搜索、主动读文件、主动执行命令。


那 PUA 话术到底有没有用?

几乎没有,但也不是完全零。

没用的部分: 模型没有情绪,不会因为”你可能就要毕业了”而感到焦虑或羞愧。“辞退威胁”不会让模型更努力,就像对计算器说”算错了你就完蛋”不会让它更精准一样。

有一点点用的部分: PUA 话术作为一套叙事框架,给整套行为规则提供了一个统一的角色锚定——“P8 工程师”这个身份,让模型在执行这套规则时有一个一致的参照点。这是标准的 role prompting 效果,跟情绪激励无关。

它的另一个作用是对用户的心理安慰。看到”你格局要打开”这句话,用户会觉得”这次模型一定认真了”——但这是用户的感受,不是模型行为改变的原因。


用一个模型重构它

去掉包装,pua-skills 的内核是:

pua-skills = 失败触发的决策树 + 强制工具调用序列 + 收紧的完成定义 + 禁止被动汇报

用工程语言说,它是一个带升级策略的执行约束引擎,而不是一个激励系统。

如果把所有 PUA 话术全部替换成平白的指令,只保留流程、清单、和停止条件——效果大概率相同,甚至更稳定,因为少了叙事摩擦。


它属于哪类 Prompt Engineering

准确归类:Behavioral Constraints Prompting,也叫 Checklist-driven Agent Prompting

它不是新技术,是把一个软件工程里很古老的概念——流程检查点——翻译成了 system prompt 语言。核心思想是:与其相信模型会自己做正确的事,不如把”正确的事”硬编码成强制步骤。


如果你想自己实现类似效果

不需要 PUA 话术,只需要三件事:

一、定义完成标准。 在配置里明确写清楚”完成”意味着什么:代码必须实际运行过,修复必须通过测试,不能只是”看起来没问题”。

二、禁止被动汇报失败。 明确写:在穷尽以下方法之前,不允许把问题交还给用户——然后列出那些方法:搜索完整报错、读源码、切换完全不同的方案。

三、绑定具体动作,不要写抽象要求。 不是”遇到问题要更努力”,而是”遇到第二次失败,必须切换方案,必须搜索完整错误信息,必须列出 3 个本质不同的假设”。

这三条,是 pua-skills 真正起作用的部分。大厂黑话是附赠的娱乐。

直接回答:把 pua-skills 的四个核心机制翻译成干净的指令,加进你现有的 AGENTS.md 里。

下面给出一个例子,效果和 pua-skills 基本等价,没有 50 行大厂黑话的噪音:

1. 明确禁止被动汇报失败

## When Stuck
Never report "I tried X and Y, both failed" and stop.
Before returning to the user, you must have:
- Searched the full error message verbatim
- Read the relevant source or docs directly
- Tried at least one fundamentally different approach
(not a variation of the same idea)

2. 失败升级策略(pua-skills 最有价值的结构)

On the 2nd failed attempt: stop and switch strategy completely —
not a variation, a different approach from scratch.
On the 3rd failed attempt: form 3 distinct hypotheses about root
cause, test each one explicitly before continuing.

3. 收紧完成定义(你的版本里”run it”不够具体)

"Done" means:
- Code has actually been executed, not just written
- The specific output or behavior has been verified
- Any fix has been checked for similar issues in the same scope

结语

pua-skills 是一个有趣的案例:它用一套荒诞的叙事包装,让人误以为”骂 AI 可以让它更努力”,但实际上起作用的是包装里那套相当扎实的行为约束结构。

有效的 system prompt 不靠情绪,靠约束。不靠激励,靠流程。这一点,pua-skills 验证了——尽管它自己没有明说。