mcpField
R
rigour

rigour

github.com/davidleeAgent 工作流294 次安装4 天前更新
代码仓库

关于 rigour

rigour 是面向复杂、不确定或上下文负担较重任务的 Agent 技能,可叠加在具体工作阶段技能之上。它通过证据记录、诊断、验证、风险排序和状态留存减少依赖即兴判断。

主要功能

  1. 01区分已验证、推断和假设
  2. 02用多个假设诊断异常
  3. 03变更前定义成功检查
  4. 04规划上下文预算并记录笔记
  5. 05优先处理基础性风险
  6. 06用停止条件触发策略调整

适用场景

  1. 01调查与预期不符的系统行为
  2. 02规划难以撤销的变更
  3. 03拆解含有重大未知项的工作
  4. 04在上下文丢失后恢复长期任务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davidlee/doctrine --skill rigour

安装后在 Claude Code 中输入/rigour确认已加载。

附带文件reference.md

详细介绍

严谨

一种适用于能力边缘工作的行为姿态:面对复杂性、不确定性或上下文成本超出流畅即兴应对能力的问题时采用。将其叠加在起主导作用的阶段技能(设计、执行、审计等)之上,就像叠加结对或演练一样——它不会取代路由,也不是一个阶段。

在能力边缘,特定的失败模式占主导:捏造出自信的结论、锚定在第一个假设上、贪多求快地阅读、没有证据就宣布成功、只是一味加大力度重试而不换方法,以及在上下文压力下丢失状态。下面的每项规范都用明确流程取代原本必须完美无缺的判断。规范比能力更省成本;用流程换取正确性。

开始前校准

严谨需要消耗 token 和时间。根据风险 × 可逆性调节力度:

可逆难以逆转
低风险无需采用特殊姿态——直接处理仅进行预先登记的验证
高风险记录清单 + 验证采用完整姿态,启用所有规范

明确说出任务属于哪个象限,以及要启用哪些规范。范围变化时重新评估——任务过程中可能转移到其他象限。

路由:症状 → 规范

根据你注意到的症状进行路由,而不是根据生命周期阶段:

症状规范
自信的结论却缺乏有力证据认知记录清单
行为与对系统的模型相矛盾差异诊断
即将提交难以逆转的更改预先登记验证 + 审计记录清单
问题无法纳入上下文;阅读似乎没有尽头上下文节约
问题太大 / 太复杂,难以着手按风险排序拆解
对同一件事的第二次或第三次尝试失败触发条件
有个无法自行解决的未知事项认知记录清单 → 升级处理
任务耗时较长;可能丢失上下文或需要交接外部化状态

症状可能叠加;符合条件的规范都要启用。如果没有任何症状符合,但工作仍让你感到力有不逮,这本身就是一个触发条件——停下来重新评估。

各项规范

认知记录清单

分别记录你实际知道的内容和你相信的内容。

  1. 为每项重要主张标记状态:已验证(你观察到的)、推断得出(由已验证的主张推导而来)或假设(你需要它为真)。
  2. 不要基于假设主张做出不可逆的操作。将其升级——通过验证或推导——或在继续之前明确提出。
  3. 明确登记未知事项,并分类为:可通过研究解决(在上下文预算内去解决)与 需要人工决策(尽早提出,提供选项和建议——绝不默默猜测)。
  4. 表达流畅并非证据。如果一段话读起来信心十足,就审查其中哪些主张确实是已验证。

退出条件:结论所依据的每项主张都已验证或推断得出,或者已向用户说明其假设状态。

差异诊断

适用于故障、异常,以及任何系统行为与现有模型相矛盾的时刻。

  1. 停止推进。异常说明你的模型可能有误;基于错误模型开展的工作都是浪费。不要为异常找借口。
  2. 列出至少两个仍然成立的假设。只有一个假设就是锚定。
  3. 选择能够区分这些假设的最廉价观察——而不是最容易尝试的修复方法。先预测每个假设会产生什么结果。
  4. 观察、更新、删减,然后重复。如果证据与所有假设都不符,就添加新的假设。
  5. 不要修复无法解释的问题。因未知原因奏效的补丁,在记录清单中属于假设主张。

退出条件:有一个假设能解释所有观察结果,包括最初的意外情况——或者在征得用户同意后,明确暂缓处理该异常。

预先注册验证

在采取行动之前决定什么样的证据才算数,这样结果就不会诱使你降低标准。

  1. 做出更改前,写下什么观察结果能证明成功,以及什么结果会推翻这一判断。
  2. 优先选择在你错了时会明确失败的检查——无法失败的测试什么也验证不了。
  3. 更改后,运行预先注册的检查。“运行了”/“能编译”/“通过了原本就能通过的检查”都不算。
  4. 报告证据,而非感受:说明观察到了什么,或者说明跳过了验证及其原因。绝不要因为急于完成而降低检查标准。

