当前位置: 首页 > news >正文

用 AI Coding 做项目时,我踩过的坑

用 AI Coding 做项目时,我踩过的坑

最近我在做一个叫 wherewasai 的小项目。

它的起点很简单:我用 Codex、Claude Code、Cursor 这类工具写代码时,经常隔几天才回到某个项目。再打开的时候,我已经忘了上次做到哪一步。之前为什么选 CLI?哪个功能已经写完?哪个坑还没填?下一步本来想做什么?

这些东西不在代码里,也不在 README 里。它们散在一段段对话里。

时间一长,AI Coding 的对话记录就像一堆临时便签。每张便签都有用,但你真要找某个项目的上下文时,只能一条条翻。

所以 wherewasai 想解决的不是“帮我记笔记”,而是:

我重新打开一个项目时,能不能快速知道上次和 AI 一起开发到哪里了?

更具体一点,它应该是一个面向 AI Coding 的本地项目记忆工具。它识别当前项目,保存和这个项目有关的开发记忆,记录关键决策、当前进度、待办事项,并在需要时导出一段可以直接贴给 AI Coding 工具的上下文。

做这个项目的过程中,我对 AI Coding 的感受也变得更具体了。AI 能写代码,但它不太会自然地替你守住项目边界。你不给边界,它就会补全。补着补着,一个小工具就变成了平台。

这篇不是 wherewasai 的完整设计文档,只是我在做它时踩过的一些坑。

不要一开始就让 AI 做完整项目

最开始构思 wherewasai 时,我很自然地想对 AI 说:

帮我实现一个 AI 项目记忆管理器。

这句话看起来没毛病,但对 AI 来说太大了。

wherewasai 牵涉的东西不少:项目识别、对话记录整理、本地存储、CLI 命令、上下文恢复、摘要生成、历史决策、待办管理。再往后想,还能加 Web UI、编辑器插件、云同步、团队协作、各种 AI Coding 工具集成。

如果一上来就让 AI “实现完整项目”,它通常会给你一套看起来挺完整的系统:前端页面、后端接口、数据库表、用户系统、标签系统,甚至云同步和权限管理。

问题是,第一版根本不需要这些。

wherewasai 的第一版应该很克制:在本地项目目录下保存项目记忆,通过 CLI 查看和更新记忆,再导出一段恢复上下文。只要这条主流程跑通,项目的价值就能验证。

我后来才意识到,复杂项目的第一步不是写代码,而是缩范围。你要先让 AI 帮你把问题说清楚:

先不要写代码。请帮我分析 wherewasai 的 MVP 范围:
- 它解决什么问题;
- 第一版必须做什么;
- 哪些功能暂时不做;
- 为什么第一版优先选择 CLI;
- 本地 JSON 存储是否够用;
- 后续可以怎么扩展。

这一步看着像空谈,其实很值。很多个人项目不是死在代码上,而是死在第一版做得太满。

wherewasai 很容易被 AI 写偏

wherewasai 很容易被理解错。

它像笔记工具,因为它要记录项目记忆。它像项目管理工具,因为它要记录进度和待办。它像知识库,因为它要整理历史上下文。它也有点像 AI Coding 工具的辅助插件。

这些相似点会让 AI 自动脑补。

提示不清楚时,AI 可能会把它写成普通笔记软件,让用户手动创建笔记、手动打标签、手动维护分类。这个方向其实偏了。wherewasai 不是为了记录更多笔记,而是为了恢复 AI Coding 项目的开发上下文。

AI 也可能把它写成 Web 平台:登录注册、多用户空间、团队协作、云端同步、权限系统,一套配齐。这些功能不是没价值,只是对第一版太重。个人开发者做 MVP,最怕的就是核心需求还没验证,先背上平台级复杂度。

还有一种偏法更隐蔽:把 wherewasai 写成聊天记录搜索工具。它解决了“怎么找到历史对话”,却没解决更关键的问题:找到之后怎么恢复上下文?恢复给谁?恢复成什么格式?哪些信息对下一次开发有用?

所以我现在会先把边界写清楚:

wherewasai 是一个面向 AI Coding 的本地项目记忆管理工具。它不是普通笔记软件,也不是团队项目管理平台。
它的目标是帮助用户在重新打开旧项目时,快速找回之前和 AI Coding 工具一起开发形成的上下文。第一版优先做 CLI,不做复杂 Web UI,不做云同步,不做多用户系统。

这类“它不是什么”的描述很重要。AI 经常不是不会写,而是会沿着它觉得合理的方向把项目补大。边界不写清楚,它就容易把轻量工具写成复杂平台。

