SpaceX AI工程师Grok Bot实战:20+智能体并行,月交付1000+ PR——多智能体工程实践深度解析

一、引言:一觉醒来,20个PR自己合进了主干

2026年8月,SpaceXAI的Grok Bot工程师Lauren Tan(@poteto)在团队工作坊分享了一张GitHub贡献曲线——五个月,超过3000个PR。她同时运行20多个AI智能体,个人月交付量突破1000个PR,团队月交付量直逼2000+。

“一觉醒来,20个PR已经躺在主干分支上了。而且翻了一遍,写得还不错。”

她自己也承认,这话听着像批量制造垃圾代码。但她紧接着补了一句:“我保证我不是。”

这位Lauren Tan不是普通人。她是前Cursor工程师,曾在Meta和Netflix任职,在Netflix担任过两年工程经理,现在负责SpaceXAI的Grok Bot工程团队。她的核心实践——pstack——已经开源在Cursor官方插件仓库中(GitHub: cursor/plugins/pstack),成为多智能体工程领域最受关注的工程实践之一。

来源:36氪《一觉醒来20个PR自己合进了主干》(2026-08-31);Lauren Tan Maven工作坊分享

二、信任曲线:从"盯着一个智能体"到"撒手20个智能体"

Lauren分享了一张她称之为"信任曲线"的图表。纵轴是信任度,横轴是同时运行的智能体数量,从1到成千上万。

信任度
  ^
  |   ____________________
  |  /                    \    ← 当前阶段 (10-20 agents)
  | /                      \
  |/                        \
  |                          \
  |                           \
  |                            \___________
  +-------------------------------------------> 同时运行的智能体数量
  1      5       10      20      50      100
  ↑                                       ↑
  五个月前                                Star Trek 级
  (盯着1个agent不敢眨眼)                   (尚未到达)

一年前,几乎没人用智能体写代码。模式是:你盯着屏幕,每一行输出都要看,一句一句地提示。无法并行,因为你不信任它。

信任崩塌的典型时刻:有一次她报了个bug,问智能体某个功能为什么不工作。智能体一口咬定是某个地方的问题。她翻开工具调用记录一看——它压根没读那段本该相关的代码。

“智能体在猜,而且它不知道自己在猜。”

Lauren在Netflix当过两年工程经理,她发现——管人的技巧和管智能体的技巧,重合度高得惊人。

三、核心实践一:给智能体造一双眼睛(Control Glass + Feature Map)

Lauren认为,最重要的技能不是提示词,而是验证

她对验证的定义是:让智能体真的能把代码跑起来——能抓CPU耗时记录,能抓内存快照,能自己打开iOS模拟器点一遍。用户在你的应用上怎么用,它就怎么走一遍,然后自己测,自己验。

没有这一层,瓶颈就是你自己。

传统的开发循环是:你让它改个东西→它写完→你打开本地构建发现不对→截图→复制控制台报错→粘回去→它慢慢理解→再改一版。你在这个循环里当"人肉传送带"。

所以Lauren进Cursor后写的第一批技能之一,叫control glass。这个技能教智能体自己去调Chrome DevTools协议,自己跑起应用,自己截图、点击、读控制台。

但光有control glass还不够——智能体能跑起来应用了,但它不知道这个应用是什么。于是配套的feature map出现了。

┌──────────────────────────────────────────────────┐
│                Feature Map 结构                    │
├──────────────────────────────────────────────────┤
│  Feature: 左侧栏卡顿                              │
│  ├── 入口: 主窗口左侧导航面板                     │
│  ├── 快捷键: Cmd+1                                │
│  ├── DOM 选择器: #sidebar-panel                   │
│  ├── 预期交互: 点击菜单项 → 加载内容 → 渲染      │
│  ├── 验证方式:                                    │
│  │   ├── 截图对比 (pixel diff)                    │
│  │   ├── 控制台日志检查 (error/warn filter)       │
│  │   └── 性能指标 (FPS < 55 即视为异常)           │
│  └── 关联文件:                                    │
│      ├── src/sidebar/SidebarPanel.tsx             │
│      ├── src/sidebar/hooks/useSidebar.ts          │
│      └── src/sidebar/styles/sidebar.css            │
└──────────────────────────────────────────────────┘

