用途
risk-assess 用于对未提交代码进行风险评估,主要面向评估 PR 风险、提交前风险检查等场景。它通过确定性评分与定性解读相结合的方式,帮助判断当前变更是否安全推进。
主要能力
该技能运行脚本收集确定性评分,并解析 JSON 输出,包含以下字段:overall_score、risk_level、dimensions、flags、gate、next_actions。
脚本分析 3 个维度与 2 个条件标志:
维度:
- breaking_surface(权重 45%):衡量被移除的导出、重命名的 API、变更的签名、删除的模块。
- blast_radius(权重 35%):衡量导入被变更模块的文件数量(基于 grep)。
- change_scope(权重 20%):衡量文件数量、LOC 变化量、目录跨度、重命名比例。
标志:
- migration_safety:当 diff 中存在迁移/schema 文件时触发,检查是否存在回滚/down 文件。
- regression_hint:(v2 存根)未来将进行 git 历史分析。
评分模型:
- 总分 = breaking_surface * 0.45 + blast_radius * 0.35 + change_scope * 0.20
- 每个维度为 0-100 分制
- 总分为 0-100 分制
风险等级与门禁:
- 0-29:Low,门禁 PASS,退出码 0
- 30-49:Medium,门禁 PASS,退出码 0
- 50-74:High,门禁 REVIEW,退出码 1
- 75-100:Critical,门禁 BLOCK,退出码 2
使用方式
运行以下命令收集确定性评分:
bash scripts/run-skill.sh risk-assess risk-analyze.js --json
随后解析 JSON 输出,并根据风险等级采取相应处理:
- 若 risk_level = Critical(75-100 分):突出所有破坏性信号,建议拆分 PR。
- 若 risk_level = High(50-74 分):自动升级到 --mode deep,详细说明影响范围。
- 若 risk_level = Medium(30-49 分):总结各维度,标注关注区域。
- 若 risk_level = Low(0-29 分):简要总结,确认可安全推进。
在原始分数之外,还需补充定性解读,例如“影响范围大,但所有依赖方都是测试文件”。
若脚本失败,应报告错误并建议手动运行:
bash scripts/run-skill.sh risk-assess risk-analyze.js --json
输出格式包含:风险评分、风险等级、门禁状态、各维度得分与权重表、破坏性变更信号列表(仅在存在时)、按优先级排列的后续行动项,以及门禁哨兵标记。
适用场景
- 评估 PR 风险
- 提交前风险检查
限制
以下场景不应使用本技能:
- 安全漏洞检测(应使用 /codex-security)
- 代码正确性 / lint / 测试审查(应使用 /codex-review-fast)
- 项目级健康审计(应使用 /project-audit)
参考资料
- references/risk-dimensions.md:信号目录、导入模式、评分区间(调查特定维度时阅读)
- references/output-template.md:JSON schema、各风险等级的报告模板(自定义输出时阅读)
验证清单
- 脚本成功运行
- 3 个维度均已评分
- 在原始分数之外补充了定性解读
- 后续行动可执行(在适用处包含命令)
- 输出中存在门禁哨兵标记