小闭环比大功能可靠

做 wherewasai 时,我越来越相信“小闭环”。

一个小闭环至少要满足四件事:能写完,能运行,能验证,出问题能回滚。

比如:

实现 init 命令。
运行 wherewasai init 后,在当前项目下创建 .wherewasai 目录和 memory.json。

这就是一个小闭环。目标清楚,影响范围小。写完以后跑一次命令,看目录和文件有没有生成,就知道结果对不对。

但“实现完整项目记忆管理系统”就不是小闭环。它里面有太多设计选择。AI 可能写出一堆代码,但你很难判断它到底完成了什么,也很难在出问题时快速回到上一步。

wherewasai 可以拆得很小:

  • 第一步只做 init
  • 第二步只做本地记忆文件读写
  • 第三步只做添加一条项目记忆
  • 第四步只做列出项目记忆
  • 第五步只做导出恢复上下文

每一步都能单独运行、单独验证。

我现在更常这样给 AI 分配任务:

本次只实现 init 命令。要求:
- 执行 wherewasai init 后,在当前项目根目录创建 .wherewasai 目录;
- 在目录下创建 memory.json;
- 如果目录已经存在,不要覆盖已有内容;
- 完成后给出运行命令、预期输出和失败排查点。不要实现 add、list、restore 等其他命令。

任务越小,AI 越不容易发散。它很擅长在明确边界里完成工作,但不适合在没有边界的情况下自由发挥整个系统。

先让 AI 解释项目,再让它改代码

wherewasai 第一版不算特别大,但模块边界仍然要守住。

CLI 负责命令入口,storage 负责本地文件读写,project detector 负责识别当前项目,memory 模块负责管理记忆内容,exporter 负责导出上下文。AI 如果没理解这些边界,很容易把代码写乱。

比如项目里已经有 storage 层了,它可能还在 command 文件里直接读写文件。已经有统一类型了,它可能又在新文件里定义一套。已经有 CLI 注册机制了,它可能再写一个入口。

代码可能能跑,但结构会越来越乱。

所以我不太会直接让 AI 上手改代码,而是先让它解释当前项目:

你先不要修改代码。请先阅读这些文件:
- src/cli.ts
- src/commands/init.ts
- src/storage/jsonStore.ts
- src/types/memory.ts请说明这些文件的职责、当前调用关系,以及如果要新增 list 命令,最合适的接入点在哪里。

如果 AI 连现有逻辑都解释不清楚,我就不会让它继续写。因为它大概率会接错位置。

复杂项目里,AI 最常犯的不是语法错,而是结构错。语法错很好修,结构错会让项目越写越拧巴。

文件级任务能明显减少失控

我现在用 AI Coding 时,最常做的一件事就是限制文件范围。

不要让 AI 在整个项目里自由改。直接告诉它:本次允许读哪些文件,允许改哪些文件,哪些文件不能碰。

比如:

本次任务只实现 list 命令。允许修改:
- src/commands/list.ts
- src/cli.ts
- src/types/memory.ts禁止修改:
- src/commands/init.ts
- src/storage/jsonStore.ts
- package.json
- 项目目录结构如果你认为必须修改其他文件,请先说明原因,不要直接改。

这样做之后,AI 的影响范围会小很多。就算写错,也错在几个文件里,检查和回滚都方便。

wherewasai 这种项目看起来不大,但一旦涉及 CLI、存储、项目识别、上下文导出、摘要结构,就很容易牵一发动全身。不限制文件范围,AI 可能为了一个小功能顺手改好几个模块。

修 bug 时更要限制:

只修复当前 bug。
不要重构。
不要修改公共接口。
不要改变现有目录结构。
不要实现本任务之外的功能。

这些话看起来重复,但对 AI 有用。AI 经常喜欢“顺手优化”。复杂项目最怕的就是顺手优化。

禁止事项要写得比需求还清楚

我以前给 AI 提需求时,更多写“要做什么”。后来发现,在复杂项目里,“不能做什么”同样重要,有时更重要。

wherewasai 开发中,我会经常写这些限制:

不要重构无关代码。
不要修改已有命令的行为。
不要改变 memory.json 的字段结构。
不要引入新的大型依赖。
不要改变现有目录结构。
不要删除已有注释。
不要实现本任务之外的功能。
不要把本地 CLI 工具改成 Web 项目。

其中“不要改变 memory.json 的字段结构”尤其重要。项目记忆文件一旦写入,就会成为后续功能依赖的数据基础。AI 随手改字段,之前保存的数据可能就不兼容了。

