原帖发布于
【Cursor + Grok Bot + pstack,真正的 AI 软件工厂开始出现了 】
深度拆解 pstack:怎样让 AI 自己开发、验证、返工,并提交可以复查的证据
最近,Lauren(@poteto)公开了自己使用 pstack 开发软件的完整方法。
她的履历很硬。做过 Meta、Netflix、Cursor,也是 React Compiler 核心团队成员,目前参与 Grok Bot。她在文章开头给出了一个更夸张的数字:
借助 pstack,她声称自己可以每月向生产环境交付约 2,000 个 PR。
第一反应可能是:
她到底同时开了多少个 Coding Agent?
用了什么顶级模型?
怎么把任务分给上百个 AI?
但读完整篇文章之后,我发现这些都不是重点。
真正值得研究的是:
她为什么敢让这么多 Agent 同时修改生产代码?
如果 AI 生成的代码不能自己测试、不能操作真实产品、不能发现失败,更无法证明功能确实可用,那么 Agent 开得越多,创造的往往不是生产力,而是更多等待人类验收的作业。
pstack 真正想解决的,就是这个问题。
它没有继续卷“怎样让 AI 写得更多”,而是在研究另一件更重要的事:
怎样让 AI 自己证明,写出来的东西真的能用。
AI 写代码越来越快,人却没有轻松十倍
现在用 Cursor、Claude Code、Codex 写一个功能,已经不算新鲜了。
描述一下需求,AI 很快就能:
• 创建文件;
• 修改接口;
• 补充页面;
• 写测试;
• 修复报错;
• 生成提交信息。
看起来效率非常高。
但真正用 AI 做过完整项目的人,应该都遇到过类似场景。
Agent 很自信地告诉你:
“功能已经完成,所有测试均已通过。”
你打开产品一看:
• 按钮点不动;
• 页面跳转错误;
• 样式错位;
• 数据没有保存;
• 测试覆盖了代码,却没覆盖真实用户路径;
• 为了解决一个问题,又悄悄制造了三个新问题。
于是,接下来的工作还是你的:
代码确实不是你写的了。
但你从程序员变成了一个整天替 AI 检查作业的人。
单个 Agent 还好。
如果同时运行十个 Agent,问题会被直接放大:
所以,多 Agent 并不天然等于十倍生产力。
它也可能只是十倍的 Review、冲突和返工。
这也是 pstack 最重要的判断:
在扩大 Agent 数量之前,必须先提高单个 Agent 的可信度。
顺序不能反。
先让一个 Agent 能够独立完成任务、发现问题并提供证据,再考虑把它复制成十个、一百个。
pstack 到底是什么?
pstack 的名字很容易让人误以为,它又是一个新的 AI 编程工具。
实际上,它不是模型,也不是 IDE。
它更像一套运行在 Coding Agent 之上的工程工作系统。
如果 Cursor 是办公室,Claude、Grok 等模型是员工,那么 pstack 提供的就是:
• 工程原则;
• 工作流程;
• 任务分工;
• 操作工具;
• 质量标准;
• 验收制度;
• 自动化规则。
pstack 目前以 Cursor 插件的形式公开,也能以插件形式进入 Grok Bot。
它内部包含大量 Skills 和 Playbooks,覆盖:
• 代码调查;
• Bug 修复;
• 性能优化;
• 新功能开发;
• 重构;
• UI 视觉还原;
• 多 Agent 编排;
• PR 推进;
• CI 与 Review;
• 长时间无人值守执行。
它的主要入口叫做 /poteto-mode。
当你交给它一个任务时,它不只是根据 Prompt 开始写代码,而是先判断任务属于哪种类型,然后选择相应的工程流程。
修 Bug,就应该先复现、定位根因,再修改和验证。
做性能优化,就必须先采集基线,再对比修改前后的数据。
开发新功能,就要先明确用户路径和验收标准,再提供功能正常的证据。
所以,pstack 不是教 AI “如何多写代码”。
它真正要做的是:
让 Coding Agent 像一个相对靠谱的工程团队一样工作。
Verification,才是 pstack 的发动机
pstack 最核心的能力叫做 Verification Skill。
Verification 通常被翻译为“验证”。
但这里的验证,不是让 AI 修改完代码后运行一次:
然后看到绿色提示,就宣布任务完成。
pstack 所说的验证,更接近真实产品验收。
一个 Agent 应该能够:
1. 安装项目依赖;
1. 启动真实应用;
1. 判断服务是否准备完成;
1. 进入对应页面;
1. 像真实用户一样操作功能;
1. 检查页面、日志、网络请求和数据变化;
1. 发现失败后继续修改;
1. 重新运行完整流程;
1. 提供截图、视频、日志或性能数据;
1. 清理自己创建的进程和临时环境。
完整闭环大致是:
这里最关键的变化,不是 AI 多执行了几条测试命令。
而是:
Agent 开始拥有关闭反馈循环的能力。
以前,AI 修改代码之后,必须把结果交给人。
人发现问题,再告诉 AI。
人就是整个反馈循环中最慢、也最昂贵的环节。
当 Agent 能够观察自己的工作结果,判断是否成功,并在失败后继续修改,它才开始从“代码生成器”变成真正的执行单元。
“测试通过”是结论,截图和数据才是证据
现在很多 Coding Agent 最大的问题,是特别容易把自己的判断当成事实。
它会说:
• 功能已经完成;
• 问题已经修复;
• 性能已经提高;
• 页面可以正常使用;
• 测试已经覆盖。
但这些都是 Agent 的自述。
pstack 更强调提供可以被人复查的证据,例如:
• 实际执行的测试命令;
• 真实应用的操作截图;
• 功能运行视频;
• 控制台和网络日志;
• 修改前后的性能 Trace;
• 数据库中的状态变化;
• 尚未覆盖的场景和风险。
比如让 Agent 开发一个登录功能,不应只要求:
帮我实现登录功能。
而应该明确告诉它:
完成登录功能,从登录页面输入测试账户,提交后进入首页,确认用户信息正确显示,验证登录状态已经保存,并提供整个过程的视频、截图和测试结果。
这两个 Prompt 的区别,不只是后者更详细。
真正的区别是,第二个任务定义了什么叫 Done。
AI Coding 发展到现在,一个越来越明显的规律是:
写清楚“如何验收”,通常比写清楚“如何实现”更重要。
因为实现路径可以由模型探索,但如果没有清楚的完成标准,模型永远可以在一个看似合理的位置宣布成功。
Build the Lever:不要只给 AI 写说明书
pstack 中有一个我非常认同的原则:
Build the Lever。
简单理解就是:
不要反复用 Markdown 教 Agent 怎样完成一项操作,而是把重复流程做成一个可以反复调用的工具。
现在很多人优化 Coding Agent 的方式,是不断增加项目说明:
• 点击哪个按钮;
• 页面从哪里进入;
• 遇到报错怎么办;
• 怎样创建测试用户;
• 怎样采集截图;
• 怎样清理环境。
这些文档当然有用。
但每次执行时,Agent 仍然需要:
1. 阅读说明;
1. 临时理解流程;
1. 自己编写脚本;
1. 尝试操作;
1. 处理每次出现的随机差异。
pstack 更推荐为项目建立一个专属控制工具。
比如一个 Web 或 Electron 项目,可以提供类似这样的命令:
Agent 不再需要每次临时研究怎样操作产品。
它只需要调用已经经过测试的命令。
这样做有几个直接好处:
• 减少 Token 消耗;
• 减少临时生成脚本的随机性;
• 所有 Agent 使用同一套操作方式;
• 流程可以重复运行;
• 工具本身可以测试;
• 输出可以统一成 JSON;
• 人类也可以重新执行和复查。
这背后其实是一个非常朴素的工程原则:
不要反复教 AI 怎么搬砖,给它造一台可以重复使用的机器。
Prompt 只能提高一次任务的质量。
一个经过验证的工具,可以持续提高之后所有 Agent 的质量。
Feature Map:给 Agent 一张产品地图
当代码库越来越大,Agent 还会遇到另一个问题:找不到路。
一个新 Agent 进入项目之后,需要重新搞清楚:
• 产品有哪些功能;
• 功能入口在哪里;
• 用户怎样到达对应页面;
• 页面有哪些不同状态;
• 哪些功能需要特定权限;
• 修改后应该验证哪条路径;
• 哪些操作可能影响其他功能。
如果每个 Agent 都从头阅读整个代码库,不但浪费时间,也会大量占用上下文窗口。
pstack 为此设计了一套 Feature Map。
它不是按照代码模块组织的技术文档,而是从用户视角记录功能:
例如,对于一个设置页面,Feature Map 不只会告诉 Agent 对应代码文件在哪里。
它还会记录:
• 用户点击哪里进入设置;
• 有哪些设置选项;
• 如何使用控制工具打开页面;
• 哪个状态代表设置保存成功;
• 哪些选项受账户套餐限制;
• 操作结束后如何恢复初始状态。
Lauren 把 Feature Map 称为一种 Materialized Memory,也就是“物化记忆”。
这个概念很值得注意。
现在几乎所有 Agent 产品都在谈记忆:
• 保存对话历史;
• 写入 Markdown;
• 接入 Obsidian;
• 建立向量数据库;
• 自动检索过去的任务。
但对于 Coding Agent 来说,真正可靠的记忆首先不是聊天记录。
而是:
1. 当前真实代码;
1. 可以执行的项目工具;
1. 能够持续更新的功能地图。
代码记录了产品实际上是什么。
Feature Map 则把庞大的代码库压缩成 Agent 更容易理解的用户任务模型。
当然,它也不是一次建立、永久有效。
产品会变化,页面会改版,入口会迁移,功能也会增加。
所以 pstack 还提供了 /maintain-verification-skill,用来持续检查和维护 Verification Skill 与 Feature Map。
这也说明了一个很现实的问题:
Agent 的记忆和工作流程,本身也会过期,也会产生技术债。
不是接入一个知识库,AI 就永远理解你的项目。
先让一个 Agent 靠谱,再复制成一百个
当一个 Agent 已经可以独立完成任务、验证结果并提交证据后,下一个问题自然是:
能不能同时运行更多 Agent?
很多开发者现在使用 Git Worktree。
可以把它理解为:在同一个代码仓库旁边,多摆几张独立办公桌。
每个 Agent 在自己的目录和分支上工作,减少彼此覆盖文件的风险。
但 Lauren 更推荐在大规模并行时使用 Cursor Cloud Agents。
每个 Cloud Agent 都拥有一套相对独立的计算环境,可以:
• 安装自己的依赖;
• 启动真实应用;
• 运行测试;
• 操作产品界面;
• 采集截图和视频;
• 创建独立 PR;
• 不占用主 Agent 的本地环境。
此时,Grok Bot 或主 Agent 的角色也会发生变化。
它不再亲自完成所有代码修改,而更像一个协调者:
这里必须区分三个不同概念:
• 模型负责推理和生成;
• 执行 Agent拥有代码、机器和工具;
• 协调 Agent负责拆分、分配和监督任务。
现在很多所谓“多 Agent”,只是让几个模型在同一个聊天窗口里互相讨论。
pstack 描述的系统更进一步:
多个 Agent 各自拥有独立执行环境,可以真正修改、运行和验证软件。
这也是 AI Coding 接下来很可能发生的变化。
大家竞争的重点,不会永远停留在“哪个模型写代码分数更高”。
未来真正的差距,可能来自:
• 谁能把任务拆得更合理;
• 谁拥有更成熟的执行环境;
• 谁能让 Agent 使用真实工具;
• 谁能自动完成验证;
• 谁能处理大量并行任务;
• 谁能把并行结果安全地合并进生产环境。
三个场景,最能体现 pstack 的价值
1. 开发新功能
普通任务是:
帮我开发一个新的搜索功能。
pstack 式任务更接近:
开发搜索功能。使用项目控制工具打开真实应用,分别验证正常关键词、空结果和异常请求,提供操作视频、关键页面截图和测试结果。
Agent 交付的不再只是一段代码。
而是一整套结果:
• 修改了什么;
• 为什么这样修改;
• 功能如何运行;
• 哪些路径已经验证;
• 证据在哪里;
• 哪些风险还没有覆盖。
2. 性能优化
普通 Agent 很容易在改完代码后说:
已经减少了不必要的渲染,性能得到提升。
但“应该更快”不是证据。
更严谨的流程应该是:
1. 采集修改前的性能基线;
1. 找出真正的性能瓶颈;
1. 进行针对性修改;
1. 再次采集相同指标;
1. 对比修改前后的数据;
1. 多次运行,排除偶然波动;
1. 保留 Trace 和测试结果。
这样,性能优化不再是模型的主观判断,而是一项可以复查的实验。
3. 自动复现用户反馈
这是我认为最有想象力的场景。
假设公司把 Slack、客服系统、GitHub Issue 或监控告警接入 Bot。
未来的处理流程可能变成:
这时候,Coding Agent 已经不只是开发者打开后使用的工具。
它开始变成一套事件驱动的软件维护系统。
用户反馈、错误日志和监控告警,都可以成为 Agent 的任务入口。
2,000 个 PR,应该怎样理解?
讲到这里,还是需要给文章开头的数字降降温。
“每月交付 2,000 个 PR”来自作者本人的公开表述。
但目前没有完整披露:
• PR 的平均规模;
• 是个人、Agent 还是团队总量;
• 创建了多少、最终合并了多少;
• 机械性小改动占多少;
• 人工 Review 花了多少时间;
• 线上 Bug 和回滚率如何变化。
所以,更严谨的理解应该是:
Lauren 称借助这套工作流,可以将每月约 2,000 个 PR 推进到生产环境。
不能直接把它扩展成:
安装 pstack,任何人都可以每月完成 2,000 个 PR。
同样,文章中提到的“提高团队 100~1000 倍产出”,也更像一种强调杠杆效应的强表达,而不是具有统一统计口径的生产力基准。
对于批量修改、代码迁移、重复测试和容易自动验收的任务,数量级提升并非完全不可能。
但对于:
• 模糊的产品需求;
• 复杂架构设计;
• 安全问题;
• 线上事故;
• 跨团队协调;
AI 不会因为安装了一个插件,就突然提高一千倍。
自我验证,也不等于绝对可信
pstack 的思路很先进,但 Verification 不能被误解成“从此不需要人类 Review”。
如果修改代码和验收代码的是同一个 Agent,它可能继承同一个错误理解。
比如:
• 一开始就误解了需求;
• 只测试了自己实现的路径;
• 截图看起来正确,但底层数据已经出错;
• 为了通过验证,悄悄降低了测试标准;
• 多个 Agent 使用相同模型,因此产生相似盲区。
所以,在真正的生产环境里,仍然需要:
• 独立 Review;
• 不允许任务 Agent 随意修改的验收标准;
• CI 与自动化测试;
• 权限边界;
• 生产监控;
• 回滚机制;
• 高风险操作的人工批准。
正确的理解不是:
Agent 可以验证自己,所以人类可以彻底退出。
而是:
Agent 可以完成更多基础验证,人类不必再检查每一个机械步骤。
人的角色不会消失,只是会从逐行写代码、逐个点按钮,逐渐转向:
• 定义目标;
• 拆分任务;
• 设计验收;
• 设定权限;
• 处理冲突;
• 判断产品方向;
• 承担最终责任。
普通人怎样借鉴 pstack?
大多数人暂时不需要同时运行一百个 Cloud Agents。
也不需要一开始就建立非常复杂的软件工厂。
pstack 最有价值的思想,可以先简化成五步。
第一步:先定义什么叫完成
不要只告诉 AI:
完成登录功能。
至少要补充:
• 用户从哪里进入;
• 需要输入什么;
• 成功后看到什么;
• 数据发生什么变化;
• 失败时如何展示;
• 需要提交什么证据。
第二步:让 Agent 能够运行真实项目
Agent 不能永远只阅读代码。
它至少应该能够:
• 安装依赖;
• 启动开发环境;
• 打开应用;
• 操作核心功能;
• 查看日志;
• 保存截图。
第三步:建立最小项目工具
不需要一上来造一个复杂框架。
先把几个最常用的动作封装起来:
一个稳定的小工具,往往比十页 Prompt 更有价值。
第四步:强制提交证据
不要只接受:
已完成,测试通过。
要求 Agent 返回:
• 执行过的验证命令;
• 测试结果;
• 截图、视频或日志;
• 已经覆盖的用户路径;
• 尚未验证的风险。
第五步:稳定后再增加并行
如果一个 Agent 还需要你反复接管,就不要急着同时运行十个。
先记录几个真正有意义的指标:
• 一次完成率;
• 平均返工次数;
• 人工 Review 时间;
• 合并冲突率;
• 上线后的故障率。
这些数字改善以后,再扩大并发。
Agent 数量本身,从来都不是生产力。
AI Coding 真正的竞争,才刚刚开始
过去一年,行业的大部分注意力都放在模型上:
• 谁写代码更快;
• 谁的 Benchmark 更高;
• 谁支持更长上下文;
• 谁能一次生成更多文件;
• 谁的价格更便宜。
这些当然重要。
但随着模型能力逐渐接近,代码生成越来越便宜,新的瓶颈已经出现:
谁来判断这些代码真的能用?
未来真正稀缺的,可能不是一个可以瞬间生成几千行代码的模型。
而是一个团队能不能把自己的工程经验,变成 Agent 可以重复调用的:
• 工具;
• Skills;
• Playbooks;
• Feature Map;
• 验收标准;
• 自动化流程。
这才是 pstack 最值得关注的地方。
它不只是又做了一套更复杂的提示词。
它试图把一个优秀工程师脑中的工作方法,固化成所有 Agent 都能复用的工程基础设施。
模型决定了 Agent 有多聪明。
工具和流程,决定了它能不能稳定干活。
验证体系,则决定了你敢不敢把任务真正交给它。
pstack 最值得学习的,也不是 /poteto-mode 或某一条 Cloud Agent 命令,而是它背后的顺序:
先定义什么叫完成,再让 Agent 学会证明完成;先把一个 Agent 变成靠谱的执行单元,再考虑同时运行一百个。
项目入口
• pstack GitHub:
https://github.com/cursor/plugins/tree/main/pstack
• Cursor 插件页面:
https://cursor.com/marketplace/cursor/pstack
• Verification Skill 示例:
https://github.com/poteto/verification-skill-example
• Lauren 的原文: