跳到主要内容

Agent Swarm 一人公司最佳实践:YC 创始人 GStack 项目实战

[toc]

  • 公开课课件领取
0

§1 开场:一人公司时代与 Agent Swarm

1.1 一人公司的十亿美元想象

  2026 年初,科技圈最热的话题不是某个新框架,也不是某个新模型——而是一个曾经听起来荒谬的预言正在逼近现实:

"We're going to see 10-person companies with billion-dollar valuations pretty soon... in my little group chat with my tech CEO friends there's this betting pool for the first year there is a one-person billion-dollar company."

—— Sam Altman,OpenAI CEO

  这不是一个人的幻想。Anthropic CEO Dario Amodei 在 2025 年的 Code with Claude 开发者大会上被问到"一人十亿美元公司何时出现"时,给出了明确回答:"2026 年",置信度 70-80%。他还具体指出了最可能的领域:量化交易、开发者工具、自动化客服。

  更重要的是,这个预言已经有了真实的前奏——2025 年 6 月,以色列开发者 Maor Shlomo 独自创建的 AI 应用平台 Base44,在上线仅 6 个月后以 8000 万美元现金被 Wix 收购,月净利润达 18.9 万美元,用户超 25 万。一个人,半年,接近亿美元退出。

TechCrunch 报道:AI Agents 可能催生第一家一人独角兽公司——但社会代价几何?

TechCrunch 报道:AI agents could birth the first one-person unicorn

  一人公司的想象力正在被 AI Agent 释放出来。但请注意一个关键区别:这里说的不是"一个人用 ChatGPT 聊天写代码"——而是一个人指挥一群专业化的 AI Agent,像管理一支 20 人团队一样运作。一个 Agent 做产品策划、一个 Agent 做架构设计、一个做代码审查、一个做 QA 测试、一个做安全审计、一个做发布部署……

Agent Swarm 概念——一个人,多个专业 AI Agent,覆盖完整的软件开发团队角色

  这种模式有一个正式的名字:Agent Swarm(智能体蜂群)。它和"让一个 AI 什么都干"的根本区别在于专业化分工——就像真实公司里的 CEO 不应该去写测试用例、QA 工程师不应该去做产品决策一样,每个 Agent 有明确的角色边界和专业约束。

  问题来了:如何让一群 AI Agent 高效协作,而不是各自为政? 答案藏在一个 2026 年最重要的工程概念里——

Agent Harness:从"能用"到"可靠"的关键基础设施

  2025 年证明了 AI Agent 能工作。2026 年的核心命题是让 Agent 可靠地工作。业界对此有一个精辟的总结:

"The model is commodity. The harness is moat." (模型是大宗商品,Harness 才是护城河。)

  什么是 Agent Harness?用一个类比:如果 AI 模型是引擎,那 Harness 就是整辆车——方向盘、刹车、仪表盘、安全带。引擎再强大,没有车的约束和引导,它哪也去不了。

Agent Harness 架构概念——同一个 AI 模型,配上 Harness(角色定义 + 任务约束 + 状态追踪),产出从不可预测变为稳定可靠

  Anthropic 自己在 2025 年 11 月发表了一篇重要的工程博客《Effective Harnesses for Long-Running Agents》,首次系统化地定义了 Harness 架构的核心组件:

组件作用对应到开发实践
CLAUDE.md全局配置——定义 Agent 的身份、规则、约束项目根目录的"宪法文件"
SKILL.md专业角色定义——规定 Agent 在特定任务中的行为边界每个 slash command 背后的指令集
Progress Files跨会话记忆——让新的上下文窗口知道之前做了什么claude-progress.txt 等状态文件
Git状态追踪——原子提交记录每步变更,可回溯每个 Agent 独立分支、clean commit

Anthropic 工程博客《Effective Harnesses for Long-Running Agents》——定义了 Agent Harness 架构的核心范式

Anthropic 博客原文:Effective Harnesses for Long-Running Agents

  Harness 的威力有多大?LangChain 在 Terminal Bench 2.0 基准测试中,不换模型仅改善 Harness,就从第 30 名跃升到前 5 名(52.8% → 66.5%)。Vercel 做了一个反直觉的实验——删掉 80% 的可用工具,反而得到了更快的响应、更少的 token 消耗、更高的成功率。Manus 在 6 个月内重写了 5 次 Harness,模型完全没换,但每次可靠性都显著提升。

  这意味着什么?你不需要等下一代更聪明的模型——你现在就可以通过设计更好的 Harness 来大幅提升 AI 协作效果。 这才是一人公司真正可行的底层逻辑:不是因为模型变强了,而是因为我们学会了如何约束和编排它们。

  那么,有没有人把 Agent Swarm + Harness Engineering 做成一个现成的、开箱即用的工具,让任何人都能上手?

  有。而且做这件事的人,来头不小——

1.2 GStack 架构全景:28 个 Skill 的虚拟公司

  2026 年 3 月中旬,Y Combinator CEO Garry Tan(陈嘉兴)做了一件让整个开发者社区震动的事——他把自己使用 Claude Code 的完整工作配置开源了。

  这个项目叫 GStack。上线 48 小时突破 10,000 星,不到一周超过 33,000 星,截至今天已经积累了 47,900+ 星

GStack GitHub 仓库首页——47.9k 星、MIT 开源协议、28 个专业角色

GStack 仓库地址:https://github.com/garrytan/gstack

  但 GStack 不只是"又一个 GitHub 热门项目"——它是目前最完整的 Agent Harness 实战样本。在深入 Garry Tan 的故事之前,我们先看看这个项目在技术上到底有多酷。

项目解剖:不写代码的代码仓库

  GStack 的核心是 28 个 Markdown 文件——没有复杂的框架代码,没有精巧的算法实现。它的"代码"就是自然语言。但这 28 个文件构成了一个完整的虚拟公司组织架构:

部门Agent 角色对应 Skill做什么
CEO 办公室YC 产品顾问/office-hours6 个灵魂拷问挑战你的产品假设,不写代码只做思考
CEO 办公室CEO / 创始人/plan-ceo-review四种范围模式审视产品方向(扩张/收缩/维持/选择性扩张)
工程部工程总监/plan-eng-review锁定架构、产出数据流图 + 测试矩阵
设计部高级设计师/plan-design-review /design-consultation0-10 分打分 + AI-slop 检测 + 完整设计系统
开发部偏执的高级工程师/review专找"CI 能过但生产会炸"的 bug
QA 部QA 工程师/qa /qa-only打开真实 Chromium 浏览器逐页面点击测试
安全部首席安全官/csoOWASP Top 10 + STRIDE 威胁建模审计
运维部发布工程师/ship /land-and-deploy同步主分支 → 跑测试 → 开 PR → 部署
调查组排查工程师/investigate数据流追踪式 root cause 分析
文档组文档工程师/document-release自动更新文档匹配代码变更

  加上 /canary(金丝雀监控)、/benchmark(性能基线)、/browse(浏览器操控)、/codex(跨模型审查)、/retro(周度复盘)等辅助工具,合计 28 个 Skill——覆盖了从灵感到上线的完整软件工程生命周期。

GStack Skills 文档——每个 Skill 的角色定义、工作方式和应用场景一览

完整 Skill 文档:GStack Skills Deep Dives

核心配置:CLAUDE.md 与 ETHOS.md

  GStack 的两个灵魂文件是 CLAUDE.mdETHOS.md

  CLAUDE.md 是整个项目的"宪法"——它告诉 Claude Code:你有哪些可用的 Skill、遇到问题该怎么做、如何管理浏览器自动化。所有 28 个 Skill 在这里注册,相当于这支虚拟团队的"通讯录"。

GStack CLAUDE.md——项目宪法文件,注册全部 28 个 Skill、定义命令清单和全局规则

GStack CLAUDE.md 源码:github.com/garrytan/gstack/blob/main/CLAUDE.md

  ETHOS.md 则是团队的"价值观手册"——它定义了三条核心设计哲学,会被自动注入到每个 Skill 的提示词中:

GStack ETHOS.md——定义"The Golden Age"愿景与三大设计哲学,被注入到每个 Skill

GStack ETHOS.md 源码:github.com/garrytan/gstack/blob/main/ETHOS.md

  ETHOS 开篇就亮出了 GStack 的世界观:

"The Golden Age — A single person with AI can now build what used to take a team of twenty. The engineering barrier is gone. What remains is taste, judgment, and the willingness to do the complete thing."

  翻译过来:一个人加上 AI 就能做到过去 20 人团队的产出。工程门槛已经消失,剩下的只有品味、判断力,以及把事情做完整的意愿。

运行模式:从单线程到 Agent Swarm

  GStack 支持两种运行模式:

模式一:单线程冲刺(本课采用)

  在一个 Claude Code 会话中依次调用不同的 Skill。适合学习和轻量开发:

FENCE0

模式二:多线程并行(Conductor 模式)

  通过 Conductor 同时运行多个 Claude Code 会话,每个会话在独立工作空间中执行不同 Skill。这就是真正的 Agent Swarm

FENCE1

  Garry Tan 声称用这种模式,边全职运营 YC、边在 60 天内管理产出了 60 万行生产代码(35% 是测试代码),日均 10,000-20,000 行。他的 GitHub 贡献图显示 2026 年已有 1,237 次提交。

应用场景与定制化价值

  GStack 不是只能做 Web 应用——它的 Harness 架构适用于任何需要软件工程流程的场景:

场景核心 Skill 组合价值
SaaS 产品开发office-hours → plan → build → review → qa → ship完整冲刺,从想法到 PR
API 服务构建plan-eng-review → build → cso → ship架构锁定 + 安全审计
客户项目交付plan-ceo-review → build → review → qa需求对齐 + 质量保障
已有项目维护investigate → review → qa → ship排查 → 修复 → 测试 → 上线
技术选型评估office-hours + plan-eng-review灵魂拷问 + 架构评审
安全合规审计cso + reviewOWASP + STRIDE 全覆盖

  而且,GStack 最大的价值不在于直接使用它的 28 个 Skill——而在于它给了你一套可复制的模式。每个 SKILL.md 本质上就是一个"如何定义 AI 协作角色"的范本。看懂了它的写法,你可以为自己的业务场景编写任意角色:客服专家、数据分析师、法律顾问、市场策划……只要能用自然语言描述清楚角色边界,就能变成一个可靠的 AI 协作伙伴。

这也是本课最终的教学目标:不只是会用 GStack 的 28 个现成 Skill,更要学会用 GStack 的思路给自己的工作流定制 Agent——这才是一人公司的真正打开方式。

  说了这么多技术细节,你可能已经迫不及待想动手了。但在此之前,让我们花两分钟了解一下 GStack 的"破圈现象"和它背后的人——这不是八卦,而是理解它设计哲学的必要背景。

1.3 近 5 万颗星背后的争议:一堆 Markdown 凭什么?

  GStack 的爆发速度,在 GitHub 开源史上都算得上罕见——Star 增长曲线几乎是一条垂直线。

GStack Star 增长曲线——从 3 月中旬上线到月底近 5 万星的爆发式增长

  但伴随热度而来的是质疑。视频博主 Mo Bitar 发布了一条标题为"AI is making CEOs delusional"的视频,直言 GStack 本质上"就是一堆文本文件里的提示词"。TechCrunch 的报道标题也颇为意味深长:"Why Garry Tan's Claude Code setup has gotten so much love, and hate"。Hacker News 上数百条评论分成了旗帜鲜明的两派。

  那么问题来了:一堆 Markdown 文件,凭什么值近 5 万颗星?

  如果你读到了前面 §1.1 关于 Harness Engineering 的分析,答案已经很清晰了——GStack 的价值不在于它写了多少代码,而在于它用 Markdown 构建了一个经过实战验证的 Agent Harness。就像业界所说的"The model is commodity, the harness is moat"——在 AI 模型日趋同质化的今天,如何约束和编排 AI 才是真正的技术壁垒。GStack 提供了一个现成的最佳实践模板。这也正是它引发争议的原因——很多人还没有意识到,约束 AI 的能力比使用 AI 的能力更稀缺

GStack README——Garry Tan 的自述:GStack 是他作为 YC CEO 运营多个产品的核心工作方式

本课你将收获

  学完这门课,你会得到三样东西:

#产出具体内容
1一个可上线的 SaaS 产品用 GStack 七步冲刺做出的 ShipLog(产品发布日志 + 用户反馈平台),含 Landing Page 和反馈墙功能
2一份实战速查表28 个 Skill 按工作流阶段分组,标注优先级和使用场景,日常开发随时可查
3你自己写的第一个 AI 协作角色参照 GStack 规范编写的自定义 SKILL.md,明天就能用在你自己的项目里

  从今天起,你的 Claude Code 不再是一个助手——它是一支团队

阅读路径建议

你的背景建议路径
已在使用 Claude Code全程跟做——从 §1 理解设计哲学,到 §4 安装 GStack,到 §5-§6 完整冲刺做出 ShipLog
听过但还没用 Claude Code先通读 §1-§3 建立认知,然后安装 Claude Code + GStack(§4),再跟做实战部分
赶时间只想看核心直接跳到 §4 安装,§5 体验完整冲刺——但建议之后补读 §2-§3 的设计哲学,会让你用得更深

注:本课假设你有编程基础(了解 Git、命令行、Web 开发基本概念),不会从零教这些。如果你还不熟悉 Claude Code 的基础操作,建议先完成官方入门教程再来。

1.4 ShipLog:今天我们要做的产品

  在正式深入 GStack 之前,我们先看看今天的实战目标——ShipLog

  ShipLog 是一个独立开发者的产品发布日志和用户反馈平台。 一句话价值主张:"让你的用户看到你在持续改进,让你听到用户真正想要什么。" 如果你做过独立产品,一定对这两个痛点不陌生:用户不知道你在做什么改进(觉得产品没人管了),你也不知道用户真正想要什么功能(拍脑袋决策)。ShipLog 就是解决这个问题的。

  为什么选这个项目?因为它刚好覆盖了 GStack 工作流的全部关键环节:需要产品思考(/office-hours 灵魂拷问)、需要架构设计(/plan-eng-review 锁定方案)、需要前端视觉(/design-review 打磨体验)、需要代码审查(/review 找真实 bug)、需要浏览器测试(/qa 自动化验证)、需要安全审计(/cso 扫描漏洞),最后需要发布(/ship 创建 PR)。一个项目,把 GStack 的核心能力走了个遍。

我们分两个阶段构建

阶段做什么对应 GStack 工作流你会看到
阶段一Landing Page(产品着陆页)Think → Plan → Build → Review → Test → Ship 完整冲刺一个有 Linear 级视觉品质的产品首页,从想法到 PR 一气呵成
阶段二反馈墙功能Build → Review → QA → CSO 深度审查类似 Canny 的投票反馈系统,经过安全审计

  视觉上,我们追求 Linear 那种简洁现代的风格——深色主题、渐变色 Hero 区域、功能卡片布局精致。反馈墙则参考 Canny 的卡片式设计——投票、状态标签、排序筛选一应俱全。

Linear 产品首页——我们的 Landing Page 视觉风格参考:简洁、现代、深色主题

Linear 官网:https://linear.app——产品开发管理系统,以极致的设计美感著称

Canny 产品首页——我们的反馈墙功能参考:集中收集用户反馈、投票排列优先级

Canny 官网:https://canny.io——产品反馈管理平台,ShipLog 反馈墙的灵感来源

重要提醒:ShipLog 不是一个"Hello World"级别的玩具演示。我们的目标是做出一个可以直接部署上线的 SaaS 产品原型——改几行文字和颜色,换成你自己的产品信息,就能直接用。这是本课和其他 GStack 教程最大的区别:别人教你"GStack 是什么",我们带你"用 GStack 做什么"

  接下来,我们先搞清楚 GStack 背后的人和设计哲学——理解了"为什么这样设计",用起来才能举一反三。


§2 Garry Tan 与 GStack 设计哲学

2.1 Garry Tan:从 Palantir 工程师到 YC CEO

  要理解 GStack 为什么"不一样",得先了解做它的人。GStack 不是某个 AI 爱好者的周末项目——它的设计者 Garry Tan(陈嘉兴) 有一份相当独特的履历:既是工程师出身,又看过数千家创业公司的生死。

时间经历关键标签
1999-2003Stanford 计算机系统工程学士技术科班出身
2004-2008Palantir 第 10 号员工,设计了 Palantir 的 logo,参与金融分析产品开发早期创业公司的全栈角色(工程+设计)
2008-2012联合创办 Posterous(博客平台),后被 Twitter 收购从 0 到 1 的创业经验
2011-2015Y Combinator 合伙人,主导 Bookface 和 Demo Day 网站开发深度参与数千家创业公司的孵化
2012-2022联合创办 Initialized Capital,管理 $7 亿+基金,投资了 Coinbase、Instacart、Flexport从投资者视角理解产品成败
2023-至今Y Combinator 总裁兼 CEO全球顶级孵化器掌门人

Garry Tan 的 Y Combinator 官方介绍页——总裁兼 CEO,斯坦福计算机系统工程学士

Y Combinator 官网 Garry Tan 主页:https://www.ycombinator.com/people/garry-tan

  这份履历意味着什么?意味着 GStack 的设计者同时具备三种视角:工程师视角(Palantir 早期全栈,知道代码该怎么写)、创业者视角(Posterous 从零到被收购,知道产品该怎么做)、投资人视角(看过 6,000+ 家 YC 公司的申请,知道什么样的产品能活下来)。

  GStack 的 README 里有一段 Garry 的自述,值得引用:

"gstack is my answer. I've been building products for twenty years, and right now I'm shipping more code per hour than ever. In the last 60 days: 600,000+ lines of production code (35% tests), 10,000-20,000 lines per day, part-time, while running YC full-time."

Garry Tan 维基百科页面——从 Palantir 到 Posterous 到 YC 的完整职业轨迹

Garry Tan 维基百科:https://en.wikipedia.org/wiki/Garry_Tan

  看到这些数字,你可能和很多 Hacker News 网友一样有疑问:"60 万行代码,有水分吗?" 答案是当然有——这些代码由 AI 生成、35% 是测试代码、多并发自动化产出。更准确的理解是"一个人管理了 60 万行代码的产出流程",而不是"一个人手写了 60 万行代码"。但这恰恰证明了 GStack 的设计意图:它不是帮你写代码更快,而是帮你组织一支 AI 团队写对的代码

保持批判:名人效应 ≠ 技术含金量。GStack 的价值不在于 Garry Tan 的头衔,而在于它的设计哲学是否经得起检验。接下来我们就拆解这些哲学。

Garry Tan 联合创办的 Initialized Capital——投资了 Coinbase、Instacart 等明星公司

Initialized Capital:https://initialized.com

2.2 GStack 三大设计哲学:角色即约束、把湖烧开、造之前先搜

  GStack 的代码量不大,真正值钱的是它背后的三个设计原则。理解这些原则,你不仅能更好地用 GStack,还能把同样的思路应用到任何 AI 协作场景中。

哲学一:角色即约束(Role as Constraint)

  核心洞察:给 AI 明确的角色边界,产出质量显著优于让一个"通才 AI"什么都做。

  这听起来违反直觉——AI 不是越自由越强大吗?但 Garry Tan 从管理上千家创业公司的经验中得到了相反的结论:在真实的工程团队中,规划不是审查,审查不是发布——CEO 不应该去写测试用例,QA 工程师不应该去做产品决策。不同阶段需要不同的认知模式,混在一起只会得到平庸的结果。

  GStack 把这个组织管理学原理直接搬进了 AI 交互:每个 SKILL.md 文件定义一个角色,明确规定这个角色能做什么、不能做什么、输出什么格式。比如 /review(代码审查)这个角色被约束为"只找 CI 通过但生产会炸的 bug"——它不会帮你重构代码风格,不会讨论架构方向,只做一件事并且做到极致。

GStack /office-hours 的 SKILL.md 源码——每个 Skill 用 Markdown 定义角色边界、约束条件和产出格式

GStack 源码:/office-hours/SKILL.md

  一个直观的类比:让一个通才律师同时做合同审查和诉讼辩护,不如让合同律师和诉讼律师分别做自己最擅长的事。AI 也是如此——让 Claude 在"/review 代码审查员"的约束下找 bug,比让它"帮我看看代码有没有问题"效果好得多。

哲学二:把湖烧开(Boil the Lake)

  核心洞察:有了 AI 辅助,完整实现的边际成本趋近于零——永远选择完整方案,拒绝走捷径。

  GStack 的 ETHOS 中有一段精辟的描述:

"A 'lake' is boilable — 100% test coverage for a module, full feature implementation, handling all edge cases, complete error paths. An 'ocean' is not — rewriting an entire system from scratch."

  翻译过来就是:"湖"是可以烧开的——一个模块的 100% 测试覆盖、完整功能实现、处理所有边界条件。"海洋"是烧不开的——从零重写整个系统。

  传统开发中,我们经常在 80 分方案和 100 分方案之间选前者,因为从 80 到 100 的额外工作量不值得。但 AI 辅助编码改变了这个经济学:写 80 行代码和 150 行代码的成本差距几乎可以忽略。既然如此,GStack 的原则是:当完整方案(Option A)和捷径方案(Option B)都摆在面前时,永远推荐 A。不完整只是延迟了工作,并没有节省工作。

哲学三:造之前先搜(Search Before Building)

  核心洞察:不要急着从第一性原理发明轮子——先理解"世界怎么想",再决定"我怎么想"。

  GStack 将知识分为三层,每层的使用策略不同:

层级名称含义使用策略
Layer 1久经考验的方案(Tried & True)经过大规模验证的成熟方案优先采用,极少情况下才质疑
Layer 2新兴流行方案(New & Popular)新出现但快速流行的做法审慎评估,搜索结果作为参考而非答案
Layer 3第一性原理(First Principles)针对具体问题的原创推理最有价值——当第一性原理推翻了常规认知时,命名为"Eureka Moment"

  这个框架的精妙之处在于它教 AI(也教人)正确的学习和决策顺序:先搞清楚既有的最佳实践是什么、为什么存在,然后再决定是否需要另辟蹊径。大多数时候,Layer 1 就够了;但偶尔,Layer 3 的洞察会推翻 Layer 1 的"常识"——这些时刻就是真正的创新。

三大哲学 vs 通才模式:效果对比

维度GStack 角色化模式直接用 Claude Code(通才模式)
产品思考/office-hours 用 6 个灵魂拷问挑战你的假设你说什么就做什么,不挑战
代码审查/review 专找 CI 过但生产会炸的 bug"帮我看看代码"——面面俱到但不深
测试覆盖/qa 打开真实浏览器逐个页面测试只写单元测试或直接跳过
安全审计/cso 按 OWASP Top 10 + STRIDE 模型审计"有安全问题吗?"——泛泛而谈
设计质量/design-review 80 项视觉审查清单"好看吗?"——主观评价

诚实说明局限性:GStack 的角色化模式也有代价——每个 Skill 调用都消耗大量 token,5 路并行单任务可消耗 50,000+ token。而且这套流程反映的是 Garry Tan 一个人的工作偏好,不一定适合所有团队。在 §3 中我们会详细讨论成本和适用场景。