“不要把本地 CLI 工具改成 Web 项目”也很有必要。AI 很容易把产品做完整,但 wherewasai 第一版追求的是轻量、直接、能验证,而不是一开始就做成平台。

说到底,AI Coding 不是让 AI 尽情发挥,而是让它在清楚的边界里执行任务。

让 AI 先复述规则

真正写代码前,我会让 AI 先复述一遍任务。

在开始之前,请先复述本次任务目标、允许修改的文件、禁止事项和验收标准。
复述完后,先不要写代码。

这一步能提前发现偏差。

比如我明明说了“不修改 storage 层”,AI 复述时却说“需要调整 storage 的读写逻辑”,那就说明它已经准备走偏了。这个时候纠正,比等它写完一堆代码再改省事得多。

这其实就是开发前的需求对齐。复杂项目里,越早发现理解偏差,代价越小。

不只要运行命令,还要预期输出

AI 写完代码后,不能只让它告诉你怎么运行。因为“能运行”和“运行正确”不是一回事。

wherewasai 是 CLI 工具,很多结果发生在本地文件系统和命令行里。如果没有明确的预期输出,很容易出现“没报错就算成功”的错觉。

比如 init 命令写完后,我会要求 AI 给出这样的验收说明:

运行命令:
wherewasai init预期结果:
- 当前项目根目录下生成 .wherewasai 目录;
- 目录中生成 memory.json;
- memory.json 包含初始结构;
- 重复执行 init 不会覆盖已有内容。如果失败,优先排查:
- CLI 入口是否注册;
- 当前工作目录是否正确;
- 文件写入权限是否正常;
- storage 模块是否处理了目录不存在的情况。

这类信息对调试很有用。尤其是普通开发者,很多时候不是不会运行项目,而是不知道运行后的结果算不算对。

我现在会要求 AI 在完成后说明:改了哪些文件,怎么运行,怎么测试,成功时看到什么,失败时先查哪里。

项目记忆不能只是堆文本

wherewasai 的核心是项目记忆,但项目记忆不能只是把一堆对话塞进文件。

如果只是把历史对话或摘要原样堆起来,时间一长,它会变成另一个信息垃圾堆。你本来想解决上下文混乱,结果只是把混乱从聊天记录搬到了本地文件。

有用的项目记忆应该是结构化的。至少要区分:

  • 项目目标
  • 技术栈
  • 当前进度
  • 已完成功能
  • 关键决策
  • 已知问题
  • 下一步任务
  • 常用命令

导出的恢复上下文可以长这样:

# 项目目标# 当前技术栈# 已完成功能# 关键设计决策# 当前待办# 已知问题# 常用命令# 本次建议恢复上下文

wherewasai 真正要保存的不是“更多内容”,而是“下一次开发真的用得上的内容”。

上下文不是越多越好。给 AI Coding 工具恢复上下文时,如果贴进去一大堆不分层的信息,AI 反而容易抓不住当前任务。

restore 不能太长

刚开始设计 restore 功能时,我本能地想把历史信息尽可能都导出来。毕竟 wherewasai 是做项目记忆的,似乎导出越多越完整。

后来发现,这个想法不对。

AI Coding 工具不是读得越多效果越好。上下文太长时,它会看到很多过去的细节,却抓不住现在最要紧的任务。尤其是复杂项目里,过多历史会干扰当前开发。

所以 restore 应该有取舍。它不该只是把所有历史记录拼起来,而应该导出一段面向下一步开发的上下文。

比较合理的恢复内容包括:项目目标、当前架构、最近完成的功能、关键技术决策、当前待办、禁止事项和下一步建议。

wherewasai 的价值不是“存得多”,而是“恢复得准”。

AGENTS.md 比 AI_RULES.md 更适合长期项目

做 wherewasai 时,我一开始想在项目里放一个 AI_RULES.md,专门写给 AI Coding 工具看。这个文件的作用很直接:告诉 AI 在这个项目里怎么工作,比如不要随便重构、不要改已有命令行为、不要引入新依赖、修改前先说明计划、写完后给出测试方式。

后来我觉得,AGENTS.md 可能更合适。

两者定位很接近,都是项目级规则文件。区别在于,AI_RULES.md 更像自定义文件名,通常需要你在提示词里明确要求 AI 去读它。AGENTS.md 更像写给 coding agent 的项目 README,适合放项目背景、构建命令、测试命令、代码风格、目录约束和禁止事项。

如果工具支持自动读取这类文件,AGENTS.md 更自然。即使不自动读取,也可以在提示词里说:

请先阅读 AGENTS.md,然后按其中规则完成任务。

