拒绝盲目 Chat:在存量大型系统中,如何用“图驱动”释放 Cursor 的真实战力

76 阅读8分钟

前言:接手老项目的“双重困境”

最近在项目开发中深度使用了 Cursor,遇到一个非常典型的痛点:如何在存量大型系统中真正提效?

这有别于从 0 到 1 的绿地开发,接手一个存量大型工程,我们往往面临“既要快速上手,又要保证质量”的双重挑战。在实际操作中,这很容易陷入一个两难局面:

  • 全量投喂的尴尬:  如果让 AI 读取全部代码,Token 消耗巨大,经常撑爆上下文窗口。更糟糕的是,模型容易在海量细节中“迷失”,生成的代码往往逻辑自洽但脱离业务背景。
  • 局部投喂的风险:  如果只给部分代码,AI 理解不够全面,容易遗漏跨系统的隐性约束(Implicit Constraints)。写出来的代码看似完美,上线后却发现破坏了现有的架构平衡。
  • 人工梳理的疲惫:  如果靠人工逐文件梳理,这本身就是我们想通过 AI 解决的繁重工作。

这种**“既怕 AI 理解不足埋雷,又不想自己手工填坑”**的焦虑,是大多数开发者面对老项目时的真实写照。

经过一段时间的摸索,我发现破局的关键不在于让 Cursor 读多少代码,而在于引入“图(Diagram)”作为中间语言,将复杂系统的结构显式化。这一转变,彻底重构了我对“AI 辅助开发”的认知。


一、 初阶体验:从“读代码”到“降负载”

在探索“图驱动”之前,Cursor 在基础层面的表现已经证明了其价值。它的核心不在于“替我思考”,而在于极大地降低了认知负荷

1.1 建立心智模型

在熟悉陌生模块时,Cursor 的体验明显优于传统 IDE。

  • 自然语言交互:  可以直接询问“这个 Service 的核心职责是什么”、“异常处理链路是怎样的”。
  • 即时总结:  它可以把散落在 10 个文件里的逻辑,总结成一段伪代码或流程描述。这省去了我们在 Tabs 之间反复跳转、脑补上下文的过程。

1.2 样板代码与局部重构

对于结构明确、逻辑封闭的代码,Cursor 性价比极高:

  • 生成骨架:  Controller / DTO / Converter 等样板代码,AI 可以秒出。
  • 风格模仿:  只要给足上下文(Few-Shot Learning),它能很好地模仿现有的代码风格,减少了代码审查时的格式噪音。
  • 批量修改:  比如“给所有 RPC 调用增加统一的错误码处理”,利用 Cursor 的多文件编辑(Composer)功能,可以实现“机器粗改 + 人工精修”的高效模式。

二、 进阶战法:图驱动开发 (Graph-Driven Development)

在大型系统中,我发现了一个极高杠杆的用法:用 Mermaid 图作为“人与 AI 的中间语言”

本质问题在于:  代码是“线性的、充满细节的”,而系统架构是“拓扑的、高度结构化的”。硬让 LLM 从线性细节里反推拓扑结构,效率极低且容易出错。图,就是系统的 X 光片。

场景 1:逆向工程——快速理解现状

当需要快速理解一个复杂的陌生模块时,尝试以下流程:

Step 1:  让 AI 扫描关键入口文件,生成架构图。

Prompt 模板:
“请基于当前选中的代码结构,生成一份 Mermaid 系统架构图。
要求:

  1. 展示各个 Service 之间的依赖关系;
  2. 标出对外 API 入口(Controller);
  3. 标出外部中间件依赖(Redis, DB, MQ, FeignClient);
  4. 用不同颜色区分核心业务域与支撑域。”

收益:
一张 Token 消耗仅 500 左右的图,能呈现出翻阅 5 个文件才能拼凑出的全貌。这张图不仅是你的理解工具,更可以沉淀在 Git 中,成为项目的“活文档”。

场景 2:正向设计——作为“规范的黏合剂”

在设计新功能(例如:集成一个新的 AI 搜索能力)时,图的作用更加关键。它能避免“开发写到一半发现设计有漏洞”的经典悲剧。

Step 1:绘制“集成全景图”
基于现有架构,先生成一张包含新模块的层级图。显式地回答:新接口在哪一层?调用谁?被谁调用?

Step 2:生成详细时序图
将需求转化为具体的交互流程。

