用途
Foresee 用于把一份已经确定的方案,展示成一次尚不存在的 PR 的“changes”标签页。读者(可能是产品读者)要判断的是方案的形态是否值得批准,而不是深入代码。它不负责实现,也不重新打开设计讨论。
如果概念仍未确定,应停止,指出哪些地方尚未确定,并指向 melech-pre-plan。不要在 forecast 里凭空发明计划。
主要能力
- 生成单页 HTML:复制 template.html,用文件对象替换 /* FORESEE_FILES */。保留外壳:左侧文件树,右侧红绿行,每个文件一句通俗理由。
- 文件树来自计划:读取已锁定的决策,然后查找该仓库实际会放置变更的位置。文件夹和文件名必须是该 PR 会触及或相邻的位置。行内容保持虚构。
- 每个文件对象包含:folder、name(真实父目录、真实文件名);status(A、M 或 D);add、del(粗略行数,头部合计必须等于各项之和);why(一句产品读者能理解的话);lines({ t, text },t 为 hunk、ctx、add 或 del)。
- 行规则:hunk 用文字命名行为(如 @@ sending the reminder @@),而非真实行号范围;add 行说明新行为做什么;context 行说明什么保持不变;del 行说明该 PR 停止什么行为。写句子,不要导入、签名、类型或从仓库复制的代码。
- 承载行为的文件应最长,页面默认打开该文件。
- 头部 chips 命名评审者可能误以为在 diff 中、但实际不在的内容:没有设置界面、没有迁移、没有无关编辑。三到六个 chips,替换模板中的示例 chips。
使用方式
- 复制 template.html 并替换 /* FORESEE_FILES */ 为文件对象。
- 写入位置:当计划是仓库中的文件时,命名为 <plan-basename>-forecast.html,放在源计划旁;当计划仅存在于对话线程时,写入 docs/forecasts/<short-slug>-forecast.html,docs/ 存在时创建该目录;若仓库没有 docs/,写入工作树根目录并说明。不要放在会发布的源码下。
- 在浏览器中打开该文件。
- 在聊天中简短回复,不要粘贴 diff。回复格式示例:forecast 已打开,它是 changes 标签页草图而非实现:<N> 个文件,+<add> −<del>,仅伪代码;
<path>;点击左侧文件,绿色是新行为,红色是该 PR 停止的行为;该 PR 会包含什么:……;你不会看到什么:……。
关于某个文件的问题,用 forecast 和已锁定计划以同样通俗的语言回答。除非用户更改计划,否则不要开始编码,也不要扩展设计。
适用场景
- 方案已锁定,需要在实现前让评审者(包括产品读者)判断变更形态。
- 需要以文件树和红绿伪 diff 的形式,直观呈现一次 PR 会触及哪些文件、新增或停止哪些行为。
- 需要明确标注 diff 中不包含的内容(如无设置界面、无迁移、无无关编辑)。
限制
- 不实现代码,不重新打开设计。
- 概念未确定时应停止,不得在 forecast 中发明计划。
- 行内容为虚构,不包含真实代码、导入、签名或类型。
- 文件位置有明确约束,不得放在会发布的源码下。
- 资料未提供收费、价格、平台支持等具体信息。