# 模块 3:若依场景中的幻觉死循环
**常见表现:** - AI 说所有接口都有权限校验 → 但不给 Controller 依据 - AI 说操作日志完整 → 但不给注解或 AOP 依据 - AI 说按钮权限安全 → 但只看到前端代码
--- # 幻觉控制顺序
1️⃣
先找证据
2️⃣
再判断原因
3️⃣
最后给方案
--- # 证据矩阵:事实、推测、不确定
| 类型 | 判断标准 | 输出写法 | |---|---|---| | 已确认事实 | 能指向文件、函数、注解、配置或测试结果 | “在 xxxController#remove 看到 @PreAuthorize...” | | 合理推测 | 有局部证据,但缺少完整链路 | “可能依赖全局拦截器,仍需查看配置” | | 无法确认 | 当前上下文没有证据 | “未引用到日志 AOP,暂不能判断是否记录日志” |
证据红线:没有证据时,禁止写“已完成”“一定安全”“肯定没有问题”。
--- # 若依证据收集 Prompt
``` 请先不要修改代码。请围绕"用户管理删除按钮权限"收集证据: 1. 前端按钮在哪个页面 2. 使用了哪个权限字符 3. 前端如何判断按钮显示 4. 后端删除接口在哪里 5. Controller 是否有权限注解 6. 是否记录操作日志 7. 无法确认的内容 ```
--- # 证据表输出模板
```md | 审查项 | 证据位置 | 证据内容 | 结论等级 | 不确定点 | |---|---|---|---|---| | 前端删除按钮 | 文件 + 行为 | 权限字符/显示条件 | 已确认/推测/未知 | 需要补充什么 | | 后端删除接口 | Controller + 方法 | 请求路径/权限注解 | 已确认/推测/未知 | 需要补充什么 | | 操作日志 | 注解/AOP/配置 | 日志类型/触发条件 | 已确认/推测/未知 | 需要补充什么 | | 验证方式 | 测试步骤 | 账号/操作/预期结果 | 已确认/待执行 | 需要谁确认 | ```
--- # 原因判断 Prompt
``` 请基于证据判断风险: - 每个风险必须对应文件、函数或注解 - 区分已确认事实和推测 - 无法确认的内容写入不确定点 - 不要直接下安全结论 ```
--- # 追问模板:把 AI 拉回证据
```md 你刚才的结论缺少代码依据。 请重新输出: 1. 每条结论对应的文件路径和函数/注解 2. 哪些是已确认事实,哪些只是推测 3. 哪些文件还需要我补充引用 4. 在证据不足前不要给最终安全结论 ```
--- # 方案生成 Prompt
``` 请基于已确认风险给出方案: 修改文件 · 修改方法 · 新增或调整权限注解 · 是否需要操作日志 · 影响范围 · 验证方式 · 测试建议 ```
--- # 幻觉控制验收
通过
- 结论能追溯到文件/函数/注解 - 风险分为事实、推测、未知 - 修改建议包含影响范围 - 验证步骤能被人工执行
不通过
- 只有“建议加强权限”这类空话 - 把前端按钮隐藏当安全边界 - 看不到后端代码却断言接口安全 - 没有无权限账号验证步骤