跳转到内容

pstack 插件说明

更新于 2026-10-02

我是 poteto。我不是总裁,也不是 CEO。我在 Meta、Netflix 和 Cursor 碰过数百万行代码。我也在 react 核心团队,帮忙构建和维护 react compiler。

越来越多人觉得 AI 写出太多 slop 代码。我同意。我不想像一支二十人的 slop 艺人队伍那样交付。没有质量的吞吐,不是我追求的目标。想走得快,就先走得深。

pstack 是我的答案。 这就是我每天在 Cursor 用来交付高质量代码的同一套 skill。它把 Cursor 变成一支真正的工程团队。目标不是把 loc 拉到最大。方向正好相反。pstack 帮你写得更少,但代码质量更高。

pstack 给你无畏的并行。 当你能在一个代理上走深,并信任它写出好的、可验证的代码,你才能真正有信心地并行。用 poteto-mode 拉起多个代理,并信任它们会把严格的工程原则用到工作上。

Cursor 把各家的长处都给你。 每个 frontier 模型都有自己的强弱。pstack 配任何模型都能用。我的许多 skill 用多模型工作流,来用上每个模型独有的长处。

fork 它。改进它。把它变成你的。欢迎 PR。

终端窗口
/add-plugin pstack

两步:

  1. 运行 /setup-pstack,选一个推理预算,并选好你要的模型。
  2. 做任何需要严格的事时,用 /poteto-mode。

刚来?pstack 指南 带你走完第一个真实任务。从配置和提示词,到验证和过夜运行。

就这些。其他 skill 看情况用。mode skill 会在需要时替你用它们。开箱时,这个 mode 按模型的长处拆工作:代码委派(feature、refactoring、bug fix、perf、hillclimb)走 grok。最难的改动、正文和判断走 opus 5.5。默认评审团是 opus 5.5 / sol / grok。/setup-pstack 可以改其中任何一项。

在任务开始时用 /poteto-mode。它读你的请求,从一套 playbook 里挑选,并在步骤需要时运行其他 skill。

这个 skill 是主要的快捷方式。每当我需要代理做严格的工程工作时,我就用它。它带二十三个 playbook:

/poteto-mode this pr has a subtle bug where the scroll drifts every 750ms even when idle. repro
first, then fix and verify.
/poteto-mode i'm going to bed. land the stack even if ci flakes. i want everything merged by
morning.
二十三个 playbook
playbook 用途
investigation 一个只读问题。x 如何工作,为什么 y 要这样建,我们确定吗。
bug fix 复现一个缺陷,找出根因,并用运行时证据修复。
perf 追溯一次测到的变慢,并相对基线改进它。
hillclimb 针对一个指标、对着一个目标,做持续的科学改进。假设一轮轮循环,每次都有前后测量,每个被接受的胜利一次提交。
runtime forensics 从插桩诊断一个现场症状(泄漏、空闲 CPU 空转、毛刺)。
trace forensics 诊断一份已采集的剖析产物(cpuprofile、trace、spindump、heap snapshot)。
feature 新的或改过的行为,从一个命名的数据形状建出来。
refactoring 保持行为不变的结构或形状改动。
prototype 一份用完即弃的草图,用来便宜地做设计或行为决定,或靠观察了结一个经验上的分叉。
visual parity 两种实现之间像素级的 UI 等价。
authoring a skill 编写或编辑一份 SKILL.md。
eval 测试 skill 或提示词改动如何影响代理行为。盲测。
babysit 把一个 PR 或一个栈推到可合并:冲突、审查线程、CI。
shipping 独立验证一个绿色栈,然后把连续已验证的那一段从底部往上落地。默认经 GitHub。Origin 可用时走 Origin。
autonomous run 把一个长任务赶到完成,中途不停。
orchestrate 交给一个协调对话的常驻项目:多日、许多叠放的 PR、一队子代理。
autopilot-full 把独立 PR 跑到已合并。每个 PR 一个负责者。从代码就绪的 head 起,每一轮有一个根 swarm 的 verdict。
autopilot-stack 构建并验证一条线性的基分支栈,交给操作者复审和落地。
session pickup 恢复或接管先前代理进行中的工作。
pause safely 干净地暂停进行中的工作,以便以后恢复。
multi-phase plan 跨阶段或叠放 PR 的工作。
worktree cleanup 修剪已合并或已放弃的 worktree,以及过期的 iOS 模拟器,收回磁盘。有安全门。
opening a pr 从小而有序的提交开一个就绪的 PR。标题用 conventional commits,正文用简报体。每个其他 playbook 结束时都会调用它。