GStack ARCHITECTURE.md——技术架构文档展示了 Daemon 模型和浏览器自动化的实现细节

GStack 架构文档:ARCHITECTURE.md

2.3 七步闭环工作流:Think → Plan → Build → Review → Test → Ship → Reflect

  三大哲学落地到实践中,就是 GStack 的七步冲刺工作流。每一步对应一个阶段,每个阶段有专属的 Skill 来执行。关键设计:每步的输出是下一步的输入——它们不是独立的工具,而是一条流水线。

GStack 七步冲刺工作流——Think → Plan → Build → Review → Test → Ship → Reflect 闭环循环

步骤阶段做什么对应 Skill输出
1Think发现真实用户痛点,挑战你的功能假设/office-hours经过灵魂拷问的设计文档
2Plan锁定产品方向和技术架构/plan-ceo-review /plan-eng-review /plan-design-review范围决策 + 架构图 + 测试矩阵
3BuildAI 基于设计文档编码实现Claude Code 原生能力可运行的代码
4Review找 CI 能过但生产会炸的 bug/review /design-review审查报告 + 自动修复
5Test用真实浏览器测试所有交互/qa /cso测试报告 + 安全审计
6Ship同步主分支、跑测试、开 PR/ship /land-and-deployGitHub PR + 部署
7Reflect回顾本周产出、测试趋势、改进点/retro复盘报告

  这个流程的威力在于链式传递。举个例子:/office-hours 的产出(设计文档)会被 /plan-eng-review 读取来做架构评审;架构文档又会指导 Build 阶段的代码生成;/review 知道架构约束所以能发现更深层的 bug;/qa 知道设计要求所以能测试正确的场景。每个角色都不是从零开始——它站在前一个角色的肩膀上。

  GStack 的 README 中有一个真实示例:

起始请求:"Build a daily briefing app for my calendar"

/office-hours 的重构:"You're describing a personal chief-of-staff AI"——提炼出 5 个未说明的能力需求,挑战了 4 个前提假设,提出了 3 种实现方案。

全流程:设计文档 → CEO 审视 → 工程架构 → 2,400 行代码(11 个文件,~8 分钟) → /review 自动修复 2 个问题,标记 1 个竞态条件 → /qa 真实浏览器发现并修复 bug → /ship 提交 PR(附带 +9 个新测试)。

八个命令,从概念到 PR。

重要提醒:不是每个项目都需要走完全部 7 步。如果你只是修一个小 bug,直接 Build → Review → Ship 就够了。如果是快速验证一个想法,Think → Build 也可以。七步是完整流程,灵活取舍是实践智慧。GStack 的 /autoplan 命令甚至内置了一键 CEO+设计+工程评审的流水线,帮你省去逐步手动调用。

  在 §4 安装 GStack 之后,我们会用 ShipLog 项目亲手走一遍完整的七步冲刺。到时候你会真切感受到:这不是 7 个独立工具,而是一支有默契的团队——每个角色知道自己该做什么,也知道前一个同事做了什么。


§3 GStack 深度拆解:Skill 规范、生态与成本

3.1 SKILL.md:GStack 的基本构成单元

  在深入 28 个具体 Skill 之前,我们先理解一个核心概念:SKILL.md 就是 GStack 的 DNA——一个用 Markdown 写成的角色定义文件,规定了 AI 在特定角色下的边界、约束和产出标准。

  为什么这个概念重要?因为到 §7 我们会自己写一个 SKILL.md,把 GStack 的方法论迁移到你自己的场景中。现在先理解它的结构。

  每个 SKILL.md 通常包含以下几个部分:

组成部分作用举例(/office-hours)
角色身份定义"我是谁""你是一位 YC 合伙人级别的产品顾问"
约束条件定义"我不能做什么""不写代码、不设计 UI、只做产品思考"
产出格式定义"我输出什么""产出一份结构化的设计文档"
触发条件定义"什么时候叫我"当用户输入 /office-hours 时激活
ETHOS 引用遵循的设计哲学Search Before Building、Boil the Lake

  不需要会写 TypeScript——SKILL.md 的核心全是 Markdown 纯文本。GStack 中唯一涉及 TypeScript 的部分是浏览器自动化(/browse/qa 等),它们由 Bun 编译成二进制,你作为使用者不需要碰源码。

常见误区:很多人看到 GStack 仓库里有 TypeScript 文件就以为"这是一个 TS 项目"。实际上,GStack 的核心是 28 个 Markdown 文件——TypeScript 只服务于浏览器自动化这一个功能模块。正如 GStack 架构文档所说:"The browser is the hard part — everything else is Markdown."

GStack README 中的 Skill 列表——20 个核心冲刺 Skill + 8 个增强工具

3.2 GStack 28 Skill 全景速查表

  28 个 Skill 看起来很多,但别慌——它们按工作流阶段自然分组。下面这张速查表标注了每个 Skill 的推荐优先级,帮你快速找到"今天就该用"的那几个。

使用频率标注:⭐⭐⭐ 今天必用 | ⭐⭐ 值得一试 | ⭐ 进阶探索

规划阶段(Think & Plan)

Skill角色一句话说明推荐
/office-hoursYC 合伙人级产品顾问用 6 个灵魂拷问挑战你的产品想法,不写代码只做思考⭐⭐⭐
/plan-ceo-reviewCEO 产品方向审视四种范围模式(扩张/选择性扩张/维持/收缩),10 维度评估⭐⭐⭐
/plan-eng-review工程总监级架构锁定产出 ASCII 架构图 + 数据流 + 测试矩阵⭐⭐⭐
/plan-design-review设计维度审计0-10 分打分 + AI-slop 检测⭐⭐
/design-consultation完整设计系统生成从色板到组件库,含创意风险提案⭐⭐
/autoplan一键规划流水线自动串联 CEO → 设计 → 工程评审⭐⭐

开发与审查阶段(Build & Review)

Skill角色一句话说明推荐
/review偏执的高级工程师专找 CI 过但生产会炸的 bug,自动修复明显问题⭐⭐⭐
/investigate系统性排查工程师数据流追踪式 root cause 分析⭐⭐
/design-review设计师-程序员混合体80 项视觉审查 + 原子提交修复 + Before/After 截图⭐⭐⭐
/codexOpenAI Codex 独立审查用不同模型做对抗性代码审查

测试与安全阶段(Test & Verify)

Skill角色一句话说明推荐
/qaQA 工程师 + 真实浏览器打开 Chromium 逐页面测试,~100ms 响应,修 bug + 写回归测试⭐⭐⭐
/qa-onlyQA 只报告模式只发现问题不修改代码,适合审查阶段⭐⭐
/cso首席安全官OWASP Top 10 + STRIDE 威胁建模审计(含 17 条误报排除规则)⭐⭐⭐

发布与部署阶段(Ship & Deploy)

Skill角色一句话说明推荐
/ship发布工程师同步主分支 → 跑测试 → 开 PR⭐⭐⭐
/land-and-deploy部署工程师PR 合并 → 部署到生产 → 健康检查⭐⭐
/canary金丝雀监控部署后监控 Console 错误和性能退化
/benchmark性能基准测试Core Web Vitals + 资源大小基线对比
/document-release文档工程师自动更新文档以匹配已发布的代码变更⭐⭐

运营与回顾阶段(Reflect & Ops)

Skill角色一句话说明推荐
/retro团队回顾主持人周度复盘:每人产出明细 + 测试趋势 + 改进建议⭐⭐
/browse真实浏览器操控Playwright 驱动 Chromium,点击/截图/表单⭐⭐
/setup-browser-cookiesCookie 导入工具从 Chrome/Arc/Brave/Edge 导入 Cookie 做认证测试

增强工具(Power Tools)

Skill角色一句话说明推荐
/careful危险命令警卫拦截 rm -rfDROP TABLEforce-push⭐⭐
/freeze文件冻结锁锁定指定目录不允许编辑,聚焦调试⭐⭐
/guard组合防护/careful + /freeze 联合启用
/unfreeze解除冻结移除 freeze 边界
/setup-deploy部署配置向导一次性检测平台并配置部署命令
/gstack-upgrade自我更新GStack 自更新机制

注:本课的 §4-§6 会重点使用标注为 ⭐⭐⭐ 的 Skill,这 7 个命令覆盖了日常 80% 的使用场景。其余 Skill 可在熟悉核心流程后逐步探索。

官方完整文档:GStack Skills 文档

3.3 GStack vs 直接用 Claude Code:到底多了什么?

  如果你已经在用 Claude Code 并且效果还不错,一个自然的问题是:加上 GStack 到底能多给我什么?值得花时间配置吗?

  这个问题的答案取决于你的使用场景。下面是基于 GStack 官方文档和社区反馈的真实对比:

维度直接用 Claude Code加上 GStack差异来源
产品思考你说做什么就做什么/office-hours 用 6 个灵魂拷问挑战你的假设,经常重构你的产品定位角色约束:产品顾问不写代码,只做思考
架构决策根据对话上下文即兴决定/plan-eng-review 产出正式的架构图 + 测试矩阵 + 边界条件映射强制输出格式 + 完整性原则
代码审查"帮我看看代码"——广而不深/review 专门找"CI 能过但生产会炸"的 bug,自动修复明显问题角色约束:只做审查,不做其他
测试覆盖写单元测试或跳过/qa 打开真实 Chromium 浏览器,逐页面点击测试Bun 编译的浏览器自动化引擎
安全审计需要你主动问/cso 按 OWASP Top 10 + STRIDE 模型系统审计内置 17 条误报排除规则
设计质量"好看吗?"——主观评价/design-review 80 项视觉审查清单 + 原子提交修复标准化审查流程
发布流程手动 commit/push/PR/ship 自动同步主分支 → 跑测试 → 开 PR标准化发布纪律
加速倍数基础 AI 加速脚手架 ~100x、测试 ~50x、功能实现 ~30x、修 bug ~20xGStack CLAUDE.md 官方数据

推荐决策

你的场景建议
做个人小项目、快速原型直接用 Claude Code 就够了
做要上线的产品、需要代码质量用 GStack——审查和测试环节价值巨大
做客户项目、需要安全保障强烈推荐 GStack——/cso 的安全审计不可替代
团队协作、需要统一流程GStack 提供标准化流程,降低协作摩擦

诚实说明不足:GStack 不是万能的。它增加了流程步骤和 token 消耗(每个 Skill 调用都有成本),对纯新手有一定认知负担(28 个命令的学习曲线),而且目前对 macOS 支持最好(Cookie 功能仅限 macOS Keychain)。我们在 §3.6 会详细讨论这些局限。

3.4 GStack 生态一瞥:跨平台支持与社区扩展

  GStack 不是一个孤岛——它正在从 Claude Code 专属工具进化为跨平台的 AI 协作标准。

  2026 年 3 月下旬,Garry Tan 宣布 GStack 已支持多个 AI 编程平台:

平台支持方式状态
Claude Code原生支持(GStack 原始平台)✅ 完整支持
OpenAI CodexSKILL.md 标准兼容 + /codex 对抗审查✅ 已支持
Google Gemini CLI安装脚本自动检测 Agent 类型✅ 已支持
Cursor生成 .cursorrules + Composer 模式适配✅ 已支持

  社区也在快速扩展。比如 GStack++ 是一个面向 C++ 开发的适配器,整合了 CMake、clang-tidy、sanitizer 等 C++ 工具链。还有 gstack-auto 等自动化工具在涌现。

注意:社区扩展的质量参差不齐,建议优先使用 Garry Tan 官方仓库的 Skill。本课所有实操都基于官方版本。

