/crucible
先阅读,最后再提问。人类只回答代码无法解答的问题。
步骤 1:阅读(暂不提问)
以 path:line 的形式记录代码已经明确决定的事实。后续所有提问必须基于这些事实仍无法解答的情况。
步骤 2:决策阶梯(在提出任何新方案之前)
对于所请求变更的每一个部分,在第一个“是”处停止:
- 能否跳过或删除? 需求是否已满足或不再需要?→ 如实说明。
- 仓库中是否已有? 现有的辅助函数、组件或模式 → 复用(注明
path:line)。 - 是否在标准库或现有依赖中? → 使用它。
- 仅此之后: 编写最精简的新代码,不包含任何推测性选项或抽象。
步骤 3:五个维度
对于每个维度,标记其为 已确定(引用代码或请求)或 未确定:
- 范围:包含哪些内容,明确排除哪些内容。
- 数据与状态不变量:必须始终成立的条件。是否需要数据迁移?
- 失败模式:在输入错误、超时、部分失败、重试时会发生什么。
- 安全与信任边界:谁可以调用此功能,使用什么数据,校验在哪里进行。
- 验证证明:哪种检查能证明任务已完成(供
/proof使用)。
步骤 4:仅询问未确定的问题
- 是否有维度未确定,且其答案会影响设计?→ 提问。每批最多 3 个问题。每个问题需附上你的推荐答案及其权衡,以便人类只需说“可以”。
- 维度未确定但影响不大?→ 自行决定,并记录为
assumed(假设)。 - 所有维度都已确定?→ 不提问,直接进入步骤 5。
- 是否存在值得让其他模型参与的真正架构分叉?→ 以当前记录作为制品提交
/council。
步骤 5:记录
编写 .ramos/decisions/<topic>.md:
# <主题>(<日期>)
## 事实(来自代码) - …(path:line)
## 决策阶梯结果 - 复用 X / 标准库 Y / 新建 Z(原因)
## 维度 | 维度 | 已确定/假设/已回答 | 决策 | 来源 |
## 排除范围 - …
## 证明 - /proof 将运行的确切命令
完成条件
当每个维度都已确定、假设或已回答,记录已存在,且证明命令已被命名时,任务完成。如果存在未回答且影响设计的问题 → 停止并向人类报告 blocked。不要开始编码。