这是「GSD 全景代码解析」专题的第 55 篇。
经过 54 篇文章的深度解析,我们已经完整走完了 GSD(Get Shit Done)的每一个角落。从命令系统到工作流编排,从 Agent 协作到上下文工程,从 SDK 运行时到质量门控——现在,是时候提炼其中的架构智慧了。
一、GSD 设计哲学回顾
1.1 五大核心原则
graph TD
A[GSD 五大原则] --> B[Fresh Context Per Agent]
A --> C[Thin Orchestrators]
A --> D[File-Based State]
A --> E[Absent = Enabled]
A --> F[Defense in Depth]
B --> B1[减少上下文污染]
C --> C1[工作流只做编排]
D --> D1[无数据库依赖]
E --> E1[默认启用特性]
F --> F1[多层质量门控]Fresh Context Per Agent
每个 Agent 获得干净、完整、无干扰的上下文。这不是简单的提示词分割,而是一种架构级别的隔离哲学。
传统方式: Agent A 执行 → 状态残留 → Agent B 继承污染
GSD 方式: Agent A 执行 → 结果写入文件 → Agent B 读取需要的部分优势:
- 消除上下文污染(Context Rot)
- Agent 可独立测试和替换
- 支持任意并行度
Thin Orchestrators
工作流编排器(Phase Runner)只做一件事:决定下一个执行谁,传递什么数据。所有业务逻辑下沉到 Agent。
反模式: Phase Runner 包含业务判断
if (task.type === 'code') { ...复杂逻辑... }
GSD 模式: Phase Runner 只做调度
agent = registry.get(task.agent)
result = await agent.invoke(task.prompt)File-Based State
状态持久化不依赖数据库,而是使用结构化文件(Markdown、JSON、YAML)。
.planing/
├── config.json # 配置状态
├── PROJECT.md # 项目愿景
├── phases/
│ ├── m1.md # 里程碑状态
│ └── m1-tasks/ # 任务输出
└── state/
├── current.json # 运行时状态
└── history/ # 执行历史优势:
- 人类可读,无需工具即可查看
- 版本控制天然支持
- 跨运行时共享
- 零依赖部署
Absent = Enabled
配置文件中缺失的字段 = 启用默认值。这不是疏忽,而是有意的设计。
# 传统配置
features:
autoCommit: true # 必须显式启用
codeReview: true
securityAudit: false # 必须显式禁用
# GSD 配置
features:
securityAudit: false # 只写需要覆盖的
# 其他全部默认启用这降低了认知负担:用户只需关心"我不想用什么",而非"我需要启用什么"。
Defense in Depth
多层质量门控,每层都是独立的防线:
第 1 层: Agent 自检(每个 Agent 输出前自我审查)
第 2 层: 验证 Agent(Verifier 专门验证)
第 3 层: 审计 Agent(Auditor 独立审计)
第 4 层: 自动化测试(单元/集成/E2E)
第 5 层: 人工审查(关键变更)没有单层是完美的,但多层叠加后,缺陷逃逸率趋近于零。
二、Meta-Prompting 最佳实践
2.1 提示词即代码
在 GSD 中,提示词不是临时文案,而是第一等代码资产:
| 代码资产 | 对应提示词 | 管理方式 |
|---|---|---|
| 函数 | Agent Prompt | 版本控制 |
| 类 | Agent 角色定义 | 模板文件 |
| 接口 | 输出格式规范 | Schema 验证 |
| 配置 | 行为开关 | 配置文件 |
2.2 分层提示词架构
系统层 (System Prompt)
└── 角色定义、能力边界、安全约束
上下文层 (Context)
└── 项目信息、参考文档、历史状态
指令层 (Instruction)
└── 当前任务、输入数据、输出要求
用户层 (User Input)
└── 具体请求、问题描述每一层独立演化,互不影响。
2.3 声明式工作流
GSD 的工作流定义是声明式而非命令式:
# 声明式: 描述"要什么"
phase: execute
strategy: parallel
maxConcurrency: 3
tasks:
- agent: coder
prompt: "实现用户认证"
outputs: [src/auth.ts]
# 命令式: 描述"怎么做"
# (GSD 避免这种方式)2.4 动态 Agent 委托
不要硬编码 Agent 调用链,而是让系统根据任务特征动态选择:
// 静态路由(反模式)
if (task.type === 'code') return CodeAgent;
if (task.type === 'test') return TestAgent;
// 动态路由(GSD 模式)
const scores = agents.map(a => a.scoreCapability(task));
return scores.sort((a, b) => b.score - a.score)[0].agent;三、Context Engineering 方法论
3.1 上下文预算管理
将 LLM 上下文窗口视为有限资源,需要预算管理:
总预算: 128K tokens
├── 系统提示: 2K (固定)
├── 项目上下文: 20K (缓存在前)
├── 参考文档: 30K (按需加载)
├── 任务历史: 40K (最近优先)
└── 当前输入: 36K (保留余量)3.2 渐进式披露
不要一次性给 Agent 所有信息,而是按需加载:
第 1 轮: 只给任务描述
↓ Agent 请求更多信息
第 2 轮: 提供相关参考文档
↓ Agent 遇到边界问题
第 3 轮: 提供架构决策记录3.3 @Reference 机制
用显式引用替代隐式上下文:
隐式: "请查看用户模块的代码"
→ Agent 不知道"用户模块"指什么
显式: "请查看 @src/modules/user/service.ts 中的
validateUser 函数"
→ Agent 精确定位3.4 模板化上下文
为重复场景创建上下文模板:
# Code Review 上下文模板
## 审查范围
{{files}}
## 变更摘要
{{diffSummary}}
## 审查清单
- [ ] 类型安全
- [ ] 错误处理
- [ ] 性能影响
- [ ] 安全考虑
- [ ] 测试覆盖
## 参考标准
{{codingStandards}}四、可借鉴的架构模式
4.1 Thin Orchestrator 模式
适用场景: 复杂工作流编排
核心思想: 编排器只负责调度,业务逻辑下沉到执行单元。
案例: Kubernetes(调度 Pod)、Airflow(调度任务)
4.2 File-Based State 模式
适用场景: 需要持久化但不想引入数据库
核心思想: 用结构化文件替代数据库,版本控制即状态历史。
案例: Git(本身就是文件状态系统)、Hugo/Jekyll(静态站点)
4.3 Chunked Planning 模式
适用场景: 大型项目规划
核心思想: 将规划分为战略/战术/执行三层,每层独立演进。
案例: OKR(目标-关键结果)、敏捷 Sprint 规划
4.4 Defense in Depth 模式
适用场景: 质量保障体系
核心思想: 多层独立防线,单层失效不影响整体。
案例: 网络安全(防火墙+IDS+WAF+审计)、航空安全
4.5 Fresh Context 模式
适用场景: 多 Agent 协作
核心思想: 每个 Agent 获得独立上下文,通过文件交换信息。
案例: 微服务(独立部署、API 通信)
五、GSD 的局限与反思
| 局限 | 说明 | 缓解方案 |
|---|---|---|
| 文件 I/O 开销 | 大量小文件读写 | 批量操作 + 缓存 |
| 缺乏实时协作 | 非并发编辑友好 | Git 分支 + 合并 |
| 上下文长度限制 | LLM 窗口有限 | 截断策略 + 摘要 |
| Agent 一致性 | 非确定性输出 | 温度调低 + 验证层 |
| 学习曲线 | 概念较多 | 渐进式采用 |
六、结语
GSD 证明了:AI 编程的未来不是更大的模型,而是更好的上下文工程。
当模型能力趋于收敛时,决定系统质量的不再是参数规模,而是:
- 如何组织上下文
- 如何设计 Agent 协作
- 如何构建质量门控
- 如何管理状态持久化
这些都是工程问题,而非模型问题。
GSD 的终极启示:
大模型是引擎,Context Engineering 是底盘,
Meta-Prompting 是变速箱,质量门控是安全带。
没有好的底盘,再强的引擎也跑不快。
没有好的变速箱,动力无法有效传递。
没有安全带,速度就是风险。感谢阅读「GSD 全景代码解析」专题。希望这 55 篇文章能为你构建 AI Agent 工具链提供有价值的参考。
下一篇预告: 第 56 篇《GSD vs 其他框架》
作为系列的最后一篇,我们将对比分析 GSD 与 Claude Rules、Cursor Rules、Cline、Devin 的差异,帮助你选择最适合的 AI 编程框架。敬请期待。