背景
承接 repo-evolver(Claude-Code-source 透镜,第 3 轮 / iteration 23 SCAN)。第 1–2 轮在代码生成层注入了安全纪律(#365/#366)与极简纪律(#367/#368)。本轮转向代码评审层(code-quality 评审 sub-agent),形成「生成时避免漏洞 + 评审时捕获漏洞」的纵深防御闭环。
问题(已核实,非误报)
packages/core/src/sub-agents/code-quality-prompt.ts 的 buildCodeQualityLlmReviewPrompt 是 FrontAgent 评审生成代码的 LLM system prompt。当前 system 仅 4 句:
You are a strict code quality review sub-agent.
Evaluate generated code against SDD constraints and maintainability.
Output only actionable issues.
Set severity=error only for clear correctness or hard-constraint violations.
grep -ciE 'security|XSS|injection|vulnerab|安全' packages/core/src/sub-agents/code-quality-prompt.ts
# → 0
评审维度只有「SDD 约束 + 可维护性」,没有安全维度。这意味着:#366 让 codegen 被告知避免 XSS/注入/密钥泄露/不安全 eval,但评审层不会主动检查这些漏洞类——一旦生成层漏掉,评审层也兜不住。纵深防御缺了「评审」这条腿。
学习自 Claude-Code-source 的具体模式
Claude Code 的评审/验证链路把安全与正确性并列为一等评审维度(prompts.ts:234 的安全编码纪律 + verificationAgent/code-review 的对抗式核查)。FrontAgent 已在生成层补了 234 的纪律(#366),评审层应有对称的安全核查维度。
提议(最小增量,prompt-only)
扩展 buildCodeQualityLlmReviewPrompt 的 system prompt(与必要时 userPrompt),新增一条安全评审维度:在 SDD/可维护性之外,主动标记常见 Web 漏洞类(XSS via 未净化 innerHTML/dangerouslySetInnerHTML、命令/SQL 注入、客户端硬编码密钥、不安全 eval/URL/重定向),命中时按现有 issue 结构输出(rule 用 security/...,severity 按影响判定)。
复用现有结构,不改 schema:CodeQualityIssue 已有 severity/filePath/line/rule/message(code-quality-subagent.ts:21-25),安全发现天然适配,无需新增字段。
范围
只改 packages/core/src/sub-agents/code-quality-prompt.ts(system/userPrompt 文案)+ code-quality-prompt.test.ts(断言安全维度出现)。不改 schema、subagent 执行逻辑、rule-based fallback、codegen、planner。
耦合度判定
高耦合(评审 sub-agent 内部 prompt)→ 直接在 FrontAgent 内集成,不另开仓库。
验收标准
buildCodeQualityLlmReviewPrompt 返回的 system(或 userPrompt)包含安全评审维度,含关键语义(XSS / 注入 / 密钥 / 不安全 eval 或 URL)。
- 保留现有「SDD 约束 + 可维护性」维度与「Output only actionable issues」「severity=error 仅用于明确正确性/硬约束违反」语义不回退。
code-quality-prompt.test.ts 新增断言覆盖安全维度短语;现有断言不破坏。
pnpm quality:precommit 全绿。
GitNexus Impact Summary
- Risk level: LOW(prompt 文本增量,无签名/schema/call-edge 变更)
- Critical skeleton changes: 无
- GitNexus impact: 改动符号
buildCodeQualityLlmReviewPrompt(code-quality-prompt.ts),实现时补 impact + detect_changes 实测。
- Verification: typecheck + biome + 受控 diff + 针对性单测。
背景
承接 repo-evolver(Claude-Code-source 透镜,第 3 轮 / iteration 23 SCAN)。第 1–2 轮在代码生成层注入了安全纪律(#365/#366)与极简纪律(#367/#368)。本轮转向代码评审层(code-quality 评审 sub-agent),形成「生成时避免漏洞 + 评审时捕获漏洞」的纵深防御闭环。
问题(已核实,非误报)
packages/core/src/sub-agents/code-quality-prompt.ts的buildCodeQualityLlmReviewPrompt是 FrontAgent 评审生成代码的 LLM system prompt。当前 system 仅 4 句:评审维度只有「SDD 约束 + 可维护性」,没有安全维度。这意味着:#366 让 codegen 被告知避免 XSS/注入/密钥泄露/不安全 eval,但评审层不会主动检查这些漏洞类——一旦生成层漏掉,评审层也兜不住。纵深防御缺了「评审」这条腿。
学习自 Claude-Code-source 的具体模式
Claude Code 的评审/验证链路把安全与正确性并列为一等评审维度(
prompts.ts:234的安全编码纪律 + verificationAgent/code-review 的对抗式核查)。FrontAgent 已在生成层补了 234 的纪律(#366),评审层应有对称的安全核查维度。提议(最小增量,prompt-only)
扩展
buildCodeQualityLlmReviewPrompt的 system prompt(与必要时 userPrompt),新增一条安全评审维度:在 SDD/可维护性之外,主动标记常见 Web 漏洞类(XSS via 未净化 innerHTML/dangerouslySetInnerHTML、命令/SQL 注入、客户端硬编码密钥、不安全 eval/URL/重定向),命中时按现有 issue 结构输出(rule用security/...,severity按影响判定)。复用现有结构,不改 schema:
CodeQualityIssue已有severity/filePath/line/rule/message(code-quality-subagent.ts:21-25),安全发现天然适配,无需新增字段。范围
只改
packages/core/src/sub-agents/code-quality-prompt.ts(system/userPrompt 文案)+code-quality-prompt.test.ts(断言安全维度出现)。不改 schema、subagent 执行逻辑、rule-based fallback、codegen、planner。耦合度判定
高耦合(评审 sub-agent 内部 prompt)→ 直接在 FrontAgent 内集成,不另开仓库。
验收标准
buildCodeQualityLlmReviewPrompt返回的 system(或 userPrompt)包含安全评审维度,含关键语义(XSS / 注入 / 密钥 / 不安全 eval 或 URL)。code-quality-prompt.test.ts新增断言覆盖安全维度短语;现有断言不破坏。pnpm quality:precommit全绿。GitNexus Impact Summary
buildCodeQualityLlmReviewPrompt(code-quality-prompt.ts),实现时补 impact + detect_changes 实测。