被调用时,它会:

  1. 把你的任务匹配到一个 playbook,并打开一份待办列表。最前面几项就是它的步骤,逐字抄入。
  2. 步骤触发时,路由到其他 skill。
  3. 写出 unslop 过的回复,同时写给使用者和维护者。

完整的 rule 和 playbook 在 skills/poteto-mode/SKILL.md。

/poteto-mode 也是一个粘性 mode。一旦进入,它会跨回合保持开启。playbook 匹配,或任务需要严格时,它自己应用。其他时候它让开。随时可以说一声来退出。

/poteto-mode 和 Cursor 的 /loop 命令配合得非常好。你可以让 Cursor 工作很多小时,同时不牺牲严格。

步骤需要时,/poteto-mode 会替你运行其中大部分(how、why、architect、arena、swarm、interrogate、unslop、no-comments、technical-writing、tdd,以及各条原则)。下面的表是给你想直接用某一个的时候:

/how do we cancel runs? do we have an n+1 when we look up every run to cancel?
/interrogate review this pr.
全部 skill
skill 什么时候用
/poteto-mode 任何不算小的任务的默认入口。
/how 你想要一份子系统如何工作的走读。
/why 你想知道为什么要这样建。它在运行时发现可用的 MCP,并并行查询每一类证据(源码控制、问题跟踪、长文文档、实时聊天、基础设施可观测性、错误跟踪、分析数据仓库)。
/recall 你在开始或恢复工作,想从你自己的聊天历史和共享记录里重建最近的上下文,交回一份紧凑的当前状态简报。
/blast-radius 你有一处看起来很小的改动,想知道它还可能弄坏什么。它之所以安全所靠的那一个事实,用跑代码证明,不用断言。
/architect 你正要写越过函数边界的代码,想先把调用方的用法、类型和模块形状定下来。
/arena 你想对同一件事做 N 次并行尝试,然后抓取每一份里最好的部分。
/swarm 你想要 N 个并行 worker,跨不同切片或竞赛,然后要一份汇总报告。
/interrogate 你有一份 diff,想让几个不同的模型试着打破它,包括一个严格的代码质量视角。
/automate-me 你想要自己的 -mode skill,按你实际工作的方式起草。
/make-bot-ui 你想要一个页面或仪表盘,按钮经 webhook 唤醒一个 Grok Bot,包括发送方密钥交接和 Tailscale。
/setup-pstack 你想按角色挑选 pstack 用哪些模型。它检测你的模型,并写出一条配置 rule。
/reflect 一个长任务落地了,你想把配方留成一次 skill 编辑。
/teach 你想真正理解一处改动或一个子系统,而不只是拿到摘要。它跑 how + why,并织成一份白话说明,一张图一张图往上建。
/tdd 你在修一个 bug,并且有一条便宜的本地测试路径。先写失败测试,再写修复。
/no-comments 复审前去掉注释。它启动 Comment Sicko,修复被接受的 finding,并为声称的约束提供编码。
/typescript-best-practices 你在读或改 TypeScript。把 type-system-discipline 原则落到语法上。
/figure-it-out 没有打包的 playbook 合适。为这个任务设计一份严格、可审计的 playbook。
/show-me-your-work 你想要一条可复审的决策 trail。把决定记到一份你可以提交的 tsv。
/create-verification-skill 你的项目没有脚本化的办法来证明应用行为。生成一个项目本地的验证 skill,带一份 feature map。任何语言或平台都可以。
/maintain-verification-skill 你的验证 skill 的 feature map 已经和应用漂开。源码一波,加一轮现场通过。已证明的修正最多一个 PR。
/unslop 你在清理文字。去掉 AI 的口吻痕迹。
/bro 你想把上一条消息用白话重说,没有行话。
/technical-writing 分层的文档标准(Diátaxis + Google developer style + STE + Global English),用于文档、RFC、readme、PR 描述、提交说明。

