总结与架构启示

📑 目录

这是「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 编程框架。敬请期待。