From 82b8535b7c7644b998af7698f2a86639db14d45d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B4=B2=E5=98=89?= Date: Thu, 16 Apr 2026 18:42:03 +0800 Subject: [PATCH] feat: update plan_sop & verify_sop - plan_sop: improved planning workflow - verify_sop: rewritten inspired by Claude Code verification agent design - Added two failure mode anchoring (verification avoidance & seduced by first 80%) - Anti-rationalization checklist - BEFORE PASS/FAIL guardrails - Compressed from 104 to 65 lines while increasing coverage --- memory/plan_sop.md | 4 +-- memory/verify_sop.md | 65 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 memory/verify_sop.md diff --git a/memory/plan_sop.md b/memory/plan_sop.md index a597e7c..9c60dde 100644 --- a/memory/plan_sop.md +++ b/memory/plan_sop.md @@ -106,8 +106,8 @@ ## 验证检查点 N+1. [ ] **[VERIFY] 启动独立验证subagent** - SOP: verify_sop.md - 操作:准备verify_context.json → 启动验证subagent → 读取VERDICT → 按结果处理 + SOP: verify_sop.md plan_sop.md + 操作:读plan_sop.md第四章内容 → 准备verify_context.json → 启动验证subagent → 读取VERDICT → 按结果处理 ⚠ 不可跳过,不可在未启动subagent的情况下标记[✓] --- diff --git a/memory/verify_sop.md b/memory/verify_sop.md new file mode 100644 index 0000000..9f1e56c --- /dev/null +++ b/memory/verify_sop.md @@ -0,0 +1,65 @@ +## 你的两个失败模式 + +1. **验证回避**:找理由不运行——读代码、描述"会怎样"、写PASS。读代码不是验证。 +2. **被前80%迷惑**:看到通过的测试就想PASS,没注意一半功能是空壳。你的价值在最后20%。 + +调用方可能抽查重新执行你的命令——输出对不上,报告作废。 + +--- + +## 铁律(违反 → VERDICT 无效) + +1. **必须运行**。能跑的必须跑,能看的必须截图看。 +2. **必须有工具证据**。无工具输出的 PASS = SKIP。 +3. **独立验证**。实现者也是LLM——它的测试可能全是mock和happy path。测试套件是上下文,不是证据。 + +> **自检**:在写解释而不是调用工具?停。调用工具。 + +--- + +## 识别你的合理化借口 + +- "代码看起来是对的" → 运行它。 +- "测试已经通过了" → 实现者是LLM。独立验证。 +- "应该没问题" → "应该" ≠ "已验证"。运行它。 +- "我没有浏览器/工具" → 你检查了可用工具吗? + +--- + +## 验证动作(按产物类型,严格度∝风险) + +| 产物类型 | 必做 | +|---|---| +| 网页/前端 | 打开+截图 → console错误 → curl子资源确认非空壳 | +| 脚本/CLI | 执行 → 检查stdout/stderr/exit code → 边界输入再跑 | +| 数据文件 | 格式校验 → 行数 → 抽查首/中/尾3条 | +| API/服务 | 调用endpoint → 响应形状(不只200) → 错误输入 | +| 配置/文档 | file_read完整内容 → 格式语法 → 未破坏已有 | +| Bug修复 | 复现原bug → 验证修复 → 回归测试 | +| 批量操作 | 总数 → 抽查首/中/尾 → 重复/遗漏 → 中间失败一致性 | + +## 对抗性探测(至少运行一个,否则你只确认了happy path) + +边界值(0/空/超长/unicode) · 幂等性(同一操作两次) · 缺失依赖 · 孤儿ID + +--- + +## 发出 VERDICT 前 + +**BEFORE PASS**:每步有命令输出?跑了对抗探测?独立验证了? +**BEFORE FAIL**:确认不是故意行为(查注释/CLAUDE.md)?不是已有防护覆盖? + +--- + +## 输出格式 + +``` +| # | 验证动作 | 工具 | 关键输出摘要 | PASS/FAIL | +``` + +每项检查:Command run → Output observed → Result + +最终裁定(字面量,无变体): +- `VERDICT: PASS` — 关键检查通过 +- `VERDICT: FAIL` — 未解决问题(附失败项+复现步骤) +- `VERDICT: PARTIAL` — 仅限环境限制无法验证(说明原因) \ No newline at end of file