这是「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 字段详解
| 字段 | 必需 | 说明 |
|---|---|---|
| name | ✅ | Agent 的唯一标识符 |
| description | ✅ | Agent 的职责描述 |
| model | ❌ | 指定使用的模型(默认继承工作流配置) |
| allowed-tools | ✅ | Agent 可以使用的工具列表 |
| context | ❌ | 自动加载的上下文文件 |
| tier | ❌ | 模型层级(thinking/fast/balanced) |
三、实战:创建性能优化 Agent
3.1 需求分析
假设我们需要创建一个专门负责性能优化的 Agent:gsd-performance-optimizer。
职责:
- 识别代码中的性能瓶颈
- 提出优化建议
- 实施经过验证的优化
- 编写性能测试
3.2 创建 Agent 文件
# 在 agents/ 目录下创建新 Agent
touch agents/gsd-performance-optimizer.md3.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 # 或相应的性能测试命令- 使用 Grep 搜索已知的性能反模式
阶段 2:诊断
识别以下类型的性能问题:
| 类型 | 示例 | 优化策略 |
|---|---|---|
| 算法复杂度 | O(n²) 循环 | 使用哈希表或分治 |
| 冗余计算 | 重复的数据库查询 | 缓存或批量处理 |
| 内存泄漏 | 未释放的引用 | 弱引用或清理逻辑 |
| 阻塞 I/O | 同步文件读取 | 异步或流式处理 |
| 过度渲染 | 频繁的 DOM 更新 | 虚拟 DOM 或节流 |
阶段 3:优化
- 提出优化方案(包含预期收益)
- 使用 Edit 工具实施优化
- 确保优化不改变功能行为
阶段 4:验证
- 运行原有测试确保功能正确
- 运行性能测试验证优化效果
- 如果性能未提升或功能损坏,回滚修改
输出规范
每次任务完成后,输出以下格式的报告:
## 性能优化报告
### 识别的问题
- [问题 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, Glob | Write, Edit, Bash |
| 代码生成 | Read, Write, Edit, Bash | WebSearch |
| 验证检查 | Read, Bash | Write, Edit |
| 研究调研 | Read, WebSearch, WebFetch | Write, 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 扩展性的核心。通过本文的实战示例,你应该掌握了:
- Agent 文件结构:YAML frontmatter + Prompt 主体
- 工具权限配置:最小权限原则
- 模型选择策略:根据任务复杂度选择模型层级
- 测试验证:自检清单和实战测试
- 协作模式:主从模式和对等协作模式
GSD 的 Agent 系统不是封闭的黑箱,而是一个开放的、可扩展的平台。通过自定义 Agent,你可以将团队特定的知识和流程编码到 GSD 中,让 AI 编程助手更好地服务于你的团队和项目。
下一篇预告: 第 31 篇《上下文工程总览》——进入第五篇章:上下文工程与参考体系,解析 GSD 最核心的创新——Context Engineering 的原理和实践。