3.5 GStack 与 Harness Engineering:三层约束的具体实现

  在 §1.1 中我们介绍了 Agent Harness 的概念——"模型是大宗商品,Harness 才是护城河"。现在让我们回到技术细节,看看 GStack 具体是如何实现三层约束的:

FENCE2

约束层实现方式效果
角色约束每个 SKILL.md 定义"我是谁""我能做什么""我不能做什么"/review 只找 bug 不重构,/cso 只做安全不谈功能
流程约束Think → Plan → Build → Review → Test → Ship → Reflect每步的输出是下一步的输入,信息逐步累积
完整性约束ETHOS.md 中的"Boil the Lake"原则100% 覆盖而非 80%,完整实现而非走捷径

  三层约束叠加的效果远超单层。这就是为什么 GStack 的产出质量显著优于"直接让 Claude Code 干活"——不是因为模型不同,而是因为约束更精确、流程更完整、标准更高

迁移价值:即使你不用 GStack 本身,理解了"给 AI 设计约束环境比追求更大模型更有效"这个原则,就能在任何 AI 工具上应用同样的思路。这就是 §7 我们要自己写 SKILL.md 的底层逻辑。

3.6 真实成本与局限:GStack 的另一面

  在正式动手之前,我们有义务把 GStack 的另一面也讲清楚。好的课程不回避缺点——帮你建立准确预期比盲目乐观更有价值。

Token 成本:GStack 不免费

  GStack 本身是 MIT 开源、完全免费的。但它运行在 Claude Code 上,而 Claude Code 不免费:

方案月费适用场景建议
Pro$20/月轻度使用、学习体验本课可用,但可能触及限额
Max 5x$100/月日常开发、中度使用推荐方案
Max 20x$200/月重度使用、多并发冲刺专业开发者/一人公司
API 按量~$6/天均灵活控制成本需要自行管理 token 预算

Anthropic Claude 定价页面——Pro $20 / Max $100-200 / API 按量

Anthropic 定价页:https://www.anthropic.com/pricing

  Garry Tan 用 5 路并行(Conductor 模式)时,单个任务可以消耗 50,000+ token。对于我们今天的课程,单线程冲刺一个 ShipLog 项目,Pro 方案通常够用,但如果触及限额,Max 方案体验会更流畅。

已知局限性

局限说明影响程度
macOS 偏向Cookie 解密仅支持 macOS Keychain,Windows/Linux 无法做认证测试中——核心功能不受影响
代码数字有水分"60 万行代码"包含 AI 生成 + 35% 测试 + 多并发产出低——不影响使用,只是不要误解宣传
不适合纯新手28 个命令有学习曲线,不熟悉命令行的用户会困惑中——本课会手把手带你入门
反映一个人的偏好GStack 是 Garry Tan 的个人工作流,不一定适合所有团队低——可以自定义 SKILL.md
无 A/B 测试数据官方未发布 GStack vs 裸 Claude Code 的对照实验低——社区反馈积极但缺乏严格实验
争议声音"不就是一堆 Markdown 吗?"——质疑 GStack 的技术含量低——本课通过实操来回答这个质疑

我们的态度:GStack 是目前 Claude Code 生态中最成熟、最系统化的角色协作方案。它不完美,但它的设计哲学经得起检验——接下来我们用实际效果来说话。

  好了,背景知识讲到这里。接下来,动手。


§4 安装 GStack 与第一次接触

4.1 实操:30 秒安装 GStack

  GStack 的安装过程只有三步:确认前置依赖、克隆仓库、运行安装脚本。整个过程不到 30 秒——这也体现了 GStack"技术含量低、方法论含量高"的设计理念。

环境前置确认

  安装 GStack 之前,请确认以下三个依赖都已就绪:

依赖最低版本检查命令安装方式(如未安装)
Claude Code任意版本claude --version官方安装指南
Git任意版本git --versionmacOS 自带,或 xcode-select --install
Bunv1.0+bun --versioncurl -fsSL https://bun.sh/install | bash

注:如果你还没有安装 Bun,运行上面的安装命令后需要执行 exec /bin/zsh(或重开终端)使 PATH 生效。

  在终端中运行以下命令确认版本:

FENCE3

前置检查——Git 2.50.1、Bun 1.3.11、Claude Code 2.1.84 三个依赖确认就绪

  三个依赖都显示了版本号,说明环境就绪。接下来正式安装 GStack。

Step 1:克隆 GStack 仓库

FENCE4

  这条命令会把 GStack 仓库克隆到 ~/.claude/skills/gstack/ 目录——这是 Claude Code 读取 Skill 的标准位置。

Step 2:运行安装脚本

FENCE5

  ./setup 会完成以下工作:

  • 安装依赖(bun install
  • 从模板生成所有 SKILL.md 文件
  • 编译浏览器自动化二进制(browse/dist/browse)
  • 链接所有 28 个 Skill

  安装成功后,你会看到最后一行输出:gstack ready (claude).——这表示 GStack 已经就绪,所有 Skill 已经可以在 Claude Code 中使用。

Step 3:验证安装

FENCE6

安装验证——ls 显示 GStack 目录包含 53 个文件/目录(28 个 Skill + 配置文件 + 构建产物),Bun 1.3.11 确认就绪

  你应该能看到 office-hours/review/qa/ship/ 等目录——每个目录就是一个 Skill。

安装出错了? 最常见的问题是 Bun 版本过低或网络超时。解决方法:(1) 确认 bun --version ≥ 1.0;(2) 如果网络不稳定,尝试设置代理后重新 clone;(3) 如果 ./setup 失败,进入目录后手动执行 bun install && bun run build

4.2 实操:CLAUDE.md 配置与项目初始化

  GStack 安装好了,但 Claude Code 还不知道该怎么用它。我们需要在项目目录中创建一个 CLAUDE.md 文件,告诉 Claude Code:"嘿,我有 GStack,请用这些 Skill 来工作。"

Step 1:创建 ShipLog 项目

FENCE7

Step 2:创建 CLAUDE.md 配置

  在项目根目录创建 CLAUDE.md,内容如下:

FENCE8

ShipLog 项目的 CLAUDE.md 配置——包含项目信息和 GStack Skill 列表声明

重要提醒## gstack 这一节不要改动——它是 GStack 推荐的标准配置,告诉 Claude Code 使用 GStack 的浏览器(而不是 MCP 工具)并列出所有可用的 Skill。你可以在上面自由添加项目信息。

image-20260326190543372

Step 3:在项目目录中启动 Claude Code

FENCE9

  启动后,Claude Code 会自动读取当前目录的 CLAUDE.md,识别 GStack 的 Skill 配置。你可以在对话中输入 / 来查看可用的命令列表——如果 GStack 安装正确,你应该能看到 /office-hours/review/qa 等命令出现在提示列表中。

注:如果命令列表中没有出现 GStack 的 Skill,请确认 ~/.claude/skills/gstack/ 目录存在并且包含 SKILL.md 文件。如果目录为空,回到 Step 2 重新运行 ./setup

在 ShipLog 项目目录下启动 Claude Code——终端显示 Opus 4.6 模型就绪,项目目录已正确识别

4.3 初体验:用 /office-hours 拷问 ShipLog 的产品想法

  环境就绪,Skill 就位。是时候体验 GStack 最有话题度的功能了——/office-hours

  还记得我们在 §3 讲的"角色即约束"吗?/office-hours 是这个理念最直观的证明:它不是一个"帮你写代码"的工具,而是一个会挑战你想法的 YC 合伙人。你带着一个产品创意进去,经历一系列灵魂拷问——你的需求是真的吗?现有方案真的不行吗?你的目标用户到底是谁?——最后带出一份被严格审视过的设计文档。

  我们用 ShipLog 来走一遍完整的流程。

Step 1:启动 /office-hours

  在 Claude Code 对话框中输入 /office-hours,按回车。

  第一件事你会注意到:它没有直接问"你要做什么"。而是先展示了 GStack 的核心哲学——Boil the Lake(烧开整个湖),并询问你要不要在浏览器中阅读 Garry Tan 的原文。

/office-hours 启动——首先展示 Boil the Lake 哲学,提供原文阅读链接,然后才进入正题

深入理解:为什么一个产品咨询工具要先讲哲学?因为 /office-hours 的 SKILL.md 中明确要求:在开始任何产品讨论之前,先对齐思维模式。这就是"角色即约束"——不是 AI 想聊哲学,而是 Skill 的约束要求它必须先建立认知框架。

  选择 "No thanks"(跳过阅读),/office-hours 开始提问——

Step 2:经历灵魂拷问

  接下来发生的事情,是这整堂课最值得细看的部分。我们完整展示这段对话,因为对话本身就是教学内容——你会看到一个被精心设计的 AI 角色如何通过结构化的追问,把一个模糊的想法变成一份严谨的产品设计。

第一问:你的目标是什么?

  /office-hours 读取了 CLAUDE.md 中的项目描述后,抛出第一个选择:你做 ShipLog 的目标是什么?创业?内部项目?黑客马拉松?还是学习?

目标确认——/office-hours 提供 5 个选项,我们选择 "Building a startup"

  我们选择"Building a startup"(创业)。这个选择不是随便的——它决定了后续所有问题的追问深度。如果你选"Hackathon / demo",灵魂拷问会温和得多;选了创业,/office-hours 就会用 YC 合伙人的标准来拷问你。

第二问:需求是真的吗?

  目标确认后,/office-hours 进入"Startup 模式",直接告诉你:这是一个全新项目,没有代码、没有用户、没有历史设计——所以需要回答三个关键问题:需求真实性(demand reality)、现状分析(status quo)、和极致具体性(desperate specificity)。

  第一个灵魂拷问来了:

Q1 — Demand Reality: What's the strongest evidence you have that someone actually wants ShipLog? Not 'is interested,' not 'thinks it's cool' — but would be genuinely upset if it disappeared tomorrow.

  注意措辞的精准:"not 'is interested'"——它在逼你区分"觉得不错"和"真正需要"。

需求验证——AI 要求你证明需求不只是"觉得有意思",而是真正的痛点

  我们回答:"It's my own pain"(这是我自己的痛点)。/office-hours 接受了这个回答,但立刻追问:你说"产品发布日志 & 用户反馈平台",这其实是三个产品捏在一起——到底哪个是核心痛点?

第三问:痛点的具体场景

Pain Point: Tell me the specific moment you felt this pain. What were you doing, what tool were you using (or not using), and what went wrong? I need a concrete scene, not a category.

  "I need a concrete scene, not a category"(我要具体场景,不要品类描述)——这句话点出了一个常见错误:很多创业者描述痛点时只会说"反馈收集很麻烦",而不是"上周二我发了新功能,想知道用户反应,但发现除了 Twitter DM 没有任何渠道,于是放弃了"。

痛点追问——不接受"品类式描述",要求具体的失败场景

  我们选择"Feedback pain"(反馈收集的痛苦)。

第四问:挑战你的假设

  到这里,/office-hours 做了一件出人意料的事——它开始反驳你

Feedback collection — now we're getting specific. But here's my pushback: Canny, Nolt, UserVoice, Productboard, Fider, Featurebase — there are dozens of user feedback tools. Some are free. Some are open source. This is one of the most crowded categories in SaaS Tooling.

  然后问:你试了这些工具,哪个环节让你放弃的?太贵?太复杂?还是受众不对?

假设挑战——AI 列举了 6 个竞品,质疑"这个赛道已经很拥挤了"

重要提醒:这是 /office-hours 最有价值的时刻。普通的 AI 对话会说"好的,那我们来做一个反馈工具吧"。但 /office-hours 的 SKILL.md 中有明确的指令:在用户提出方案时,必须列举现有替代品并挑战其差异化。这就是为什么它能帮你避免"做一个没人需要的东西"。

  我们回答"Too expensive"(现有方案太贵了)。/office-hours 继续追问:

第五问:重新定义你的产品

Let me challenge this: Canny has a free tier. Fider is open-source and self-hostable. Nolt starts at $25/month. If "too expensive" is the pain, someone could just use Canny's free tier or self-host Fider and your problem is solved.

Let me reframe what I think you might actually be building: A feedback tool that's right-sized for solo builders — simple, affordable, and doesn't assume you have a product team.

重新定义——AI 质疑"太贵"这个理由(有免费方案),帮你重新定义产品定位

  注意这个节奏:先挑战(Canny 有免费版,Fider 可以自托管——你说太贵站不住脚),再重构(也许你真正要做的不是"便宜的 Canny",而是"专为独立开发者设计的轻量反馈工具")。

  这个 Reframe 比我们自己的原始描述精准得多。我们选择"Yes, that's it"。

第六问:现状和红旗

  /office-hours 进入第二个核心拷问——Status Quo(现状分析):

Q2 — Status Quo: Right now, when you ship a feature and want to (a) log it and (b) hear what users think — what do you actually do?

现状分析——追问你目前到底用什么方式收集反馈

  我们回答"Nothing"(什么都没有)。/office-hours 的反应很直接:

I need to be direct: "nothing" is a red flag. If collecting feedback is painful enough to build a company around, it should be painful enough that you've at least cobbled together something.

红旗警告——AI 直言"什么都没做"是一个危险信号

  这段分析犀利而坦诚:如果你说这个痛点大到值得创业,但你自己连 Google Form 都没用过来凑合——那可能有两个原因:(1) 痛点没你说的那么痛;(2) 你还没有真实用户,反馈需求还没变得紧迫。

  它不是在打击你,而是在帮你看清风险。我们选择"Building ahead"——ShipLog 本身就是产品,我们在为未来的用户预建基础设施。

第七问:谁是你的目标用户?

  /office-hours 接受了我们的解释,但继续追问极致具体性:

Q3 — Desperate Specificity: Who is the ONE indie developer (besides yourself) who needs ShipLog most? Give me a real person if you can — someone you follow on Twitter/X... What would get them to pay $5-10/month?

  "Give me a real person"——它要的不是"独立开发者"这个品类,而是一个具体的人。

目标用户——要求描述一个具体的人,而不是一个市场品类

  我们选择"A type of builder",/office-hours 要求进一步具体化:不是"独立开发者"这个人口统计标签,而是一幅肖像画——多大规模?什么收入?在哪里出没?用什么工具?

用户画像——要求画出理想用户的完整肖像,不接受模糊的标签

  我们选择"Vibe coder / AI builder"(用 AI 工具快速构建产品的开发者)。

Step 3:从拷问到决策

  灵魂拷问阶段结束后,/office-hours 进入决策阶段。它不是直接给方案,而是先确认前提假设(Premises)——这些是整个产品方向成立的根基:

  1. Vibe coders will pay $9-19/mo for feedback + changelog tooling
  2. Existing alternatives don't serve AI-speed builders well enough
  3. The MVP should bundle feedback AND changelog in a single tool
  4. Distribution will be organic through indie dev communities

前提假设——4 个核心假设必须全部成立,产品方向才站得住

  每个假设旁边都标注了风险(比如"cheaper Canny is not a defensible moat"),你可以逐个确认或修正。我们同意了全部 4 条,进入方案选择环节。

  /office-hours 运用了三层知识框架(Layer 1/2/3),基于 Indie Hackers、Product Hunt、Twitter/X 的市场数据搜索,提出了三个方案:

方案描述工时完整度
A) Changelog-First自动变更日志 + 嵌入式反馈组件CC ~30 分钟7/10
B) Feedback-First Widget一行脚本嵌入反馈收集CC ~1 小时8/10
C) Full Platform(推荐)完整集成平台:仪表盘 + 反馈板 + 变更日志 + 路线图CC ~3 小时10/10