wherewasai 里我更倾向于直接使用 AGENTS.md,而不是再单独维护一个 AI_RULES.md。两个文件同时存在,容易重复,甚至冲突。

一个适合 wherewasai 的 AGENTS.md 可以这样写:

# AGENTS.md## Project Goalwherewasai is a local-first AI coding memory manager.Its goal is to help users recover project context from previous AI Coding sessions.This project is not a general note-taking app, not a cloud platform, and not a team collaboration system.## Current Product DirectionThe MVP should focus on CLI-first and local-first workflows.Do not introduce Web UI, cloud sync, login system, team features, or permission systems unless explicitly requested.## Coding Rules- Explain the plan before modifying code.
- Do not perform unrelated refactoring.
- Do not change existing command behavior unless the task explicitly requires it.
- Do not change the existing directory structure without approval.
- Do not introduce new dependencies unless necessary and explained.
- Keep each task small and verifiable.
- Prefer modifying 1 to 5 files per task.
- Reuse existing utilities, types, storage logic, and command registration patterns.
- If similar code already exists, reuse it instead of duplicating logic.
- If a required change breaks these rules, stop and explain why before editing.## Verification RulesAfter changes, always provide:- changed files;
- run command;
- expected output;
- test method;
- failure troubleshooting points.## Data Rules- Do not casually change the memory file schema.
- Keep project memory structured.
- Recovery context should be concise and useful for the next AI Coding session.
- Do not turn project memory into a plain text dump.

这个文件不要写太长。它应该只保留长期稳定、真正重要的规则。临时需求写进去太多,AI 每次都要读一大堆无关信息,反而会分散注意力。

不要让 AI 重复造轮子

项目迭代几轮后,代码里一定会有已有工具函数、已有类型、已有命令注册方式。AI 如果不先搜索,很容易重复写一套类似逻辑。

比如项目里已经有 jsonStore.ts 负责读写文件,它可能又在 list.ts 里直接用 fs.readFileSync。项目里已经有 MemoryItem 类型,它可能又定义一个 MemoryRecord。短期看没什么,长期会让项目越来越难维护。

所以我会在提示词里加一句:

实现前,请先搜索项目中是否已有类似实现。
如果已有类似函数、类型、命令注册方式或工具方法,请优先复用。
不要重复造轮子。

AI 写新代码很快,但如果每次都写一套新风格,项目会散掉。一致性比单段代码写得漂亮更重要。

让 AI 换角度审查代码

AI 不只适合写代码,也适合审查代码。

在 wherewasai 里,写完一个功能后,我会让 AI 换几个角度看刚才的改动:

请分别从 reviewer、测试工程师、架构师三个角度审查刚才的改动。reviewer 关注代码可读性、维护性和是否有无关改动;
测试工程师关注测试是否充分、边界情况是否覆盖;
架构师关注是否破坏项目结构、接口设计和长期扩展。

对 wherewasai,我还会加一个产品角度:

请站在产品设计角度检查:
- 这个功能是否服务于“恢复项目上下文”;
- 是否把项目做复杂了;
- 是否偏离 CLI 优先、本地优先的 MVP 方向;
- 是否增加了用户的使用负担。

这个角度很有用。wherewasai 最大的风险之一,就是做着做着变成复杂知识库、复杂笔记系统或复杂项目管理平台。产品视角能把问题拉回最初那句:用户上次在这个项目里和 AI 做到哪里了?

我踩过的几个坑

第一个坑,是把 wherewasai 做成普通笔记工具。普通笔记工具关注“记录”,但 wherewasai 更关注“恢复开发上下文”。如果只是让用户手动写笔记,它没有解决 AI Coding 对话历史混乱的问题。

第二个坑,是过度设计。AI 很容易上来推荐 Web UI、数据库、登录系统、云同步和插件生态。第一版真正需要的是跑通本地 CLI 工作流。个人项目先验证价值,再考虑平台化。

第三个坑,是项目和记忆的绑定关系没想清楚。wherewasai 的核心问题是“这段记忆属于哪个项目”。如果项目识别不稳定,比如只靠目录名,就容易出错。后续可能需要结合 Git remote、项目路径、package.json、README 等信息来判断。

第四个坑,是上下文摘要没有结构。只保存一段自然语言摘要,短期够用,时间一长就会乱。项目目标、关键决策、当前任务、已知问题最好分开记录。

第五个坑,是恢复上下文太长。AI Coding 工具不是读得越多越好。恢复内容应该突出当前开发最需要的信息,而不是把所有历史都导出。