Prompt 模板:
“我们要加入一个新的 [搜索增强模块](如架构图所示)。
请画出完整的 Mermaid 时序图,展示:

  1. 从用户请求到最终返回的每一步;
  2. 各个模块间传递的数据结构(重点关注 Request/Response);
  3. 缓存命中与失效的路径;
  4. 异常情况下的降级策略。”

Step 3:Review 与修正
Review 时序图比 Review 代码容易得多。你可能会发现:“这里漏了一个权限校验”、“缓存失效后没有回源逻辑”。在图上改,成本几乎为零。

Step 4:图生代码
确认图无误后,让 AI 严格照图施工。

Prompt 模板:
“请严格根据上面的时序图,生成:

  1. SearchController 的实现框架;
  2. 调用下游服务的客户端代码;
  3. 对应的单元测试骨架。”

收益:
设计与代码完全对齐。因为它们同源(Source of Truth 都是那张图)。

场景 3:复杂业务编排实战(脱敏案例)

假设我们需要设计一个**“智能导购助手”**,涉及意图识别、大模型推理、商品检索、流式输出等环节。

1. 分阶段拆解:
不要试图让 AI 一次性生成所有逻辑。通过图,我们将需求拆解为“阶段 1:意图路由”和“阶段 2:深度推理”。

2. 细化编排流程(Prompt 示例):

“请绘制 深度推理智能体 的内部编排时序图:

  1. 调用 LLM 生成推荐理由;
  2. 并行调用 商品检索服务 和 营销规则引擎
  3. 聚合数据后,进行流式(Streaming)输出;
  4. 重点展示:前端如何分段接收‘思考过程’和‘最终结果’。”

3. 显性化流式交互:
通过时序图明确定义流式输出的 chunk 结构,避免前后端联调时的协议扯皮。

通过这种方式,我们将模糊的文字需求,转化为了清晰的参与者(Participants)消息(Messages) ,将编码风险在设计阶段降到最低。


三、 祛魅与边界:AI 能做什么,不能做什么

经过实战检验,我们需要对工具的边界有清醒的认识。

3.1 真正有感的提升(Do's)

  • 理解加速:  从“盲人摸象”变为“上帝视角”,上手陌生代码的速度显著提升。
  • 样板消除:  CRUD、DTO 转换、API 封装等重复性劳动,基本实现自动化。
  • 设计落地:  解决了“文档是文档,代码是代码”的两张皮问题。

3.2 此时此刻无法替代的领域(Don'ts)

  • 架构决策:  系统边界划分、技术选型、性能预算(Performance Budget),这些需要权衡组织架构和运维成本的决策,AI 只能提供参考,不能做决定。
  • 隐性业务规则:  那些写在老代码角落里、甚至只存在于老员工口口相传中的“潜规则”,AI 很难一次推断正确。
  • 高危路径:  涉及资金、核心风控、高并发锁的代码,必须由人进行逐行 Review。可以相信 AI 的手速,但不能迷信它的判断力。

四、 避坑指南

  1. 拒绝“一句话需求”:  上下文给太少,答案必飘。尽量采用“选中关键代码 + 补充文字约束”的方式。
  2. 慎用“重写整个类”:  直接让 AI 重构复杂逻辑容易丢细节。稳妥做法是:先让它解释逻辑,确认理解无误后,再分块重构。
  3. 风格对齐:  生成代码前,先喂给它一两个项目内的标准示例(One-Shot / Few-Shot),告诉它“就按这个风格写”。
  4. 图繁则乱:  Mermaid 图不是为了炫技。一张图最好控制在 15-20 个节点以内,聚焦核心链路。太复杂的图反而会增加 LLM 的理解噪声。

结语

Cursor 这类工具的出现,并没有让程序员失业,而是改变了我们的角色。

在“图驱动开发”的模式下,我们更像是一个**“架构设计师”兼“翻译官”**:

  • 我们将模糊的业务需求,翻译成结构化的图(Diagram)
  • AI 将图翻译成具体的代码(Code)
  • 我们再负责 Review 代码与图的一致性,以及最终的业务正确性。

它不是颠覆一切的银弹,但如果用法得当,它确实是应对存量大型系统的一把利器。建议大家在团队中尝试建立一套**“Prompt 模板 + Diagram as Code”**的工作流,这可能是比单纯“换个编辑器”更深远的提效路径。