三个方案对比——从最轻量到最完整,/office-hours 推荐方案 C(AI 时代边际成本趋近于零)

  推荐理由很 GStack:"the marginal cost of completeness is near-zero with CC(Claude Code),and the full platform is what differentiates ShipLog from existing lightweight alternatives"——用 AI 构建的边际成本趋近于零,所以应该做完整的产品而不是最小可行产品。这正是 Boil the Lake 哲学的实战演绎。

  我们选择方案 C。/office-hours 随即生成了线框图(wireframe),展示三个核心页面的布局:

线框图生成——Dashboard、Changelog、Widget 三个页面的布局规划

Step 4:设计文档产出

  确认线框图方向正确后,/office-hours 开始撰写正式的设计文档。它不是一次写完就交稿——内部会进行两轮对抗审查(adversarial review),每一轮自动发现问题并修复。

  最终产出:

设计文档审批——经过 2 轮对抗审查,22 个问题被发现并修复,质量评分从 6/10 提升到 8/10

  关键数据:

  • 2 轮对抗审查(adversarial review)
  • 22 个问题被发现并修复
  • 质量评分从 6/10 → 8/10
  • 关键决策已锁定:方案 C(完整平台)、分阶段交付、Supabase Auth + PostgreSQL、Vercel 部署、Stripe 支付、Widget <15KB、定价 Free/$9/$19

  我们批准(Approve),设计文档写入 ~/.gstack/projects/shiplog/ 目录。

image-20260326191153549

image-20260326191212094

/office-hours 最后给出了下一步建议——就像真正的 YC 合伙人会在 Office Hours 结束时说的:

But first — the assignment: Find 5 indie developers who shipped something in the last 30 days. DM them. Ask: "How do you collect feedback from your users?" Two hours of your time. It's the highest-leverage thing you can do before writing any code.

完成——设计文档已保存,/office-hours 给出了下一步行动建议

深入理解:回看整个对话过程,/office-hours 做了哪些普通 AI 对话做不到的事?

  1. 有立场地反驳:不是顺着你说"好的,我来帮你做",而是质疑"Canny 有免费版,你为什么不用?"
  2. 结构化追问:每个问题都有明确的目的(验证需求、确认现状、锁定用户),不是随机聊天
  3. 自我审查:写完设计文档后自动进行两轮对抗审查,不是写完就算
  4. 角色一致性:从头到尾保持 YC 合伙人的视角——坦诚、犀利、关心你的成功

这一切都写在 /office-hours 的 SKILL.md 中。不是 AI 天生懂产品,是约束让 AI 表现得像懂产品的人

  十几分钟的对话,我们从一个模糊的想法("做个反馈工具")走到了一份严谨的设计文档——产品定位被重构、竞品被分析、用户画像被具体化、假设被验证、方案被选定、架构被规划。接下来,我们要把这份设计文档变成真正可以运行的代码。


§5 冲刺阶段一:从想法到 ShipLog Landing Page

  设计文档在手,但它还只是一份"纸上谈兵"。七步冲刺工作流的 Think 阶段(/office-hours)已经完成,现在进入 Plan → Build → Review → Test → Ship 的执行阶段。

  这一节是整堂课的核心——我们要用 GStack 的完整工作流,把 ShipLog 从一份设计文档变成一个可以运行的 Landing Page,并且完成代码审查、测试和发布。

  在开始之前,先看一眼最终结果——这是我们在接下来要做出来的东西:

ShipLog Landing Page 最终效果——Linear 级深色主题,7 个组件区域,从 Hero 到页脚的完整产品页面

  这不是 Figma 设计稿,也不是模板主题——这是 Claude Code 在 GStack 工作流驱动下,从一份设计文档出发,真实生成并通过代码审查的可运行页面。接下来我们一步步看这 40 分钟里发生了什么。

注:由于 AI 生成存在随机性,你跟做时的最终效果可能和这里展示的不完全一致——配色、文案措辞、布局细节可能有差异。但整体结构和质量水准是可复现的。

5.1 Plan:/plan-ceo-review 锁定产品方向

  在写第一行代码之前,GStack 建议先做两轮审视:CEO 审视(产品方向)和工程审视(技术架构)。这不是走形式——/plan-ceo-review 会以 CEO 的视角重新审视你的整个产品策略,寻找你可能忽略的盲点。

  在 Claude Code 中输入 /plan-ceo-review

前提假设挑战

  /plan-ceo-review 的第一步不是讨论功能,而是挑战你的前提假设。它逐条审视支撑你产品方向的核心假设,每个都配有推荐操作:

前提假设挑战——CEO 审视质疑"vibe coder"作为目标用户群的鸡生蛋问题

  第一个挑战就很尖锐:"Vibe coder 做事快但容易放弃项目,很多人的产品用户不到 100 人。一个反馈工具只有在你的用户真的在给反馈时才有价值。如果你的目标客户自己都没有足够多的用户,ShipLog 解决的是一个不存在的问题。"

  第二个挑战同样犀利:你的功能集(反馈板 + 变更日志 + 路线图)和 Canny、Featurebase 在结构上完全相同,唯一的差异是价格($9 vs $50)和设计(深色主题)——"价格不是护城河,总有人比你更便宜。'设计更好'是主观的且容易复制。"

护城河挑战——CEO 审视指出"功能层面没有差异化,价格不是护城河"

范围模式选择

  前提挑战结束后,/plan-ceo-review 进入范围决策。它提供四种模式:

模式适用场景
Scope Expansion从零开始的新产品,需要做大做全
Selective Expansion基线已确定,选择性扩展护城河特性
Hold Scope范围已对,专注严谨度
Scope Reduction过度设计,需要砍功能

范围模式——四种策略供你选择,推荐 Selective Expansion

  我们选择了 Scope Expansion 模式。/plan-ceo-review 随即展开了 10x 思考——如果把 ShipLog 放大 10 倍,它不是一个反馈工具,而是"独立开发者产品市场匹配度的操作系统"。然后它逐个提出 6 个扩展提案:

#提案努力级别核心价值
1Deploy-to-Notify(部署自动通知)M护城河候选——Canny 无法复制的深度 Git 集成
2AI Product Copilot(AI 产品助理)L从反馈收件箱升级为产品智能层
3Social Proof 增长飞轮S"Powered by ShipLog" 徽章——Canny 的 #1 获客渠道
4反馈 → GitHub Issue 一键转化S桥接到开发者已有的工作流
5每周脉搏邮件S"感受你产品的心跳"——留存机制
6Twitter 分享变更日志S病毒式分发——每条推文都是双重广告

扩展提案——Deploy-to-Notify 被标记为护城河候选

Outside Voice 独立审查

  /plan-ceo-review 最精彩的环节是 Outside Voice——它启动一个独立的 Claude 子 Agent,以"完全不同的视角"对整个产品计划进行对抗审查。两个 AI 的观点冲突被整理成 Cross-Model Tension 对照表:

Cross-Model Tension——CEO 审视和 Outside Voice 在 5 个维度上的观点对比

  Outside Voice 的质疑尤其犀利:

  • "$9/月的定价模型没有做过单位经济分析——100 个付费客户时,Supabase + Vercel + OpenAI 的成本可能把利润吃光"
  • "GitHub 自动变更日志对 vibe coder 不会有效——他们用 AI 工具快速迭代,commit message 质量很差"
  • "Deploy-to-Notify 只支持 Vercel,这不是护城河,是一个小众子集的小众子集的特性"

  这些质疑被转化为具体的 TODO 项(单位经济分析、投票去重机制、需求验证),写入项目的 TODOS.md