Feature map把每个功能从用户视角怎么进入、快捷键是什么、甚至选元素该用哪个属性都列好。效果立竿见影——Cursor内部有个Slack频道收用户反馈,质量普遍很差,很多人就丢一张截图配三个问号。有了feature map,智能体也能顺着查下去。

Benny:值夜班的自动化Bug修复智能体

Benny是Lauren开发的自动化智能体,也是Grok Bot的前身。它在Slack里专门接bug报告,跑到云端开一台自己的电脑,在里面运行Cursor,用同一套control glass技能操作应用,试着把问题复现出来。

有一次,它这样回话:在修复前的提交上复现出来了,修复后消失。附上一条云端运行记录的链接,你想翻就能翻。

它给的不是一句"应该已经修好了",而是一组能对照的证据。

关键设计:Lauren用了一套"盲测"机制来验证技能本身——她派出一堆子智能体跑评测,给它们的目录起一些看不出来的名字,不让它们知道自己正在被评估。再叫一个不同模型家族的智能体当裁判,交叉复核,防止自评偏袒。分数不满意就用/loop接着刷,一直刷到10分。

四、核心实践二:Dune架构——把每句代码评审都变成红灯

Lauren敢撒手,靠的不是模型变强,是让护栏变硬

Grok Bot的架构有个内部代号叫Dune。她的形容是——可以理解成给Electron应用的Next.js,专门为智能体书写而设计。

4.1 禁用useEffect

写过React的都知道useEffect是最大的坑之一。在Dune里,useEffect被禁用了——用了CI直接报红。

4.2 禁用代码注释

智能体写的注释99%都在描述一些跟代码无关的历史片段。它会写下"Lauren说永远不要这么干"——可她当时的意思只是这个PR很烂,你改一下那部分,根本不是什么全局规则。

所以,凡是智能体干不好的事,一律封杀。

4.3 进程隔离

Electron有渲染线程和主线程。agents window在这块分得不清楚,经常有代码被误拉进渲染线程。要跑60帧,每帧只有16毫秒预算,一旦混进重计算或者大量IO,画面立刻开始卡。

Dune的做法是直接分出electron mainelectron renderer两个目录,CI去检查依赖图,跨目录乱引用直接失败。

4.4 分层护城河模型

┌──────────────────────────────────────────────────────────────┐
│                    分层护城河模型                              │
├──────────────────────────────────────────────────────────────┤
│  第1层(最硬): 代码库架构本身                                │
│  ├── 目录结构强制分离 (electron main vs renderer)            │
│  ├── 唯一正确的写法 = 唯一可能的写法                         │
│  └── 智能体天然爱抄现成模式,把正确写法做成唯一写法          │
├──────────────────────────────────────────────────────────────┤
│  第2层(硬约束): CI / Lint / 编译器诊断                      │
│  ├── useEffect → CI报红                                      │
│  ├── 代码注释 → CI报红                                      │
│  ├── 跨目录引用 → 依赖图检查失败                            │
│  └── 构建变红 = 不可合并                                    │
├──────────────────────────────────────────────────────────────┤
│  第3层(软约束): Rules / Skills / 代码审查Bot                │
│  ├── 智能体会忘,会漏,不会稳定执行                          │
│  ├── 需要配合审计和定期检查                                  │
│  └── 仅靠这一层,代码库变垃圾只是时间问题                   │
└──────────────────────────────────────────────────────────────┘

Lauren的原话:

“如果你只有规则、机器人、技能和一份代码风格指南,你的代码库变成一堆垃圾只是时间问题。”

核心哲学:最短的路,就是最好的路。智能体解决问题时永远挑最省事的方式,那就把最省事的方式做成最正确的方式。

把Grok Bot重构到这套架构,用掉了600多个PR——还债的成分居多。

五、pstack插件系统:多智能体调度的工程化实现