第六个坑,是没有及时沉淀技术决策。比如为什么第一版选 CLI,为什么暂时不用数据库,为什么先用 JSON,为什么不做 Web UI。这些不写下来,后面 AI 很容易推翻原来的方向。

第七个坑,是让 AI 自由修改范围。早期我只说“帮我实现 list 命令”,AI 可能顺手改 storage、改类型、改 CLI 入口,甚至重构目录。后来我开始用文件级任务,项目稳定很多。

第八个坑,是忽视验收标准。CLI 工具很多结果都不直观,所以必须写清楚运行命令、预期输出、生成文件和失败排查点。否则很容易出现“看起来完成了,其实不可用”的情况。

最后

做 wherewasai 让我更确定一件事:AI Coding 的关键不是让 AI 一次性写完整项目,而是把 AI 放进一个可控的工程流程里。

先说清楚项目解决什么问题,再把任务拆成小闭环。限制文件范围,写清楚禁止事项,让 AI 先复述规则,再让它动手。写完以后,不只看能不能运行,还要看输出是不是符合预期。

wherewasai 本身在解决“上下文丢失”的问题,而 AI Coding 做复杂项目最怕的也正是上下文失控。这两个问题其实是同一个方向。

有效的 AI Coding,不是让 AI 自由发挥,而是用文档管理上下文,用任务拆分降低复杂度,用文件边界控制改动范围,用验收标准保证结果可靠。

做到这些之后,AI 才不只是一个黑盒代码生成器,而更像一个能长期协作的开发助手。

http://www.gsyq.cn/news/1481537.html

相关文章:

  • VNC远程桌面文件传输终极方案:除了RealVNC,你还有这些开源/免费工具可选
  • 终极指南:如何用EdB Prepare Carefully打造完美RimWorld开局
  • 2026年权威排名 最新烟台正规技工学校、高技能人才培训学校排行:办学实力与口碑实测对比 - 奔跑123
  • 从凸透镜到相机:用初中物理公式1/u+1/v=1/f,彻底搞懂OpenCV相机标定的成像原理
  • 163MusicLyrics:免费开源歌词提取工具,轻松获取网易云和QQ音乐歌词
  • 2026重庆持证导游TOP10测评|第一梯队服务、口碑与体验差异解析 - 随峰国旅
  • 构建企业级权限控制:mini-rbac架构解析与实践指南
  • 2026西安本地导游怎么联系?正规渠道+靠谱联系方式+避坑全指南 - 旅行分享
  • 镜像视界空间实景精准复刻技术,构建法庭庭审可视化视频孪生系统
  • 基于plc的喷泉控制系统设计(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • CSDN AI数字营销效果追踪全指南(附可复用的7日归因分析模板)
  • PPTC自恢复保险丝:从原理到实战选型与PCB布局避坑指南
  • 5分钟快速上手:让模糊图片和视频秒变高清的免费AI工具
  • UndertaleModTool终极教程:轻松解包和修改GameMaker游戏的完整指南
  • WPF桌面应用开发实操包:含布局控件、数据绑定、动画与3D示例项目
  • EBGaramond12字体:如何免费获得最优雅的经典Garamond字体完整家族
  • 如何快速去除抖音视频水印:免费在线工具的完整指南
  • 分布式链路追踪从埋点到排障:Go 微服务中的 OpenTelemetry 生产实践
  • 上海铁锅炖大鹅餐厅评测:鲜度与风味的实地对比 - 奔跑123
  • 技术解密:FutureRestore-GUI如何重塑iOS设备恢复体验
  • 2026徐州黄金回收怕被坑?先看2026年最新实测榜单,这几家零差评 - 商业快讯早知道
  • 多 Agent 协作系统架构设计:从编排模式到生产落地
  • 2026年6月 最新北京门窗定制品牌排行:5家头部品牌实测对比解析 - 奔跑123
  • 【分享】3.4 用人部门 vs HR——两个话语体系,两套评价标准,谁说了算?
  • Mac用户抢票神器:12306ForMac终极使用指南
  • 【分享】4.1 猎头问的“你的核心竞争力是什么“,为什么大多数人答不出来
  • 2026年超声波液位差计优质厂家TOP10:从技术突围到国产替代的选型权威指南 - 液体流量液位品牌推荐
  • 2026 江阴漏水维修攻略|苏易修缮推荐:卫生间/阳台/外墙/屋顶/地下室漏水|靠谱防水门店推荐 - 苏易修缮
  • 2026年10款论文降AIGC网站实测:从90%降至10%的靠谱之选 - 降AI小能手
  • 2026年安徽工贸职业技术学院多元化升学国际教育学院怎么报名?招生办联系方式是多少? - cc江江