时间线决策

  /plan-ceo-review 还帮我们做了两个关键的技术选型决策:

  • 数据库:Supabase(一站式:PostgreSQL + Auth + Realtime)
  • Widget 构建方式:Monorepo(/packages/widget + 独立构建配置)

时间线决策——CEO 审视帮你在写代码之前锁定关键技术选型

CEO 审视小结

  /plan-ceo-review 完成后产出了三份文件:

文件内容
CEO Plan扩展范围决策 + 6 个提案评估 + 剪裁优先级
TODOS.md7 个待办(含 P0: 需求验证、P1: 单位经济分析)
Review DashboardCEO 审视通过,但 Eng Review 仍为必须

CEO 审视完成——Review Dashboard 显示 CEO CLEAR,但 Eng Review 是发布前的必须关卡

深入理解/plan-ceo-review 做了什么?它用 CEO 的视角帮你在写代码之前发现:(1) 产品前提可能不成立的地方;(2) 缺失的护城河;(3) 没想过的技术选型;(4) 一个独立的"第二意见"对整个计划的挑战。一个人做产品最大的风险不是代码写不好,而是方向错了还不知道。这 13 分钟的审视可能帮你省了几个月的弯路。

5.2 Plan:/plan-eng-review 锁定技术架构

  产品方向已经被 CEO 审视通过,但 Review Dashboard 显示 Eng Review 仍然是"必须关卡"——这意味着在写代码之前,还需要让工程总监审视技术架构。

  在 Claude Code 中输入 /plan-eng-review

架构图与目录结构

  /plan-eng-review 的第一个产出就值回票价——一份完整的 Monorepo 目录结构图

工程审视——产出完整的 Monorepo 目录结构、路由分组、API 分层和 Widget 构建管线

  关键架构决策一目了然:

  • App Router 路由分组(auth)/(强制动态渲染)、(dashboard)/(受保护路由)、(public)/(ISR 缓存)
  • Widget 独立构建/packages/widget/ 使用 esbuild 打包为 <15KB 的 IIFE 文件
  • API 分层/api/widget/(公开接口,限流)、/api/webhooks/(Stripe + Vercel 回调)、/api/github/(OAuth)

  /plan-eng-review 还自动解决了两个关键架构问题:

  • Widget 认证:采用 Domain Allowlist 方案(项目拥有者注册允许的域名,Widget API 检查 Origin 头)——Intercom、Crisp 等同类产品的行业标准
  • 样式隔离:采用 Shadow DOM(现代 Widget SDK 的标准方案,2KB 额外体积,在 15KB 预算内)

测试矩阵与覆盖度

  /plan-eng-review 产出的第二个关键文件是测试矩阵——它列出了所有代码路径和用户流程,标注了测试覆盖状态:

测试矩阵——35 个代码路径被识别,0% 覆盖率(绿地项目),优先级标注

  测试策略建议:Vitest(单元测试)+ Playwright(E2E 测试),优先覆盖公开 API 路由(安全攻击面)和关键用户流程(注册 → 创建项目 → 安装 Widget → 首条反馈)。

Outside Voice 发现真实 Bug

  和 CEO 审视一样,/plan-eng-review 也启动了 Outside Voice 独立审查。这一次,它发现了一个真实的架构 Bug

Widget 运行在你客户的域名上(如 vibekit.dev),反馈板运行在 shiplog.dev。localStorage 是按域名隔离的。同一个用户通过 Widget 投票和在反馈板上投票,会拥有两个不同的匿名身份——投票数据会不一致。

Cross-Model Tension——Outside Voice 发现了 localStorage 跨域身份不一致的架构 Bug

  这个 Bug 如果在代码写完后才发现,修复成本远高于现在。解决方案:MVP 阶段反馈只通过 Widget 提交,公共反馈板为只读——彻底回避了跨域身份问题。

工程审视小结

  两轮审视全部通过,Review Dashboard 显示 CLEARED — Ready to implement

工程审视完成——CEO + Eng 双 CLEAR,所有关键决策已锁定,可以开始写代码

  关键技术决策清单:

决策选择
数据层Supabase(DB + Auth + Realtime)
前端Next.js App Router + Tailwind CSS
WidgetShadow DOM + esbuild + /v1/widget.js
支付Stripe Checkout + Webhook
部署Vercel
测试Vitest + Playwright(风险优先覆盖)
MVP 范围Widget-only 反馈,反馈板只读

实用建议/plan-ceo-review/plan-eng-review 加在一起用了大约 25 分钟。换来的是:8 个关键技术选型被锁定、1 个真实架构 Bug 被提前发现、一份完整的 TODOS.md、一份测试矩阵。这 25 分钟的 Plan 阶段,可能帮你节省了 Build 阶段好几个小时的返工。

5.3 Build → Review → Ship:Landing Page 完整冲刺

  Plan 阶段的两份审视报告已经锁定了所有关键决策。接下来的故事分三幕:Build(写代码)→ Review(审查)→ Ship(发布)。在传统团队中,这三个环节至少涉及三个不同角色——开发者、Code Reviewer、发布工程师。而我们一个人,用 GStack 的三个 Skill,在一次冲刺中完成全部。

第一幕:Build — 8 分 28 秒构建完整 Landing Page

  直接在 Claude Code 中告诉它:"Build the ShipLog landing page based on the design doc and eng review."

  Claude Code 读取了 /plan-eng-review 产出的架构方案,从零开始搭建项目:

  1. 项目初始化:手动创建 package.json,安装 Next.js 15 + React 19 + Tailwind CSS
  2. 设计系统:在 globals.css 中定义 CSS 自定义属性——#0a0a0b 背景色、#6366f1 主题色(indigo)、分层边框色,对标 Linear 的视觉语言
  3. 组件编写:11 个文件,7 个独立组件,从导航栏到页脚逐一生成

  8 分 28 秒后,构建完成。npm run build 零报错,首次加载仅 102KB JavaScript:

Build 完成——11 个文件、7 个组件、102KB 首次加载,零错误零警告

  来看一下结果——浏览器打开 http://localhost:3000

ShipLog Landing Page 完整效果——Linear 风格的深色主题,Hero 区域带渐变文字和代码嵌入演示

  页面从上到下包含七个区域:

区域组件效果
导航栏nav.tsx固定顶部,Logo + 功能/定价/文档链接 + 登录按钮
Herohero.tsx渐变标题 "Your product's pulse, in one line of code" + 代码嵌入片段
功能区features.tsx6 张卡片:反馈 Widget、Changelog、情感仪表盘、路线图、GitHub 集成、部署通知
Widget 演示widget-demo.tsx左侧功能要点 + 右侧模拟浏览器窗口中的 Widget 交互效果
定价pricing.tsx三档——Free $0 / Indie $9 / Pro $19,中间方案高亮
CTActa.tsx最终转化区域,带发光效果 + GitHub 链接
页脚footer.tsx四栏布局 + "Powered by ShipLog" 徽章

定价区域近景——三档方案对标 /office-hours 设计文档的定价策略,中间方案突出显示

  注意一个细节:页面的设计风格、功能列表、定价方案——都和我们在 /office-hours 中确定的设计文档完全一致。这不是巧合,是因为 Claude Code 在 Build 阶段读取了设计文档作为输入。Think 阶段的产出真的在驱动 Build 阶段的行为。

深入理解:如果你跳过 /office-hours/plan-*-review,直接告诉 Claude Code "帮我做一个反馈工具的 Landing Page",它也能做出来——但设计会是泛泛的、定价是猜的、功能列表是通用的。Plan 阶段的价值不是"约束 AI",而是"让 AI 和你在同一份经过深思熟虑的方案上工作"。

第二幕:Review — 偏执的高级工程师找到 8 个问题

  Landing Page 看起来不错,但"看起来不错"在真实产品中往往意味着"还有很多隐藏问题"。GStack 的 /review Skill 扮演的是一位偏执的高级工程师——它不看功能是否实现,而是找那些"CI 通过但生产会炸"的问题。

  在 Claude Code 中让它对所有源代码进行审查。/review 逐一读取了全部 11 个组件文件,产出了一份严格的审查报告:

8 个问题,其中 3 个标记为 CRITICAL:

代码审查报告——3 个严重问题 + 5 个信息级问题,全部修复后 Build Clean

  逐条来看这三个严重问题:

CRITICAL #1:移动端没有菜单

  nav.tsx 中的导航链接使用了 md:flex 隐藏——在桌面端正常显示,但在手机上,Features、Pricing、Docs 三个链接完全消失。用户只能看到 Logo 和 Get Started 按钮,无法导航到其他区域。

  这是一个典型的"桌面端开发者盲区"——你在大屏幕上测试时一切正常,但超过 50% 的流量来自移动设备。

CRITICAL #2:可访问性缺失

  6 个功能卡片中的 SVG 图标没有标注 aria-hidden="true"。屏幕阅读器会尝试朗读 SVG 的原始路径数据(一堆 M3.75 13.5 L14.25 2.25... 的数字),对视障用户来说是噪音。

CRITICAL #3:Widget 演示区误导用户

  widget-demo.tsx 中的表情按钮和"Send Feedback"按钮使用了 <button> 元素——看起来可以点击,但实际上什么都不会发生。屏幕阅读器用户(或者任何用户)都会期望按钮能工作。应该用非交互元素(<span>)替代,或者标注 aria-disabled

重要提醒:这三个问题中,#1 和 #3 完全可以通过人工测试发现,但大多数开发者不会在手机上测试 Landing Page。#2(可访问性)是绝大多数开发者根本不会想到的问题。这正是 /review 的价值——它用标准化的审查清单覆盖了你的认知盲区。

修复与验证

  Claude Code 逐一修复了所有问题:

#问题修复方案
1无移动端菜单添加汉堡按钮 + 下拉菜单,点击链接后自动关闭
2SVG 缺少 aria-hidden所有装饰性 SVG 添加 aria-hidden="true"
3演示按钮误导<button> 改为 <span> / <div>,添加 aria-hidden
4悬停无反馈Hero + Pricing 的 hover 边框改为带透明度的主题色
7平滑滚动无障碍scroll-behavior: smooth 包裹进 prefers-reduced-motion 媒体查询

  修复完成,重新构建:零错误,零警告。让我们看看修复后的效果——尤其是最明显的变化:移动端汉堡菜单。

  修复前,在手机屏幕宽度下导航链接直接消失了——用户无法访问 Features、Pricing 等页面。修复后,右上角出现了一个标准的汉堡菜单按钮(☰),点击展开完整导航:

修复后的移动端视图——右上角出现汉堡菜单按钮

点击汉堡菜单后——展开完整导航链接(Features、Pricing、Feedback、Docs、Sign in)

注:其余修复(SVG 的 aria-hidden、演示按钮改为非交互元素、hover 反馈优化、平滑滚动无障碍处理)在视觉上不明显,但对屏幕阅读器用户和可访问性合规来说至关重要。这类"看不见的修复"正是人工审查最容易遗漏的部分。

第三幕:Ship — 4 个可回溯的原子提交

  代码通过了审查,构建也通过了。最后一步:/ship

  /ship 扮演的是发布工程师——它不只是 git push,而是遵循一套完整的发布流程:

  1. 同步主分支:确保你的代码基于最新的 main
  2. 创建特性分支feat/landing-page——不在 main 上直接提交
  3. 原子化提交:把所有改动拆分为逻辑独立的提交,而不是一个巨大的"initial commit"
  4. 版本管理:创建 VERSION 文件(0.1.0.0)和 CHANGELOG.md
  5. 推送 + 创建 PR:最终目标是一个可以被 Review 的 Pull Request