pstack是Lauren开源的多智能体编排系统,发布在Cursor官方插件仓库中。它不仅仅是一个prompt集合,而是一个完整的工程化套件。

5.1 pstack架构概览

                    ┌─────────────────────┐
                    │    /poteto-mode      │  ← 入口路由
                    │   (主调度器)         │
                    └──────────┬──────────┘
                               │
              ┌────────────────┼────────────────┐
              ▼                ▼                ▼
       ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
       │  21条工程原则  │ │  22个任务Playbook│ │  23个工作流技能│
       │              │ │              │ │              │
       │• Laziness    │ │• Bug fix     │ │• /how 系统追踪│
       │• Prove It    │ │• Feature     │ │• /why 历史分析│
       │  Works       │ │• Refactoring │ │• /architect 设计│
       │• Boundary    │ │• Perf issue  │ │• /arena 竞争设计│
       │  Discipline  │ │• Orchestrate │ │• /swarm 并行覆盖│
       │• Guard Context│ │• Autopilot   │ │• /interrogate 审查│
       │  Window      │ │• Babysit     │ │• /recall 上下文恢复│
       └──────────────┘ └──────────────┘ └──────────────┘
                               │
                               ▼
                    ┌─────────────────────┐
                    │  多模型分发引擎       │
                    │                     │
                    │  Sol → 精确代码实现  │
                    │  Grok → 快速机械工作 │
                    │  Fable → 判断与文案  │
                    │  Opus → 审查面板     │
                    └─────────────────────┘

5.2 核心代码:多智能体调度器

以下是一个基于pstack思想的简化多智能体调度器,用Go语言实现:

package main

import (
	"context"
	"fmt"
	"log"
	"sync"
	"time"
)

// Agent 代表一个智能体实例
type Agent struct {
	ID       string
	Role     string
	Model    string
	Playbook string
	Status   string // idle, running, blocked, done, failed
	Goal     string
	Result   *AgentResult
}

// AgentResult 智能体执行结果
type AgentResult struct {
	PRs       []string
	Decisions []Decision
	Evidence  []Evidence
	Error     error
}

// Decision 决策记录
type Decision struct {
	Time     time.Time
	Phase    string
	Action   string
	Reason   string
	Evidence string
	Outcome  string
}

// Evidence 验证证据
type Evidence struct {
	Type    string // screenshot, trace, log, snapshot
	Content string
	Passed  bool
}

// Orchestrator 多智能体编排器
type Orchestrator struct {
	agents     map[string]*Agent
	playbooks  map[string]*Playbook
	mu         sync.RWMutex
	decisionLog []Decision
}

// Playbook 任务剧本
type Playbook struct {
	Name     string
	Steps    []Step
	Parallel bool
}

// Step 任务步骤
type Step struct {
	Order       int
	Description string
	AgentRole   string
	VerifyFunc  func(*Agent) bool
}

// NewOrchestrator 创建编排器
func NewOrchestrator() *Orchestrator {
	return &Orchestrator{
		agents:    make(map[string]*Agent),
		playbooks: make(map[string]*Playbook),
	}
}

// RegisterAgent 注册智能体
func (o *Orchestrator) RegisterAgent(a *Agent) {
	o.mu.Lock()
	defer o.mu.Unlock()
	o.agents[a.ID] = a
	log.Printf("[Orchestrator] Agent %s registered (role: %s, model: %s)", a.ID, a.Role, a.Model)
}

// RegisterPlaybook 注册任务剧本
func (o *Orchestrator) RegisterPlaybook(p *Playbook) {
	o.mu.Lock()
	defer o.mu.Unlock()
	o.playbooks[p.Name] = p
}

