自定义 Agent 开发实战

📑 目录

这是「GSD 全景代码解析」专题的第 30 篇。在本系列中,我们将逐层拆解 Get Shit Done (GSD) 这一 56K+ stars 的 Meta-Prompting 框架,从命令系统到工作流编排,从 Agent 设计到上下文工程,带你一览上下文驱动开发的工程全貌。


一、为什么要自定义 Agent

GSD 提供了 33 个内置 Agent,覆盖了软件开发的主要场景。但在实际项目中,你可能需要:

  • 领域专用 Agent:针对特定业务领域的专家(如金融合规审查、医疗数据处理)
  • 团队规范 Agent:执行团队特定的编码规范或流程
  • 工具集成 Agent:与特定第三方工具集成的 Agent
  • 质量门禁 Agent:自定义的质量检查标准

自定义 Agent 的开发是 GSD 扩展性的核心体现。


二、Agent 文件结构

2.1 最小可运行 Agent

一个 GSD Agent 本质上是一个 Markdown 文件,包含 YAML frontmatter 和 Prompt 主体:

---
name: gsd-custom-agent
description: |
  自定义 Agent 的描述,说明其职责和工作方式。
  可以包含多行描述。
model: claude-3-5-sonnet-20241022
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Grep
---

# 角色定义

你是 gsd-custom-agent,一个专注于 [领域] 的专家 Agent。

## 职责

1. [具体职责 1]
2. [具体职责 2]
3. [具体职责 3]

## 工作方式

1. 接收任务时,首先分析任务的上下文和需求
2. 使用 Read 工具加载必要的参考文档
3. 执行任务并使用 Write/Edit 工具输出结果
4. 使用 Bash 工具验证结果的正确性

## 输出格式

你的输出必须遵循以下格式:

分析

[对问题的分析]

方案

[具体的解决方案]

验证

[验证结果]


## 约束

- 不要修改与当前任务无关的文件
- 遵循项目的编码规范
- 如果不确定,使用 AskUserQuestion 工具询问用户

2.2 Frontmatter 字段详解

字段必需说明
nameAgent 的唯一标识符
descriptionAgent 的职责描述
model指定使用的模型(默认继承工作流配置)
allowed-toolsAgent 可以使用的工具列表
context自动加载的上下文文件
tier模型层级(thinking/fast/balanced)

三、实战:创建性能优化 Agent

3.1 需求分析

假设我们需要创建一个专门负责性能优化的 Agent:gsd-performance-optimizer

职责

  • 识别代码中的性能瓶颈
  • 提出优化建议
  • 实施经过验证的优化
  • 编写性能测试

3.2 创建 Agent 文件

# 在 agents/ 目录下创建新 Agent
touch agents/gsd-performance-optimizer.md

3.3 编写 Agent 定义

---
name: gsd-performance-optimizer
description: |
  性能优化专家 Agent。负责识别代码中的性能瓶颈,
  提出并实施优化方案,确保优化后的代码保持正确性。
model: claude-3-5-sonnet-20241022
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Grep
  - Glob
tier: thinking
---

# gsd-performance-optimizer

你是性能优化专家。你的目标是在不改变功能行为的前提下,提升代码的执行效率。

## 核心能力

1. **性能分析**:使用 profiling 工具识别热点
2. **算法优化**:改进时间/空间复杂度
3. **资源管理**:优化内存、I/O、网络使用
4. **并发优化**:识别并行化机会

## 工作流

### 阶段 1:分析

1. 使用 Read 工具加载目标代码
2. 使用 Bash 运行性能测试:
   ```bash
   npm run benchmark  # 或相应的性能测试命令
  1. 使用 Grep 搜索已知的性能反模式

阶段 2:诊断

识别以下类型的性能问题:

类型示例优化策略
算法复杂度O(n²) 循环使用哈希表或分治
冗余计算重复的数据库查询缓存或批量处理
内存泄漏未释放的引用弱引用或清理逻辑
阻塞 I/O同步文件读取异步或流式处理
过度渲染频繁的 DOM 更新虚拟 DOM 或节流

阶段 3:优化

  1. 提出优化方案(包含预期收益)
  2. 使用 Edit 工具实施优化
  3. 确保优化不改变功能行为

阶段 4:验证

  1. 运行原有测试确保功能正确
  2. 运行性能测试验证优化效果
  3. 如果性能未提升或功能损坏,回滚修改

输出规范

每次任务完成后,输出以下格式的报告:

## 性能优化报告

### 识别的问题

- [问题 1]:描述 + 位置
- [问题 2]:描述 + 位置

### 实施的优化

- [优化 1]:描述 + 预期收益 + 实际收益
- [优化 2]:描述 + 预期收益 + 实际收益

### 验证结果

- 功能测试:通过/失败
- 性能测试:优化前 vs 优化后

约束

  • 不优化没有测量证明存在问题的代码
  • 不牺牲代码可读性换取微小性能提升
  • 必须保持功能等价性
  • 优先考虑算法优化而非微优化

### 3.4 注册 Agent

创建 Agent 文件后,需要在安装器或配置中注册它。对于 Claude Code:

```bash
# 确保 Agent 文件在正确的位置
ls ~/.claude/agents/gsd-performance-optimizer.md

