上周我让 AI 编码助手写一段德州扑克的牌型判断逻辑,开新对话后反复解释了 5 分钟技术栈、洗牌规范、之前的踩坑记录,生成的代码还是有 3 处不符合项目要求,改了半天才过 Code Review。直到我把项目的硬约束、工程约定、踩坑经验整理成一份「项目记忆」喂给 AI,再提需求时,代码一次通过率直接飙到 80%,连之前反复出问题的同花顺边界场景都自动规避了。
什么是「项目记忆」
说白了,项目记忆就是提前把项目的规则、规范、历史经验整理成结构化文档,配到 AI 编码助手的全局提示词里,让它在生成代码、Review 代码、解答问题时自动遵循,不用每次开新对话都从头解释背景。一份完整的项目记忆通常含三个部分:
Hard Constraints(硬约束):项目绝对不能碰的红线,比如技术栈限制、合规要求、依赖协议。以德州扑克项目为例,硬约束包括「所有牌局、用户筹码数据必须加密存储,禁止明文落盘」「依赖必须使用 MIT/BSD 协议,禁止引入 GPL 协议组件」「所有对外接口必须做参数签名校验,防止恶意请求」,每条都能落地、可校验。
Engineering Conventions(工程约定):团队默认的代码规范、目录结构、通用片段规则,比如「牌型判断必须返回 PokerHandType 枚举,禁止用字符串自定义牌型」「通用洗牌算法统一放在 src/utils/poker.ts,禁止重复实现」「所有异步函数必须返回 Promise,禁止使用 any 类型」,把隐性共识显性化,避免 AI 生成不符合规范的代码。
Lessons Learned(踩坑经验):项目历史上出过的 bug 和正确解法。比如「之前用 Array.sort(() => Math.random() - 0.5) 做洗牌,随机分布不均匀,线上同花概率比理论值高 12% 被投诉,必须使用 Fisher-Yates 洗牌算法」「之前漏判 A2345 同花顺(轮子)场景导致用户投诉,牌型判断逻辑必须覆盖该边界」,让 AI 提前规避已知风险。
配置前后差了多少
我们团队在配置项目记忆前后做了 2 周对比测试,效果很明显,两个场景最直观。
发牌逻辑的开发:没配置前,每次让 AI 写发牌函数,我都得反复解释「项目用 TypeScript+React,洗牌用 Fisher-Yates,牌用枚举类型,加参数校验防发负数张牌」,AI 还是常生成冒泡排序洗牌、把牌写成字符串数组、漏做参数校验的代码,每次改完至少 20 分钟。配置后我只需要说「写个发牌函数」,AI 直接生成符合全部要求的代码------用 Fisher-Yates、返回枚举类型的牌数组、加了参数校验,5 分钟不到就能跑通测试。
牌型判断逻辑:之前线上出过一次 bug,AI 生成的牌型判断漏了 A2345 同花顺(轮子)场景,部分用户的同花顺被判定成普通顺子,引发不少投诉。把这个踩坑经验写进 Lessons Learned 后,再让 AI 写牌型判断,它会自动覆盖轮子场景,再没出过同类问题。
统计下来:配置项目记忆后,AI 生成代码的一次通过率从 35% 提升到 82%,重复代码量减少了 32%,Code Review 耗时缩短 41%,相当于每个开发每周能多出 3 小时核心开发时间。
怎么写出一份靠谱的项目记忆
很多人的项目记忆效果差,本质是内容太模糊、没有可落地的参考。写的时候抓三个点:硬约束要具体,别写「注意合规」,要写「所有涉及用户筹码的接口必须调用 src/utils/auth.ts 里的 verifySignature 做签名校验,校验不通过直接返回 400」;别写「禁止用随机算法」,要写「洗牌、发牌场景必须使用 Fisher-Yates 算法,禁止用 Array.sort 做随机排序」,每条都有明确参考标准。
工程约定要显性化,除目录结构、命名规范外,把常用 code_snippet 直接贴进去,比如洗牌算法实现、牌型枚举定义、参数校验工具函数,AI 生成时会优先复用已有实现,不会自己瞎写。踩坑经验要写清「场景 - 错误原因 - 正确解法」,比如「【坑位 1】场景:牌局洗牌逻辑;错误原因:用 Array.sort 做随机洗牌导致随机分布不均匀,线上同花概率异常;
正确解法:使用 Fisher-Yates 算法,参考 src/utils/poker.ts 里的 shuffle 实现」,让 AI 明确知道问题出在哪、该怎么改。
很多人觉得 AI 编码助手不好用,本质是没给它足够的上下文。项目记忆就是把项目的隐性知识打包喂给 AI,让它不用每次从零理解你的规则。与其每次开新对话反复解释背景,不如花 10 分钟整理一份项目记忆------先列 3-5 条绝对不能碰的硬约束、5 条以内的核心工程约定、2-3 个最严重的踩坑经验及正确解法,配置后 AI 生成代码的匹配度会大幅提升。
做自动化这几年,最耗时间的从来不是写代码,是摸清每个平台的脾气。
这篇里提到的坑,都是真金白银踩出来的。
如果你手上也有重复度很高的活儿------批量发布、数据搬运、有固定规则的机械操作
------可以在评论区说说你的场景,我看看能不能自动化掉。