大多数时候,我在任务开始时打 /poteto-mode,让它路由到一个 playbook。其他 skill 在步骤需要时触发。有几个我会直接伸手去用。

全部示例
bug fix: /poteto-mode this pr has a subtle bug where the scroll drifts every 750ms even
when idle. repro first, then fix and verify.
perf: /poteto-mode a big list takes a second or two to load even though we virtualize.
run a cpu trace and tell me why.
feature: /poteto-mode build a small feature behind a feature flag. verify it really works.
prototype: /poteto-mode build two prototypes of the markdown renderer so we can compare.
spawn an agent for each.
multi-phase: /poteto-mode open source these skills as a plugin. nothing internal leaks, work
in a temp dir, show me the dependency graph first.
overnight run: /poteto-mode i'm going to bed. land the stack even if ci flakes. i want
everything merged by morning.
babysit: /poteto-mode check on pr 123. anything outstanding?
visual parity: /poteto-mode the row spacing is too tall when this flag is on. the second image
is correct. repro and fix until it matches.
figure it out: /poteto-mode i'm stepping away. migrate every caller from the synchronous store
to the new async one, keeping behavior identical. i want to trust it was done
right when i'm back.
how: /how do we cancel runs? do we have an n+1 when we look up every run to cancel?
why: /why is this feature flag not on yet?
architect: design this instrumentation to be high signal with no false positives. /architect
this first.
arena: /arena take my prompt to the arena verbatim. i want to compare their proposals
with yours.
swarm: /swarm check every package under packages/ against its check.sh. one worker per
package. one report.
interrogate: /interrogate review this pr.
tdd: /tdd implement
unslop: can we unslop and tighten the new changes?
reflect: /reflect that took too long. capture what we learned so the next run doesn't
repeat it.
show-me-your-work: /show-me-your-work keep a decision trail i can review when i'm back.
automate-me: /automate-me

pstack 还带一个子代理,端到端跑我的风格。从父代理通过 subagent_type: "poteto-agent" 启动它。它在做任何工作之前,会完整读 poteto-mode,包括内联的原则索引。换成 generalPurpose 会跳过这次阅读,然后跑偏。

/poteto-mode 和 subagent_type: "poteto-agent" 走同一个包装。

pstack 还带 Comment Sicko,一个只读的注释审查者,可用 subagent_type: "Comment Sicko"。通常通过 /no-comments 调用,不直接调。

二十三个短 skill,每个一条原则。poteto-mode 把它们内联索引,并在任务开始时读这份索引。独立文件在那里,是为了让其他 skill 能按名字引用一条原则,也是为了让索引能指向每一条的完整 rule。

