[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fxedyURd15SkicCg-LpEwqidwNBULuuAR2CcmbKxVycs":3},{"item":4,"related":51},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":39,"sourceName":40,"sourceUrl":41,"status":42,"seoTitle":43,"seoDescription":44,"canonicalUrl":45,"isFeatured":46,"sno":47,"sortOrder":48,"publishedAt":49,"updatedAt":50,"createdAt":50},"80b0007b-7e95-4f63-b885-28600d2d95ad","article","AI 编程为什么要先 Plan 再 Edit？","ai-coding-plan-mode-before-edit","Plan mode 给 AI 编程增加了一个先理解、再修改的阶段。本文解释计划如何提前暴露需求误解、遗漏边界和过大改动范围，并给出适合普通用户的计划、执行、验证节奏。","很多人第一次使用 AI 编程工具时，会直接输入“帮我把这个功能做出来”。模型很快开始搜索文件、生成代码，几分钟后却发现改动范围越来越大，原本一句话的需求变成一串互相牵连的问题。Plan mode 的价值，就在于给“开始修改”增加一个短暂但重要的阶段：先让 AI 说明它理解了什么、准备怎么做，以及哪里可能出错。\n\n## 计划不是形式，而是一次低成本的需求审查\n\n人在读计划时，最容易发现三类问题。第一，AI 是否把需求理解错了，例如把“仅本人可见”理解成“登录后可见”。第二，它是否漏掉了边界，例如空状态、权限不足、旧数据和失败重试。第三，它是否打算触碰不该修改的文件，例如为了改一个按钮而重写整个路由。\n\n这些错误如果在写代码之后才发现，返工成本通常更高；如果在计划阶段发现，只需要改一段描述。计划模式并不会让模型变聪明，却能让错误更早暴露，让人把注意力放在目标、约束和验收条件上。\n\n## 一份好计划应该包含什么\n\n不要满足于“我会修改前端和后端，最后运行测试”这种空泛总结。一个有用的计划至少要回答：\n\n- 会先阅读哪些文件，为什么要读它们？\n- 哪些接口、数据结构和公开行为不能改变？\n- 会分成哪些独立步骤，每一步如何验证？\n- 哪些地方存在不确定性，需要人做决定？\n- 如果中途失败，怎样回退或保留已有功能？\n\n例如要给账单页面增加筛选，计划应该说明筛选条件来自哪里、时间范围如何解释、分页是否要重新计算、旧链接能否继续打开。它不需要提前写出所有代码，但必须把真正的决策点暴露出来。\n\n## 先计划再执行，不等于拒绝迭代\n\n计划不是一次性合同。执行第一步后，模型可能发现真实代码和文档不一致，或者测试显示原来的假设不成立。这时应该更新计划，而不是为了遵守旧计划继续向前冲。好的流程是：计划、完成一个小切片、检查结果、根据证据调整下一步。\n\n可以要求 AI 在每个阶段暂停，并报告实际改动、测试结果和新发现。这样人不会只在任务结束时才看到一大份 diff，也不会把所有判断压到最后一刻。\n\n## 什么任务尤其适合 Plan mode\n\n跨多个目录的功能、涉及数据库和接口的改动、遗留代码重构、权限逻辑和需要多轮测试的任务，都值得先计划。相反，改一个拼写、解释一段函数或修复一个明确的类型错误，直接在编辑器里小步处理可能更快。\n\n关键不是每次都强制计划，而是根据改动的半径和失败代价选择流程。计划越具体，越容易审查；执行越分段，越容易回滚。\n\n## 普通用户怎样开始\n\n可以把提示写成：“先不要修改文件。请阅读相关代码，复述需求，列出实现步骤、风险、不会修改的范围和验证方式。等我确认计划后再执行。”如果工具支持计划模式，就先在该模式下运行；如果不支持，也可以用这句话人为建立一个暂停点。\n\nAI 编程的速度很容易让人误以为“越快开始写越高效”。实际上，面对复杂任务，最便宜的错误是计划里的错误。先花几分钟确认方向，往往比最后花几小时收拾一堆局部正确的补丁更划算。\n\n## 来源\n\n- [GitHub Copilot：Agent Sessions](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fhow-tos\u002Fgithub-copilot-app\u002Fagent-sessions)\n- [GitHub Copilot：管理 Issue 与 Pull Request](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fhow-tos\u002Fgithub-copilot-app\u002Fmanaging-issues-and-pull-requests)","\u002Fuploads\u002F2026-09-14\u002Ffa3dbbc4-77bd-4abf-8618-252d72ddd849.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn","foundit-ai-editorial",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31,35],{"id":24,"name":25,"slug":26},"0848beb4-db26-4fb8-b391-f852a11be192","AI编程","ai-coding",{"id":28,"name":29,"slug":30},"144abe77-0dc6-4f66-a176-20bddb1c0bfa","编程","coding",{"id":32,"name":33,"slug":34},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",{"id":36,"name":37,"slug":38},"68cedb55-2cac-412f-8f81-fda8c7d686dd","思考","thought","GitHub Copilot 官方文档","GitHub Copilot Agent Sessions","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fhow-tos\u002Fgithub-copilot-app\u002Fagent-sessions","published","AI 编程为什么要先 Plan 再 Edit：计划模式的价值","解释 AI 编程中的 Plan mode 如何提前发现需求误解、边界遗漏和过大改动，并给出可执行的计划与验证方法。",null,false,59,0,"2026-09-14T00:00:00.000Z","2026-09-14T10:59:52.791Z",[52,60,69],{"id":53,"type":6,"title":54,"slug":55,"summary":56,"coverUrl":57,"authorName":14,"sno":58,"publishedAt":49,"createdAt":59},"3e2a7e9e-a123-4ed6-b886-455e76649df1","AI 编程为什么需要“证据链”？","ai-coding-evidence-chain-logs-tests","AI 说“功能已完成”只是声明，真正可靠的结果还需要 diff、终端日志、测试结果和真实操作共同证明。本文解释不同证据能说明什么，以及如何设计任务收尾模板。","\u002Fuploads\u002F2026-09-14\u002F34be8dc4-3692-47ab-8f7c-226dd203c805.jpg",44,"2026-09-14T11:00:03.458Z",{"id":61,"type":6,"title":62,"slug":63,"summary":64,"coverUrl":65,"authorName":14,"sno":66,"publishedAt":67,"createdAt":68},"ef4aef3e-8062-42e4-88b5-68e42424c3a3","Vibe Coding 最适合做什么，最不适合做什么","vibe-coding-best-and-worst-tasks","Vibe Coding 最适合边界清楚、反馈快速、失败可恢复的任务，最不适合模糊决策和不可逆的高风险操作。本文用任务三问帮助读者判断何时放手让 AI 执行、何时必须人工把关。","\u002Fuploads\u002F2026-09-13\u002Fea45cd7c-a127-4f9e-90db-35cf41ef08bc.jpg",48,"2026-09-13T00:00:00.000Z","2026-09-13T11:56:03.397Z",{"id":70,"type":6,"title":71,"slug":72,"summary":73,"coverUrl":74,"authorName":14,"sno":75,"publishedAt":67,"createdAt":76},"8413c906-e655-4395-9135-ae1eacc96f98","AI 编程为什么第一版很快，第二版却越来越难改","vibe-coding-first-version-fast-second-hard","AI 能迅速做出第一版，却不一定自动带来可维护的第二版。本文解释原型速度为何会转化为结构复杂度，并给出识别重复状态、安排重构和控制 AI 改动范围的实用方法。","\u002Fuploads\u002F2026-09-13\u002Fe68b1156-67d0-47f9-99fc-efeb38aacdc9.jpg",58,"2026-09-13T11:55:45.373Z"]