SuperAPI AI 工具集

code-analyzer

安全与审计

查看项目

更新于 10-15 22:39

技能介绍

用途:为项目提供一份有优先级的健康报告,说明哪里出错、哪里有风险、哪里混乱、缺什么,以及可以补充什么。输出是结构化报告,不是猜测。每条发现都指向真实文件,用平实语言说明问题并给出方向。它是诊断技能,不是重构技能:审计过程中不编辑代码、不运行格式化工具、不提交任何内容;只有用户读过报告并明确选择要修的内容后,才改动代码。

适用时机:用户要求项目审查、代码质量检查或“这个代码库有什么问题”;询问安全问题、漏洞或整体加固;问“可以改进什么”“接下来该做什么”;或基于现有项目提出新功能想法。若用户已有具体 bug 或功能目标(如“修这个崩溃”“加这个接口”),则不适用本技能,直接处理即可。

前置检查:确认在项目目录内(git rev-parse --show-toplevel 2>/dev/null || pwd);查看工作树状态(git status --porcelain 2>/dev/null),未提交改动不影响审计,但需标注进行中的文件。

工作流程:第一步界定审计范围,确定关注维度(全部或仅安全/质量/性能/测试/文档/想法)、范围(整个仓库、子目录或变更文件列表;超大仓库需明确抽样)与跳过项(生成代码、第三方依赖、待删除的旧模块等)。交互使用时说明默认计划后继续;非交互使用时选合理默认值并把范围决定写入报告摘要。

第二步发现项目:统计各语言文件数与大致行数,查找包/构建清单(package.json、pyproject.toml、Cargo.toml、go.mod 等),查看已有工具配置与 CI,识别入口与结构,浏览文档,查看近期提交。默认跳过 node_modules/、.git/、dist/、build/、target/、vendor/、.next/、pycache/、.venv/、生成代码与锁文件。

第三步先让现有工具做基础工作:如 npm audit --json、npx eslint . --format json、npx tsc --noEmit、pip-audit、ruff check .、mypy .、bandit -r .、go vet ./…、staticcheck ./…、govulncheck ./…、cargo clippy -- -D warnings、cargo audit、flutter analyze、dart pub outdated、gitleaks detect、trufflehog filesystem . 等,只运行项目已配置或已安装的工具。工具缺失时在报告中注明“运行某工具会发现更多问题”,不自动安装。若项目主语言的标准工具都未安装或配置,该缺失本身可作为工具链/DX 的发现。

第四步带着目的读代码,可按维度并行探索:正确性与缺陷(未处理的错误路径、空值处理、边界错误、竞态、死代码、类型混淆);安全(注入、XSS、硬编码密钥、弱加密、不安全默认值、不安全反序列化、SSRF、开放重定向、依赖 CVE、敏感数据日志、信任边界输入校验);代码质量;架构;性能;测试;文档与开发体验;功能与增强想法(只在代码中有真实信号时提出,并明确标为想法而非问题)。

第五步打分与排优先级:每条发现带严重度(critical/high/medium/low/info)与置信度(high/medium/low)。

第六步生成报告,保存为项目根目录下 CODE_AUDIT_<YYYY-MM-DD><HHMM><auditor>.md,其中时间用 date +%Y-%m-%d_%H%M 生成,auditor 在智能体运行时用模型 id,由人执行时用 slug 化的小写 git user.name。报告结构:标题、执行摘要、按严重度分组的发现、未分析内容、建议后续步骤。每条发现含 Where(文件:行或项目根等具体位置)、Category、Severity/Confidence、What、Why it matters、Suggested fix,并使用 SEC-01、BUG-01、Q-01、IDEA-01 之类稳定 id。

第七步交接:交互使用时报告完成后提供选项(按 id 修复指定发现、用 gh issue create 为高危项开 issue、深入某条发现、换范围或维度重跑),等待指示;用户选择修复后,把每条发现当作独立小任务,做最小改动并逐条确认,不把无关修改合并进同一提交。非交互使用时跳过菜单,给出报告绝对路径即停止。

限制:只读审计,不运行格式化、不编辑、不提交、不推送;不运行包安装器或依赖更新,不静默安装工具;每条发现必须可定位;不填充报告,某类别无内容写“None”;不能描述利用方式与影响时不称为漏洞;超大项目显式抽样并披露;报告后修复需按独立任务处理。