
1. 先聊聊八股是怎么来的AI 只是缺一本项目手册如果你用过 AI Agent 做实际项目大概率有过这种体验问它一个具体的技术问题它给出的答案逻辑完整、层次分明、语言规范但就是感觉哪里不对——它建议的技术方案跟你们项目的技术栈对不上它写的代码风格跟你们团队的不一样它给出的排错步骤根本走不通。问题出在哪很多人以为是模型能力不够换个更强的模型就好了。但我的实际经验是问题不在模型在于 Agent 手里没有你们项目的手册。你可以把 AI Agent 想象成一个能力很强但刚入职的实习生。你让它写一个用户登录接口它能把 OAuth2、JWT、Session、SSO 各种方案都给你列出来每个方案都能讲得头头是道。但你问它我们项目该用哪个它就懵了——因为它不知道你们项目是单体架构还是微服务不知道你们已有的用户体系长什么样不知道你们安全团队有没有硬性规范不知道你们老板偏好哪种方案。一个刚入职的实习生拿到需求之后会怎么做他会先翻项目文档、看已有代码、问同事技术选型。但 AI Agent 不会主动做这件事因为它没有常识——它不知道你的项目在哪个仓库、文档在哪、哪些决策是已经被讨论过并定下来的。它只能基于训练数据里别人的项目经验来生成回答而别人的项目经验不等于你项目的实际情况。这就是AI 八股文的根源Agent 在做题但手里没有考纲只能凭感觉写。那怎么解决答案就在标题里——把知识沉淀给 AI Agent。不是让它学习你的项目而是你主动把项目的领域知识整理好、喂给它让它每次做决策、写代码、回答问题时都能先查阅这本手册再结合自己的通用能力给出真正契合项目情况的输出。我见过太多团队在 AI 工具上投入了大量精力各种框架、中间件、 Prompt 工程堆了一堆但最后效果就是看起来很智能用起来很鸡肋。核心原因就是大家都忙着教 AI怎么说话却忘了告诉它你们项目是怎么回事。在我自己的实践里一旦想通给 Agent 喂知识这个方向项目落地的手感完全不一样。下面把我整理的这套方法拆开来讲包括知识怎么分层、怎么组织、怎么让 Agent 真正用起来以及我在实操中踩过的坑。这一篇延续上一篇对八股文的反感不整虚的全部是可以直接拿去用的东西。2. 知识沉淀的三明治结构规则层、资料层、技能层知识沉淀这个词听起来很虚一听就让人想起写不完的文档、没人看的 wiki。后来我换了个思路——不要为了沉淀而沉淀要让知识在 Agent 工作的每一个环节都被消费掉。基于这个目标我把知识分成三个层次自己给它起名叫三明治结构。2.1 规则层告诉 Agent你是谁、边界在哪规则层对应的是项目的宪法是最顶层的约束。它的作用是让 Agent 在任何对话、任何任务中始终知道你在为哪个项目工作这个项目有什么不可逾越的规则。具体包括项目的基本信息项目名、定位、目标用户、核心业务场景技术栈清单前端框架、后端语言、数据库、中间件、部署方式硬性规范比如生产环境禁止直接修改数据库所有对外接口必须走网关代码必须通过 CI 检查才能合并权限边界哪些信息不能对外输出哪些操作 Agent 不能擅自建议规则层不追求多追求准。我见过有人把几十页的公司规章制度全塞给 Agent效果反而更差了——Agent 不知道哪些是高优先级约束赶紧给它一份精炼的项目宪法控制在十到二十条以内。每条规则都应当是项目强约束的真实反映而不是可有可无的建议。这一层知识通过系统提示词System Prompt或者项目级配置文件注入。实操里我会在项目的.agent/目录下放一个RULES.md用固定的格式写清楚然后让 Agent 在每次会话开始时自动加载。2.2 资料层给 Agent 准备一个项目知识库规则层解决的是知道你是谁资料层解决的是了解你做过什么。这一层对应的是项目的各种过程资料和沉淀文档包括历史技术决策记录ADR当初为什么选这个框架放弃了哪个方案架构设计文档模块划分、数据流、接口约定已复盘的问题记录线上故障、生产事故、踩坑复盘代码模块说明核心模块的职责和边界业务术语表项目里特有的名词、缩写、内部叫法资料层的知识量大、种类杂光靠塞进系统提示词肯定不行——这会撑爆上下文窗口。正确的做法是接入检索增强生成RAG把文档拆成小块做向量化索引Agent 在需要的时候按相关性检索出对应的片段拼接到上下文里。比较实用的做法是在团队知识库比如 Confluence、Notion之外单独维护一个Agent 专用知识库把高价值的决策记录、复盘文档、架构说明扔进去。内容不求面面俱到优先收录那些项目里踩过坑才知道的知识——这些恰恰是通用模型训练数据里永远不会有的。2.3 技能层把高频操作变成肌肉记忆技能层是我自己用了之后觉得提升最明显的一层。它解决的是Agent 会做但做得不够贴合你们项目的问题。什么叫项目级技能举个例子。你们项目里有一个自定义的代码生成模板团队内部约定所有新模块都得按这个模板建Controller-Service-Mapper-Entity 一套下来命名规范、异常处理、日志格式都有固定写法。你说帮我新建一个订单模块Agent 如果不知道这套约定它给出的结构就是通用的三层架构跟你们项目风格格格不入。但如果把新建模块的完整流程封装成一个技能Skill里面写清楚模板文件在哪生成步骤是什么先后顺序命名规范是什么生成之后要改哪些配置有哪些容易遗漏的检查项那 Agent 执行起来就是肌肉记忆级别的准确。技能层我见过不少团队在尝试了有人用 LangChain 的自定义工具Tool有人用 Claude 的 Skills 机制也有人用简单的 Prompt 模板 脚本组合。形式不重要核心是把反复重复且有固定套路的操作标准化下来。技能层的维护成本是最低的因为它是按需调用的——Agent 只有接到对应任务时才去加载对应的技能定义。我目前维护了大概十几个项目级技能覆盖了模块生成、接口联调、数据库迁移、依赖升级、发布检查等高频场景日常开发里使用频率非常高。三明治结构的好处是知识各归其位规则层放在每天每个会话的上下文里资料层按需检索技能层按任务触发。既不互相干扰也不会因为知识量太大把 Agent 拖垮。3. 从能用到好用Agent 落地前的最后一公里知识喂进去了Agent 是不是就能用了还差一步。我把它称作最后一公里——让 Agent 不是偶尔翻到你的知识而是每次决策都强制参考你的知识。3.1 别让 Agent凭感觉回答逼它先查资料我在项目里遇到过很多次这样的情况知识库已经建好了文档也喂进去了但 Agent 回答问题时还是不参考依然凭训练数据里的通用经验来回答。后来我发现问题出在知识消费的机制设计上。如果你只是简单地把文档扔给 Agent说你需要时可以查阅那 Agent 大概率不会查——它可以凭感觉直接生成答案这符合语言模型的本能习惯毕竟它在训练时就是靠下一个词预测来输出的。你要做的是在 Prompt 层或者工作流层强制它先检索再回答。我用的办法比较直接在规则层加了一条硬性约束——在回答本项目相关的技术问题之前你必须先从知识库检索相关文档如果检索结果与你的通用知识冲突以检索结果为准。同时在上层应用里调整了 Agent 的执行流程技术问答这个动作被拆成检索知识 → 阅读结果 → 结合通用知识 → 组织回答四个步骤前面三步是串行强制的不允许跳过。效果非常明显。在没加这个机制之前让 Agent 写一个导出功能它建议用 POI 直接操作 Excel加了之后它先检索到知识库里有一篇导出功能必须走异步任务、生成后上传 OSS 再推送下载链接的架构说明整个方案立刻就不一样了。3.2 知识要可检索更要可消费建了知识库不等于知识能被有效消费。这里需要说说 RAG 检索的一些细节。刚开始我图省事直接把 Markdown 文档整个切成长文本块扔进向量库结果检索质量很不稳定——相关性高的片段经常排不到前面Agent 引用的内容经常是看起来相关实则无关的段落。排查后发现几个问题第一切块粒度不对。整篇文档变成一个向量检索时是文档级的命中但内容不够聚焦。我改成按标题层级切块每个章节单独建索引相关性一下子精准了很多。第二纯向量检索不够。向量检索擅长语义匹配但项目知识里很多是精确匹配的诉求——比如检索JWT 过期时间配置在哪、数据库连接池参数这类问题有明确的关键词。我把检索策略改成关键词搜索 语义搜索的混合检索再用一个简单的重排Rerank步骤把两条路径的结果合并排序。第三元数据过滤能省很多事。给每块知识打上标签比如所属模块、文档类型、更新日期检索时先按标签过滤再相似度排序。这就像在书架上先按分类找书再在书里翻页比直接从头翻整本书高效得多。改完这三处之后知识库的调用率才真的上来了——这个指标是我评估 Agent 落地效果的北极星指标每次对话里有多少比例引用了项目沉淀知识。引用率高说明 Agent 真正用上了你们的知识资产。3.3 举个例子同样写登录有知识和没知识差别有多大为了更直观地说明知识有没有喂进去的差距我用自己项目里的真实场景做个对比。需求给一个新的内部管理系统加一个用户登录功能。没有知识库的 Agent给出的方案是使用 Spring Security JWT客户端传用户名密码服务端校验后签发 JWT设置 token 有效期 24 小时前端在请求头里带 Authorization方案没有问题但完全没法直接用。因为我们项目的实际情况是统一认证已经接了公司内部的 SSO OIDC 协议新系统的登录不走用户名密码而是跳转企业微信扫码服务端拿到 code 换 token再做本地会话管理另外安全组有规定内网系统 token 有效期不能超过 8 小时并且要支持主动吊销。这些约束在通用知识里没有但对我们项目的落地是决定性的。知识库里有相关文档Agent 检索后给出的方案就完全不同了接入企业微信扫码登录走 OIDC 授权码流程服务端用已沉淀的AuthStateManager组件管理 state 防止 CSRF按安全规范设置 token 有效期 8 小时并接入统一会话管理平台支持吊销前端路由守卫里按项目现有约定做免登录逻辑两个方案的差距不是优化级别的是能不能用级别的。基于这个对比我再看到有人说AI Agent 做不了实际项目开发会忍不住想你确定不是把 Agent 饿着肚子干了一整天的活吗4. 最容易翻车的三个隐性坑知识库不是建了就完事把知识沉淀给 AI Agent听起来是文档 向量库 检索这么简单。实际做下来翻车的地方不少而且每个坑都会实打实地影响落地效果。我想把最常见的三个坑单独拿出来讲讲因为这些是我踩过之后才真正想明白的。4.1 知识库的保鲜期问题文档更新滞后Agent 反而误事知识库最隐蔽的坑就是过时。项目是活的每天都在变。三个月前的架构决策可能已经不好使了上周刚发的规范说明可能这周就改了。如果知识库里的信息没有及时更新Agent 检索到的是过时内容它给出的方案就会错得非常理直气壮——毕竟它引用的可是你们项目自己的文档。我经历过一次真实场景想起来很后怕。问 Agent 项目里某个老模块的接口设计它检索知识库后给出了答案看起来完全合理。但那个模块在两周前刚刚做了一次大的重构接口已经全部改版了。旧文档没有归档、没有标记废弃Agent 就像那个看了一本过期地图的人信心满满地把你引向了错误方向。解决思路不能指望大家自觉更新文档——靠自觉的事最后基本都会黄。我在团队里做了一个简单的方案文档每周自动检查一次最近更新时间和对应代码提交记录的匹配程度明显滞后的文档会在检索结果里降低权重同时在知识库操作后台加了一个内容修订提醒功能代码提交信息里带着某个知识库文件的路径说明这个知识需要重新审核了。更重要的是我定了一个规矩知识文档与代码同源入库。凡是影响技术方案的内容架构说明、接口约定、部署流程必须与对应的代码变更在同一个合并请求里提交。这一步把代码改了但文档没改的时间差从永远压缩到了提交时。4.2 把不该喂的都喂了知识越权与安全边界知识沉淀还有一个容易被忽视的问题知识库不是装得越多越好尤其是一些敏感信息。我见过有人把生产环境的数据库连接信息直接写进知识文档里理由是方便 Agent 排查问题。这个想法相当危险——RAG 知识库的访问权限通常只覆盖一小部分人但 Agent 的对话记录可能被同步给很多协作成员。如果知识库被检索到敏感内容等于把这些东西直接曝光了。另外要小心权限控制。不同角色对 Agent 的知识可见范围应当是有差异的——架构师能看到的架构决策、数据库设计一线开发不应通过 Agent 检索到测试人员和运维人员需要的知识维度也不同。我给知识库按模块打标签、按角色做隔离对话发起时先确认用户身份检索时只对当前身份可见的知识做候选。还有一条关于合规的底线个人敏感信息手机号、身份证号、内部系统的账号密码不应当作为知识投喂给 Agent 的检索索引。有一次整理知识时差点把 OA 系统的导出功能说明里样例地址给索引了里面的示例数据是真实的员工个人信息幸好发现及时。从那次以后我加了一条硬性规则所有进入知识库的文档必须先过一道脱敏检查。4.3 知识没拆开导致 Agent 迷失在细节里知识组织不当Agent 会只见树木不见森林。我把一整份系统设计方案原封不动地扔进知识库几十个章节拆成几百个向量块。等到 Agent 面对用户改密码的流程是啥这种问题时它检索到的可能是市面上常见的通用流程项目里特殊的密码必须先发短信验证 历史密码不能重复用最近五次的这个关键约束被淹没在庞大的设计方案里了。后来我的做法是给每份文档写一个**摘要块**用三到五行话概括这份文档讲的核心结论单独切成一个向量块放最前面。摘要块明确标注这是文档的结论优先参考。这样 Agent 检索到一个主题时最先命中往往就是摘要块直接拿到结论需要细节时再继续检索正文内容。这个先结论后细节的知识组织方式穿透力比直接堆正文好很多。另外不同主题的知识不要混在一个文档里。我有一次把代码规范和部署流程写在同一篇文档里Agent 在回答部署问题时检索到了代码规范片段整个回答风格完全跑偏。拆开成独立文档让检索主题更聚焦。5. 一次真实知识没喂对的返工排查链路完整复盘前面讲的都是方法论这一节我想把一次实践过程完整复盘一遍。这是我自己项目里真实发生的事——虽然最后解决了但过程很能说明知识喂给 Agent这个事的核心难点在哪里。5.1 现象Agent 给了一个完全正确但项目用不了的方案背景是这样的项目要接入一个第三方支付渠道我让 Agent 帮我写一版对接方案。当时我的知识库已经建好里面放了支付模块的架构设计文档、接口约定、已有的支付渠道对比分析。Agent 输出的方案写得非常好结构清晰、时序合理、异常处理考虑得很周到——如果不了解我们项目简直挑不出毛病。但它有两个致命问题第一它推荐的支付渠道是 A 平台理由是接入成本低、文档完善。但知识库里的渠道对比分析明确写过A 平台在海外网络环境下不稳定公司已经决策统一使用 B 平台而且这个决策是在季度技术评审会上由架构组定的。第二它设计的回调处理逻辑是同步修改订单状态 异步通知业务系统的通用方案但项目的实际架构里订单状态变更必须走消息队列由订单服务订阅消费不能直接在回调里改库——这是为了避免分布式事务问题知识库里有一篇专门的复盘文档讲这件事。方案里每一句话都对但合在一起不是我们项目能用的方案。这就是典型的知识没喂对的症状。5.2 排查链路为什么知识对了Agent 还是没用到开始排查之后我按知识有没有 → 检索能不能命中 → 命中后会不会用 → 用了会不会被别的约束覆盖这个链路一步步查。第一步查知识在不在库。我打开知识库后台确认支付渠道选型决策和订单状态变更架构说明两篇文档都在库里最近更新日期也正常。知识本身没有问题。第二步查检索能不能命中。我把 Agent 当时收到的问题原样输入检索接口看返回的前十条结果。这一查就发现问题了排在最前面的几条都不是我要的文档片段渠道选型决策排到了第十四位订单状态变更架构排到了第九位。而排在前面的全都是通用性的支付流程、支付安全规范这类内容——它们是训练数据里常见的通用知识跟项目文档语义相似度也很高结果把真正的项目知识挤到了后面。第三步查Agent 拿到检索结果后怎么用。看对话中间过程的日志Agent 确实检索了但引用的是排名靠前的通用内容真正的项目知识根本没进入它的有效上下文。再回头看当时的检索设置向量化用的嵌入模型对中长文档的支持不够切块后每个块丢失了很多上下文信息导致语义匹配几乎失效。总之知识在库但检索没命中Agent 于是退回到通用知识去发挥了。第四步查是不是被系统提示词里的其他约束覆盖。我检查了规则层文件里面有一条遵循业界标准方案的约束本来想表达的是方案要规范结果在 Agent 看来成了优先使用通用做法的授权信号。规则层的话术会产生反效果这是我完全没有预料到的。5.3 修复方案三个动作一次到位三个问题分开修。第一个动作调整检索策略。放弃之前用的单一向量检索改成 BM25 关键词检索和语义检索的混合检索再用一个轻量的 Rerank 模型对两路结果做重排。改造之后上述两篇关键文档在检索结果里的排名进到了前三。第二个动作优化切块策略。把按固定字符切块的逻辑改成按 Markdown 标题层级切块保留小标题作为上下文锚点同时把摘要块放在文档最前面作为第一优先级命中的内容。这样像支付渠道选型决策这篇文档摘要里就写着已确定统一接入 B 平台A 平台不在考虑范围内Agent 一检索就能直接拿到结论。第三个动作修订规则层的话术。把遵循业界标准方案改成在项目知识有明确规定时以项目知识为准在项目知识未覆盖时再参考业界通用方案。语气变了约束的方向就变了Agent 不会再自作主张地偏向通用方案。修复之后重新跑了一遍同样的需求和问题Agent 给出的方案基本可以直接用了而且给出了关键理由根据知识库中渠道选型决策本方案基于 B 平台进行设计。虽然这句话在成品方案里可以删掉但从 Agent 的逻辑可以看出来它的确是把项目知识当作决策依据了。5.4 复盘知识沉淀的关键不是存储是消费链路这次返工给我的启发很明确知识沉淀真正要解决的不是知识存在哪里而是知识从存储到被消费的整条链路。知识做得再好检索命不中就等于没有。而检索命中了Agent 引用不当也等于没有。排查的时候还有个发现让我印象很深当时知识包里除了支付相关的文档还放了十几篇其他模块的内容整个库的向量索引里项目知识的密度被稀释了。后来我把知识库按模块拆成了多个子库并给 Agent 配置了路由规则——根据当前任务主题决定检索哪个子库。这个调整之后检索命中率整体提高了不少。知识不在于多而在于需要的时候能精准地拿到那一条对的。6. 把知识即代码作为长期习惯写到这里整套方法的核心已经讲完了。最后再聊一个我自己的体会知识沉淀这件事一定要当成代码工程来做而不是文档任务来做。代码有版本管理、有 Code Review、有测试、有发布流程但大多数团队的知识文档连最基本的版本管理都做不到——改完了就覆盖旧版本找不回来谁改的、为什么改一概没有记录。这跟知识沉淀的诉求完全是背道而驰的。我现在把项目知识跟代码放在同一条流水线里管理项目手册、架构说明、决策记录、技能定义全部以文本文件形式放在 Git 仓库里参与 Code Review随代码一起发布。规则层文本改了要走评审技能定义改了要跑一次技能自检——其实就是让 Agent 在沙箱环境里按新技能定义跑一遍流程验证没有语法错误和执行逻辑混乱资料层的文档更新必须关联到对应的代码变更。这个习惯的养成有个很实际的好处知识会自然跟着项目的演化而演化。代码重构了知识文档在同一次变更里更新不会出现方案文档还停留在上一代架构的情况。新成员入职不是去看一本可能已经过时的 wiki而是直接基于 Git 历史回溯每个决策的上下文。再分享一个小经验给 Agent 用的知识文档最开始写得越短越好。这不是偷懒是因为知识需要先跑起来再变厚。跟写代码一个道理一上来就追求大而全往往跑不动。先放三五篇最核心的文档跑通规则 资料检索 技能触发的完整链路再逐步补充更多内容。链路没有跑通之前堆再多的知识都是死数据。最后说回标题里那四个字——知行合一。AI Agent 能不能让项目落地知行合一取决于你自己有没有先做到知行合一既要知道知识该沉淀也要做到把知识消费链路跑通。知识库建了不去喂、喂了不去检索、检索了不去修正引用每一层都打了折扣Agent 给你交回来的自然也是打了折扣的八股文。反过来每一层都卡到位了它的输出会越来越贴合你的项目到那个时候你会明显地感觉到它不是在做题了它是在干活了。