pstack「从第一性原理重新设计」原则深度解析把新需求当作第一天就存在的假设来重构【免费下载链接】pluginsCursor plugin specification and official plugins项目地址: https://gitcode.com/GitHub_Trending/plugins125/plugins导读本文围绕 pstack 插件中编号为principle-redesign-from-first-principles的核心原则展开讲解当 AI 编程助手需要把一项新需求整合进既有设计时如何避免打补丁式叠加而是站在如果今天从零开始写这个需求一开始就在的立场重新设计。读完本文你将掌握这条原则的完整执行步骤阅读受影响文件、提出重设计之问、向所有引用传播变更、整体思考后增量交付、它在 poteto-mode 工作流中的触发时机以及它与 architect、refactoring playbook、attack-the-premise 等相邻原则的协作边界。原则定义什么是从第一性原理重新设计在 SKILL.md 中该原则的 frontmatter 给出了精确的触发条件与定位name: principle-redesign-from-first-principles description: Apply when integrating a new requirement into an existing design. Redesign as if the requirement had been a foundational assumption from day one, instead of bolting it on. disable-model-invocation: true三个关键信息触发场景把新需求new requirement整合进既有设计existing design时。注意它针对的是新功能进入旧架构而不是修 bug、也不是纯结构重构。核心动作把需求当作从第一天起就是基础假设foundational assumption from day one来重新设计而不是螺栓式地钉上去bolting it on。禁用模型自动调用disable-model-invocation: true表明它是一份被动参考原则由 poteto-mode 在任务开始时读取索引需要时主动套用而不是一个用户可主动/调用的技能。正文只有一段但信息密度极高When integrating a change, dont bolt it onto the existing design. Redesign as if the requirement had been there from the start.其方法论本质可以概括为一句话结构决策保护的是期权价值option value——即未来继续演进时保留的选择余地。这与 foundational-thinking 中结构决策保护期权价值、代码级决策保护简洁性的表述一脉相承两条原则同属 pstack 的core核心分组见 README.md 的原则索引表。四步执行流程从理解现状到增量交付原文档给出了四个操作要点这是该原则落地时的标准动作序列逐条展开如下。第 1 步读透所有受影响文件理解当前设计- Read all affected files and understand the current design在提出任何重设计之前必须先建立对现状的完整心智模型。这一步与 architect 技能的Phase A: Ground the problem见 architect/SKILL.md一致它会要求运行how技能去追踪受影响子系统必要时再运行why技能把现有形状背后的设计理由变成约束条件而不是靠猜。值得强调的是命名一个文件不等于理解设计。architect 技能明确要求产出 how 技能规定的追踪模型traced model即真实的调用链与依赖关系而不是文件清单。第 2 步提出重设计之问- Ask: if we were writing this from scratch with this new requirement, what would we build?这是整条原则的核心提问它强制把视角从现有代码上还能再挂什么切换到如果今天从零开始这个新需求一开始就在我们会建什么。这一问在仓库中有多处呼应refactoring playbook 第 3 步要求State what the module layout, types, and call graph should be if built today如果今天构建模块布局、类型和调用图应该是什么样并同时引用 foundational-thinking 与本原则architect 技能 Phase E在废弃错误架构时要求Redesign as if the new constraints had been day-one assumptions把新约束当作第一天假设来重新设计。也就是说这句提问在整个 pstack 体系中是一个通用杠杆无论是一次重构、一次架构废弃还是一个新功能设计都被引导回到从零开始的假设这一参照系。第 3 步向每一个引用传播变更- Propagate the change through every reference: types, docs, examples, rationale sections重设计不是改完核心模块就结束而是要把新设计传播到所有引用它的地方类型types接口、数据形状、函数签名文档docsSKILL.md、README、指南示例examples代码示例、用法演示理由段落rationale sections记录设计决策依据的章节。这背后是单一心智模型的要求。arena 技能在谈到把多个竞争方案的优点嫁接graft进最终设计时特别强调要按本原则手工折叠每个嫁接点The result has to remain coherent under one mental model——不能机械粘贴否则系统内部会出现两套互相矛盾的假设。同样no-comments 技能也用它来约束修复意图删除所有命名过的 workaround绝不在错误的架构上继续挂症状护栏。第 4 步整体想清楚再增量交付- Think about the whole redesign, then deliver it incrementally这是全文中容易被忽略但极其重要的一点思维上先整体交付上再增量。重新设计的目标形状要在脑中/草图中完整成形但落地时不能一次性大爆炸式重写而是切成小的、每个都以可验证状态结束的单元逐步推进。这与 sequence-verifiable-units把工作拆成每个都以检查结束的小单元以及 outcome-oriented-execution收敛到目标架构、不保留一次性兼容层相互配合。refactoring playbook 的第 38 步完整演示了这一增量路径命名目标形状 → 先减后加 → 小步移动且每次保持行为契约绿灯 → 在真实工件上证明行为不变 → 确认可读性负载下降 → 整理成有序小提交。最后那句 The smallest change that reaches the target shape ships以最小变更抵达目标形状正是本原则与 laziness-protocol 的交汇点重新设计不等于铺张重写。在 poteto-mode 工作流中的位置与触发时机pstack 的 README 将二十三条原则划分为 core、architecture、verification、delegation、meta 五组本原则位于core核心组规则概括为Redesign as if the requirement had been a foundational assumption from day one, instead of bolting it on.poteto-mode 的 SKILL.md在其内联原则索引中给出了更精确的触发时机Redesign from First Principlesprinciple-redesign-from-first-principles。Integrating a new requirement into an existing design. Redesign as if it had been foundational from day one.注意其使用方式poteto-mode 在每个多步任务开始时读取原则索引任务触发哪条就应用哪条并在回复中点名哪条原则改变了哪个具体决策。也就是说你不需要手动调用本原则而是通过/poteto-mode进入模式当任务命中把新需求整合进既有设计的场景时本原则被自动套用若需要显式引导也可以在指令中用原则名定向例如 指南 08 展示的用法apply subtract before you add...——同理可以说 apply redesign from first principles。在 08-principles.md 中对它的引导语是integrates a new requirement as if it had been there from day one。与相邻原则的边界什么时候用它什么时候用别的本原则与几条相邻原则在概念上容易混淆文档与源码给出了清晰的划界场景应使用的原则依据把新需求整合进既有设计重建设计Redesign from First Principles本 SKILL 的 description两个或更多共享同一前提的修复在同一关卡失败怀疑前提本身Attack the Premiseattack-the-premise/SKILL.md 明示二者区别前者围绕新需求重建设计后者质疑当前设计所假设的事实写逻辑之前定核心类型与数据结构Foundational Thinkingfoundational-thinking/SKILL.md先删死代码再在更简基础上构建Subtract Before You Addrefactoring playbook 第 4 步行为保持、只改结构Refactoring playbook第 3 步引用本原则来命名目标形状设计被证明错误整体废弃architect Phase E废弃时把新约束当作第一天假设重新设计即套用本原则特别值得注意的是 attack-the-premise 中的那句划界陈述This principle is distinct from Redesign from First Principles, which rebuilds a design around a new requirement. It questions a fact the current design assumes.翻译过来前者Redesign from First Principles围绕新需求重建设计后者Attack the Premise质疑当前设计所假设的一个事实。一个是需求变了所以要重想设计一个是修复总失败所以要怀疑前提——两者回答的是完全不同的问题。实战案例推演一次典型的非螺栓式整合把上述步骤拼成一个可对照的实战场景。假设一个既有系统已有三个 adapter现在要新增第四个不同类型的适配器错误的螺栓式做法找出一个最像的 adapter 复制一份改改字段在分发逻辑里再挂一个if分支然后只更新调用它的那一处。结果是第四种适配器的语义被迫迁就前三种的形状分发处新增一条特例分支类型里出现永远为空的可选字段文档与示例继续描述旧的三元模型。按本原则的正确做法读文件运行how追踪四个三个旧 一个新适配器的调用链、共享类型与生命周期产出追踪模型重设计之问如果从零开始写且第四种适配器从第一天就在分发逻辑、类型、模块布局应该长什么样答案很可能是适配器注册表 统一契约而不是三个具名类 一个特例传播变更把注册表/契约设计同步到类型定义、README 示例、理由段落删掉旧的具名分派与特例分支确保整个代码库只遵循一个心智模型整体想清楚、增量交付先减删除死代码与一次性 workaround见 subtract-before-you-add再按 sequence-verifiable-units 切成小提交每一步都以行为契约pin保持绿灯最后在真实工件上验证见 prove-it-works。如果实现过程中反复出现草图吸收不了的摩擦——同类 workaround 在不同文件反复出现、多个无关边界都要特例分支、类型需要any或总是为空的 optional 才能编译——那就不是增量修补能解决的了。这正是 architect 技能 Phase E 的废弃信号清单此时应直接废弃草图、按本原则重新设计而不是继续钉补丁。总结为什么这是保留期权价值的方法本原则在文档结尾给出了自己的定位总结This is the method for preserving option value when integrating changes into an existing design.期权价值option value指的是设计在未来保持的可演进余地。每打一个补丁、每挂一条特例都是在用当下的便利换取未来的约束而每做一次从第一性原理出发的重新设计都是在把新需求吸收进设计的根基让后续每个增量都建立在一个更真实的模型之上。在 pstack 的工程哲学里这条原则与 foundational-thinking先定数据结构、laziness-protocol最小变更、prove-it-works真实工件验证一起构成了先深入、再快速go deep first, then go fast的核心方法论——正如 README 所说if you want to go fast, go deep first。当 AI 代理每一次整合新需求都不再钉上去、而是重新想清楚累积下来的就是少得多但高得多的代码质量。延伸阅读原则本体principle-redesign-from-first-principles/SKILL.mdpoteto-mode 原则索引与触发规则refactoring playbook命名目标形状的完整流程architect 技能Phase E 废弃信号与重设计attack-the-premise与重设计的边界划分foundational-thinking数据形状优先pstack 用户指南用原则名引导pstack 全部二十三条原则索引【免费下载链接】pluginsCursor plugin specification and official plugins项目地址: https://gitcode.com/GitHub_Trending/plugins125/plugins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考