模块一:上下文治理 —— 解决 AI 的“失忆与注意力涣散”
大模型的底层逻辑是无状态特性的(Stateless),每次对话都会把历史记录打包成一个巨大的 JSON 数组全量发送。上下文越长,API 越贵,且 AI 越容易产生幻觉(忘记初始设定)。
为了保持 AI 的“绝对清醒”,工程上衍生出了以下四大治理手段:
1. Sub-agent 模式(物理隔离)
- 痛点:遇到具体的细节 Bug 时,如果直接在主会话中让 AI 反复试错,这些“垃圾过程”会严重污染上下文,导致主 Agent 忘记全局架构设计。
- 解法:主 Agent 充当架构师(保持上下文纯净);遇到 Bug,临时拉起一个 Sub-agent(修 Bug 专员)独立试错,成功后只把最终代码返回给主会话。
- 💡 经典使用场景:你在开发 C 端阅读平台时,主 Agent 帮你搭好了 Nuxt 4 的整体架构。但在写立体书翻页效果时,CSS 3D 动画一直有透视错错乱的 Bug。此时千万别在主对话里来回贴报错代码,而是把这个独立的翻页组件单独发给一个 Sub-agent 去疯狂调优,调顺滑了,再把最终的组件代码合并回主干。
2. 对话分支与状态回溯 (Conversation Forking / Backtracking)
- 痛点:在解决复杂问题时,AI 经常会给出错误的技术路线(比如引入了一个不兼容的库)。顺着这个路线聊下去,会引发更多连锁报错,导致整个对话陷入“疯狂补锅”的死胡同。
- 解法:像 Git 回滚一样,在对话历史中找到“走偏前的那一条消息”,直接执行回溯(或者 Fork 出一个新分支)。此时不仅代码状态回到了过去,大模型的“脑子”(上下文记录)也被清除了那段失败的试错记忆。
- 💡 经典使用场景:你遇到一个 SSR 水合报错 (Hydration Mismatch)。AI 建议你安装一个第三方 NPM 插件来解决,结果安完之后报了 10 个跨域相关的错,你们顺着这 10 个错又排查了 5 轮,越弄越乱。此时直接回退到 AI 提议装插件前的那句话,放弃这条错误路线,让 AI:“这个插件会引发更多问题,请提供一个纯原生的同构预取方案。”
3. /compact 摘要机制(状态压缩)
- 痛点:历史对话过长面临 Token 溢出(滑动窗口直接截断会丢失早期设定的关键规范)。
- 解法:利用大模型做“记忆快照”。将几十轮废话压缩成高密度的结构化文本,替换掉冗长的原始历史,既省 Token 又防偏题。
- 💡 经典使用场景:项目开发了一周,当前的对话历史里堆满了你们关于数据库选型、早期表单交互方案的争论。现在你准备开始写核心逻辑了,直接使用 /compact,大模型会在后台把前面的长篇大论压缩成:“【当前状态】前端使用 Vue 3;【核心约定】严格校验类型,不可变数据更新;【下一步】开发文章渲染模块”。让 AI 甩掉历史包袱,轻装上阵。
4. 代码检索的演进(RAG 的局限与 AST 突围)
- 痛点:传统的向量检索(RAG)靠“语义相似度”找代码极不靠谱,经常把带有相同单词的无关注释找出来,却漏掉了真正互相依赖的函数。
- 解法:利用 AST(抽象语法树)与符号表检索(Symbol Search)进行精确的上下文提取,让 AI 像真正的编译器一样顺藤摸瓜找依赖。
- 💡 经典使用场景:你在开发一个智能体平台,想让 AI 帮你修改 User 相关的状态逻辑。传统的 RAG 可能会找出所有写着 “user” 这个词的无用文件;而通过 ts-morph 等 AST 工具进行静态分析,系统能精确提取出你定义的 TypeScript 接口类型(Interface)、与之关联的全局状态树(Store)以及调用的 API 函数,将最精准的上下文喂给 AI,彻底消灭代码幻觉。
模块二:工具链范式演进(Toolchain Evolution)—— 如何让 AI 具备行动力
目前的研发效能工具链正在经历从“喂饭式”到“自主式”的演进,核心分为两大流派:
- Skill + Bash(敏捷范式):
- 本质:Prompt as Code。把高频开发场景沉淀为结构化的“技能卡片”。
- 运作:不再给 AI 封装繁琐的读写函数,而是直接给它赋予 Bash(终端)权限。AI 像真实程序员一样,遇到问题自己敲 cat 读文件、grep 搜代码。效率极高,是目前 Cursor / Devin 等先进工具的主流玩法。
- MCP 协议(重型防御):
- 本质:Model Context Protocol,强类型、强定义的 API 边界。
- 运作:人类必须手写具体的工具函数(如 query_db),并定义严格的入参 Schema。AI 只能在规定好的函数列表中选择调用,无法越界。
模块三:MCP 深度祛魅 —— 穿透黑盒看底层原理
虽然外界把 MCP 传得很神,但作为架构师,必须看透它的物理形态和生态定位。
1. 祛魅:它只是一个 Node.js 进程
MCP Server 听起来高大上,剥开来看,它就是一个常驻在后台的普通 Node.js / Python 脚本。它没有任何黑魔法,只是执行着普通的本地文件读写(fs.readFile)或数据库查询逻辑。
2. 底层原理与作用(AI 界的 USB 接口)
- 原理:它是基于 JSON-RPC 2.0 规范设计的 C/S 架构。大模型客户端(如 Roo Code)通过标准输入输出(stdio)或 HTTP (SSE),向你的 Node 进程发送规定格式的 JSON 字符串指令;Node 进程处理完后,再以 JSON 格式将结果打印返回。
- 作用:统一规范。以前给不同的 AI 写插件要适配不同接口,现在只要按 MCP 规范写一次本地服务,任何支持 MCP 的大模型“插上就能用”,极大降低了给 AI 写“外挂”成本。
3. 如何实现一个 MCP 服务器
通常不需要从零手写解析逻辑。在 Node.js 环境下,会直接引入官方的 @modelcontextprotocol/sdk(或 FastMCP 等轻量框架)。实例化 Server 后,调用 SDK 暴露的 API 去注册 Tool(定义函数名、入参 Schema 和执行逻辑),最后启动服务监听 stdio 即可。
模块四:安全边界与容错率 —— 为什么生产环境必须用 MCP?
既然 Bash 模式开发效率这么高,为什么在敏感场景或生产环境依然要用看似繁琐的 MCP?这取决于爆炸半径与容错率的差异:
- 本地开发环境(适合 Bash,极致提效):
- 容错率极高:有 Git 作为“后悔药”(
git reset --hard瞬间恢复)。 - 人在回路(Human-in-the-loop):危险操作前会有确认弹窗,人类的双眼是最后一道防线。
- 爆炸半径小:哪怕 AI 产生幻觉执行了
rm -rf /,损失的也只是一台个人电脑的环境。
- 容错率极高:有 Git 作为“后悔药”(
- 线上生产环境(必须 MCP,极致安全):
- 数据不可逆:真实的业务数据库被删改是灾难性的,无法简单撤销。
- 无人值守:Agent 通常在后台异步运行,一旦产生幻觉(大模型的概率性缺陷),没有任何人能拦住它。
- 爆炸半径极大:涉及全量用户资产 and 公司生命线。
- MCP 的核心价值:用人类编写的、确定性的沙盒代码(权限校验、只读拦截),去兜底大模型概率性的危险行为。它是关住猛兽的那道防弹玻璃。