// Dispatch 将任务分配给指定智能体
func (o *Orchestrator) Dispatch(ctx context.Context, agentID string, goal string) error {
	o.mu.Lock()
	agent, ok := o.agents[agentID]
	if !ok {
		o.mu.Unlock()
		return fmt.Errorf("agent %s not found", agentID)
	}
	agent.Status = "running"
	agent.Goal = goal
	o.mu.Unlock()

	log.Printf("[Dispatch] Agent %s starting: %s", agentID, goal)

	// 模拟执行
	time.Sleep(2 * time.Second)

	o.mu.Lock()
	agent.Status = "done"
	agent.Result = &AgentResult{
		PRs: []string{fmt.Sprintf("PR-%s-%d", agentID, time.Now().Unix())},
		Decisions: []Decision{
			{Time: time.Now(), Phase: "implement", Action: "修改", Reason: "实现目标", Evidence: "CI通过", Outcome: "success"},
		},
	}
	o.decisionLog = append(o.decisionLog, agent.Result.Decisions...)
	o.mu.Unlock()

	return nil
}

// Swarm 并行派发多个智能体
func (o *Orchestrator) Swarm(ctx context.Context, agentIDs []string, goal string) map[string]*AgentResult {
	results := make(map[string]*AgentResult)
	var mu sync.Mutex
	var wg sync.WaitGroup

	for _, id := range agentIDs {
		wg.Add(1)
		go func(aid string) {
			defer wg.Done()
			err := o.Dispatch(ctx, aid, goal)
			mu.Lock()
			if err != nil {
				log.Printf("[Swarm] Agent %s failed: %v", aid, err)
			} else {
				o.mu.RLock()
				results[aid] = o.agents[aid].Result
				o.mu.RUnlock()
			}
			mu.Unlock()
		}(id)
	}
	wg.Wait()
	return results
}

// /loop 实现:循环执行直到完成条件满足
func (o *Orchestrator) LoopUntilDone(ctx context.Context, agentID string, goal string, 
	checkDone func(*Agent) bool, maxIterations int) error {
	
	for i := 0; i < maxIterations; i++ {
		log.Printf("[Loop] Iteration %d/%d for agent %s", i+1, maxIterations, agentID)
		
		err := o.Dispatch(ctx, agentID, goal)
		if err != nil {
			return err
		}

		o.mu.RLock()
		agent := o.agents[agentID]
		o.mu.RUnlock()

		if checkDone(agent) {
			log.Printf("[Loop] Goal achieved for agent %s after %d iterations", agentID, i+1)
			return nil
		}
		
		time.Sleep(1 * time.Second)
	}
	return fmt.Errorf("agent %s: max iterations reached without achieving goal", agentID)
}

func main() {
	orc := NewOrchestrator()

	// 注册5个专业Bot
	bots := []*Agent{
		{ID: "Baltata", Role: "iOS/Mobile", Model: "Grok-4.6"},
		{ID: "Shaoruru", Role: "Desktop/CI/CD", Model: "Grok-4.6"},
		{ID: "Hogan", Role: "Infra/用户问题", Model: "Grok-4.6"},
		{ID: "Craig", Role: "Android", Model: "Grok-4.6"},
		{ID: "Quill", Role: "Harness/测试框架", Model: "Grok-4.6"},
	}

	for _, bot := range bots {
		orc.RegisterAgent(bot)
	}

	// 注册Playbook
	orc.RegisterPlaybook(&Playbook{
		Name: "Bug fix",
		Steps: []Step{
			{Order: 1, Description: "复现bug", AgentRole: "investigation"},
			{Order: 2, Description: "定位根因", AgentRole: "investigation"},
			{Order: 3, Description: "实现修复", AgentRole: "implementation"},
			{Order: 4, Description: "验证修复", AgentRole: "verification"},
		},
	})

	// 并行派发 swarm
	ctx := context.Background()
	goal := "Fix all flaky tests and make CI green"
	agentIDs := []string{"Baltata", "Shaoruru", "Craig", "Quill"}
	
	results := orc.Swarm(ctx, agentIDs, goal)
	log.Printf("Swarm complete. Results: %+v", results)
}

5.3 核心命令解析

pstack的核心入口是/poteto-mode,它是一个路由调度器,不包含所有任务的完整指令,而是选择更小的技能片段并按正确顺序执行。

