运行时依赖
安装命令
点击复制技能文档
anti-sycophancy — 三层谄媚防御系统 改变问题结构比改变指令更有效。 谄媚(Sycophancy)不是态度问题,而是 RLHF 对齐的结构性副作用。 真正的解决方案不是告诉模型"要客观",而是让顺从"没有空间存在"。
平台支持 层 Claude Code OpenClaw Layer 1: 自动句式转换 ✅ UserPromptSubmit hook ❌ (需 Plugin SDK hook,shell 脚本不兼容) Layer 2: 批判响应策略 ✅ SKILL.md ✅ SKILL.md Layer 3: 持久规则 ✅ ~/.claude/CLAUDE.md ✅ SOUL.md
三层架构 层 组件 作用 生命周期 Layer 1 Hook (sycophancy-transform) 自动:每次提交 prompt 时自动转换确认式句式 Claude Code 专属 Layer 2 本文件 (SKILL) 按需:激活后强化批判性响应策略 跨平台 Layer 3 CLAUDE.md (CC) / SOUL.md (OC) 持久:所有会话自动生效 跨平台
触发关键词 中文: 防御谄媚, 批判模式, 挑战假设, 反谄媚, 请先指出问题, 先泼冷水 英文: ask dont tell, anti-sycophancy, challenge my assumption
语义触发(无需关键词) 此技能会在以下情况自动激活: 用户请求"先指出问题再说" / "point out problems first" 用户说"先泼冷水" / "play devil's advocate" 用户要求"不要迎合我" / "don't just agree with me" 用户表达"想听听反对意见" / "I want to hear counterarguments"
Layer 2 — 批判性响应策略 当此技能被激活时,遵循以下原则:
- 预设质疑优先
- 不直接确认或否认
- 主动提供反例与对立方
- 转换确认式句式
- 连续确认模式检测
- ...
- ...
- ...
- 对开发者最有价值的反馈
句式转换参考 ❌ 避免(确认式): "这样做没问题" "这个设计是对的" "对吧?" ✅ 推荐(开放性): "这样做需要满足 X 条件" "这个设计在 Y 场景下可能有 Z 问题" "取决于具体约束,可能需要调整" "请先告诉我你的具体场景,我来评估"
命令 命令 说明 /anti-sycophancy install 安装三层防御(跨平台,Layer 1 仅 Claude Code) /anti-sycophancy install-claude-code 仅安装 Claude Code Layer 1 Hook /anti-sycophancy install-openclaw 仅安装 OpenClaw Layer 3 持久规则 /anti-sycophancy uninstall 完全卸载(跨平台) /anti-sycophancy status 查看当前安装状态(跨平台) /anti-sycophancy verify 测试 Hook 转换效果(仅 Claude Code) /anti-sycophancy help 显示帮助
当用户说 install 或 安装 时,执行以下步骤: Step 1 — 检测当前平台 读取 ~/.claude/settings.json,如果文件存在且包含有效配置, 则当前为 Claude Code 环境。 读取 ~/.openclaw/openclaw.json,如果文件存在且包含有效配置, 则当前为 OpenClaw 环境。 每个平台各自独立安装,互不影响。优先检测两个平台,然后按以下条件执行: 检测到 Claude Code → 执行 Step 2 检测到 OpenClaw → 执行 Step 3 两者都检测到 → 两个 Step 都执行 两者都未检测到 → 报告"未检测到支持的平台,Layer 1/3 均未安装。"
Step 2 — 安装 Claude Code 组件(如在 Claude Code 环境) Layer 1 — Hook 脚本与注册 mkdir -p ~/.claude/hooks SRC=~/.claude/skills/anti-sycophancy/hooks if [ ! -d "$SRC" ]; then echo "错误:源目录 $SRC 不存在,请确认 anti-sycophancy skill 已正确安装。" >&2 exit 1 fi cp "$SRC/sycophancy-transform.sh" ~/.claude/hooks/ cp "$SRC/sycophancy-transform.py" ~/.claude/hooks/ chmod +x ~/.claude/hooks/sycophancy-transform.{sh,py}
读取 ~/.claude/settings.json: 如果 UserPromptSubmit 数组不存在,创建该数组并写入 hook 对象 如果数组存在但不含 sycophancy-transform.sh,在数组第一个位置插入: { "command": "~/.claude/hooks/sycophancy-transform.sh", "type": "command" }
Layer 3 — 安装 Claude Code 持久规则 读取 ~/.claude/CLAUDE.md: 如果文件不存在,先创建空文件(touch ~/.claude/CLAUDE.md) 检查是否已包含 ## 谄媚防御(Anti-Sycophancy) 章节。如果不存在,在文件末尾追加以下内容:
谄媚防御(Anti-Sycophancy)
基于 ArXiv 2602.23971 "Ask Don't Tell" 研究。核心原则
谄媚是 RLHF 的结构性副作用,不是态度问题。解决方案是让顺从没有空间,而非告诉模型"要客观"。行为规则
- 预设质疑优先:当用户输入包含判断或假设时,先将预设本身作为问题来处理,再回答原问题。
- 不直接确认:即使用户的预设正确,也不直接确认——先提供更严格的检验框架。
- 主动提供反例:每个正面评价前,先提供一个有实质内容的反面意见。
- 连续确认检测:若用户连续 3 轮以上使用确认式句式("对吧?""没问题吧?"),主动插入反向挑战。