prompt-hardening
Prompt Hardening
硬化 agent prompt 使其可靠遵循指令的系统化方法。
核心原则:Prompt 不是策略文档,而是错误纠正系统。最可靠的约束不是更好的措辞,而是结构化不可能性。
When to Use
- Agent 反复违反同一条规则
- 部署新的 agent system prompt 前需要质量审计
- Agent "创造性地"绕过工具约束或长对话后行为漂移
- 如果不确定是否需要硬化,先用
scripts/audit.sh审计一遍再决定
When NOT to Use
- 不适用于代码生成、代码审查等执行型任务(用 code-review-enhanced、tdd-workflow)
- 不适用于 skill 质量改进流程(用 improvement-orchestrator)
- 不要把所有 prompt 问题都归为"硬化不够"——有些需要代码级强制(P13)而不是更多文字
Quick Reference
| 场景 | 推荐模式 | 强度 |
|---|---|---|
| 模型反复违反同一条规则 | P1 三重强化 + P13 代码级 | 最强 |
| 模型绕过工具约束 | P2 工具强制 + P3 穷举枚举 | 强 |
| 模型"合理化"违规 | P5 反推理阻断 | 强 |
| 长对话偏离规则 | P9 漂移防护 + P11 Echo-Check | 中 |
| 新规则首次部署 | P4 条件触发 + P7 示例对 | 标准 |
16 个硬化模式
详细说明、示例和来源见 references/patterns.md。
| # | 模式 | 一句话说明 | 来源 |
|---|---|---|---|
| P1 | 三重强化 | MUST/NEVER + good/bad example + I REPEAT | Claude Code, ChatGPT |
| P2 | 工具强制 | Use X (NOT Y) + 失败原因 | Claude Code, Warp |
| P3 | 穷举否定 | ✅/❌ 列出所有允许/禁止行为 | Codex CLI |
| P4 | 条件触发 | 当 X → MUST Y / NEVER Z | Gemini CLI |
| P5 | 反推理阻断 | 预判模型合理化借口并阻断 | Claude.ai |
| P6 | 优先级层级 | 显式声明规则冲突时谁赢 | Gemini, Jules |
| P7 | 行为锚定 | good/bad example + reasoning 标签 | Claude Code |
| P8 | 范围限制 | 做要求的事,不多做 | Claude Code, Warp |
| P9 | 漂移防护 | 长对话中注入提醒 | Claude.ai |
| P10 | 信任边界 | 区分可覆盖/不可覆盖的指令源 | ChatGPT |
| P11 | Echo-Check | 执行前复述约束 | Reddit (40-60% ↑) |
| P12 | 约束优先 | 约束 token > 任务描述 token | sinc-LLM (42.7%) |
| P13 | 结构化不可能 | 代码级强制 > prompt 强制 | Anthropic |
| P14 | 状态机门禁 | 布尔前置条件锁定阶段 | Factory DROID |
| P15 | 自我归因修正 | 第一人称"我刚才做错了"纠正 | CrewAI |
| P16 | 首尾重复 | 关键约束放 prompt 开头+结尾 | Lost in the Middle |
可靠性等级
| 防护层级 | 可靠性 | 组合使用 | 可靠性 |
|---|---|---|---|
| 软约束 | ~40% | P1 + P5 | ~90% |
| MUST/NEVER | ~70% | P1 + P5 + P13 | ~99% |
| MUST + 示例 | ~80% | P1 + P5 + P13 + retry | ~100% |
CLI
# 审计现有 prompt(16 项检查)
~/.claude/skills/prompt-hardening/scripts/audit.sh ~/path/to/SOUL.md
应用清单
| # | 检查项 |
|---|---|
| 1 | P0 规则用了三重强化(MUST + 反面示例 + 重复)? |
| 2 | 工具约束用了 Use X (NOT Y) + 失败原因? |
| 3 | 禁止行为穷举列出? |
| 4 | 关键触发用了 当 X → MUST Y 格式? |
| 5 | 有反推理阻断? |
| 6 | 优先级层级显式声明? |
| 7 | 有好/坏示例对? |
| 8 | 范围边界明确? |
| 9 | 长对话有漂移防护? |
| 10 | 信任边界明确? |
| 11 | 关键操作前有 echo-check? |
| 12 | 约束 token > 任务描述 token? |
| 13 | 最关键约束有代码级强制(L5)备份? |
| 14 | 多步操作有状态机门禁? |
| 15 | 违规后有自我归因修正模板? |
| 16 | 关键约束在 prompt 首尾都出现? |
Usage
1. 读取目标 prompt
2. 识别模型历史违反过的规则(最高优先级硬化)
3. 运行 scripts/audit.sh 获取 16 项检查结果
4. 历史违反 → P1 三重强化 + P13 代码级
5. 重要规则 → P2 + P4 + P5
6. 一般规则 → P3 + P7
7. 验证约束 token 占比 > 40%
Output Artifacts
| 请求 | 交付物 |
|---|---|
| 硬化 prompt | 重写后的 prompt 文件 |
| 审计 prompt | 16 项检查清单 + 改进建议 |
| 分析违规 | 违规模式分类 + 硬化方案 |
References
references/patterns.md— 16 个模式的详细说明和代码示例references/sources.md— 13 个研究来源
Operator Notes
- Advisory/planning skill. Does not modify target prompts automatically.
- When execution is needed, call out that the operator must apply changes manually or use improvement-executor.
More from lanyasheng/auto-improvement-orchestrator-skill
skill-distill
|
1improvement-gate
当执行完变更需要验证是否应保留、候选被标记 pending 需要人工审批、或想查看待审队列时使用。6 层机械门禁: Schema→Compile→Lint→Regression→Review→HumanReview,其中 Schema/Compile/Regression/Review 为阻塞层(失败即拒绝),Lint 和 HumanReview 为建议层(失败不阻塞但记录警告)。不用于打分(用 improvement-discriminator)或执行变更(用 improvement-executor)。
1benchmark-store
当需要初始化基准数据库、对比 skill 评分与历史基线、查看 Pareto front 是否有维度回退、或查阅质量分级标准时使用。不用于给候选打分(用 improvement-discriminator)或自动改进(用 improvement-learner)。
1skill-forge
>
1improvement-evaluator
当需要验证 Skill 改进是否真正提升了 AI 执行效果时使用。通过预定义任务集(YAML)运行 AI 任务,判定 pass/fail,输出 execution_pass_rate。不用于文档结构评分(用 improvement-learner)或候选打分(用 improvement-discriminator)。
1improvement-learner
当需要检查 skill 质量评分、自动优化 SKILL.md 结构、追踪评估分数变化趋势、或「评分低了想知道哪里扣分」时使用。6维结构评估 + HOT/WARM/COLD 三层记忆 + Pareto front。不用于候选语义打分(用 improvement-discriminator)或全流程编排(用 improvement-orchestrator)。
1