完整流程:

  1. /poteto-mode 读取用户请求
  2. 读取21条工程原则索引
  3. 匹配到对应的Playbook(Bug fix / Feature / Refactoring / Perf issue等)
  4. 调用专业子技能(/how/why/architect等)
  5. 按模型角色分派(Sol → 精确代码实现,Grok → 快速机械工作,Fable → 判断与文案)
  6. 验证结果 → 审查 → 提交

关键命令

命令功能使用场景
/poteto-mode主入口路由开始任何任务
/loop循环执行直到完成长时间运行的多迭代任务
/goal设定长期目标跨会话持续追踪
/swarm并行分片执行多个独立子任务
/arena竞争设计让多个模型独立设计并择优
/how追踪系统运行时行为理解代码库工作原理
/why查找历史证据理解设计决策背景
/interrogate多模型审查代码Review
/babysit监控PR直到可合并自动化PR管理

5.4 PR自动化工作流

┌──────────────────────────────────────────────────────┐
│               PR自动化流水线                           │
├──────────────────────────────────────────────────────┤
│                                                      │
│  Notion 30分钟自动检查PR                              │
│       │                                              │
│       ▼                                              │
│  Shell: 自动代码审查 (低风险PR自动合并)                │
│       │                                              │
│       ├── 低风险PR → 自动合并到主干                   │
│       │                                              │
│       └── 高风险PR → 标记需要人工审核                 │
│                                                      │
│  Grok Bot 夜间审计流程                                │
│       │                                              │
│       ├── 00:00 审计所有未合并PR                      │
│       ├── 01:00 检查CI状态和测试覆盖率                │
│       ├── 02:00 分析代码质量趋势                      │
│       ├── 03:00 生成审计报告                          │
│       └── 07:00 汇总报告到Slack                      │
│                                                      │
│  P0 紧急流程                                         │
│       │                                              │
│       ├── 检测到生产环境问题                          │
│       ├── 自动拉起修复Bot                             │
│       ├── 并行运行修复方案                            │
│       ├── 自动部署修复                               │
│       └── 通知值班工程师                              │
│                                                      │
└──────────────────────────────────────────────────────┘

六、五个专业Bot的设计哲学

Grok Bot团队设了5个专业Bot,每个Bot有独立记忆系统和限定上下文,专注单一领域:

Bot 架构设计
┌──────────────────────────────────────────────────────────────┐
│              Grok Bot 工程团队架构                            │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──┴───────┐
│  │  Baltata  │  │ Shaoruru │  │  Hogan   │  │  Craig   │  │  Quill   │
│  │ iOS/Mobile│  │Desktop/  │  │ Infra/   │  │ Android  │  │ Harness/ │
│  │           │  │ CI/CD    │  │ 用户问题  │  │           │  │ 测试框架  │
│  └─────┬─────┘  └─────┬────┘  └─────┬────┘  └─────┬────┘  └─────┬────┘
│        │              │            │              │            │
│        └──────────────┴────────────┴──────────────┴────────────┘
│                              │
│                     ┌────────▼────────┐
│                     │   Cursor Cloud   │
│                     │   Agent 底层引擎  │
│                     │  (200+并发实例)   │
│                     └─────────────────┘
│                                                              │
│  ┌──────────────────────────────────────────────────────────┐│
│  │  Grok Bot 外层编排层 (创建/提示/监控/验证)               ││
│  │  - 模板共享                                              ││
│  │  - 多账户切换                                            ││
│  │  - 网络出口路由                                          ││
│  └──────────────────────────────────────────────────────────┘│
│                                                              │
│  ┌──────────────────────────────────────────────────────────┐│
│  │  Jenny (运营Bot)                                         ││
│  │  - 每日会议                                              ││
│  │  - 入职流程                                              ││
│  │  - 事后分析                                              ││
│  │  - Playbook更新                                          ││
│  └──────────────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────────────┘

设计原则:每个Bot有独立的记忆系统和限定的上下文,只专注单一领域。这避免了多任务智能体常见的"上下文污染"问题——当智能体在多个领域之间切换时,一个领域的残留意念会干扰另一个领域的判断。

Grok Bot作为外层编排层,负责创建、提示、监控和验证这些Bot的输出。Cursor Cloud Agent作为底层执行引擎,实现了从15个并发实例到200+的扩展。

