Skip to content

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 三位一体。


← 上一节:设计题 | 目录