3.3 Skill + Agent 协同——最佳方案
同一个任务,第三种:Skill 定义标准 + Agent 自主执行。
协同方案
Skill 负责知识层(定义标准、流程、格式、护栏):
📄 .claude/skills/security-review/SKILL.md(与 3.1 相同的 Skill,协同版额外增加了护栏)
检查项
SQL 注入 — 检查所有 SQL 查询是否使用参数化
XSS — 检查所有用户输入是否转义
CSRF — 检查所有 POST 请求是否有 token
认证 — 检查所有 API 是否有认证中间件
授权 — 检查所有操作是否检查权限
流程
先检查安全项,再检查性能,最后检查风格输出格式
对每个发现的问题:- 严重程度:🔴高危 / 🟡中危 / 🟢低危
- 位置:文件名:行号
- 描述:问题说明
- 建议:修复方案
安全护栏(协同版新增)
❌ 不要自动合并代码❌ 不要修改生产配置
❌ 发布评论前需人工确认
Agent 负责决策层(自主规划、执行、判断):
🤖 Security Review Agent 配置
系统提示词:你是一个安全代码审查 Agent。参照 Skill 中的审查标准和流程,自主决定检查什么、用什么工具。
工具:read_file · search_code · query_vulnerability_db · post_comment
决策模式:ReAct
约束:必须遵循 Skill 的审查清单和部署禁忌
工具:read_file · search_code · query_vulnerability_db · post_comment
决策模式:ReAct
约束:必须遵循 Skill 的审查清单和部署禁忌
分层架构
Skill 知识层
• 审查清单(标准)
• 部署禁忌(护栏)
• 输出格式(规范)
• 审查流程(顺序)
• 部署禁忌(护栏)
• 输出格式(规范)
• 审查流程(顺序)
指导 + 约束
Agent 决策层
• 自主读取代码
• 自主选择工具
• 自主判断风险
• 自主发现未覆盖的漏洞模式
• 自主选择工具
• 自主判断风险
• 自主发现未覆盖的漏洞模式
执行 + 反馈
协同结果
• 标准化 + 适应性 ✅
• 可预测 + 能发现未知 ✅
• 有护栏 + 能自主 ✅
• 可预测 + 能发现未知 ✅
• 有护栏 + 能自主 ✅
四种 Skill 辅助 Agent 的方式
模式 1
知识库模式
Skill 作为 Agent 的知识库,Agent 读取"审查标准" Skill,按标准自主审查。
例:Agent 读取审查清单,确保每项都检查
模式 2
护栏模式
Skill 作为 Agent 的护栏,部署 Agent 读取"部署禁忌" Skill,禁止不安全操作。
例:Agent 读取"不要修改生产代码"的禁忌
模式 3
输出格式模式
Skill 定义 Agent 的输出格式,报告生成 Agent 读取"报告模板" Skill,按格式输出。
例:Agent 按统一格式输出审查结果
模式 4
实时数据模式
Skill 为 Agent 注入实时数据,修复 Agent 通过 !`git diff` Skill 获取实时变更。
例:Agent 基于真实 diff 数据做决策
协同流程
SkillSkill 激活,注入审查标准、流程、格式、禁忌
AgentAgent 自主读取 PR 代码,识别技术栈
AgentAgent 查询历史漏洞数据库
协同Agent 按审查清单逐项检查(标准由 Skill 定义,执行由 Agent 自主)
AgentAgent 自主发现 ORM 注入——清单未覆盖但 Agent 自行判断
SkillAgent 按标准格式输出结果(格式由 Skill 定义)
Skill部署禁忌生效:Agent 不会自动修改生产代码
协同人工确认后,Agent 发布审查评论 ✅
三种方案全面对比
只用 Skill
可预测性
高 — 确定性规则
灵活性
低 — 只覆盖预定义场景
成本
低 — ~$0.34/天
安全性
高 — 不会自主行动
覆盖范围
有限 — 清单内项目
只用 Agent
可预测性
低 — 非确定性决策
灵活性
高 — 能应对未知
成本
高 — ~$0.53+/天
安全性
中 — 可能失控
覆盖范围
广 — 可发现未知漏洞
Skill + Agent
可预测性
高 — 清单保证底线
灵活性
高 — Agent 自主发现
成本
中 — 两者共享上下文
安全性
高 — 护栏约束 Agent
覆盖范围
最广 — 清单 + 自主发现
协同也可能出问题
Skill + Agent 协同不是万能的,三种常见问题:
| 问题 | 示例 | 快速修复 |
|---|---|---|
| Skill 标准不被遵循 | 清单说"先查安全",Agent 先查了性能 | 加强关键指令措辞 |
| Skill 护栏被 Agent 绕过 | 禁忌说"不修改生产代码",Agent 通过创建新文件间接修改 | 护栏设在代码层,不只是提示词 |
| Agent 产出与 Skill 标准矛盾 | Agent 修了 bug 但违反了代码风格 | 在 Skill 中明确优先级 |
详细的失效模式分析和防御策略,见 4.1 失效模式——软失效 vs 失控。
协同的关键
Skill 和 Agent 的协同不是简单叠加,而是相互增强:
| 没有对方 | 有了对方 |
|---|---|
| Skill 写了"检查 ORM 注入"——但 AI 可能跳过 | Agent 自主决定检查 ORM——但标准不统一 |
| Agent 发现了 ORM 注入——但不知道怎么报告 | Skill 定义了输出格式——Agent 按格式输出 |
| Skill 写了"部署禁忌"——但没有执行力 | Agent 有执行力——但可能违反禁忌 |
| Agent 可以自主运行——但可能走偏失控 | Skill 的护栏约束 Agent——有自主性但不失控 |
核心:Skill 告诉 AI「应该做什么、不能做什么」,Agent 让 AI「自己决定怎么做」。两者结合才能发挥最大价值。
本节核心要点
- Skill + Agent 协同:Skill 定义标准和护栏,Agent 自主执行和发现
- 四种辅助方式:知识库、护栏、输出格式、实时数据——按需组合
- 协同流程:Skill 激活 → Agent 自主执行 → Skill 约束输出 → 人工确认
- 1+1 > 2:Skill 保证底线,Agent 拓展上限,护栏防止失控
- 注意协同失效:标准不被遵循、护栏被绕过、产出与标准矛盾(详见 4.1 失效模式)
练习:为你的项目设计一个 Skill + Agent 协同方案。列出 Skill 负责什么(标准、护栏、格式)、Agent 负责什么(决策、执行、发现),以及如何防止协同失效。