深度上下文构建技能(超细粒度纯上下文模式)
1. 目的
本技能规范审计上下文构建阶段 Claude 的思维方式。
激活时,Claude 将:
- 默认执行 逐行/逐块 代码分析。
- 在微观层面应用 第一性原理、5个为什么 和 5个如何。
- 持续关联洞察 → 函数 → 模块 → 整个系统。
- 维护稳定、显式的思维模型,随新证据演进。
- 识别不变量、假设、流程和推理风险。
本技能定义结构化分析格式(见下文示例:函数微观分析),并在漏洞搜寻阶段 之前 运行。
何时使用
适用于:
- 在缺陷或漏洞发现之前需要深度理解。
- 需要自底向上的理解,而非高层猜测。
- 减少幻觉、矛盾和上下文丢失至关重要。
- 为安全审计、架构审查或威胁建模做准备。
不 适用于:
- 漏洞发现
- 修复建议
- 漏洞利用推理
- 严重性/影响评级
3. 本技能的行为方式
激活时,Claude 将:
- 默认对每个代码块和行进行 超细粒度分析。
- 应用微观层面的第一性原理、5个为什么和5个如何。
- 构建并精化持久的全局思维模型。
- 当出现矛盾时更新早期假设("之前我认为X;现在是Y")。
- 定期锚定摘要以维护稳定的上下文。
- 避免猜测;需要时显式表达不确定性。
目标:深度、准确的理解,而非结论。
合理化(不可跳过)
| 合理化 | 为何错误 | 必需行动 |
|---|---|---|
| "我懂大意" | 大意级别的理解会遗漏边界情况 | 必须逐行分析 |
| "这个函数很简单" | 简单函数组合后会形成复杂缺陷 | 仍需应用5个为什么 |
| "我会记住这个不变量" | 你不会。上下文会衰减。 | 显式写下来 |
| "外部调用应该没问题" | 外部 = 敌对,除非证明否则 | 跳入代码或建模为敌对 |
| "我可以跳过这个辅助函数" | 辅助函数包含会传播的假设 | 追踪完整调用链 |
| "这花太长时间了" | 匆忙的上下文 = 后续产生幻觉漏洞 | 慢即是快 |
4. 阶段1 — 初始定位(自底向上扫描)
深度分析之前,Claude 执行最小化映射:
- 识别主要模块/文件/合约。
- 标记明显的 public/external 入口点。
- 识别可能的参与者(用户、所有者、中继器、预言机、其他合约)。
- 识别重要的存储变量、字典、状态结构体或单元格。
- 构建初步结构,不假设行为。
这为详细分析建立锚点。
5. 阶段2 — 超细粒度函数分析(默认模式)
每个非平凡函数都接受完整的微观分析。
5.1 每函数微观结构检查清单
对于每个函数:
目的
- 函数为何存在及其在系统中的角色。
输入与假设
- 参数和隐式输入(状态、调用者、环境)。
- 前置条件和约束。
输出与效果
- 返回值。
- 状态/存储写入。
- 事件/消息。
- 外部交互。
逐块/逐行分析 对于每个逻辑块:
- 它做什么。
- 为何出现在这里(排序逻辑)。
- 它依赖什么假设。
- 它建立或维护什么不变量。
- 后续逻辑如何依赖它。
对每个块应用:
- 第一性原理
- 5个为什么
- 5个如何
5.2 跨函数与外部流程分析
(跳入外部代码规则的完整集成)
遇到调用时,跨边界继续相同的微观优先分析。
内部调用
- 立即跳入被调用者。
- 对相关代码执行逐块分析。
- 追踪数据、假设和不变量的流动: 调用者 → 被调用者 → 返回 → 调用者。
- 注意被调用者逻辑在此特定调用上下文中是否有不同行为。
外部调用 — 两种情况
情况A — 调用代码库中存在代码的合约 视为内部调用:
- 跳入目标合约/函数。
- 继续逐块微观分析。
- 无缝传播不变量和假设。
- 基于 实际 代码考虑边界情况,而非黑盒猜测。
情况B — 调用无可用代码的外部(真正外部/黑盒) 作为敌对分析:
- 描述发送的载荷/值/gas或参数。
- 识别关于目标的假设。
- 考虑所有结果:
- revert
- 不正确/奇怪的返回值
- 意外的状态变更
- 异常行为
- 重入(如适用)
连续性规则
将整个调用链视为 一个连续的执行流程。 永不重置上下文。 所有不变量、假设和数据依赖必须跨调用传播。
5.3 完整分析示例
参见 FUNCTION_MICRO_ANALYSIS_EXAMPLE.md 的完整演示,展示:
- DEX swap 函数的完整微观分析
- 第一性原理、5个为什么和5个如何的应用
- 带不变量和假设的逐块分析
- 跨函数依赖映射
- 外部交互的风险分析
此示例展示了所有被分析函数所需的深度和结构级别。
5.4 输出要求
执行超细粒度分析时,Claude 必须遵循 OUTPUT_REQUIREMENTS.md 中定义的格式结构化输出。
关键要求:
- 目的(最少2-3句话)
- 输入与假设(所有参数、前置条件、信任假设)
- 输出与效果(返回值、状态写入、外部调用、事件、后置条件)
- 逐块分析(做什么、为何在此、假设、第一性原理/5个为什么/5个如何)
- 跨函数依赖(内部调用、带风险分析的外部调用、共享状态)
质量阈值:
- 每函数最少3个不变量
- 最少5个已记录假设
- 外部交互最少3个风险考量
- 至少1次第一性原理应用
- 至少3次5个为什么/5个如何组合应用
5.5 完整性检查清单
结束函数微观分析之前,对照 COMPLETENESS_CHECKLIST.md 验证:
- 结构完整性:所有必需部分存在(目的、输入、输出、逐块、依赖)
- 内容深度:达到最低阈值(不变量、假设、风险分析、第一性原理)
- 连续性与集成:交叉引用、传播假设、不变量耦合
- 反幻觉:行号引用、无模糊陈述、基于证据的主张
当所有检查清单项满足且无未解决的"不清楚"项时,分析完成。
6. 阶段3 — 全局系统理解
充分微观分析后:
状态与不变量重建
- 映射每个状态变量的读/写。
- 推导多函数和多模块不变量。
工作流重建
- 识别端到端流程(存款、取款、生命周期、升级)。
- 追踪状态如何在这些流程中转换。
- 记录跨步骤持续的假设。
信任边界映射
- 参与者 → 入口点 → 行为。
- 识别不受信任的输入路径。
- 权限变更和隐式角色期望。
复杂性与脆弱性聚类
- 具有许多假设的函数。
- 高分支逻辑。
- 多步骤依赖。
- 跨模块的耦合状态变更。
这些聚类有助于引导漏洞搜寻阶段。
7. 稳定性与一致性规则
(反幻觉、反矛盾)
Claude 必须:
永不重塑证据以适应早期假设。 出现矛盾时:
- 更新模型。
- 显式说明修正。
定期锚定关键事实 总结核心:
- 不变量
- 状态关系
- 参与者角色
- 工作流
避免模糊猜测 使用:
- "不清楚;需要检查X。" 而非:
- "它可能……"
持续交叉引用 将新洞察与之前的状态、流程和不变量连接,维护全局一致性。
8. 子智能体使用
Claude 可为以下情况生成子智能体:
- 密集或复杂函数。
- 长数据流或控制流链。
- 密码学/数学逻辑。
- 复杂状态机。
- 多模块工作流重建。
使用 function-analyzer 智能体进行每函数深度分析。
它遵循本技能中定义的完整微观结构检查清单、跨函数流程
规则和质量阈值,并强制执行纯上下文构建约束。
子智能体必须:
- 遵循相同的微观优先规则。
- 返回 Claude 集成到其全局模型的摘要。
9. 与其他阶段的关系
本技能运行于以下阶段 之前:
- 漏洞发现
- 分类/分流
- 报告撰写
- 影响建模
- 漏洞利用推理
其唯一目的是构建:
- 深度理解
- 稳定上下文
- 系统级清晰度
10. 非目标
激活期间,Claude 不应:
- 识别漏洞
- 提出修复
- 生成概念验证
- 建模漏洞利用
- 分配严重性或影响
这仅是 纯上下文构建。
局限性
- 仅当任务明确匹配上述范围时使用本技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停下来请求澄清。