正文内容
嵌入式代码审查专家(Embedded Code Review Expert)
概述
使用 双模型交叉审查(dual-model cross-review) 对嵌入式/固件项目执行结构化代码审查:Claude Code 与 Codex 独立审查同一份 diff,随后对双方发现的问题进行交叉比对,以识别单模型审查可能遗漏的盲点。
目标环境:裸机 MCU、RTOS(FreeRTOS/Zephyr/ThreadX)、Linux 嵌入式系统、混合 C/C++ 固件。
触发条件
当用户请求审查嵌入式/固件代码变更时自动激活。示例包括:
- “review firmware-pro2 的改动”
- “review the NFC changes”
/embedded-review ~/Documents/dec/firmware-pro2/embedded-review ~/Documents/dec/firmware-pro2 HEAD~5..HEAD/embedded-review
严重性等级
| 等级 | 名称 | 描述 | 处理建议 |
|---|---|---|---|
| P0 | Critical | 内存破坏、中断安全性违规、安全漏洞、设备变砖风险 | 必须阻断合入(block merge) |
| P1 | High | 竞态条件、资源泄漏、未定义行为、RTOS 误用 | 合入前应修复 |
| P2 | Medium | 代码异味、可移植性问题、错误处理缺失、次优模式 | 应修复或创建后续任务 |
| P3 | Low | 风格、命名、文档、次要建议 | 可选改进 |
阶段 0:预检(Preflight)——范围与上下文
-
运行
scripts/prepare-diff.sh提取以下信息:[diff_range] - 仓库信息(分支、最新提交)
- 目标平台识别(MCU 型号、RTOS 类型、编译器)
- Diff 统计信息及完整 diff 内容
-
评估审查范围:
- 无变更:通知用户;可提供审查暂存区变更或指定提交范围的选项。
- 小规模 diff(≤100 行):默认启用单模型审查。
- 大规模 diff(>500 行):先按文件/模块生成摘要,再按子系统分批审查。
- 触及关键路径(如 ISR、DMA、加密、NFC、启动代码):始终推荐启用双模型审查。
-
构建审查上下文包(REVIEW_CONTEXT):
REVIEW_CONTEXT = { repo_info: (branch, MCU, RTOS, compiler), diff: (完整的 git diff 文本), references: (来自 references/ 目录的相关检查清单章节), focus_areas: (用户指定或自动识别的关键路径) }
阶段 2:双模型交叉审查(ACP)
当触发双模型审查时:
步骤 1:准备审查载荷(review payloads)
基于同一份 REVIEW_CONTEXT 构建两个独立的审查任务:
Claude Code 任务:
你是一名资深嵌入式系统工程师,正在审查固件代码变更。 [REVIEW_CONTEXT: 仓库信息、diff、关注区域] 审查清单(仅应用相关条目): - 内存安全性(references/memory-safety.md) - 中断与并发安全(references/interrupt-safety.md) - 硬件接口(references/hardware-interface.md) - C/C++ 常见陷阱(references/c-pitfalls.md) - 架构与安全性 输出格式:对每个发现问题,请提供: [P0/P1/P2/P3] [file:line] 标题 - 描述 - 风险 - 建议修复方式 请务必详尽。标记所有发现的问题,即使存疑 —— 对不确定项标注 `[?]`。
Codex 任务:
你是一名独立的嵌入式/固件代码审查员。 你的职责是发现缺陷、安全问题及正确性问题。 [REVIEW_CONTEXT: 仓库信息、diff、关注区域] 重点关注: 1. 内存破坏风险(缓冲区溢出、释放后使用、栈溢出) 2. 并发缺陷(竞态条件、缺少 volatile、ISR 安全性) 3. 硬件接口错误(时序、寄存器访问、外设初始化) 4. 逻辑错误与边界情况 5. 安全漏洞 输出格式:逐条列出所有发现问题: [SEVERITY: critical/high/medium/low] [file:line] 问题标题 - 问题所在 - 可能导致的后果 - 修复方法 请勿忽略低严重性问题。全部报告。
步骤 2:并行启动 ACP 会话
sessions_spawn(runtime="acp", agentId="claude-code", task=claude_task) sessions_spawn(runtime="acp", agentId="codex", task=codex_task)
两个会话同步运行,等待双方均完成。
步骤 3:交叉比对发现结果
双方完成后,执行结果分析:
- 共识问题(双方均标记相同问题):高置信度 —— 确认为真实缺陷
- Claude 独有发现:人工复核有效性 —— 可能为误报,也可能是真实捕获
- Codex 独有发现:人工复核有效性 —— 异构视角可能覆盖 Claude 的盲区
- 矛盾结论(一方判定正常,另一方判定为缺陷):标记为需人工判断项
最终映射至统一严重性等级(P0–P3)。