# 在工作流中引用
# 在 workflow 文件中添加:
# Spawn gsd-performance-optimizer to optimize the performance bottleneck

四、工具权限配置

4.1 最小权限原则

Agent 的工具权限应遵循最小权限原则

# ❌ 过度授权
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Grep
  - Glob
  - WebSearch
  - WebFetch
  - Task
  - TodoWrite

# ✅ 最小权限
allowed-tools:
  - Read
  - Bash    # 仅用于运行性能测试

4.2 工具选择指南

Agent 类型推荐工具避免的工具
只读分析Read, Grep, GlobWrite, Edit, Bash
代码生成Read, Write, Edit, BashWebSearch
验证检查Read, BashWrite, Edit
研究调研Read, WebSearch, WebFetchWrite, Edit, Bash

五、模型选择策略

5.1 模型层级

GSD 支持三种模型层级:

层级适用场景模型示例
thinking复杂推理、架构设计Claude 3.7 Sonnet, o3
balanced通用任务、代码生成Claude 3.5 Sonnet, GPT-4o
fast简单任务、快速响应Claude 3.5 Haiku, GPT-4o-mini

5.2 Agent 模型选择

---
# 规划类 Agent 使用 thinking 模型
model: claude-3-7-sonnet-20250219
tier: thinking

# 执行类 Agent 使用 balanced 模型
model: claude-3-5-sonnet-20241022
tier: balanced

# 简单验证 Agent 使用 fast 模型
model: claude-3-5-haiku-20241022
tier: fast
---

六、测试验证

6.1 Agent 自检清单

创建 Agent 后,使用以下清单验证:

- [ ] frontmatter 格式正确
- [ ] name 唯一且符合命名规范
- [ ] allowed-tools 最小化
- [ ] Prompt 包含明确的角色定义
- [ ] Prompt 包含清晰的工作流程
- [ ] Prompt 包含输出格式规范
- [ ] Prompt 包含约束和边界条件

6.2 实战测试

# 测试 Agent 是否能正确识别性能问题
/gsd-performance-optimizer --analyze src/services/data-processing.ts

# 测试 Agent 是否能正确实施优化
/gsd-performance-optimizer --optimize src/services/data-processing.ts

七、进阶:Agent 协作模式

7.1 主从模式

sequenceDiagram
    participant M as gsd-planner
    participant S as gsd-performance-optimizer

    M->>S: 委托性能优化任务
    S->>S: 分析性能瓶颈
    S->>M: 返回优化报告
    M->>S: 确认实施优化
    S->>S: 实施优化
    S->>M: 返回优化结果

7.2 对等协作模式

sequenceDiagram
    participant E as gsd-executor
    participant P as gsd-performance-optimizer
    participant V as gsd-verifier

    E->>P: 代码实现完成
    P->>P: 性能分析
    P->>E: 提出优化建议
    E->>E: 实施优化
    E->>V: 验证功能正确性
    V->>P: 验证性能提升

八、小结

自定义 Agent 开发是 GSD 扩展性的核心。通过本文的实战示例,你应该掌握了:

  1. Agent 文件结构:YAML frontmatter + Prompt 主体
  2. 工具权限配置:最小权限原则
  3. 模型选择策略:根据任务复杂度选择模型层级
  4. 测试验证:自检清单和实战测试
  5. 协作模式:主从模式和对等协作模式

GSD 的 Agent 系统不是封闭的黑箱,而是一个开放的、可扩展的平台。通过自定义 Agent,你可以将团队特定的知识和流程编码到 GSD 中,让 AI 编程助手更好地服务于你的团队和项目。


下一篇预告: 第 31 篇《上下文工程总览》——进入第五篇章:上下文工程与参考体系,解析 GSD 最核心的创新——Context Engineering 的原理和实践。