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

将AI协作编程从“碰运气”的提示工程(Prompt Engineering)提升到“可预期”的上下文工程(Context Engineering)

https://mp.weixin.qq.com/s/dAknYxHhGd0xDNqn9cB73Q

这套方法论的本质,是将你头脑中关于项目的隐性知识(Implicit Knowledge)显性化、结构化,构建成一个AI可以理解和利用的“外部大脑”或“项目记忆体”,从而解决AI因缺乏完整上下文而“犯傻”的核心痛痛点。

下面,我将遵循MECE原则,为你系统性地拆解和总结这篇文章的精髓。


第一部分:问题拆解 (MECE Principle)

为了系统性地理解这篇文章,我们可以将其拆解为以下几个相互独立、完全穷尽的核心问题:

  1. 核心困境 (The Problem): AI辅助编程的根本障碍是什么?(“上下文陷阱”)
  2. 核心原则 (The Principle): 解决这一困境的指导思想是什么?
  3. 系统方法论 (The Methodology): 如何将原则落地为一套可执行的系统性方法?
  4. 实践与工具 (The Practice & Tools): 该方法论在真实场景中如何应用?有哪些工具可以辅助?
  5. 未来趋势 (The Future): AI编程领域正在向什么方向发展?

这个拆解覆盖了从“为什么”到“是什么”,再到“怎么做”和“未来会怎样”的完整逻辑链条,确保了我们能全面理解文章内容。


第二部分:逐一解析

1. 核心困境:“上下文陷阱”的本质
  • 现象: AI生成的代码频繁出错、逻辑不完整、不符合项目规范,甚至“一本正经地胡说八道”。
  • 本质: 这不是AI模型本身“笨”,而是它陷入了“上下文陷阱”。就像一个新加入项目的程序员,如果没有人给他讲解项目架构、业务背景和代码规范,他也不可能写出高质量的代码。AI同样需要 完整、精确、聚焦 的上下文信息才能有效工作。
2. 核心原则:构建高质量的上下文

解决“上下文陷阱”的根本在于构建和提供高质量的上下文。文章将其归纳为四个关键点:

  1. 合理任务分解: 将复杂的大任务分解为AI在其“注意力”范围内能够处理的、边界清晰的小任务。
  2. 完整背景信息: 提供系统架构、业务需求、关键实现路径等全面的背景知识。
  3. 精确指令描述: 使用AI易于理解的、无歧义的语言下达指令(如Markdown、Mermaid图)。
  4. 有效验证反馈: 对AI的产出进行验证,并将错漏之处反馈给AI,让其自我修正。这是一个持续优化的闭环。
3. 系统方法论:像设计系统架构一样设计“上下文架构”

这是文章最核心、最具实践价值的部分。它提出了一套管理上下文的系统性方法,可以称之为“上下文工程”。

3.1. 分层记忆结构 (The Memory Hierarchy)

这种结构化管理上下文的方法,好比为项目构建了一个三层记忆金字塔:

  • 第一层:应用基础记忆 (System-Level Memory)

    • 内容: 项目的整体架构、技术栈、开发规范、通用工具等长期不变的基础信息。
    • 作用: 构成与AI交互的System Prompt,是整个项目的基础规则。
    • 类比: 一个国家或城市的“宪法”和“基础设施规划”。
  • 第二层:功能模块记忆 (Module-Level Memory)

    • 内容: 某个具体功能的完整描述,包括业务链路图、代码入口、核心逻辑、依赖关系等。
    • 作用: 作为AI理解特定功能的关键背景知识。
    • 类比: 一个特定建筑(如医院、学校)的“设计蓝图”和“功能分区图”。
  • 第三层:需求迭代记忆 (Task-Level Memory)

    • 内容: 针对本次具体开发需求的技术方案,包含业务目标、代码改动范围、约束条件等。
    • 作用: 作为提供给AI进行代码生成的最终、最精确的输入。
    • 类比: 对建筑某个房间进行装修的“施工图”。

3.2. AI辅助记忆维护 (AI-Assisted Maintenance)

这套记忆系统并非一成不变,其维护可以借助AI实现“自举”,形成效率正循环:

  • 冷启动: 使用AI编程工具的命令(如Cursor的/Generate Cursor Rules)快速生成初始的“应用基础记忆”。
  • 构建模块记忆: 人类提供功能描述和代码入口,让AI自动检索代码,生成包含链路图的“功能模块记忆”。
  • 生成迭代记忆: 基于前两层记忆,输入本次需求,让AI生成技术方案,即“需求迭代记忆”。
  • 反向更新: 开发完成后,将新的经验和代码变更反向更新到“功能模块记忆”和“应用基础记忆”中。
  • 规范化: 统一使用Markdown (.md) 作为记忆格式,方便在不同AI工具间迁移。

3.3. 代码生成与质量控制

  • 任务拆解: 将技术方案拆解为AI可执行的子任务,分步执行和验证。
  • 测试驱动: 先让AI根据技术方案生成单元测试,确保核心逻辑被覆盖。
  • AI自省 (Self-Review): 代码生成后,要求AI根据技术方案进行自查,发现错漏。
  • 对AI的约束: 在Prompt中明确 禁止“作弊”(如硬编码结果绕过测试)和 禁止“超额输出”(如生成不相关的管理文档),确保AI严格按要求执行。

3.4. 工程师的新角色

在这个新范式下,工程师的角色发生了转变:

  • 从执行者到设计者: AI处理细节,工程师则负责更高层次的软件架构设计、系统控制。
  • 核心能力:
    1. 动态认知AI: 理解当前AI的能力边界,并随模型进步而调整协作模式。
    2. 管理多AI工具: 善用不同工具的优势,实现并行开发。
    3. 软件架构能力: 依然是核心竞争力。
    4. 业务理解与表达: 将业务需求清晰地转化为AI能理解的任务,成为新的“编程技巧”。
