宇航妙的 Vibe Coding 笔记

一个人怎么变成
一支工程团队?

拆解 Y Combinator 总裁 Garry Tan 的开源工具 gstack——他用它每天写出 10,000-20,000 行代码,同时还在全职管理 YC。

60万+
60 天内的代码行数
28
个 AI 专员角色
15
个并行冲刺
模块 1

gstack 到底是什么?

想象你是一家创业公司的 CEO。你有一个产品想法,但你的"团队"只有你自己。gstack 就像一个虚拟的工程团队通讯录——你输入一条斜杠命令,就能召唤出不同角色的 AI 专员来帮你。

🧠

/office-hours

YC 导师——帮你重新定义问题,而不是直接写代码

📐

/plan-eng-review

工程经理——锁定架构、画数据流图、列出边界情况

🔍

/review

资深工程师——找出能通过测试但在生产环境爆炸的 bug

🧪

/qa

QA 主管——打开真实浏览器,点击测试,修 bug,写回归测试

🚀

/ship

发布工程师——跑测试、审覆盖率、推代码、开 PR

🎨

/design-review

设计师——用 0-10 分打分每个维度,检测 AI 生成的设计"水味"

💡

核心洞察:流程即力量

gstack 不是一堆零散的工具。它是一个流程:Think → Plan → Build → Review → Test → Ship → Reflect。每个环节的输出会自动流入下一个环节。就像流水线上的工位——每个工人只需要专注自己的那一步。

当你输入 /office-hours 时,发生了什么?

🏢 gstack 团队群聊
我想做一个每日日历简报 app。
🧠
Office Hours 导师
等一下。你说"日历简报 app",但你描述的痛点其实是:你需要一个个人参谋 AI。让我追问 6 个关键问题……
📐
工程经理
导师写好了设计文档,我来接手。数据流是这样的:Google Calendar API → 日程聚合 → AI 摘要 → 推送。我画个架构图。
🔍
代码审查员
2 个问题已自动修复。1 个竞态条件需要你确认。
🧪
QA 主管
我打开了真实浏览器,走完了整个流程,发现了一个 UI bug——已修复并生成回归测试。
🚀
发布工程师
测试:42 → 51(+9 新)。PR 已开:github.com/you/app/pull/42 ✅
🧩 场景题:你的 app 上线后,用户反馈"点击保存后页面空白"。基于 gstack 的角色分工,你应该先召唤哪个角色?
模块 2

像冲刺一样构建

gstack 的灵魂不是单个工具,而是工具之间的衔接。每个技能(skill)的输出会自动成为下一个技能的输入——就像接力赛传棒一样。

Think
💡 /office-hours
Plan
📐 /plan-*-review
Build
⚡ 写代码
Review
🔍 /review
Test
🧪 /qa
Ship
🚀 /ship
Reflect
📊 /retro

每个角色的"身份证"长什么样?

每个 gstack 角色都有一个 SKILL.md 文件作为身份证。AI 读到这个文件就知道自己该扮演什么角色。

📄 office-hours/SKILL.md --- name: office-hours description: | YC Office Hours — 六个关键问题 重新定义你的产品。 在写代码之前先用这个。 allowed-tools: - Bash - Read - Write - AskUserQuestion - WebSearch ---
💬 人话翻译
⬇️ 文件头部,用三个横线括起来的是"元数据"
📛 名字:office-hours(输入 /office-hours 触发)
📝 介绍:告诉 AI "你现在的角色是 YC 导师"
 
💬 这段介绍越具体,AI 就越知道该怎么行动
 
🔧 工具白名单:这个角色只能用这 5 个工具
比如它可以运行命令、读文件、写文件
可以问你问题(AskUserQuestion)
可以搜索网络——但不能点击浏览器
⬇️ 文件头结束,后面就是详细的操作指令
💡

核心洞察:限制即安全

注意 allowed-tools 这个字段——它限制了 AI 能使用的工具。导师角色没有浏览器权限,所以它不可能"手滑"去点你的生产环境。这就像给实习生分配权限:看得到但碰不到敏感的部分。

"Boil the Lake"——为什么要做完整的事

gstack 的核心哲学之一叫 "Boil the Lake"。看看 AI 辅助前后的效率对比:

