生活分享

Plan 模式:先规划再实现

Plan 模式适合还需要决定范围或做法的工作。它帮你把需求整理成可实作的计划,但计划本身不是已完成的程式。使用时先定义要讨论的问题,再检查计划是否包含输入、输出、限制与验证。

阅读时间约 13 分钟 · 操作 25 分钟

实作顺序示意图,非产品介面截图。
图片:Mokaair (© Mokaair)
本篇目录
  1. 目标与准备
  2. 步骤 1:建立可以重做的起点
  3. 步骤 2:开启 Plan 并调查
  4. 步骤 3:审阅并修订计划
  5. 步骤 4:交付实作并验证
  6. 常见问题、还原与完成条件

目标与准备

先读。Plan 模式适合需求还有选择、需要先读程式或跨越多个步骤的工作。它让 Codex 调查背景、提问及提出计划;不是写了「计划」两字就完成,也不代表权限沙盒已切成唯读。要保护工作范围,仍需检查与目前资料夹。

步骤 1:建立可以重做的起点

由取得练习 ZIP,将 start 内五个档案复制到新的 codex-plan-lab 根目录:index.html、style.css、app.js、core.mjs、core.test.mjs。不要用 expected,否则筛选已修好。用编辑器开此资料夹,终端机确认路径与 node --version。保留原始 start 作为还原来源,不用正式专案练习。

系统终端机:先核对本篇指定的练习目录 · sh
node --test core.test.mjs

先执行测试并保存摘要:教材起点预期 2 项通过、1 项失败。这是准备好的故障,不要先改测试让它变绿;若结果不同,先确认拿的是 start,而不是 broken 或 expected,三份用途不同。

画面验证沿用第一个小专案的 Python 本机预览:先停止自己先前的练习伺服器,再从 codex-plan-lab 启动。Windows 用 py -m http.server 4173 --bind 127.0.0.1;macOS/Linux 将 py 改成 python3。浏览器开 http://127.0.0.1:4173,不要直接双击 HTML。伺服器保留在该终端机,测试命令另开终端机执行;结束后在伺服器终端机按 Ctrl+C。

预览开启后,先保留仍需要的旧练习纪录。在 About this exercise 按 Reset practice data,选 All tasks 并确认清单为空,再新增 Read、Build,只勾选 Read。切 Active/Completed,预期两种选项仍显示这两笔任务。重设只处理教材的储存资料,不要清除整个浏览器的资料。

步骤 2:开启 Plan 并调查

桌面版在本练习专案建立任务,使用输入框的 /plan,或 Add 选单内 Plan mode。CLI 从练习目录执行 codex,待目前工作完成后输入 /plan;官方也列出 Shift+Tab 切换。看清楚目前模式再送出下面的提示词。/plan 输入在 Codex 内,不是 PowerShell、Terminal 或 bash。若版本没有该入口,先更新并查看指令选单,不猜测快捷键。

自然语言提示词:在本练习的 Codex 任务输入 · text
Plan before implementation. In this codex-plan-lab, inspect index.html, app.js, core.mjs and core.test.mjs. Do not edit files yet.
Goal: make All, Active and Completed filters correct.
Keep the current UI, storage format and task ordering. Add no dependencies.
Report the existing selector and event wiring, the failing behavior and the smallest implementation scope. Ask about unresolved behavior before proposing a plan.
The plan must name files, acceptance cases, test commands and a scoped restoration method. Separate observations from assumptions.

先看它是否真正指出 index.html 已有筛选器、app.js 已接上事件、core.mjs 的 visibleTasks 才是缺口。若计划要重做整个画面或安装框架,请它回到现有档案证据,说明必要性。这次答案是保留 All 预设、Active 仅未完成、Completed 仅已完成,顺序不变、空清单仍为空。把这些答案明讲,不让「改善」留给模型自行解释。

步骤 3:审阅并修订计划

可接受的计划像下面这份:每步有输入、修改位置与成功条件,不只是「分析、开发、测试」。你不必要求模型逐字一致,但应能用它判断实作是否超出范围。此处的测试结果是未来要达成的条件,不能在计划阶段写成已通过。预览也要区分人工验证与代理有没有浏览器工具。

参考计划:供审阅,尚不是执行结果 · markdown
# Filter plan
1. Read the existing selector, event handler and tests. Confirm the start fixture's failing filter assertion.
2. Edit only visibleTasks in core.mjs: active selects unfinished tasks; completed selects finished tasks; all keeps every task in order.
3. Run node --test core.test.mjs. Target: all 3 tests pass without changing their assertions.
4. Preview Read (completed) and Build (active). Expect All=Read,Build; Active=Build; Completed=Read. Empty lists stay empty.
Scope: no dependencies, storage migrations, UI redesign or deployment.
Restore: copy only core.mjs from the preserved start fixture back into this lab. The known failing baseline should return.