退出条件:已观察到预先注册的结果,且结果符合预期;或者将不符合之处报告为发现,而不是掩盖过去。

上下文预算

上下文是最稀缺的预算;有计划地使用,并设定停止条件。

  1. 阅读任何内容之前,先写下你要回答的问题,以及具体的停止条件——即使答案不完整,满足什么条件就足够。
  2. 以目标为先阅读:先浏览结构,再深入阅读与问题相关的内容。把旁支记在列表里,不要追着它们跑。
  3. 边读边提炼:每读完一个来源,就用一两行持久笔记概括其贡献。笔记才是你要保留的内容;对上下文中段细节的原始记忆会逐渐衰退。
  4. 在你的执行环境允许时,委派批量阅读;在自己的上下文中保留结论,而不是整份文件内容。
  5. 当上下文压力增大时,在质量下降之前先把信息外化(见下文),不要等到之后再做。

退出条件:预先提出的问题已按停止条件得到解答,且答案保留在笔记中,而非仅靠未经辅助的回忆。

按风险排序拆解

安排工作时,要优先消除不确定性,而不是追求进展感。

  1. 列出各项决策和未知因素;标记出其中的基础性因素——如果它们发生变化,其他工作就得围绕它们重做。
  2. 首先处理风险最高的基础性未知因素,用能消除它的最小探查手段(技术验证、存根实现或精简的端到端路径)。
  3. 推迟可逆的决策;推迟成本低时,尽量保留选择空间。
  4. 拆分工作,确保每个部分都可独立验证——在大爆发式组装中,集成风险会悄然累积。
  5. 先做最简单的事是一种反模式:它制造了显而易见的进展,却让致命的未知因素一直拖到最后,而那时解决成本最高。

退出条件:剩余工作的不确定性很低——不存在会使已完成工作失效的未知因素。

触发条件

预先设定机械式停止条件——因为到了当下,你会为继续下去找理由。

  • 同一修复失败两次 → 停止。第三次尝试必须采用不同的策略,而不是加大力度;通常应进行诊断(见差异诊断)或升级处理。
  • 循环修改——第三次因相同原因修改同一文件 → 停止,从头重新阐述实际问题。
  • 范围偏移——当前操作很难与既定目标建立联系 → 停止,重新推导从目标到操作的逻辑链;删减或重新规划。
  • 意外情况——任何与记录相矛盾的观察结果 → 在继续下一步之前进行差异诊断。
  • 沉没成本——“已经投入太多,不能改变做法”本身就是触发条件,不是继续下去的理由。

触发条件被触发,意味着获得了信息,而非遭遇失败。真正可贵的做法,是在出现信号时尽早改变策略,而不是等到精疲力尽后才改变。

状态外置

假设上下文随时可能丢失;工作的方式应让这几乎无关紧要。

  1. 将持久状态——计划、有理由支撑的决策、台账、待解问题、下一步——保存在产物中,而不是脑海里。持续记录:状态一有变化就更新产物,不要等到最后才一次性整理。
  2. 记录“为什么”,而不只是“是什么”:缺少理由的决策会被接手的人反复审议,代价高昂——包括未来的你。
  3. 在每个自然的暂停点,问问自己:一个新接手的 Agent 能否仅凭产物继续工作?如果不能,就把缺失的信息作为下一项记录下来。
  4. 将持久知识存放在任务结束后仍会留存的地方(项目记忆、设计文档、笔记),不要把它留在对话中。

退出条件:一个从零开始的读者仅凭产物就能继续工作。

防护原则

  • 不要为了严谨而严谨。台账、假设和检查的作用是改变你的行动;如果某种流程从未影响决策,那就是浪费——改用更轻量的象限。
  • 不要让这种工作方式取代阶段技能自身的流程;它只是补充。
  • 不要在任务中途悄悄降低标准。如果因时间或上下文压力而放弃某项规范,请明确说明。
  • 如实报告不确定性,绝不粉饰:标记为 assumed 的说法,在最终总结中仍须清楚标明是假设。

预期成果

  • 结论可追溯到已验证的观察;假设清晰可见,而不是藏在流畅的表述中。
  • 对故障作出解释,而不是绕过问题打补丁。
  • 趁改变方向仍然代价低廉时,优先消除风险最高的未知因素。
  • 一旦出现信号,立即调整策略,及早应对失败。
  • 在任何阶段,即使上下文丢失,也能继续工作;接手者仅凭产物就能接续工作。

评论

支持 Markdown