345 lines
12 KiB
Plaintext
345 lines
12 KiB
Plaintext
# 一人公司案例:开发 5 个 APP 用到的 AI 技能
|
||
|
||
> 访谈对象:Josh Pigford(Baremetrics 前创始人,曾以 400 万美元卖掉该公司)
|
||
> 访谈者:Peter(Easonlee)
|
||
> 时长:31 分钟
|
||
|
||
---
|
||
|
||
## 核心摘要
|
||
|
||
Josh Pigford 在卖掉 Baremetrics 后,选择以一人公司模式同时开发 5 款 AI 产品。他通过一套结构化的 AI 开发流程,实现了"对抗性审查"和"持续学习"机制,让 AI 能够像团队一样协作,同时保持了极低的运营成本和极高的迭代速度。他的核心理念是:**快速发布真实可用的产品,而非用着陆页收集邮箱来验证需求**。
|
||
|
||
---
|
||
|
||
## 一、Josh 的 5 款产品一览
|
||
|
||
| 产品名称 | 功能描述 | 状态 |
|
||
|---------|---------|------|
|
||
| **Proxyuser** | 合成用户测试工具,用真实浏览器自动 QA 应用,生成屏幕录制帮助快速定位 bug | 刚发布 |
|
||
| **Rumored** | LLM 幻觉检测器,监控 AI 是否错误引用品牌信息(网站文案、博客内容、schema 代码等) | 周五刚发布 |
|
||
| **Reply Social** | 社交媒体统一回复管理工具,内置 Bot Block 功能,支持 Facebook、Reddit 等平台 | 早期版本已发布 |
|
||
| **Chops** | 开源 Mac 应用,用于管理和编辑 AI 技能文件 | 已开源 |
|
||
| **医疗信息管理工具** | 为母亲(晚期胰腺癌)开发的家庭沟通和文档管理工具,支持与医疗文档对话 | 上个月开发 |
|
||
|
||
---
|
||
|
||
## 二、三阶段 AI 开发流
|
||
|
||
Josh 将开发任务拆解为**研究(Research)→ 规划(Planning)→ 实施(Implementation)**三个独立阶段,每个阶段都有特定的指令集。这种结构化方法避免了 AI 一次性处理大规模任务时的混乱。
|
||
|
||
### 2.1 研究阶段(Research)
|
||
|
||
**输入**:简单的功能需求(如"为 Reply Social 添加 Bot Block 功能")
|
||
|
||
**输出**:一份研究文档,包含:
|
||
- 技术调研:API 调用方式、竞品分析
|
||
- 历史代码整合:从已废弃项目中提取可复用的代码
|
||
- 高层技术方案:系统如何交互、哪些部分需要忽略、哪些需要移植
|
||
|
||
**示例**(Bot Block 集成到 Reply Social):
|
||
- 整合之前的 Chrome 扩展代码
|
||
- 分析需要哪些 API 调用
|
||
- 列出 pros/cons,决定保留什么、忽略什么
|
||
|
||
### 2.2 规划阶段(Planning)
|
||
|
||
**输入**:研究文档
|
||
|
||
**输出**:实施文档(Implementation Document),包含:
|
||
- 将任务分解为多个**阶段(Phase)**
|
||
- 每个阶段是一个独立的 Pull Request(PR)
|
||
- 每个阶段是**用户可测试的**(user testable)
|
||
|
||
**关键原则**:
|
||
- 不要试图一次性完成所有工作,而是分成小的、可管理的 chunks
|
||
- 有时候实施文档会有 30+ 个阶段,因为 Josh 要求每个步骤都必须能亲自测试
|
||
- 每个阶段完成后会生成一个 progress 文件,记录:
|
||
- 该阶段完成的工作
|
||
- 做出的决策
|
||
- 学到的经验
|
||
|
||
### 2.3 实施阶段(Implementation)
|
||
|
||
**输入**:具体阶段名称(如"build phase one bot block")
|
||
|
||
**输出**:
|
||
- 在独立的工作树(Worktree)中编写代码
|
||
- 执行深度研究:竞品调研、官方文档查阅(可能使用 Context7)、UI 设计调研
|
||
- 自动运行测试(打开浏览器进行自测)
|
||
- 生成 progress 文件更新
|
||
|
||
**工作树(Worktree)的意义**:
|
||
- 每次打开新工作树时是**完全干净的上下文**,避免上下文腐化(context rot)
|
||
- 作为"存档点"(checkpoint),便于回滚
|
||
- 显著减少 AI 幻觉
|
||
- 每个阶段对应一个 shippable 的 PR
|
||
|
||
---
|
||
|
||
## 三、对抗性审查:多模型协作
|
||
|
||
### 3.1 为什么需要对抗性审查
|
||
|
||
Josh 用 Opus 做规划和初稿,但他很清楚:
|
||
> "每次启动产品都像是在问——如果没人在乎怎么办?"
|
||
|
||
即使是 25 年经验的老手,AI 也会有遗漏。对抗性审查就是模拟人类团队的代码评审机制。
|
||
|
||
### 3.2 具体流程
|
||
|
||
```
|
||
Opus(主要工作) → GPT-4.5(对抗性审查) → 合并 PR
|
||
```
|
||
|
||
1. **Opus** 负责:规划、第一版代码编写、整个流程的 bulk of everything
|
||
2. **GPT-4.5** 执行:审查工作树中的所有代码
|
||
3. **结果**:GPT-4.5 总会发现 3~5 个 Opus 遗漏的 bug
|
||
|
||
### 3.3 Conductor 中的配置
|
||
|
||
在 Conductor 中可以设置默认的 Review Model,Josh 发现 Opus + GPT-4.5 的组合对他最有效。
|
||
|
||
### 3.4 与人类代码评审的类比
|
||
|
||
> "在典型团队中,你做 Pull Request,然后有另一个开发者来审查,他们总会发现点什么——比如'这不是我这么做的方式,我来演示另一种方法'。AI 只是在扮演那个角色,而不是另一个人。"
|
||
|
||
---
|
||
|
||
## 四、学习技能:防止 AI 重复犯错
|
||
|
||
### 4.1 问题的根源
|
||
|
||
AI 在每个新工作树中没有任何历史记忆,即使之前已经踩过坑、调试过很多次,它还是会犯同样的错误。
|
||
|
||
### 4.2 解决方案:Learnings Skill
|
||
|
||
Josh 开发了一个**开源的 Learnings Skill**:
|
||
|
||
**输入**:
|
||
- 当前工作树的全部内容
|
||
- 所有会话记录
|
||
- 开发者反复说"不,这不行"的反馈
|
||
|
||
**输出**:
|
||
- 提炼出有用的经验教训
|
||
- 更新项目的 `CLAUDE.md` 文件
|
||
|
||
**CLAUDE.md 的作用**:
|
||
- 作为 AI 的长期记忆
|
||
- 记录项目的特殊上下文、偏好、约束
|
||
- 每次新会话时 AI 会参考这个文件
|
||
|
||
### 4.3 项目 CLAUDE.md 的内容示例
|
||
|
||
Josh 的 CLAUDE.md 包含:
|
||
- 项目名称和基本描述
|
||
- 技术栈信息(Rails + Inertia + Postgres,单体 repo 包含 web app 和 iOS app)
|
||
- 常用命令列表
|
||
- 测试偏好(使用 Agent Browser 打开应用进行测试)
|
||
- Conductor 特有变量(如 Conductor 端口)的使用说明
|
||
- 设计最佳实践
|
||
|
||
**注意**:CLAUDE.md 是 AI 自己生成的,Josh 只是告诉它"这是一个大致的模板框架,请为这个项目填充具体内容"。
|
||
|
||
---
|
||
|
||
## 五、"But Seriously" 技能:施压让 AI 承认错误
|
||
|
||
### 5.1 灵感来源
|
||
|
||
Josh 发现,当开发者对 AI 足够强硬时,AI 会更认真地重新审视自己的输出。
|
||
|
||
### 5.2 具体操作
|
||
|
||
在工作树完成构建后,运行一个名为 **"But Seriously"** 的技能:
|
||
|
||
**技能内容本质上是**:
|
||
> "你几乎肯定搞砸了一些东西,回去重新检查一遍。"
|
||
|
||
### 5.3 效果
|
||
|
||
- 每次运行都会发现 3~5 个额外的 bug
|
||
- 与 GPT-4.5 的对抗性审查是**独立的流程**,两者叠加效果更好
|
||
|
||
### 5.4 如何迭代技能
|
||
|
||
Josh 使用自己的 Mac 应用 **Chops**(开源)来管理技能文件。Chops 内置了 AI 迭代功能,可以:
|
||
- 打开 Chops
|
||
- 给 AI 一些指导(如"再刻薄一点")
|
||
- AI 会自动更新整个技能文件
|
||
|
||
### 5.5 Josh 的态度
|
||
|
||
> "我平时对人很好,但如果 AI 一直出问题,我就会到达一个临界点,然后开始在输入框里打全大写字母。"
|
||
|
||
---
|
||
|
||
## 六、甩掉 Landing Page:直接发布 MVP
|
||
|
||
### 6.1 Josh 的反传统观点
|
||
|
||
Josh 反对用静态页面收集邮箱来验证需求的传统做法:
|
||
|
||
> "先花几个月做东西再发布给别人用,我觉得这是非常糟糕的想法。"
|
||
|
||
他认为:
|
||
- 静态页面是"逃避发布的干扰项"
|
||
- AI 时代构建成本已大幅降低
|
||
- **应该在 24 小时甚至同一天内发布可运行的产品**
|
||
|
||
### 6.2 真实案例
|
||
|
||
- Rumored:周五发布
|
||
- Proxyuser:今天发布
|
||
- 医疗工具:一个月内完成
|
||
|
||
### 6.3 验证的唯一标准
|
||
|
||
> "只有真实用户的反馈和付费意愿,才能定义产品是否值得继续投入。"
|
||
|
||
---
|
||
|
||
## 七、工具栈详解
|
||
|
||
### 7.1 Conductor(主要开发环境)
|
||
|
||
Josh 选择 Conductor 而非 Cursor 或 Copilot 的原因:
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 模型切换 | 可以随时切换不同 AI 模型 |
|
||
| 工作树管理 | 自动处理每个工作树的 setup 命令 |
|
||
| 自动化设置 | 创建唯一端口、复制环境变量、设置进程 |
|
||
| 并行能力 | 可以同时运行 10 个工作树,在不同浏览器中分别打开 |
|
||
|
||
**Conductor 的 setup 命令自动执行的内容**:
|
||
- 为每个工作树分配唯一端口
|
||
- 复制正确的环境变量
|
||
- 设置不同的进程
|
||
|
||
### 7.2 多模型协同
|
||
|
||
| 模型 | 用途 |
|
||
|------|------|
|
||
| **Claude Opus** | 主要工作:规划、初稿、bulk of everything |
|
||
| **GPT-4.5** | 对抗性审查:发现 Opus 遗漏的 bug |
|
||
| **Context7**(可能) | 文档搜索,辅助实施阶段 |
|
||
|
||
### 7.3 Chops(技能管理)
|
||
|
||
- 开源 Mac 应用
|
||
- 用于管理 AI 技能文件(skills)
|
||
- 内置 AI 迭代功能,可以快速优化技能内容
|
||
|
||
---
|
||
|
||
## 八、设计的 AI 工作流
|
||
|
||
### 8.1 Logo 和品牌设计
|
||
|
||
- **工具**:Adobe Illustrator
|
||
- **流程**:Josh 亲自用钢笔工具、测试 100 种不同字体来设计
|
||
- **原因**:目前还没有找到好的 AI 替代方案
|
||
|
||
### 8.2 配色和字体选择
|
||
|
||
这部分可以用 AI 辅助:
|
||
- 测试不同字体(特别关注引号样式,因为 Rumored 的概念是"LLM 错误引用")
|
||
- 尝试不同配色方案(浅色/深色/黑白)
|
||
- 生成不同场景的预览图(头像、按钮等)
|
||
|
||
### 8.3 设计系统
|
||
|
||
设计完成后,将颜色、字体等信息传给 AI,确保后续开发保持一致性。
|
||
|
||
---
|
||
|
||
## 九、GitHub 集成:接收功能请求
|
||
|
||
Josh 的开源项目(如 Clear)在 GitHub 上有很多功能请求。
|
||
|
||
**工作流程**:
|
||
1. Conductor 集成 GitHub
|
||
2. 查看功能请求列表(如"给 Mermaid 图添加缩放功能")
|
||
3. 附加请求到对应项目
|
||
4. AI 自动:
|
||
- 拉取 GitHub 信息
|
||
- 进行网络搜索
|
||
- 分析竞品实现
|
||
- 生成实施计划
|
||
5. Josh 审核并批准
|
||
|
||
---
|
||
|
||
## 十、ADHD 与一人多产品的平衡
|
||
|
||
### 10.1 Josh 的自我认知
|
||
|
||
> "我就像教科书式的 ADHD患者,我的大脑本来就是在不同事物之间乒乓跳跃,已经持续了 25 年。"
|
||
|
||
### 10.2 正面影响
|
||
|
||
- 可以"喂养更多的 beast"
|
||
- 比以前更充实
|
||
- 能够同时追踪多个产品的进展
|
||
- 不会因为只做一个产品而感到无聊
|
||
|
||
### 10.3 负面影响
|
||
|
||
- 有些日子会因为大量上下文切换而非常疲惫
|
||
- 分散注意力风险
|
||
|
||
### 10.4 Josh 的选择
|
||
|
||
> "从商业成功的角度,专注肯定更好。但我发现自己受到限制,因为我总是需要学习新东西。"
|
||
|
||
他认为:
|
||
- 长期只做一个产品(7 年的 Baremetrics)让他精疲力竭
|
||
- 多产品模式虽然不是最优商业策略,但让他更快乐
|
||
|
||
---
|
||
|
||
## 十一、关键经验总结
|
||
|
||
### 开发流程
|
||
|
||
1. **研究阶段**:生成技术调研文档
|
||
2. **规划阶段**:拆分为可测试的小阶段(每个阶段一个 PR)
|
||
3. **实施阶段**:在独立工作树中执行,配合深度研究和自动测试
|
||
|
||
### 质量保障
|
||
|
||
4. **Opus 做初稿** → **GPT-4.5 对抗性审查** → **"But Seriously" 施压检查**
|
||
5. **每个阶段完成后运行 Learnings Skill**:更新 CLAUDE.md,防止重复犯错
|
||
|
||
### 心态和原则
|
||
|
||
6. **24 小时内发布真实产品**:不要用 landing page 逃避
|
||
7. **用真实用户反馈验证**:付费意愿是唯一标准
|
||
8. **工作树即存档点**:便于回滚,减少上下文腐化
|
||
|
||
---
|
||
|
||
## 十二、开源资源
|
||
|
||
| 项目 | 说明 |
|
||
|------|------|
|
||
| **Learnings Skill** | 自动分析错误、更新 CLAUDE.md |
|
||
| **"But Seriously" Skill** | 施压让 AI 重新检查 |
|
||
| **Chops** | Mac 应用,管理技能文件 |
|
||
| **各种 Build Skills** | 研究、规划、实施阶段的指令集 |
|
||
|
||
Josh 表示他的所有个人技能都已开源,可以在他的 GitHub 上找到。
|
||
|
||
---
|
||
|
||
## 十三、观众补充(来自评论区反馈)
|
||
|
||
> (如有有价值的补充会在这里列出)
|
||
|
||
---
|
||
|
||
**附:视频中的赞助商信息**
|
||
|
||
- **WhisperFlow**:语音转文字 AI 应用,比打字快很多,可以去除填充词、自动格式化句子,适用于 Mac/Windows/iPhone/Android,地址:whisperflow.co,使用码 Peter 可获得 6 个月免费 |