再补一个条件:「不能原地修改传入阵列,请在计划写入验证方式。」好的修订会说明 filter 回传新阵列且不更动任务物件;All 可以回传原阵列,但不能排序或改值。若模型提出其他必要变更,先厘清理由再更新允许范围,不要只回一个「好」却期待它猜到你保留的限制。

在实作前排除一份看似完整的错误计划

判读例:计划写「重做筛选按钮、安装套件、修改测试让结果通过」,步骤很多仍不符合本练习。既有按钮与事件已存在,缺口是 visibleTasks;应先指出哪些步骤没有程式证据,再要求下列修订。修订后重新对照原范围与空清单、不改输入等条件,通过这一步才交付实作。

自然语言提示词:在本练习的 Codex 任务输入 · text
Revise the plan only; do not implement yet. Use the existing filter controls and event wiring. Limit program changes to visibleTasks in core.mjs, add no dependencies and preserve all test assertions. For each proposed change, cite the observed gap. Include empty input, stable order, no input mutation, actual test execution and separate browser checks. Mark unknown facts instead of assuming them.

步骤 4:交付实作并验证

确认计划后,用画面模式控制切回实作;CLI 可依当前提示使用 Shift+Tab,桌面确认 Plan 已关闭。再送出下面的明确要求。若仍收到另一份计划,先检查模式,不要一口气重送多次。修改完成后看差异,这个教材应只需要 core.mjs 内函式;以下提供对照实作,不必未经阅读就覆盖整份档案。

自然语言提示词:在本练习的 Codex 任务输入 · text
Implement the reviewed filter plan now. Modify only visibleTasks in core.mjs. Preserve task order and do not mutate inputs. Keep tests and other files unchanged. Run node --test core.test.mjs, inspect the final diff and report actual results. If browser verification is unavailable, list the manual cases as NOT RUN. Do not publish or deploy this practice project.
参考函式:只对照 core.mjs 的 visibleTasks · javascript
export function visibleTasks(tasks, filter) {
  if (filter === "active") return tasks.filter((task) => !task.completed);
  if (filter === "completed") return tasks.filter((task) => task.completed);
  return tasks;
}

重跑前面的测试,参考修正应为 3 项全过,再依表格手动确认画面。为避免先前 localStorage 资料影响,使用只有本教材的独立浏览器设定档,或在画面删除先前的虚构任务;不要清除整个日常浏览器的资料。新增 Read、Build,仅勾选 Read,再测空清单。保存实际结果与尚未操作的项目。

输入状态AllActiveCompleted
Read 已完成、Build 未完成Read、BuildBuildRead
无任务空空空

常见问题、还原与完成条件

计划太空泛,就要求每一步指出档案及验收例;假设与实际程式相反,就先重新读档;修改了测试或加了套件,就检查差异并收回超出部分。模式仍是 Plan 而没有改档,不是网站故障。若切成实作却被权限阻挡,处理该次需要的权限,不把关闭所有保护当成标准步骤。没有测试输出时就写未执行。

保留最后计划、只改 core.mjs 的差异、3 项测试与画面表格,才能区分「计划可交付」与「功能已验收」。想重做时,只把保留的 start/core.mjs 复制回练习目录,预期回到 2 过 1 败;不要还原整个工作资料夹或删除登入资料。图中 1 是确认起点,2 是调查与审阅,3 是实作验收。长任务下一步可把结果写成。

08. Plan 模式:先规划再实现 — 实作顺序示意图,非产品介面截图。 Questions → /plan → Implementation
08. Plan 模式:先规划再实现 — 实作顺序示意图,非产品介面截图。 Questions → /plan → Implementation · 图片:Mokaair (© Mokaair)
阅读完整文字说明

Questions to /plan to Implementation

回总目录

  • 生活分享

    Codex 学习中心:完整教程目录

    从安装、第一个任务到 MD 规则与进阶集成,规划 60 篇 Codex 教程、十个单元。按程度、平台、需求或命令搜索下一篇;尚未公开的教程会标示状态,方便安排学习路线。

  • 生活分享

    Worktree 与多任务隔离

    Worktree 让同一个 Git 程式库有不同的工作目录,各自承接不同分支。它适合让两项工作分开改档,但资料库、连接埠与外部服务仍可能共用,不能把档案隔离当成所有资源隔离。

  • 生活分享

    实战:制作小网站

    从 brief.md 规划并制作 Small Steps 待办网站,完成新增、完成、删除、筛选与本机资料保存。将 HTML、CSS、资料函式、画面事件与测试分开,以 Node 测试和浏览器操作验收,并留下可重新启动与还原的交接纪录。

  • 生活分享

    用量与效率:减少重工

    记录任务条件、模型选项、时间与成果,找出能减少无效重试和过多上下文的调整。

最新旅游情报攻略

资料来源

生活分享