Ship 产出——4 个可回溯的原子提交,从项目脚手架到 Landing Page 组件逐层叠加

  4 个提交从底到上讲述了一个清晰的故事:

FENCE10

  如果未来某天你需要回溯"Landing Page 的 Hero 区域什么时候加的",git log 能直接告诉你——因为每个提交都有明确的语义。

深入理解:注意 /ship 的提交信息遵循 Conventional Commits 规范:feat:(新功能)、chore:(工程配置)。这不是强迫症,而是让 git log 成为可阅读的项目历史。很多团队花大量时间写提交规范文档——GStack 的 /ship 直接帮你执行了。

冲刺小结:一个人的四重把关

  回顾这次完整冲刺,我们的代码经过了四层质量保障:

层级GStack Skill发现了什么
1. Plan/plan-ceo-review + /plan-eng-review产品方向偏差、架构 Bug(跨域身份不一致)
2. BuildClaude Code 直接编码11 个组件,102KB,零报错
3. Review/review(偏执的高级工程师)3 个严重问题(移动端、可访问性、交互误导)+ 5 个信息级问题
4. Ship/ship(发布工程师)原子化提交 + 版本管理 + CHANGELOG

  传统团队需要产品经理 + 架构师 + 前端开发 + Code Reviewer + 发布工程师五个角色才能完成这个流程。我们一个人,用了大约 40 分钟(Plan 25 分钟 + Build 8.5 分钟 + Review/Fix 3 分钟 + Ship 3 分钟),走完了全部环节。

  更重要的是——这不是"快速出活但质量堪忧"。Review 发现的移动端菜单缺失、可访问性问题,在很多正式产品中都会漏检。GStack 的工作流不是让你更快地写垃圾代码,而是让你一个人也能维持专业团队级别的质量把关

§6 冲刺阶段二:反馈墙功能与安全审计

  Landing Page 冲刺走完了完整的 Think → Plan → Build → Review → Ship 流程。现在我们进入第二阶段——用一套不同但同样重要的 GStack 工作流来构建反馈墙功能

  如果说阶段一是"从 0 到 1 的全流程体验",阶段二的重点则是深度审查:Build 出功能之后,用 /cso(首席安全官)做 OWASP + STRIDE 安全审计,同时亲历一个真实的 CSS 架构 bug 的发现与修复过程。这两个环节是 GStack 在"代码写完之后"的核心价值所在——大多数独立开发者写完功能就部署了,但生产环境的问题往往藏在这些"写完之后"的审查步骤里。

阶段二的 GStack 工作流

FENCE11

注:阶段二没有走 /office-hours 和 /plan 流程——因为反馈墙的产品定义和架构已经在阶段一的设计文档中确定了。实际开发中,不是每个功能都需要完整七步——判断哪些步骤可以跳过,本身就是一种实践智慧。

6.1 成果预览:类 Canny 的反馈墙

  先看最终效果——一个参考 Canny 设计的投票式反馈墙:

反馈墙完成效果——深色主题、卡片布局、分类筛选、投票排序、状态标签

  这个页面包含了一个完整反馈系统的核心交互元素:

功能实现对标
投票每张卡片左侧的向上箭头 + 计数,点击切换投票状态(indigo 高亮)Canny / ProductBoard
分类筛选顶部 Pill 按钮:All / Feature / Bug / UX,带数量统计Canny 的标签筛选
排序下拉菜单:Most Votes / Newest / Status通用 SaaS 模式
状态工作流Open → Planned → In Progress → Done,彩色圆点 + 文字标签Linear 的状态系统
提交反馈"New Feedback" 按钮 → 弹窗表单(标题 + 描述 + 分类)Canny 的提交流程

反馈墙下半部分——更多反馈卡片,展示不同状态和分类的视觉差异

  10 条模拟反馈数据覆盖了全部分类(Feature / Bug / UX)和状态(Open / Planned / In Progress / Done),让你一眼看清整个系统的运转逻辑。所有样式复用了 Landing Page 的 CSS 变量(--bg-primary: #0a0a0b--accent: #6366f1),视觉上完全一体。

6.2 Build:一条命令构建反馈墙

  阶段一的 Build 耗时 8 分 28 秒产出了 11 个文件。反馈墙的 Build 更加聚焦——一个组件文件搞定全部功能。

  我们给 Claude Code 的指令非常简洁:

FENCE12

  Claude Code 用了约 4 分钟,产出了一个 663 行的 React 组件/src/app/feedback/page.tsx),包含完整的交互逻辑:

Build 完成——反馈墙组件包含卡片布局、投票、筛选、排序、提交弹窗、状态工作流

  值得注意的几个实现细节:

投票状态管理——用 React useState 维护一个 Set 记录已投票的 ID,切换投票同时更新计数。没有后端 API,纯前端状态:

FENCE13

分类标签的颜色映射——Feature(indigo)/ Bug(red)/ UX(amber),与 Linear 的标签配色一致:

FENCE14

状态工作流的四阶段设计——灰 → 紫 → 黄 → 绿,每个状态带彩色圆点指示器,视觉上直觉清晰:

状态颜色含义
Open灰色 #5c5c72新提交,等待评估
Planned靛蓝 #6366f1已纳入计划
In Progress琥珀 #f59e0b正在开发
Done绿色 #34d399已完成

  同步更新了导航组件(nav.tsx),在桌面和移动端都添加了"Feedback"链接,并为移动端汉堡菜单添加了 useState 切换逻辑和 aria-expanded 无障碍属性。

6.3 /cso:首席安全官审计

  功能写完了,在大多数教程中这就是"完成"。但在 GStack 工作流中,写完代码只是中场——后半场是审查。

  /cso 是 GStack 最独特的 Skill 之一。它的角色设定是首席安全官(Chief Security Officer),执行一套覆盖 12 个阶段的系统性安全审计:

阶段审计内容方法论
0架构心智模型 + 技术栈识别先理解再审查
1攻击面映射端点/API/文件上传/集成
2秘密扫描Git 历史 + 环境变量
3供应链审计CVE 扫描 + 锁文件验证
4CI/CD 安全工作流注入 + 权限检查
5基础设施安全Docker/K8s/Terraform 配置
6Webhook 安全签名验证 + 重放防护
7LLM/AI 安全提示注入 + 数据泄露
8Skill 供应链本地 Skill 代码审计
9OWASP Top 10XSS / 注入 / SSRF / 硬编码密钥
10STRIDE 威胁建模Spoofing / Tampering / Repudiation / Information Disclosure / DoS / Elevation
11数据分类识别受限/机密数据处理

  更精妙的是它内置了 17 条误报排除规则——比如不会把 CSS 中的 color: red 标记为"硬编码密钥",不会把测试文件中的 mock token 标记为"真实凭证泄露"。这大大减少了安全审计工具常见的"狼来了"问题。

  我们在 ShipLog 项目上运行 /cso