全部二十三条原则
原则 分组 rule
laziness-protocol 核心 偏向删除,以及能解决问题的最小改动。
foundational-thinking 核心 写逻辑之前先用:选定核心类型和数据结构,排列脚手架与功能的先后,问并发行动者共享什么。把数据结构弄对,下游代码就会变得明显。
redesign-from-first-principles 核心 把需求当成从第一天就有的基础假设来重新设计,不要栓上去。
attack-the-premise 核心 当两个或更多共享同一前提的修复都没通过同一道门时使用。下一次修复之前,先普查哪些行动者持有不平衡,然后质疑前提。不要再写一个假设该前提成立的修复。
subtract-before-you-add 核心 先去掉死重、多余的校验器和桩引用,再在更简单的底上建造。
minimize-reader-load 核心 数一数问题和答案之间有几层,以及读者脑子里的隐藏状态。折叠只有一个调用方的包装,并缩小可变范围。
outcome-oriented-execution 核心 用于有明确阶段边界的计划中重写和迁移。收敛到目标架构。不要用用完即弃的兼容代码来保住平滑的中间状态。
experience-first 核心 选择用户的愉悦,不选实现上的方便。少交付打磨过的功能,不多交付粗糙的功能。
exhaust-the-design-space 核心 承诺之前,做 2-3 个互相竞争的原型,并排比较。
build-the-lever 核心 用于任何不算小的工作,不只是批量工作:编辑、迁移、分析、检查。做出能做这件事或证明这件事的工具(codemod、脚本、生成器,或一份子代理遵循的 skill),不要纯手工做。这个工具就是审查者可以重跑的产物。
model-the-domain 架构 把领域编进一个结构,不要散落的条件判断。
boundary-discipline 架构 把守卫集中在系统边界(CLI、配置、网络、外部 API)。信任内部类型,并把业务逻辑放在纯函数里。
type-system-discipline 架构 让非法状态无法被表示。给语义原语打上品牌。在边界解析外部数据。拒绝骗编译器。穷尽变体。从权威 schema 推导。
make-operations-idempotent 架构 无论之前的运行完成了多少,都收敛到同一个终态。
migrate-callers-then-delete-legacy-apis 架构 在同一波里迁移调用方并删除旧 API,不要保留兼容层。
separate-before-serializing-shared-state 架构 先消除共享。只有当单一共享写入者是真正的不变量时,才在结构上串行化。
prove-it-works 验证 完成任务之后、宣布做完之前使用。对照真实产物验证(跑这个功能、读实际的值、检查 diff)。不要对照替身、自我报告,或「能编译」。
fix-root-causes 验证 把每个症状追溯到根因,并在那里修复。先复现。一直问为什么,直到到达根因。抵制用空值检查守卫把崩溃消音。
sequence-verifiable-units 验证 用于多步工作(扫荡、迁移、一串相似编辑),也用于你如何叠放提交和 PR。把工作拆成小单元,每个都以可验证状态结束。先检查一个,再做下一个。把交付排好序,让序列自己向审查者证明。
test-behavior-not-implementation 验证 在你编写、修改或保留一个测试时使用。按用户的方式调用代码,并把他们观察到的结果对一个字面期望值做断言。如果每个导入的函数都返回 undefined,测试仍会通过,就改写断言,或删掉测试。
guard-the-context-window 委派 把大批量路由给子代理。主线程里留摘要,不留原始载荷。
never-block-on-the-human 委派 继续做,交出结果,让人事后纠正方向。确认只留给不可逆的动作。
encode-lessons-in-structure 元 把这条 rule 编成 lint、元数据标记、运行时检查或脚本,不要再加文字。

有几样东西 poteto-mode 会引用,但没有打包进来:

  • /deslop 和 deslop skill 在 cursor-team-kit 插件里。
  • control-cli(用于 CLI 和 TUI)和 control-ui(用于浏览器、Electron、web)也在 cursor-team-kit 里。
  • /create-skill 是 Cursor 内置的。Cursor 也带一个内置的 /babysit。在 poteto-mode 里面,babysit playbook 在 PR 状态请求上取代它。

如果你要全套,把 cursor-team-kit 和 pstack 一起装上。

Cursor 已经有一个很好的 plan mode,和 pstack 配合得很好。但我自己不相信规划。最好的规格就是代码。如果你确实想做计划,/poteto-mode 能覆盖,只是它不是默认。

poteto-mode 是我的风格。你也许不想要完全一样的。

输入 /automate-me。它挖掘你最近的对话记录,按你实际工作的方式起草一个 <your-name>-mode skill,并在底下路由到 pstack。你保留 pstack 作为底座,并在 poteto-mode 旁边得到你自己的路由 skill。

模型也可以配置。输入 /setup-pstack。它检测你能用的模型,并写出一条小的 always-applied rule,把每个角色(代码、判断、评审团)映射到一个模型。每个 skill 都会读它。rule 不在时,回落到合理的默认。所以你只覆盖你想覆盖的。

0.15.3 之前写的 rule 钉住的是旧的默认模型。删掉那些角色行,或者删掉文件,然后重新运行 /setup-pstack。再跑一次时,模型与默认不同的角色会保留。

pstack 还带一份休眠的 Benny 自动化包。Benny 分拣 Slack 的问题报告,然后用真实的 UI 证据复现并修复已确认的 bug。它的文件没有注册成斜杠 skill。

要配置它,把 Cursor 指向 FOR_AGENTS.md。配置会把这份包复制到目标仓库的 .cursor/automations/benny/,在那里启用 pstack 以共享 skill,并把用户配置留在复制的包外面。

MIT

本站是非官方的 pstack 中文学习站,和 poteto 没有隶属关系。译文对照的是 cursor/plugins 仓库里的 pstack/ 目录。本站不发行中文版插件。 github.com/cursor/plugins

鲁ICP备2025189036号