七、验证即信任:从"人肉传送带"到自动化验证流水线

pstack对验证的要求极为严格——它拒绝把"构建通过"当作完整的验证证据。

"""
pstack验证流水线 - Python实现
"""
import subprocess
import json
from dataclasses import dataclass, field
from typing import Optional, List
from enum import Enum
import time

class ChangeType(Enum):
    CLI = "cli"          # 命令行变更
    UI = "ui"            # UI变更
    MIGRATION = "migration"  # 数据迁移
    PERF = "perf"        # 性能变更
    STORAGE = "storage"  # 存储变更

class VerificationStatus(Enum):
    PENDING = "pending"
    PASSED = "passed"
    FAILED = "failed"
    BLOCKED = "blocked"

@dataclass
class VerificationResult:
    status: VerificationStatus
    evidence: List[str] = field(default_factory=list)
    error: Optional[str] = None
    duration_ms: int = 0

class VerificationPipeline:
    """验证流水线 - 根据变更类型选择验证策略"""
    
    def __init__(self, repo_path: str):
        self.repo_path = repo_path
        self.results: List[VerificationResult] = []
    
    def verify(self, change_type: ChangeType, target: str) -> VerificationResult:
        """根据变更类型执行对应的验证"""
        start = time.time()
        
        strategies = {
            ChangeType.CLI: self._verify_cli,
            ChangeType.UI: self._verify_ui,
            ChangeType.MIGRATION: self._verify_migration,
            ChangeType.PERF: self._verify_perf,
            ChangeType.STORAGE: self._verify_storage,
        }
        
        strategy = strategies.get(change_type)
        if not strategy:
            return VerificationResult(
                status=VerificationStatus.BLOCKED,
                error=f"Unknown change type: {change_type}"
            )
        
        result = strategy(target)
        result.duration_ms = int((time.time() - start) * 1000)
        self.results.append(result)
        return result
    
    def _verify_cli(self, command: str) -> VerificationResult:
        """验证CLI变更:实际运行命令"""
        try:
            # 运行真实命令,检查输出
            proc = subprocess.run(
                command.split(),
                capture_output=True,
                text=True,
                timeout=30,
                cwd=self.repo_path
            )
            evidence = [
                f"stdout: {proc.stdout[:500]}",
                f"stderr: {proc.stderr[:500]}",
                f"return_code: {proc.returncode}"
            ]
            return VerificationResult(
                status=VerificationStatus.PASSED if proc.returncode == 0 
                       else VerificationStatus.FAILED,
                evidence=evidence
            )
        except subprocess.TimeoutExpired:
            return VerificationResult(
                status=VerificationStatus.FAILED,
                error="Command timed out"
            )
    
    def _verify_ui(self, feature: str) -> VerificationResult:
        """验证UI变更:通过feature map驱动UI并截图对比"""
        # 实际实现中,会调用control glass技能
        # 1. 启动应用
        # 2. 导航到指定功能
        # 3. 执行交互
        # 4. 截图对比
        # 5. 检查控制台错误
        evidence = [
            f"Feature: {feature}",
            "Screenshot: [captured at run time]",
            "Pixel diff: 0 (within threshold)",
            "Console errors: 0",
            "FPS: 60 (stable)"
        ]
        return VerificationResult(
            status=VerificationStatus.PASSED,
            evidence=evidence
        )
    
    def _verify_perf(self, baseline_trace: str) -> VerificationResult:
        """验证性能变更:对比基线trace"""
        # 1. 采集变更后的trace
        # 2. 与基线对比
        # 3. 生成差异报告
        evidence = [
            f"Baseline: {baseline_trace}",
            "New trace: [captured]",
            "CPU delta: -12.3%",
            "Memory delta: -5.7%",
            "Frame drop: 0 (was 3)"
        ]
        return VerificationResult(
            status=VerificationStatus.PASSED,
            evidence=evidence
        )
    
    def _verify_migration(self, migration_name: str) -> VerificationResult:
        """验证数据迁移:回放真实输入"""
        evidence = [f"Migration: {migration_name} replayed successfully"]
        return VerificationResult(
            status=VerificationStatus.PASSED,
            evidence=evidence
        )
    
    def _verify_storage(self, storage_key: str) -> VerificationResult:
        """验证存储变更:读取值并验证"""
        evidence = [f"Storage read: {storage_key} = [verified]"]
        return VerificationResult(
            status=VerificationStatus.PASSED,
            evidence=evidence
        )