/cso 安全审计报告——12 个阶段全部通过,0 Critical / 0 High / 0 Medium,静态原型攻击面极小

  审计结果是全部通过——这并不意外,因为 ShipLog 目前是一个纯静态前端原型:

  • 攻击面:只有 2 个公开端点(//feedback),0 个 API 接口
  • 秘密扫描:Git 历史干净,无泄露的密钥或 token
  • 供应链:3 个生产依赖,0 个 CVE,锁文件已追踪
  • OWASP Top 10:React 默认的 JSX 转义机制天然防 XSS,无注入点
  • STRIDE:纯静态内容,无用户数据处理,威胁模型极简

深入理解:你可能会觉得"全部通过"说明这次审计没什么价值。恰恰相反——/cso 的价值在于它告诉你当前的安全基线在哪里。当我们后续添加 Supabase 认证、API 路由、Stripe 支付时,再次运行 /cso 就能精确看到新增了哪些攻击面。安全审计的核心不是"一次性扫描",而是"持续基线对比"。

  CSO 报告末尾还贴心地列出了后续添加后端时需要重点审计的内容

FENCE15

6.4 真实 Bug 修复:Tailwind CSS v4 的暗色主题陷阱

  这一节不在我们的计划中——它是真实开发中发生的意外,但恰恰是整章课件中最有教学价值的片段之一。

  反馈墙 Build 完成后,我们打开浏览器检查效果,发现了一个刺眼的问题:页面背景是白色的

  这不应该发生——我们的 globals.css 明明定义了 body { background: var(--bg-primary); },而 --bg-primary#0a0a0b(近乎纯黑)。Landing Page 之前也是正常的深色主题。为什么反馈墙是白的?

  排查过程是一个经典的"顺着浏览器开发者工具的线索追 bug"的过程:

  1. 打开 DevTools 检查 body 样式 → 发现 background-color: white 来自 Tailwind 的 Preflight 样式
  2. 检查 CSS 层叠顺序 → 发现 Preflight 在 @layer base 内,而我们的自定义样式在层外
  3. 理解 CSS Cascade Layers 规则层外样式 > 层内样式,但 Tailwind v4 的 @import "tailwindcss" 同时生成了 Preflight base layer

  问题的根源是 Tailwind CSS v4 的架构变化

FENCE16

  在 v4 中,Preflight(包含 body { background-color: white })被放入了 @layer base。如果你的自定义样式不在同一个 layer 里,CSS 层叠规则会让"层外"的样式覆盖"层内"——但如果你的自定义样式声明在 Preflight 之后、同样在 @layer base 内,就能正确覆盖。

  修复方案只有一行:把所有自定义样式包裹在 @layer base

Tailwind v4 暗色主题修复——将自定义 CSS 变量包裹在 @layer base 内,解决 Preflight 覆盖问题

FENCE17

重要提醒:这不是一个"小众问题"。任何使用 Tailwind CSS v4 + 暗色主题的项目都可能踩到这个坑。如果你在自己的项目中遇到"明明设置了暗色背景但页面是白的",大概率就是 Preflight 在 @layer base 中覆盖了你的样式。修复方法:确保自定义样式也在 @layer base 内。

  修复后重启 dev server(rm -rf .next && npm run dev),反馈墙和 Landing Page 都正确显示了深色主题。

6.5 阶段二小结:审查的价值

  回顾一下阶段二的完整流程:

步骤做了什么耗时发现
Build构建 663 行反馈墙组件~4 分钟0 问题
/cso12 阶段安全审计~3 分钟0 Critical / 0 High / 建立安全基线
Debug修复 Tailwind v4 暗色主题 bug~15 分钟CSS Cascade Layers 架构级问题

  阶段二最大的教学收获不是"又写了一个页面",而是两个洞察:

洞察一:安全审计是持续的,不是一次性的。 /cso 在静态原型阶段告诉你"攻击面为零",但它同时预警了"添加后端后需要审计什么"。好的安全实践不是"上线前做一次扫描",而是每次功能变更都重新评估——GStack 的 /cso 让这件事从"额外负担"变成了"一条命令"。

洞察二:真实 bug 比预设练习更有教学价值。 Tailwind v4 的 CSS Cascade Layers 问题是我们在实际开发中遇到的,不是事先设计的教学案例。它涉及 CSS 规范的底层机制、框架版本升级的 breaking change、以及"明明代码看起来对但效果不对"时如何系统性排查。这种经验不可能从文档中获得——只有实际做项目才会踩到。

  两个阶段合在一起,我们用 GStack 的工作流完成了:

FENCE18

  到这里,我们已经用 GStack 完成了两个完整的开发冲刺。你可能会想:这个工具很棒,但它只能写代码吧?下一节,我们用一个对比实验来回答这个问题——同时揭示 Harness 架构的真正价值。

§7 超越代码:用 GStack 写一篇公众号文章

  到目前为止,我们用 GStack 完成了两个冲刺——从 Landing Page 到反馈墙,体验了完整的 Think → Plan → Build → Review → Ship 流程。你可能会觉得:这个工具就是写代码用的。

  但 GStack 的核心不是代码生成——而是结构化思考流程/office-hours 的本质是需求分析,/plan-ceo-review 的本质是方案审查,/review 的本质是质量把关。这些能力并不局限于软件开发。

  为了验证这个假设,我们做一个真实的对比实验:用 GStack 写一篇介绍 GStack 的微信公众号文章。对照组是普通的 Claude Code(没有安装任何 Skill),实验组是安装了 GStack 的 Claude Code。同一个任务,同一个模型,唯一的区别是——有没有 Harness

7.1 实验设计

维度对照组 A(普通 Claude Code)实验组 B(GStack 工作流)
工具Claude Code(无 Skill)Claude Code + GStack
任务写一篇 GStack 介绍的公众号文章相同任务
提示词直接描述需求/office-hours 开始
底层模型Claude SonnetClaude Sonnet
约束约 3000 字,中文相同约束

  这个实验的意义不在于"哪篇文章更好"——那是一个主观判断。关键在于过程的差异:同一个 AI 模型,在有 Harness 和没有 Harness 的情况下,思考方式有什么不同?

7.2 对照组:普通 Claude Code 的直球输出

  对照组非常简单。打开一个没有安装任何 Skill 的 Claude Code 会话,直接告诉它:

FENCE19

  结果?47 秒,一篇完整的文章就出来了。

对照组 A:普通 Claude Code 的直球输出

  文章标题是《一个人 = 一支 20 人团队?YC CEO 开源的 Claude Code 配置 GStack 到底是什么》,8 个章节,覆盖了 GStack 的基本信息。从 Karpathy 的名言开场,介绍了 28 个角色、"Boil the Lake"哲学、跨平台支持,最后以安装命令收尾。

  说实话,这是一篇合格的百科全书式介绍。信息准确、结构清晰、语言流畅。如果你只需要一篇"能用"的文章,它完全达标。

  但它有几个明显的特征:

  • 没有读者分析——不知道写给谁看
  • 没有角度选择——默认采用"全面介绍"的万金油结构
  • 没有竞品调研——不知道市场上已有什么同类文章
  • 没有自我审查——写完即交稿,没有检查环节
  • 百科全书风格——在陈述知识,而不是在讲故事

  换句话说,普通 Claude Code 直接给出了一个"足够好"的结果,但它不会问你"这个结果是不是最好的"。

image-20260326200412055

7.3 实验组:GStack 的 6 分钟深度思考

  现在让我们看看 GStack 做了什么。在同一个 ShipLog 项目中,我们输入 /office-hours,然后告诉它我们想写一篇公众号文章。

第一步:上下文理解(Phase 1)

  GStack 首先读取了项目代码、设计文档、之前的会话历史,然后做出了一个关键判断:

/office-hours 上下文理解

  注意它的表述:"This is a Builder mode session — you're writing content, not building a startup." GStack 识别出了这次的任务性质——内容创作而非软件开发,并自动调整了后续流程。

  然后它抛出了第一个选择题:文章的角度。不是"你想写什么",而是**"什么角度能让中国开发者看完就想安装 GStack"**。它给出了四个选项:故事驱动型、哲学+教程型、全面概述型、自定义。

注:这就是 Harness 的价值——普通 Claude Code 直接开始写文章,GStack 先花时间确认方向。方向错了,文笔再好也白搭。

第二步:竞品景观分析(Phase 2.75)

  选定"故事驱动型"角度后,GStack 做了一件普通 Claude Code 绝不会做的事——主动搜索市场上已有的内容

竞品景观分析

  它用了两次 Web Search,然后产出了一个三层分析:

层级发现
Layer 1GStack 的英文报道已经很充分——TechCrunch、SitePoint、Medium、Product Hunt 都有覆盖
Layer 2中文内容几乎空白。中国开发者知道 Cursor 和 Claude Code,但对 GStack 的"结构化 Skill 工作流"基本不了解
Layer 3你的文章填补了一个真实的空白——第一篇详细的中文 GStack 实战记录

  然后是 4 条前提假设的质疑——不是让你做什么,而是问你"我们基于这些前提继续,你认同吗?"这是典型的咨询顾问式工作方法:先对齐前提,再讨论方案。

第三步:三种方案对比(Phase 4)

  方向和前提都确认后,GStack 生成了三种文章结构方案:

三种方案对比

方案核心思路工作量风险打分
A. 纯时间线叙事按 /office-hours → /ship 顺序走完S7/10
B. 倒金字塔先亮结果,再揭过程S9/10
C. 故事+侧边栏叙事主线+教学插件M8/10

  注意它不只是列方案——每个方案都有工作量估算(S/M/L)、风险评估、优缺点分析,最后给出带打分的推荐。这是一个完整的方案评估框架。

注:普通 Claude Code 只会给你一种结构。GStack 给你三种选择,并告诉你为什么推荐其中一种。这种"决策透明化"是高质量工作流的标志。

第四步:150 行设计文档 + 对抗审查(Phase 5)

  方案选定后,GStack 写了一份 150 行的设计文档——包含问题陈述、约束条件、8 个章节的详细大纲、3 个开放问题、成功标准、分发计划。

  然后,它做了一件让我真正惊讶的事:自动发起对抗审查

设计文档 + 对抗审查

  GStack 启动了一个子 Agent(消耗了 12.9K tokens,用时 39 秒),让它以批评者的视角审查设计文档。结果打了 7/10 分,找到了 7 个问题:

  1. 开头应该用"我做了什么"而非"市场缺什么"
  2. "魔鬼代言人"概念没有解释清楚
  3. 工程审查章节太技术化,应强调"它比我更像高级工程师"的叙事
  4. 构建章节缺乏节奏感
  5. 安装命令放正文里太长
  6. 开放问题表述不够精确
  7. 缺少具体的叙事指导

  7 个问题,当场全部修复。设计文档从初稿到终稿,经历了一次完整的自审循环。

第五步:交接与上下文感知(Phase 6)

  设计文档审核通过后,GStack 输出了一段耐人寻味的"交接词":

交接阶段

  "你的文章其实已经写完了 80%——你的对话历史就是源材料。" 这句话点出了 /office-hours 的深层设计意图:不是帮你写东西,而是帮你想清楚要写什么。想清楚了,写反而是最简单的部分。

  我接着测试了一个有趣的场景——输入 /plan-ceo-review,看 GStack 是否会机械地执行代码审查流程:

CEO 审查的上下文感知

  GStack 直接拒绝了:"/plan-ceo-review 是代码架构审查工具,它会让你走 11 个章节的错误映射、安全威胁模型和部署审查——这些对写文章没有意义。"

  这个拒绝本身就是一种能力。好的 Harness 不是机械执行每一条指令,而是理解指令的意图,在不适用时主动说"不"。

第六步:基于设计文档写文章

  最终,GStack 基于 150 行设计文档,用 1 分 46 秒写出了一篇 120 行、1902 个中文字符的文章:

文章完成

image-20260326200443332

7.4 对比分析:同一个模型,两种思考方式

  两篇文章都已完成。让我们从多个维度做对比:

过程对比

维度对照组 A(无 GStack)实验组 B(GStack)
总耗时47 秒7 分 54 秒(6:08 策划 + 1:46 写作)
规划阶段6 个阶段,5 轮交互问答
竞品调研2 次 Web Search,3 层景观分析
方案评估3 种方案 + 打分 + 推荐
设计文档150 行,含约束、大纲、成功标准
自我审查子 Agent 对抗审查,7 个问题修复
上下文感知识别任务类型,拒绝不适用的工具

产出对比

维度对照组 A实验组 B
标题一个人 = 一支 20 人团队?YC CEO 开源的...用 GStack,一个人就是一支工程团队:我如何在一个 Session 里...
文章风格百科全书式介绍第一人称叙事体验
开头策略引用他人名言(Karpathy)"昨天我做了一个实验"
核心卖点GStack 有什么功能我用 GStack 做成了什么
读者定位泛开发者中国独立开发者/vibe coders
独特见解Boil the Lake 哲学解读"GStack 的价值不是写代码更快,而是思考更严谨"
行动号召30 秒上手命令6 步工作流建议
情感共鸣"你准备好了吗?""我会更快地写出一个更差的产品"

深度对比

  最关键的差异不在表面,而在认知深度

对照组 A 在告诉读者"GStack 能做什么"——这是功能层面的信息传递。它列举了 28 个角色、Boil the Lake 哲学、跨平台支持,但读者读完只知道"这个工具很强",不知道"我为什么需要它"。

实验组 B 在告诉读者"GStack 如何改变了我的工作方式"——这是体验层面的价值传递。它描述了被 /office-hours 逼问时的不适感、CEO 审查的灵魂拷问、工程审查在写代码前发现 bug 的惊喜。读者不只看到功能,还看到了这些功能在真实场景中的触感

  用一句话总结两者的区别:

FENCE20

注:哪种更有说服力?试想你准备买一个工具——你会先看官方功能列表,还是先看一个真实用户的使用体验?答案不言自明。

7.5 回到 Harness:这个实验真正证明了什么

  让我们跳出"哪篇文章更好"这个问题,回到更本质的层面。

  这个实验的两组唯一区别是什么?不是模型(都是 Claude Sonnet),不是能力(同一个 AI),不是知识(同样的训练数据)。唯一的区别是——有没有 Harness

  GStack 的 /office-hours 本质上就是一套 Markdown 文件里定义的工作流。它没有给 Claude 增加任何新能力。它做的事情是:

  1. 强制分阶段:不让 AI 一步到位,而是先想、再问、再搜索、再方案评估、再写设计文档、再自审、最后才动笔
  2. 引入对抗:用子 Agent 审查主 Agent 的产出,制造内在的质疑-修复循环
  3. 外化决策:让用户在每个关键节点做选择(角度、受众、结构、方案),而不是 AI 全权代理
  4. 上下文约束:让 AI 在正确的范围内工作,不做不该做的事(比如拒绝用代码审查工具审查文章)

  这就是我们在 §1 中介绍的 Harness 架构的实际体现。回忆一下那个公式:

FENCE21

  对照组 A 的 Harness 质量约等于 0(没有任何结构化约束),所以输出是模型的"默认水平"——合格但平庸。实验组 B 的 Harness 质量很高(6 个阶段、5 轮交互、竞品调研、对抗审查),所以同一个模型产出了更有深度、更有针对性、更有说服力的结果。

  模型是大宗商品,Harness 才是护城河。 这句话在上一节还是理论判断,现在它有了一个真实的 A/B 实验支撑。

深入理解:这个实验还揭示了一个更深层的洞察——GStack 的 /office-hours 实际上是在模拟人类专家的工作方式。一个资深的内容策略师不会拿到需求就开始写文章,而是先做受众分析、竞品调研、角度选择、方案评估。GStack 用 Markdown 把这套专家流程编码成了 AI 可执行的指令。Skill 文件的本质,就是专家经验的可复制版本。

Gemini_Generated_Image_bzvw5dbzvw5dbzvw
  • 公开课课件领取
0
  • 更多付费课程

OpenClaw智能体应用实战课:https://ix9mq.xetslk.com/s/1D4Xck

84b388b0506bfcb38b24ad14b4bfc7b2

【OpenClaw强化班】大模型Agent智能体开发实战:https://ix9mq.xetslk.com/s/4wSiUf

f63eb16f447c2fc4c701263e163a11ae

Vibe Coding AI全栈开发实战:https://ix9mq.xetslk.com/s/4wSiUf

397c922192ca9054c9dcd01477cfbafe 1 0