ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

pstack 架构设计红线清单:在合成之前筛查候选设计的四项模块缺陷(Shallow Module、信息泄漏、时间分解与 Pass-through)

pstack 架构设计红线清单:在合成之前筛查候选设计的四项模块缺陷(Shallow Module、信息泄漏、时间分解与 Pass-through) pstack 架构设计红线清单在合成之前筛查候选设计的四项模块缺陷Shallow Module、信息泄漏、时间分解与 Pass-through【免费下载链接】pluginsCursor plugin specification and official plugins项目地址: https://gitcode.com/GitHub_Trending/plugins125/plugins在设计落地之前先筛掉会腐蚀模块边界的形状。pstack 的architect技能将设计流程划分为 Ground → Sketch → Agree → Implement → Scrap 五个阶段其中 Phase BSketch通过arena技能并行产出多个候选设计而references/design-red-flags.md正是这一阶段唯一强制执行的筛查关卡任何候选设计在进入合成synthesis之前都必须先对照本清单逐条体检。命中任一红旗red flag就意味着该形状需要被修订或直接否决。本文围绕这份红线清单展开逐条拆解 Shallow module、Information leakage、Temporal decomposition、Pass-through method 四类模块级缺陷的判定标准、识别信号与修正方向并结合 pstack 仓库中 architect、arena 及其底层原则技能的源码实现说明为什么这些红线在 AI 辅助设计语境下尤其关键——因为候选设计由不同模型并行产出如果不在合成前用统一标准筛查错误形状就会被当作基座缝合进最终设计。阅读这份清单之前它在设计流程中的位置红线清单不是一份孤立的风格指南而是 architect 流程的强制闸门。architect/SKILL.md明确写道在合成之前必须用这份清单筛查每个候选设计拒绝或修订浅模块、信息泄漏、时间分解和 pass-through 方法。它的上游语境是两条设计纪律设计两次design it twiceprinciple-exhaust-the-design-space规定当正确答案不显然时必须产出 23 个结构上真正不同的候选方案并排对比再决定提交哪个第二种同一形状的变体不算数。arena 的 Phase DPick正是在多个候选之间选择基座base。按接口深度比较候选architect/SKILL.md要求对可行的候选方案比较接口深度优先选择用更小、更简单的公开表面隐藏更多复杂度的设计。一份接口可以在保持调用链短的同时通过集中能力而不是把能力散落在各层来实现。红线清单是这两条纪律的具体裁判工具在把任何候选放进合成之前先用它回答这个形状有没有结构性缺陷。arena 的 Phase EGraft会把落选者中最强的部分手工嫁接到基座上而 Phase FVerify会再次验证合成结果但如果基座本身带着红旗后续的嫁接与验证只是在错误形状上打补丁——这正是清单存在的意义。Shallow module接口大而能力薄判定标准浅模块暴露了庞大的公开接口却只隐藏了极少的复杂度。评判深度的方式是比较藏在公开表面背后的能力与策略相对于该表面本身的大小。正确形态是一个简单接口背后支撑着实质性的行为。需要特别澄清一个常见误解不要把深模块与深调用链混为一谈。深调用链deep call chain把理解分散在各层之间读者要穿越多层才能弄清一件事深模块deep module把能力集中在同一个接口后面读者只需理解一层。调用链深不等于模块深恰恰相反调用链深往往是浅模块叠加的结果——每一层只转发不隐藏读者就必须逐层追读。识别信号清单给出了三条可操作的观察信号命中任何一条都应当警惕调用者需要协调多个方法才能完成一个操作。说明能力没有被封装而是被拆散成调用者必须亲自编排的步骤序列。公开选项暴露了内部阶段或实现选择。调用者要理解内部是怎么分步的才能正确传参接口就把实现泄漏给了使用方。学会接口并不能让调用者免于学习实现。这是最核心的判据如果接口的抽象程度不足以掩盖实现细节那这个接口就没有起到压缩作用。与仓库原则的印证这一判据与 pstack 的多条原则技能同源principle-minimize-reader-load提出维护成本的两个轴向要追踪的层数从问题到答案之间的间接层数和要记住的状态量读者脑中需要保持的隐藏或可变上下文。其中demand interface compression一条与浅模块完全对应宽广的接口若只隐藏很少的复杂度读者就不得不既学表面又学实现。architect/references/runner-prompt.md给每个候选 runner 的纪律中明确写着比较公开表面背后隐藏的能力相对于表面大小偏好把复杂度拉进被调用方的简单接口即使实现因此变得不那么简单。修正方向优先设计小接口 厚实现把策略、不变式、编排逻辑收进模块内部让调用方只面对一个能完成整件事的入口压缩公开面把多个方法才能完成一个操作重构为单一高内聚操作隐藏内部阶段公开选项应当是领域语义而不是实现步骤的镜像。Information leakage同一内部决策被多处依赖判定标准信息泄漏使得多个模块依赖同一个内部决策。当一个表示representation、策略policy或协议细节出现在多个地方时修改它就需要多处协同编辑——这正是耦合的经典形态。最典型、也最该警惕的一类泄漏是公开地再导出传输层或线上的类型transport / wire types。例如把 HTTP 请求/响应结构、数据库 schema、框架对象直接暴露在公开 API 上调用方一旦依赖这些类型内部更换协议或存储就变成破坏性变更。修正方向清单给出的修正是边界纪律式的在接口背后把外部数据解析成领域类型parse external data into domain types behind the interface让存储 schema、框架对象、协议细节保持私有keep storage schemas, framework objects, and protocol details private。这与principle-boundary-discipline的边界测试完全一致系统边界CLI 参数、配置文件、外部 API、网络协议负责校验与解析系统内部信任类型、不重复校验并明确要求不要通过公开表面再导出传输、存储、框架或线上的类型do not re-export transport, storage, framework, or wire types through the public surface。runner-prompt 中同样有对应条款不要把传输或线上的类型放到公开 API 上在接口背后解析成领域类型。识别信号泄漏往往不以同一常量出现两次这种显眼方式出现而藏在类型签名里公开函数/方法的参数与返回值是否引用了 wire/schema/framework 类型。凡是在公开面看到这类类型就是在向调用方预告内部实现会变应当就地修正为领域类型。Temporal decomposition按执行顺序而非知识归属切分模块判定标准时间分解是按执行顺序组织模块而不是按它们所拥有的知识组织模块。典型形态是一组处理管线阶段被拆成独立的 load、validate、transform、save 模块——这四个阶段常常跨越多个边界重复同一个表示及其不变式invariants。后果是双重性的同一份数据的不变式比如这个字段必须非空且格式合法在 load 阶段检查一遍、validate 阶段又检查一遍逻辑被复制数据形状representation被多个阶段模块共享任何形状调整都要同步改动多个文件。修正方向围绕领域知识与所有权分组代码group code around domain knowledge and ownership不同时间运行的方法仍可以属于同一个模块——只要它们保护的是同一个决策protect the same decisions。换言之判断归属的依据不是什么时候执行而是它守护哪个不变式。load 与 save 在时间上相隔很远但只要它们都在保护同一份领域数据的不变式就应当住在同一个模块里而不是按生命周期阶段拆开。与仓库原则的印证这与principle-encode-lessons-in-structure的单点固化思想一致不变式应当被结构性地保护一次不可能是的类型、lint、运行时检查而不是靠多阶段模块各自重复文本式检查。时间分解正是把一次校验变成多处重复的常见来源principle-minimize-reader-load中derive instead of sync推导而非同步也指向同一结论同一决策只允许有一个权威来源。Pass-through method无信息增量的转发层判定标准pass-through 方法把相同的参数原样转发给另一个形状相同的方法。它没有隐藏任何复杂度只是多加了一层间接。判断要点是形状相同参数与返回值的形状没有改变层与层之间没有发生抽象转换。为什么有害从最小化读者负担的角度看这种层是纯粹的税负principle-minimize-reader-load要求让相邻的层改变抽象——重复相同方法与参数的层只会增加读者负担而不产生压缩应当折叠掉collapse pass-through layers。在架构审查语境中层层转发还会造成虚假的分层感看起来结构规整实际上每一层都没有承担决策读者必须逐层追读才能确认它什么都没做。修正方向删除它或者把责任移动到能够完成该操作的模块move responsibility to the module that can complete the operation仅在转发边界确实增加了策略policy、适配adaptation或独立抽象时才保留它keep a forwarding boundary only when it adds policy, adaptation, or a distinct abstraction。增加了策略、适配或独立抽象与形状相同地转发之间的区别就是保留层与删层的分界线如果转发时附加了权限判定、单位换算、协议适配或新的领域语义它就是有信息增量的边界如果只是把 A 的参数递给 B它就是该删的 pass-through。四类红旗速查红旗一句话判定核心危害修正方向Shallow module接口大而隐藏的复杂度少调用者既学接口又学实现小接口 厚实现把策略与编排收进内部Information leakage同一内部决策表示/策略/协议细节出现在多处修改需多处协同编辑边界处解析为领域类型schema/框架/协议细节保持私有Temporal decomposition按 load→validate→transform→save 执行顺序切模块不变式与数据形状被跨边界重复按知识归属分组守护同一决策的方法归入同一模块Pass-through method相同形状参数原样转发增加层数但不产生压缩删除或把责任下沉到能完成操作的模块只有增加策略/适配/独立抽象时才保留边界四条红旗共享同一条底层判据可以归纳为一个自问删掉这一层、合并这两个模块、把这段逻辑挪到别处读者理解系统的成本会下降还是上升回答会下降就动手修回答会上升再看是否属于上面列出的合法保留理由。这些红线如何在仓库的合成流程中生效红线清单是静态文档但它的效力来自被 architect 流程强制执行并有多条原则技能作为理论支撑筛查时机architect/SKILL.md规定在 arena 完成并行探索、进入合成之前必须逐候选筛查本清单拒绝或修订四类缺陷——筛查发生在 design it twice 与 compare on interface depth 之间先排除缺陷形状再比较剩余方案的接口深度。候选纪律architect/references/runner-prompt.md在给每个并行 runner 的提示中预先注入同类约束interface depth、不要外泄 wire 类型、验证放边界、信任内部类型、短调用链不超过三个文件等使候选在产出阶段就尽量不踩线红线清单则作为合成前的最后一道闸门兜底。合成记录最终设计随architect/references/rationale-template.md一道交付其中 Shape 一节要求显式陈述接口深度——公开面隐藏了什么复杂度、还有哪些暴露给调用者、接口为何不再更小——这正是把红线筛查结果落成可审计文字的地方Alternatives considered 一节则要求至少记录一个被否决的备选形状及其落选原因并按接口深度而非实现简单度评判。失败后的重整如果实现阶段Phase D反复产生草图吸收不了的摩擦说明当初的红线筛查可能漏判architect 的 Phase E 要求推翻草图、按principle-redesign-from-first-principles以新约束本就是第一天假设为前提重做再回到 Phase B 重新跑 arena——新一轮候选同样要再过一次红线清单。对于 AI 辅助架构设计这套机制的意义尤其具体多个模型候选在形状上天然存在差异如果不预先定义什么形状不能要合成很容易选择看起来安全的中庸解runner-prompt 明确警告 converging on a safe-looking middle defeats the exploration。红线清单给了合成一个结构化的否决集让修订或否决成为可执行的流程动作而不是主观偏好。使用建议将本清单作为architect Phase B 的强制 checklist逐条过筛不要凭整体印象放行候选四条红旗分别对应接口深度、类型边界、模块归属、层间抽象四个维度一次筛查即完成四维体检审查既有代码时同样适用四条红旗是反模式目录命中即标记重构点其中 pass-through 层是成本最低、收益最直接的清理对象时间分解次之信息泄漏的修复通常需要动公开 API 类型涉及面最大结合rationale-template.md使用把每条红旗的判定与处置写进 Shape 与 Alternatives considered让设计决策可审计、可复盘记住清单开头那句总纲——a red flag is a reason to revise or reject the shape红线不是扣分项而是该改形状的硬信号与修改代码库相比在合成前修订草图是成本最低的纠错时机。【免费下载链接】pluginsCursor plugin specification and official plugins项目地址: https://gitcode.com/GitHub_Trending/plugins125/plugins创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表