# 使用示例
pipeline = VerificationPipeline("/path/to/repo")

# 验证一个CLI变更
cli_result = pipeline.verify(ChangeType.CLI, "git diff --check origin/main")
print(f"CLI verify: {cli_result.status.value}, evidence: {cli_result.evidence}")

# 验证一个UI变更
ui_result = pipeline.verify(ChangeType.UI, "左侧栏卡顿修复")
print(f"UI verify: {ui_result.status.value}, evidence: {ui_result.evidence}")

八、工程师的新定位:从"写代码的人"到"主厨"

1000个PR之后,工程师还剩下什么?

Lauren用了一个词来形容自己的定位:主厨

不再自己炒每一道菜,手底下有配菜的,有二厨,有各个灶台。你的活儿变成了设计厨房,安排工位,分派任务。

现在Grok Bot团队里,产品经理和设计师会直接提交代码。经常是有人跑来说,这儿有个bug我修好了,你看一下。她点开,确认没问题,盖章。

一个从没写过前端的人,代码能进主干,靠的不是他突然会写了,是那套严格到烦人的架构约束替他兜住了底。

判断标准:当你在代码评审里靠打字告诉别人"这里不能这么写"的时候,这件事本身就是code smell。正确的动作是问自己——怎么把它变成一条lint规则?变成一次CI失败?或者干脆,让这个问题从根上不可能发生?

你在PR评论里说过三遍的话,就该变成一条会让构建变红的规则。

九、工程实践总结

9.1 核心原则

  1. 验证优先于提示:智能体最大的问题不是不知道怎么写,而是不知道自己在猜。用验证建立信任,而不是用更长的prompt。
  2. 硬约束 > 软约束:代码库架构 > CI/Lint > 规则/技能。不要指望智能体记住规则,要把规则嵌入到架构本身。
  3. 最短的路 = 最好的路:智能体永远挑最省事的方式,所以把最省事的方式做成最正确的方式。
  4. 单一职责:每个Bot只做一件事,拥有独立记忆和限定上下文,避免上下文污染。
  5. 可复现的证据:不接收"应该修好了",只接收"在修复前复现、修复后消失"的可验证证据。

9.2 技术栈

组件技术说明
编排层Grok Bot创建、提示、监控、验证
执行引擎Cursor Cloud Agent底层代码生成和执行
多智能体框架pstack23个技能、22个Playbook、21条原则
自动化架构DuneElectron应用专用架构
系统监控Notion 30分钟检查PR自动审查和合并
运营BotJenny会议、入职、事后分析
开源项目pstackCursor官方插件仓库

9.3 未来展望

Lauren Tan的实践揭示了一个清晰的趋势:AI不会取代工程师,但使用AI的工程师会取代不使用AI的工程师。而且,随着Grok Bot的模板共享、多账户切换、网络出口路由等新功能上线,多智能体协作的门槛正在进一步降低。

程序员留在牌桌上的筹码,从"我会写代码"变成了"我能判断怎样写代码才算对了"。

参考资料:

  • Lauren Tan Maven工作坊分享:https://maven.com/p/e23d9c/how-cursor-turned-ai-agents-into-better-engineers
  • pstack 开源项目:https://github.com/cursor/plugins/tree/main/pstack
  • Cursor Cloud Agents Changelog (2026-08-19):https://cursor.com/changelog/08-19-26
  • 36氪报道《一觉醒来20个PR自己合进了主干》(2026-08-31)
  • Flavio Copes pstack深度解析:https://flaviocopes.com/pstack/
  • SpaceXAI Grok Bot官方公告 (2026-08-11)