andreitoma8/hex
GitHub: andreitoma8/hex
Hex 是一个智能合约审计工具包,通过整合AI和确定性分析工具,加速从代码分析到漏洞验证的审计流程。
Stars: 1 | Forks: 0
# Hex
面向 Solidity 智能合约审计员的工具包。Hex 将 Claude Code 技能、确定性分析工具和本地仪表板相结合,助你从“刚收到代码”快速推进到“验证后的审计发现”,速度更快,覆盖更全面。
Hex 不会取代你的专业知识。它自动执行审计中的机械性工作(解析、数据收集、图表绘制、PoC 框架搭建、审计发现撰写),从而让你专注于真正重要的事情:阅读代码并思考可能出错的地方。

## 工作原理
你通过 Claude Code 驱动 Hex。输入 `/init-audit`,Claude 就会运行整个流程。三个组件在幕后基于共享项目目录协同工作:
**Claude Code 技能**是入口。它们处理任何需要推理的工作——生成协议概览、识别不变式、检查代码是否符合规范、编写 PoC、草拟审计发现、协调其他 AI 审计代理。你以原生斜杠命令(例如 `/init-audit`、`/generate-overview`)的形式调用它们。技能是随 `hex` 包一起分发的 Markdown 文件,会被复制到你项目的 `.claude/skills/` 目录中。如果需要,你可以按项目编辑它们。对于需要深入代码理解的技能(PoC、不变式、规范符合性检查),推荐使用 Opus 模型;对于较简单的任务(概览、审计发现撰写),使用 Sonnet 模型效果也很好。
**`hex` CLI** 是技能调用的确定性引擎。它封装了经过实战检验的工具,如 Slither、solc 和 Forge,而不是重新发明静态分析,并且它输出带有置信度元数据的结构化 JSON,让你始终了解可以信任某个数据点的程度。你可以直接调用它,但通常不需要——`/init-audit` 会为你完成。
所有三个组件都从同一项目目录读取和写入。没有服务器,没有数据库,没有账户。一切都在本地运行。
## 前置条件
使用 Hex 前,请确保已安装以下内容:
- **Claude Code** — Anthropic 的用于代理式编码的 CLI 工具
- **Node.js** (v18+) 和 npm
- **Foundry** (`forge`, `cast`) — 如果项目使用 Hardhat 则需安装 Hardhat
- **Slither** — `pip install slither-analyzer`
- **solc** — Solidity 编译器(通过 `solc-select` 或 Foundry 管理)
安装 Hex 后(下一节),运行 `hex doctor` 以确认所有组件就绪——它会打印一个带有标签的预检表格,为任何缺失项提供安装提示。
## 快速开始
### 1. 克隆客户端项目并安装 Hex
```
# 如常克隆或接收客户端项目
git clone https://github.com/client/protocol.git
cd protocol
# 全局安装 Hex
npm install -g hex-audit
```
### 2. 将技能放入项目并打开 Claude Code
```
hex claude # copies the audit skills into .claude/skills/
claude # open Claude Code in this directory
```
`hex claude` 是在 Claude Code 接管之前唯一需要的 CLI 调用——它复制技能文件,使 `/init-audit` 等命令作为原生斜杠命令出现。技能一旦放入 `.claude/skills/`,就可以按项目进行编辑。
### 3. 让 Claude 初始化审计
在 Claude Code 内部:
```
/init-audit
```
Claude 会向你询问审计范围、提交哈希、区块链和文档 URL,然后:
- 使用你的审计范围和项目元数据编写 `.hex/config.json`。
- 运行完整的分析流程(`stats`、`deps`、`access`、`state`、`calls`、`patterns`、`constraints`,然后是 `surface`),并在运行时实时流式显示每步进度。
- 在项目根目录创建一个 `CLAUDE.md` 文件——一个 Claude Code 在未来每次对话中自动加载的快速参考。它包含区块链、Solidity 版本、文档 URL、每个输出文件及其回答的问题的表格、推荐的技能调用顺序以及可用的 CLI 命令。
当 `/init-audit` 完成时,仪表板上的每个分析页面都已有数据。
你提供的范围定义了你负责审计的文件。所有其他项目文件仍然可供 Claude 用于上下文、编译和测试执行。
### 4. 打开仪表板
在第二个终端中:
```
hex dashboard
```
这会在你的浏览器中打开 `http://localhost:3000`。工作时保持它打开——随着 Claude 生成更多分析,每个页面会自动填充数据。使用 `--port 8080` 指定自定义端口,或使用 `--no-open` 跳过自动打开。
## 审计工作流程
Hex 遵循四阶段工作流程。你可以按顺序进行,但也可以随时返回并重新运行前面的步骤。本节中的所有命令都在 Claude Code 内部输入。
### 阶段 1 — 理解
此阶段的目标是在阅读任何一行代码之前,建立对协议的思维模型。这里的所有内容都是 AI 辅助的,基于 `/init-audit` 已经生成的确定性数据之上。
**1.1 — 概览**
```
/generate-overview
```
**1.2 — 统计数据、访问控制、状态、调用、模式、约束、攻击面**
已在 `/init-audit` 期间生成。在仪表板上查看它们:
- `/stats` — 每个合约的 nSLOC、函数、修饰符、事件、错误、汇编行数。测试覆盖率(行覆盖率和分支百分比,未覆盖行高亮显示)。依赖项和 ERC/EIP 使用情况。
- `/access` — 谁能调用什么,按角色分组,并带有置信度指标,显示角色是从已知库检测到的(高置信度)还是从修饰符名称推断的(低置信度,需要验证)。角色还被标记 `kind` 类型(`access_control`、`state_check`、`guard`、`unknown`);`unknown` 类型默认隐藏在“显示推断/未知修饰符”开关后面,这样 `onlyDuringPause` 就不会冒充权限角色。
- `/state` — 每个状态变量的类型、可变性、哪些函数读取和写入它、是否未使用,以及当编译器工件可用时的存储槽冲突警告(合约内和继承差异)。
- `/calls` — 每个外部调用,包含信任级别、返回值检查和重入保护状态。
**1.3 — 系统图**
```
/generate-diagram
```
生成一个 Mermaid 架构图,显示按区域分组的具体合约,带有语义符号(🏦 金库、💰 代币、🔮 预言机、🔒 治理、📦 存储)、颜色编码的节点、交互类型的边标签(delegatecall、外部调用、访问控制)、概览标题和可视图例。每个图最多约 15 个节点——大型协议会自动拆分为多个聚焦图。可在 `/diagram` 查看,支持缩放和平移控件。
**1.4 — 流程图**
```
/generate-flows
```
为协议中每个重要路径生成 Mermaid 流程图,按用户类型(任何人、所有者、守护者等)、价值流(存款、取款、费用收取)和管理操作分组。使用不同的节点形状(椭圆表示开始/结束,圆柱体表示状态变化,菱形表示决策),每个合约一个泳道子图,纯英文标签。每个决策菱形显示成功和回滚路径。只有范围内的合约才会生成流程——范围外的合约仅作为外部调用目标出现。
**1.5 — 不变式**
```
/identify-invariants
```
每个不变式都附带一个置信度评级。输出保存到 `.hex/invariants.md` 并在 `/invariants` 显示。
**1.6 — 规范符合性**
```
/check-spec-conformance
```
检查代码是否真正做了它声称的事情。Claude 交叉参考四个规范来源:
- **外部文档** — “用户可以随时取款” → 代码实际允许吗?
- **NatSpec 注释** — `@notice 如果资产为零则回滚` 真的会回滚吗?
- **接口符合性** — 合约是否实现了其接口中的每个函数并具有正确行为?
- **ERC/EIP 合规性** — ERC-4626 实现是否遵循舍入规则?ERC-20 是否处理零金额转账?
每项检查被分类为 `CONFORMS`、`DEVIATES`、`PARTIAL`、`UNVERIFIABLE` 或 `UNDOCUMENTED`。偏差是潜在的审计发现。ERC 项包含 `spec_location.url`,以便 `/conformance` 仪表板可以链接回确切的 EIP 章节。结果保存在 `.hex/spec-conformance.json` 中并在 `/conformance` 渲染。
### 阶段 2 — 审查
这是你进行实际审计的地方。Hex 在这里不会打扰你——你在 VS Code 中阅读代码,思考可能出错的地方,并在可疑之处留下 `@audit-issue` 注释。
当你发现潜在问题时,在受影响代码上方添加一条注释:
```
// @audit-issue Possible reentrancy — external call before state update.
IERC20(token).transfer(recipient, amount);
```
然后让 Claude 处理它(阶段 3)。
### 阶段 3 — 审计发现
一旦你在审查阶段识别出问题,Hex 会帮助你验证并撰写它们。
**3.1 — 生成概念验证 (PoC)**
```
/generate-poc for the issue at src/Vault.sol line 156 about the rounding error
```
Claude 将会:
1. **读取所有上下文** — 所有先前的分析输出(访问控制、状态变量、外部调用、不变式、规范符合性、现有发现)以及目标源代码。在推理可利用性之前,先了解全貌。
2. **先进行推理** — 追踪执行路径,检查前提条件,评估现有保护措施。此推理过程保存在验证备忘录 `.hex/validations/_memo.md` 中,无论问题最终是否有效。
3. **检查项目的测试设置** — 阅读现有测试文件、基础合约、固件和配置。它会复用你项目的测试基础设施,而不是从头构建。
4. **编写 PoC** — 一个与项目框架(Foundry、Hardhat 等)和编码规范匹配的测试文件,继承自现有的基础测试合约。
5. **运行并迭代** — 执行测试,如果失败则进行调试,直到通过。
如果 Claude 结论认为问题无效,它会在验证备忘录中解释原因并停止。推理过程始终保留,因此不会丢失任何信息。
**3.2 — 撰写审计发现**
在 PoC 通过后:
```
/write-finding for the rounding error issue in src/Vault.sol
```
- 严重性(严重/高/中/低/信息),根据技能内联记录的可能性 × 影响矩阵进行评估。
- 描述(自包含:问题是什么、为什么存在、可能的影响是什么)。
- 代码位置及相关片段。
- PoC 引用。
- 以方向性建议(`考虑...`)形式提出的建议,而不是规定性修复。协议团队负责实现;审计员提出改进方向。
`findings.json` 是用于去重、严重性统计和仪表板报告视图的权威来源。
**审计发现中的代码块规则**
当 AI 在审计发现中包含代码片段时,它遵循严格的规则:
- 永远不要在片段中修改原始代码(只允许 `@audit` 注释和用于省略行的 `// ...`)。
- 注释放在受影响代码上方的单独行中,而不是内联。
- 所有插入的注释都是完整的句子,带有正确的大写和标点符号。
- 不添加原始源中没有的解释性文本。
**3.3 — 将规范偏差转换为审计发现(可选)
```
/conformance-to-findings
```
批量验证来自 `/check-spec-conformance` 的每个 `DEVIATES` 或 `PARTIAL` 项,并将有效的转换为结构化审计发现。被拒绝的项会有一个验证备忘录解释原因,因此不会悄悄消失。
### 阶段 3.5 — 团队模式(可选)
当两到三名审计员共享一个项目时,通过 GitHub Issues 同步审计发现可以让所有人保持同步,而无需任何人设置服务器。
在 `.hex/config.json` 中设置 `settings.github.repo`(审计公司的内部仓库,例如 `nethermind/audit-vaultx`),并在你的机器上认证一次 `gh` CLI:
```
gh auth login
```
Hex 本身从不存储 GitHub 凭据——`/sync-github` 直接驱动 `gh` CLI。然后,在编写经过验证的审计发现后:
```
/sync-github
```
一次调用同时执行两个方向:
- **拉取** 配置仓库中所有带有 `hex` 标签的 issue,根据隐藏的 `` 脚注对每个进行分类,将评论和状态附加到你匹配的本地审计发现上,并将队友的 issue 写入 `.hex/external/github/findings.json`,以便它们在 `/all-findings` 中以 `source: github` 和作者的 GitHub 登录名显示。
- **推送** 每个跟踪状态为 `settings.github.publish_status`(默认值:`verified`)的本地审计发现作为新 issue 发布,或者如果审计发现已有 `github.issue_number` 则更新现有 issue。正文根据审计发现的描述、代码位置和建议进行渲染;标签用于严重性、来源和状态。
- **通过调用 `/compare-findings` 进行去重**,这样队友提交的相同 bug 会显示为重复项,并带有你已经在 AI 工具中看到的相同 `match_signals`。
仪表板的 `/all-findings` 页面会将 GitHub Issues 与手动和 AI 工具发现并排内联显示。展开一行可以查看 issue 链接、状态、最后几条评论以及(对于你的本地发现)同步的 `github.issue_number`。侧边栏在 LiveStatus 下方会增加第二个指示器,显示上次运行 `/sync-github` 的时间。
评论保留在 GitHub 上——Hex 从不发布、编辑或删除评论。审计员在 GitHub 内部进行讨论。
### 阶段 4 — 使用 AI 进行二次审计
在你手动审查完成后,运行外部 AI 审计代理作为第二遍检查,以捕获你可能遗漏的内容。
**4.1 — 运行 AI 分析**
```
/run-ai-analysis
```
此编排技能:
1. 显示一个复选框式的工具选择提示(选择要运行哪些 AI 工具——solidity-auditor、sc-auditor、plamen、auditagent)。
2. 对每个工具运行预检检查——验证环境变量、技能安装和系统依赖项,然后显示一个缺失项摘要表。对于 plamen 和 auditagent,如果未找到则提供自动安装选项。
3. 先运行 auditagent(来自 Nethermind 的基于云的异步扫描器——触发一次 30-60 分钟的扫描,在后续运行中收集结果)。
4. **在编排器上下文中按顺序** 运行非 plamen 技能(solidity-auditor、sc-auditor),并带有类型感知的指令(技能文件工具遵循其 `SKILL.md` 方法论;MCP 服务器工具发现并使用其 MCP 工具)。
5. 在非 plamen 工具完成后运行 plamen。
6. 将所有审计发现标准化并批量写入 `tracking.json`,状态为 `status: "unverified"`。
7. 自动运行 `/compare-findings` 并打印覆盖差距摘要。
如果在你完成其他工具时,auditagent 的云扫描仍在运行,请在另一个终端中保持运行 `hex ai-status --watch`——它每 5 分钟轮询一次,并在扫描完成时通知你,这样审计发现就不会被遗忘。
**4.2 — 比较审计发现**
```
/compare-findings
```
Claude 在语义上将每个 AI 审计发现与你自己的进行比较。它根据受影响的合约、函数、根本原因和攻击向量进行匹配——而不是字符串匹配。输出:
- **重复项** — 与现有项匹配的 AI 审计发现,带有置信度 *和* `match_signals`(合约/函数/根本原因/攻击向量中哪些一致)以及一行推理。如果你不同意合并,可以确切看到是哪个信号起了决定性作用。
- **新颖项** — 你没有发现的全新审计发现,按可能的严重性排序。
- **拒绝项** — 超出范围或明显无效,并附有解释。
结果保存在 `.hex/comparison.json` 中,主跟踪表更新。
**4.3 — 验证新审计发现**
对于 AI 代理提出的每个新颖审计发现:
```
/validate-ai-finding for AI-N001
```
Claude 会独立追踪代码中描述的攻击路径,并判断其是否有效。如果有效,它会生成 PoC 并撰写审计发现。如果无效,它会解释原因。如果不确定,它会标记出需要你调查的具体问题。
**4.4 — 所有审计发现**
在 `/all-findings` 上查看完整情况:
- 所有审计发现(你的和来自 AI 代理的)在一个可筛选的表格中。
- 状态:已验证、待验证、已拒绝。
- PoC 状态:通过、失败、未开始。
- 重复项映射:哪些 AI 审计发现对应你的哪些发现,并展开显示 `match_signals`。
- 摘要统计:按状态统计的总发现数。
- 可展开的行,包含完整的发现详情。
## Claude Code 技能参考
每个技能都有一个推荐模型——在调用推荐使用 Opus 的技能之前,请切换你的 Claude Code 模型。
| 技能 | 阶段 | 推荐模型 | 功能描述 |
|------|------|----------|----------|
| `init-audit` | 设置 | Sonnet | 运行初始化 + 分析工具(尽可能并行) |
| `generate-overview` | 1.1 | Sonnet | 撰写 2-3 段协议概览 |
| `generate-diagram` | 1.3 | Sonnet | 创建 Mermaid 系统架构图 |
| `generate-flows` | 1.4 | Opus | 按用户类型和价值路径创建 Mermaid 流程图 |
| `identify-invariants` | 1.5 | Opus | 三遍式不变式识别(文档 → 代码 → 比较) |
| `check-spec-conformance` | 1.6 | Opus | 验证代码是否符合文档、NatSpec、接口、ERC/EIP |
| `generate-poc` | 3.1 | Opus | 验证问题推理,然后编写并运行 PoC 测试 |
| `write-finding` | 3.2 | Sonnet | 将结构化审计发现写入 JSON,建议语气为保守的 `考虑...` |
| `conformance-to-findings` | 3.3 | Sonnet | 批量将规范符合性偏差转换为已验证的审计发现 |
| `run-ai-analysis` | 4.1 | Opus | 编排所有已配置的 AI 审计工具并进行预检 |
| `compare-findings` | 4.2 | Sonnet | 对你的审计发现与 AI 代理审计发现进行语义去重(带 `match_signals`) |
| `validate-ai-finding` | 4.3 | Opus | 交互式验证新的 AI 审计发现(PoC 与理性分析,严重性调整) |
| `sync-github` | 3.5 | Sonnet | 在本地审计发现和 GitHub Issues 之间双向同步——拉取队友问题,推送你已验证的审计发现,然后运行 `/compare-findings` |
### 技能存放位置
技能使用 Claude Code 的原生技能格式,存储在 `.claude/skills//SKILL.md` 中。当你运行 `hex claude` 或 `hex init` 时,它们会被复制到那里。
```
.claude/skills/
├── init-audit/SKILL.md
├── generate-overview/SKILL.md
├── generate-diagram/SKILL.md
├── generate-flows/SKILL.md
├── identify-invariants/SKILL.md
├── check-spec-conformance/SKILL.md
├── generate-poc/SKILL.md
├── write-finding/SKILL.md
├── conformance-to-findings/SKILL.md
├── run-ai-analysis/SKILL.md
├── compare-findings/SKILL.md
└── validate-ai-finding/SKILL.md
```
**Claude Code 如何找到它们:** Claude Code 会自动发现 `.claude/skills/` 中的技能。它们会显示为原生斜杠命令——在 Claude Code 中输入 `/` 即可看到它们。
**为项目自定义技能:** 你可以就地编辑任何 `SKILL.md` 文件。例如,向不变式识别技能添加特定于项目的提示,或调整 PoC 惯例以匹配不寻常的测试设置。
**升级 Hex 后更新技能:**
```
hex update-skills # re-copy and overwrite all skill files from the new package version
hex update-skills --keep-custom # skip existing skill files to preserve your modifications
```
默认情况下,`update-skills` 会用最新版本覆盖现有技能。使用 `--keep-custom` 可以保留你所做的任何项目特定修改。
### 技能看到的内容
- 代码库统计数据(nSLOC、ERC、依赖项)。
- 依赖关系图(哪些合约交互)。
- 访问控制图(谁能调用什么,带置信度级别)。
- 状态变量清单(哪些是可变的,哪些是未使用的,谁读/写,以及任何存储槽冲突)。
- 外部调用面(信任级别、返回值检查、重入保护)。
- 任何先前生成的输出(概览、不变式、规范符合性结果)。
每层技能都建立在所有前序层之上。在工作流程中越晚调用技能,其上下文越丰富。
## 仪表板页面
仪表板在本地 `http://localhost:3000` 运行,并在输出文件更改时自动刷新。侧边栏页脚的实时“更新于 N 前”指示器告诉你监视器已连接。
| 页面 | URL | 显示内容 |
|------|-----|----------|
| 主页 | `/` | 项目信息、AI 概览、关键统计数据 |
| 进度 | `/progress` | 加权进度条(70% nSLOC 已审查,20% 审计步骤,10% 审计发现分类)、合约审查清单、审计步骤指标 |
| 统计数据 | `/stats` | 按合约的指标、测试覆盖率、依赖项、ERC |
| 系统图 | `/diagram` | 带缩放/平移功能的 Mermaid 架构图 |
| 流程图 | `/flows` | 带缩放/平移功能的 Mermaid 流程图 |
| 访问控制 | `/access` | 角色 → 函数矩阵,带“仅显示未保护”和“显示推断/未知修饰符”开关 |
| 状态变量 | `/state` | 变量清单,带读写跟踪和存储冲突警告 |
| 外部调用 | `/calls` | 调用面,带可筛选的信任级别列 |
| 函数 | `/functions` | 聚合函数视图,带状态/调用交叉引用 |
| 不变式 | `/invariants` | 已识别的不变式及文档/代码差异 |
| 规范符合性 | `/conformance` | 代码与规范检查结果,偏差优先显示,带可点击的规范链接 |
| AI 报告 | `/ai-reports` | 按工具的 AI 审计结果,带共识徽章 |
| 报告 | `/report` | 已验证的审计发现,带一键复制(HackMD Markdown 格式) |
| 所有审计发现 | `/all-findings` | 所有审计发现 + 跟踪数据的合并表格,带筛选器;展开一行查看 `match_signals` 和任何 GitHub 讨论线程 |
## 理解置信度级别
每个分析输出都包含置信度元数据,以便你知道可以信任它多少。
**高置信度** — 源自编译器工件或成熟的静态分析工具(solc AST、Slither 检测器、编译器存储布局)。视为基本事实。
**中等置信度** — 源自 AST 模式匹配或已知库检测(例如,识别 OpenZeppelin Ownable)。对于标准模式可靠,但可能遗漏自定义实现。
**低置信度** — 源自命名启发式(例如,从名为 `onlyKeeper` 的修饰符推断“守护者”角色)。作为起点使用,然后手动验证。
访问控制角色还带有一个 `kind` 字段(`access_control`、`state_check`、`guard` 或 `unknown`)和一个 `is_likely_access_control` 标志。`/access` 默认隐藏分类为 `unknown` 的角色,并提供一个“显示推断/未知修饰符”开关,这样 `onlyDuringPause` 就不会仅因其修饰符名称以 `only` 开头而冒充权限角色。
从编译器存储布局检测到的存储槽冲突和继承布局差异,在 `state-vars.json` 中标记为 `Critical` 严重性,并汇总到 `attack-surface.json`。
在仪表板上,置信度显示为彩色徽章。你可以按置信度级别筛选任何分析页面,以快速找到需要你关注的条目。
## 输出目录结构
所有 Hex 输出都位于项目内的单个目录中(默认:`.hex/`,可在 `config.json` 中配置)。
```
.hex/
├── config.json # Audit scope, settings
├── overview.md # AI-generated protocol overview
├── stats.json # Codebase statistics and test coverage
├── deps.json # Contract dependency graph
├── access-control.json # Role → function mapping (with `kind`, `is_likely_access_control`)
├── state-vars.json # State variable inventory + storage_collisions
├── external-calls.json # External call surface
├── patterns.json # Security pattern flags (ORACLE, TEMPORAL, etc.)
├── constraints.json # Setter validation (AST-aware) and event analysis
├── attack-surface.json # Attack surface summary
├── invariants.md # Identified invariants
├── spec-conformance.json # Spec vs code conformance checks (with spec_location.url for ERCs)
├── spec-conformance.md # Rendered conformance report
├── diagrams/ # All Mermaid diagram files
│ ├── diagram.mmd # System architecture diagram
│ └── flow-*.mmd # Flow charts (one per flow)
├── progress.json # Audit progress tracking (contract review state)
├── findings.json # Canonical finding data
├── validations/ # Issue validation memos
│ ├── A001_memo.md
│ └── A003_memo.md
├── ai-results/ # AI audit tool outputs (per-tool subdirectories)
│ ├── solidity-auditor/
│ │ ├── raw-output.md
│ │ ├── findings.json
│ │ └── metadata.json
│ ├── sc-auditor/
│ │ ├── raw-output.md
│ │ ├── findings.json
│ │ └── metadata.json
│ ├── plamen/
│ │ ├── raw-output.md
│ │ ├── findings.json
│ │ ├── metadata.json
│ │ └── _scope.txt # Generated scope file for plamen
│ ├── auditagent/
│ │ ├── raw-output.md
│ │ ├── findings.json
│ │ └── metadata.json # Includes scan_id
│ └── /
│ ├── raw-output.md
│ ├── findings.json
│ └── metadata.json
├── ai-status.json # AI tool run status tracker (used by `hex ai-status`)
├── comparison.json # Finding dedup results (with match_signals)
└── tracking.json # Master tracking table
```
你可以在运行初始化之前,在 `config.json` 中设置 `settings.output_dir` 来更改输出目录。
## 范围与完整项目访问权限
当你初始化审计时,你指定哪些文件在范围内。这是你负责审计的合约集——所有分析工具都专注于这些文件。
但整个项目仍然可访问。Claude Code 可以读取范围外的合约,运行现有测试套件,编译所有内容,并在编写 PoC 时利用项目的测试基础设施。范围只是告诉工具将输出重点放在哪里。
```
# 范围内:这些是你正在审计的内容
src/core/Vault.sol, src/core/Strategy.sol, src/libraries/Math.sol
# 仍然可访问:tests, mocks, deploy scripts, dependencies, interfaces
# Claude Code 可以读取所有内容,forge 可以编译并针对它们运行测试
```
## CLI 参考
你通常不会直接调用这些命令——`/init-audit` 和其他技能会调用。但它们是底层的确定性引擎,当你想重新运行单个分析、编写脚本或进行故障排除时很有用。
所有命令都在项目目录中运行(或使用 `--project /path/to/project`)。
| 命令 | 功能描述 |
|------|----------|
| `hex doctor` | 预检:node, forge, slither, solc, Claude Code, 输出目录可写性, 项目配置 |
| `hex claude` | 将技能复制到 `.claude/skills/` 供 Claude Code 发现 |
| `hex init` | 初始化审计配置——范围、提交哈希、区块链、文档 URL(由 `/init-audit` 调用) |
| `hex analyze` | 并行运行所有分析命令(stats, deps, access, state, calls, patterns, constraints),然后运行 surface |
| `hex stats` | 生成代码库统计和测试覆盖率 |
| `hex deps` | 构建合约依赖关系图 |
| `hex access` | 提取访问控制映射(角色 → 函数,包括继承的) |
| `hex state` | 生成状态变量清单 + 存储冲突检测 |
| `hex calls` | 映射外部调用面(基于 AST,Slither 可选) |
| `hex patterns` | 检测安全相关模式(ORACLE, FLASH_LOAN, TEMPORAL 等) |
| `hex constraints` | 提取设置器验证状态(AST 感知,跟踪辅助函数和修饰符) |
| `hex surface` | 构建交叉引用所有分析的攻击面摘要 |
| `hex context` | 从代码库组装优化的 AI 上下文 |
| `hex context --target Vault` | 特定合约及其依赖项的上下文 |
| `hex context --estimate` | 显示 token 数量而不生成上下文 |
| `hex dashboard` | 启动本地仪表板并在浏览器中打开 |
| `hex dashboard --port 8080` | 在自定义端口上启动仪表板 |
| `hex update-skills` | 从包中重新复制技能文件(默认覆盖) |
| `hex update-skills --keep-custom` | 跳过现有技能文件而不是覆盖 |
| `hex ai-status` | 显示异步 AI 工具的最新状态(当前为 `auditagent`) |
| `hex ai-status --watch` | 每 5 分钟轮询一次,直到所有待处理扫描完成(auditagent 通常需要 30-60 分钟) |
标签:AI代码助手, MITM代理, PoC生成, SOC Prime, Solidity, URL发现, 云安全监控, 代码分析, 凭证管理, 区块链安全, 发现报告, 合约分析, 安全检测, 对称加密, 工具包, 开发工具, 性能指标, 技术栈, 智能合约审计, 智能合约开发, 本地仪表板, 架构图, 自动化审计, 自动化攻击, 静态分析