禁止推断 - 强制验证
核心原则
禁止通过推断、猜测、假设来确定任何可以验证的事实。所有关键信息必须通过实际查询、测试或检查来确认。
零容忍原则:对于可验证的事实,0%的推断可接受,100%必须验证。
必须验证的场景
1. 数据库结构信息
❌ 禁止推断:基于命名规范推断字段名、基于业务逻辑推断表关联
✅ 必须验证:DESCRIBE table_name、SHOW COLUMNS
2. API接口和函数签名
❌ 禁止推断:基于函数名推断参数
✅ 必须验证:help(function)、inspect.signature()
3. 配置文件和环境变量
❌ 禁止推断:假设配置项存在
✅ 必须验证:读取实际配置文件
4. 文件路径和资源位置
❌ 禁止推断:假设文件存在某位置
✅ 必须验证:ls、find、glob工具
5. 代码逻辑和业务流程
❌ 禁止推断:假设代码按标准流程执行
✅ 必须验证:读取实际代码、追踪调用链
6. 依赖版本和兼容性
❌ 禁止推断:假设版本兼容
✅ 必须验证:检查package.json、requirements.txt
验证方法选择
| 场景 | 验证方法 |
|---|---|
| 数据库结构 | SQL查询(DESCRIBE/SHOW) |
| 代码中的方法/类/字段 | Grep搜索 + Read读取 |
| 文件是否存在 | Glob查找或Shell ls |
| API行为 | 查看文档 + 实际测试 |
| 配置项 | Read读取配置文件 |
| 表之间关联关系 | SQL查询测试JOIN |
| 函数调用链 | Grep搜索 + 逐层Read |
| 环境变量 | Shell echo $VAR |
强制验证流程
- 发现需要信息 → 不要推断
- 选择验证方法 → 使用上表方法
- 执行验证 → 获取实际结果
- 基于验证结果决策 → 而非推断
自检清单
- 我使用的每个字段名都已验证存在?
- 我使用的每个方法都已确认签名?
- 我假设的关联关系都已测试验证?
- 我引用的文件路径都已确认存在?
- 我依赖的配置项都已读取确认?
记住:可以验证的,就必须验证。没有例外。