4. 实践与工具
  • 工具对比:
    • Cursor: 性价比高,实用性强,适合日常开发。通过放开Pro版用量限制进行错位竞争。
    • Claude Code: 任务完成度更高,尤其擅长解决复杂问题,但费用高昂,存在额度限制,更适合攻坚克难。
    • Devin类Agent: 目前任务完成度较低,尚在探索阶段。
  • 核心观点: 即便是强大的Claude Code,也难以实现完全无监督的长期运行。前期信息输入的完备性后期代码的验收 依然是关键挑战,需要人类深度参与。
5. 未来趋势:MCP协议
  • MCP (Multi-agent Collaboration Protocol): 一种旨在标准化AI大模型与外部工具、数据源交互方式的协议。
  • 本质: 为AI智能体(Agent)提供了一个统一的“接口”或“驱动程序”,让它能更精准、更方便地调用各种外部能力。
  • 影响: 大幅降低了开发强大、可集成AI Agent的门槛,是Agent走向实用的关键一步。

第三部分:总结反思与实践建议

1. 本质洞察

这篇文章的核心思想,是将AI编程从一种“艺术创作”(依赖灵感和个人技巧)转变为一门“系统工程”(依赖流程、规范和架构)。它倡导的“上下文工程”方法论,本质上是在人与AI之间建立一个共享的、结构化的知识库,通过系统性地管理信息流,来最大化AI的确定性和效率,最小化其不确定性。

2. 启发与灵感

  • 代码即知识库: 你的代码库本身就是最宝贵的知识源泉。通过AI工具将其自动化地提炼、总结成结构化的“记忆文档”,可以让新成员(无论是人还是AI)快速上手。
  • Prompt的“升维”: 与其花费大量时间调试单个的、一次性的Prompt,不如投入时间构建一套可复用、可迭代的“记忆系统”。这是一种从“战术”到“战略”的思维转变。
  • AI的“反思”能力: 要求AI对自己的产出(技术方案、代码)进行自查,是一种非常巧妙的质量保证手段,利用了模型的推理能力来弥补其生成能力的不足。

3. 下一步实践建议

对于你个人,可以立刻开始动手实践:

  1. 选择一个项目: 挑选一个你正在进行或熟悉的小型个人项目。
  2. 创建你的第一份“应用基础记忆”: 在项目根目录下创建一个 .cursor.memory 文件夹。在其中新建一个 system_rules.md 文件。
  3. 编写基础记忆: 在文件中用Markdown格式写下:
    • 项目的主要技术栈(语言、框架、数据库)。
    • 核心的项目结构,并用几句话描述每个主要目录的作用。
    • 你的编码规范(命名约定、代码风格等)。
  4. 创建一份“功能模块记忆”: 选择项目中的一个核心功能。新建一个 feature_xxx.md 文件,尝试让AI(或自己)画出这个功能的Mermaid流程图,并列出关键的函数入口和代码文件。
  5. 在实践中使用: 下次对这个项目进行修改时,尝试在你的AI编程工具中引用这些 .md 文件,然后描述你的需求,观察AI生成的代码质量是否有提升。

通过这个过程,你将亲身体验到从“命令AI”到“与AI共建知识”的转变,真正将AI内化为你强大的编程伙伴。

http://www.lryc.cn/news/597276.html

相关文章:

  • 驯服AI的“魔法咒语”:Prompt提示词工程使用教程
  • [特殊字符] 从数据库无法访问到成功修复崩溃表:一次 MySQL 故障排查实录
  • 显微科研中的关键选择:不同显微镜相机技术特性与应用适配性全面解析
  • SpringBoot Stream实战指南
  • Django学习之旅--第13课:Django模型关系进阶与查询优化实战
  • 电科金仓推出AI融合数据库,开启国产数据库新时代
  • 深入理解 Java Builder 设计模式:解决构造函数爆炸问题
  • Java SE:类与对象的认识
  • 编程语言Java——核心技术篇(二)类的高级特性
  • Python 程序设计讲义(9):Python 的基本数据类型——复数
  • LeetCode|Day23|326. 3 的幂|Python刷题笔记
  • Flask框架全面详解
  • Element中ElMessageBox弹框内容及按钮样式自定义
  • 服务器版本信息泄露-iis返回包暴露服务器版本信息
  • [Linux入门] Linux 文件系统与日志分析入门指南
  • Linux中scp命令传输文件到服务器报错
  • (Arxiv-2025)利用 MetaQueries 实现模态间迁移
  • 在 Ubuntu 上将 Docker 降级到版本 25.0.5 (二) 降低版本,涉及兼容性问题
  • 欧盟网络安全标准草案EN 18031详解
  • 我用EV-21569-SOM评估来开发ADSP-21569(十三)-SigmaStudio Plus做开发(4)
  • sqlsuger 子表获取主表中的一个字段的写法
  • 进程间通信之-----零拷贝
  • AI替代人工:浪潮中的沉浮与觉醒
  • 【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习
  • Log4j2漏洞复现
  • 论文解析 基于遗传算法增强YOLOv5算法的合成数据风力涡轮叶片缺陷检测
  • mysql什么时候用char,varchar,text,longtext
  • 什么是HTTP长连接、短连接?谁更能抗DoS攻击?
  • C# 正则表达式
  • C#使用socket报错 System.Net.Sockets.SocketException:“在其上下文中,该请求的地址无效。