6.3 综合实战——构建 Skill + Agent 协同系统
把前面学到的知识整合起来,为代码审查 + 部署场景设计一个完整的 Skill + Agent 协同方案。
实战目标
完成以下 6 个步骤,输出一份可执行的方案:
1
编写 3 个 Skill 的 SKILL.md
为代码审查、部署禁忌、通知规范分别写 SKILL.md frontmatter
2
定义 Agent 配置
定义审查 Agent 和部署 Agent 的系统提示词、工具、决策模式
3
设计协同流程
画审查 + 部署的完整数据流
4
识别失效模式
列出 Skill 软失效和 Agent 失控的可能场景
5
设计防御措施
为每种失效模式设计预防/检测/修复策略
6
估算每日成本
基于"每天 10 个 PR"估算 Skill 和 Agent 的 token 消耗
步骤 1:编写 3 个 Skill
Skill 1:代码审查
yaml
---
name: code-review
description: 安全代码审查。当说"审查"、"review"时使用
when_to_use: 当用户提到审查、review、PR 检查时自动激活
disable-model-invocation: true
user-invocable: true
arguments:
- pr_url
argument-hint: "<pr_url>"
allowed-tools: Bash(git *), Bash(gh *)
context: fork
agent: Explore
model: sonnet
effort: high
paths:
- "src/**"
---正文内容(请自行补充):
markdown
# 安全代码审查
## 检查项(按优先级排列)
1. **安全**:SQL 注入、XSS、CSRF、认证、授权
2. **性能**:N+1 查询、内存泄漏、慢查询
3. **风格**:命名规范、代码注释、DRY
## 流程
1. 读取 PR 代码变更
2. 先检查安全项(**必须**逐项检查,不允许跳过)
3. 再检查性能项
4. 最后检查风格项
5. 发布审查意见
## 输出格式
- 严重程度:🔴 高 / 🟡 中 / 🟢 低
- 代码位置:文件:行号
- 修复建议
## 安全护栏
- **不允许**自动合并代码
- **不允许**修改生产配置Skill 2:部署禁忌
yaml
---
name: deploy-guard
description: 部署禁忌清单。部署前必须检查
when_to_use: 当用户提到部署、上线、发布时自动激活
disable-model-invocation: true
user-invocable: true
allowed-tools: Bash(npm *), Bash(docker *)
---正文内容(请自行补充):
markdown
# 部署禁忌
## 禁止操作
1. **不允许**在数据库迁移期间部署
2. **不允许**跳过测试直接部署
3. **不允许**修改生产配置不经审批
4. **不允许**回滚超过 3 个版本
## 检查清单
- [ ] 所有测试通过
- [ ] 数据库迁移已执行
- [ ] 配置变更已审批
- [ ] 回滚方案已准备Skill 3:通知规范
yaml
---
name: notify
description: 通知规范。发布审查意见或部署通知时使用
when_to_use: 当需要发送通知时使用
disable-model-invocation: true
user-invocable: true
allowed-tools: Bash(gh *), Bash(slack *)
---正文内容(请自行补充):
markdown
# 通知规范
## 审查通知格式
- 标题:[安全审查] PR #xxx
- 严重程度汇总:🔴 x / 🟡 x / 🟢 x
- 关键发现(前 3 项)
- 审查 Agent 链接
## 部署通知格式
- 标题:[部署] 环境名 - 版本号
- 状态:进行中 / 成功 / 失败
- 关键变更(前 3 项)
- 回滚命令步骤 2:定义 Agent 配置
审查 Agent
系统提示词:你是一个安全代码审查 Agent。你的目标是发现 PR 中的所有安全问题。遵循 code-review Skill 的标准。
工具:read_file, search_code, query_vulnerability_db, post_comment
决策模式:ReAct
记忆:长期记忆(历史漏洞数据库)
最大循环:20 步
权限:禁止修改代码、禁止合并 PR
部署 Agent
系统提示词:你是一个部署 Agent。你的目标是安全地将代码部署到目标环境。遵循 deploy-guard Skill 的禁忌清单。
工具:run_tests, build, deploy, rollback, check_status
决策模式:Plan-Execute
记忆:短期记忆(当前部署状态)
最大循环:10 步
权限:部署到生产需审批(HITL)
步骤 3:设计协同流程
1
Skill 加载
code-review Skill
→
2
Agent 审查
审查 Agent 自主执行
→
3
通知
notify Skill 格式发布
→
4
Skill 加载
deploy-guard Skill
→
5
Agent 部署
部署 Agent 自主执行
→
6
通知
部署结果通知
步骤 4:识别失效模式
| 失效类型 | 可能场景 | 影响 |
|---|---|---|
| Skill 软失效:部分忽略 | 审查 Agent 跳过了 CSRF 检查 | 安全漏洞漏检 |
| Skill 软失效:优先级偏移 | Agent 先检查了风格,忽略了安全 | 高危问题被延后 |
| Agent 失控:走偏 | 审查 Agent 在某个文件上花太多时间 | 审查效率降低 |
| Agent 失控:越权操作 | 部署 Agent 直接部署到生产(未审批) | 生产事故 |
| Agent 失控:成本爆炸 | 审查 Agent 循环 50 步才完成 | token 成本失控 |
| 协同失效:护栏被绕过 | 部署 Agent 通过间接方式绕过禁忌 | 生产事故 |
| 协同失效:结果矛盾 | Agent 修了 Bug 但违反代码风格 | 不一致的输出 |
步骤 5:设计防御措施
| 失效模式 | 预防 | 检测 | 修复 |
|---|---|---|---|
| Skill 部分忽略 | 加强关键措辞("必须")、缩短 Skill | 对比 AI 输出和清单 | 修改 Skill 措辞 |
| Agent 走偏 | 每步检查与目标偏离度 | 行为日志分析 | 设置每文件最大循环次数 |
| Agent 越权操作 | 权限金字塔:部署到生产需审批 | 代码级权限检查 | 护栏设在代码层,非提示词层 |
| Agent 成本爆炸 | 设置最大循环次数、token 止损线 | 实时 token 消耗监控 | 超限自动停止 |
| 护栏被绕过 | 护栏设在 Agent 代码层 | 行为日志审计 | 加固权限控制 |
| 结果矛盾 | Skill 优先级:安全 > 正确 > 风格 | 检查输出是否违反标准 | 明确优先级顺序 |
步骤 6:估算每日成本
基于"每天 10 个 PR":
| 成本项 | Skill 方案 | Agent 方案 | Skill + Agent 方案 |
|---|---|---|---|
| Skill/提示词 | ~5,000 token | ~3,000 token | ~8,000 token |
| 工具描述 | — | ~2,000 token | ~2,000 token |
| PR 代码 | ~30,000 token | ~30,000 token | ~30,000 token |
| 决策循环 | — | ~20,000 token | ~15,000 token |
| 历史数据 | — | ~5,000 token | ~5,000 token |
| AI 输出 | ~15,000 token | ~15,000 token | ~15,000 token |
| 每日总 token | ~50,000 | ~75,000 | ~80,000 |
| 每日费用 ($3/M in, $15/M out) | ~$0.34 | ~$0.53 | ~$0.56 |
注意:输出 token 按输出价格计费($15/MTok),是输入价格($3/MTok)的 5 倍,所以实际费用远高于纯按 token 数量估算。Skill + Agent 方案的 token 成本不是简单叠加(80K ≠ 50K + 75K),因为 Skill 指令和 Agent 提示词在同一次对话中共享上下文。协同方案虽然基础成本略高,但 Skill 护栏减少了 Agent 走偏的概率,实际总成本可能更低。
课程回顾
核心区别
Skill = 知识注入(被动)
Agent = 自主决策(主动)
七个本质差异
软失效 vs 失控
递进关系:Prompt → Skill → Agent
协同模式
Skill 主导(知识核心)
Agent 主导(决策核心)
深度融合(两者并重)
MCP + Skill + Agent 三位一体
从模式 1 → 模式 3 演进
实践要点
三问决策法
成本权衡(决策循环是额外开销)
权限金字塔(安全核心)
8 个误区(自主性不是越高越好)
选型路径:Skill → Agent → 协同
恭喜你完成了 Skill vs Agent 课程!
核心记住这句话:Skill 是操作手册,Agent 是能自己规划执行的实习生——两者是递进与互补,不是替代。能用 Skill 解决的不要上 Agent,最强大的模式是 MCP + Skill + Agent 三位一体。