任务类型传统团队AI 辅助压缩比
脚手架 / 模板代码2 天15 分钟~100x
写测试1 天15 分钟~50x
功能开发1 周30 分钟~30x
修 bug + 回归测试4 小时15 分钟~20x
架构 / 设计2 天4 小时~5x
调研 / 探索1 天3 小时~3x
🧩 场景题:你正在用 gstack 开发一个新功能。/plan-eng-review 给你画了架构图和测试计划。接下来你该运行什么?
模块 3

给 AI 装上眼睛

大多数 AI 编程工具只能读代码、写代码,但看不到最终效果。gstack 内置了一个持久化的 Chromium 浏览器。AI 可以用它打开你的 app,像真人一样点击、填表、截图。

这就像给一个盲人画家戴上了眼镜——它终于能看到自己画了什么。

Claude Code
发出命令
CLI 二进制文件
~100ms
HTTP →
Server (Bun)
路由分发
CDP →
Chromium
持久化浏览器
📄 浏览器命令示例 # 1. 打开页面 $B goto https://myapp.com/login # 2. 看看有什么可以交互的 $B snapshot -i # 3. 填写表单 $B fill @e3 "test@example.com" $B fill @e4 "password123" $B click @e5 # 4. 检查结果 $B snapshot -D $B screenshot /tmp/result.png
💬 人话翻译
打开登录页面
 
扫描页面,列出所有按钮、输入框,给它们编号
 
在第 3 个输入框(@e3)里填入邮箱
在第 4 个输入框里填密码
点击第 5 个元素(登录按钮)
 
比较点击前后页面的变化(diff 对比)
截一张图保存下来作为证据
💡

核心洞察:Ref 系统的精妙设计

@e3 这种编号叫 Ref。AI 不需要猜测 CSS 选择器(比如 #login-form > button.primary),直接用编号就行。而且这些编号在页面跳转后会自动失效,防止 AI 点错元素。

🧩 你让 AI 用浏览器测试登录,但 AI 报错说"Ref @e3 is stale"。最可能的原因是?
模块 4

安全网与护栏

让 AI 写代码最吓人的事是什么?它可能"顺手"删掉你的数据库,或者把密码推到 GitHub。gstack 用了一套分层安全机制,就像给一辆赛车装上了安全带、气囊和赛道护栏。

⚠️

/careful

在执行危险命令前先警告你——rm -rf、DROP TABLE、force-push 都会被拦截

🔒

/freeze

锁定 AI 只能编辑某个文件夹,防止调试时"顺手"改坏其他代码

🛡️

/guard

/careful + /freeze 的组合拳——在操作生产环境时开启最高安全级别

🔐

/cso

首席安全官——跑 OWASP Top 10 + STRIDE 威胁模型,每个发现附带具体攻击场景

💡

核心洞察:Cookie 从不落盘

gstack 处理的最敏感数据是浏览器 Cookie(登录凭证)。设计原则:解密只在内存中进行,永不写入磁盘。用完就丢,服务器关闭时清空。数据库只读——绝不修改你的真实浏览器数据。就像银行的临时保险柜:你看得到内容,但它不会在闭馆后还开着。

🧩 你要在生产数据库上修一个紧急 bug。用 gstack 的话,最安全的操作方式是?
模块 5

你能从中借鉴什么?

gstack 是为 Claude Code 设计的,不能直接用在你的 Antigravity 环境里。但它的设计思路完全可以迁移。以下是你可以立刻用上的 3 个模式:

1️⃣

角色 SOP 化

你已经在 my-brain 里写 SOP 了!gstack 做的也是同一件事——只是它用 SKILL.md 格式,而你用自己的格式。你的 SOP = 你的 Skill。

2️⃣

流程串联

gstack 每个角色的输出自动流入下一个角色。你可以在 SOP 里加"上一步的输出在哪"和"下一步交给谁",让 AI 自动接力。

3️⃣

权限控制思维

gstack 用 allowed-tools 限制每个角色的权限。你可以在 SOP 里明确写"这个场景下 AI 不能做什么"——比如"整理笔记时不要修改原文"。

🚀

你的下一步

不需要装 gstack。你需要做的是:把你已有的 SOP(上课笔记、微信发布、写作风格)当成 Skill 来维护——给每个 SOP 加上触发条件、输入格式、输出格式。你的 my-brain 仓库就是你的 gstack。

📦 gstack 解密课 · 基于 garrytan/gstack 源码生成 · MIT License