第3章 基于提示词的AI编程-代码和提示词-林子雨编著《AI编程》

💡 原文中文,约10500字,阅读约需25分钟。
📝

内容提要

本文介绍AI编程实践方法,涵盖提示词正确使用案例(猜数字游戏、密码检测、端口检测)、常见问题(需求不明确、上下文缺失等)、项目说明书AGENTS.md编写、编码规则限制、存量项目维护实践、故障诊断与防御性编程,以及待办事项应用综合案例,展示如何通过结构化提示词指导AI生成代码。

🔎

延伸解读

提示词结构化:从“写代码”到“定契约”

文中案例显示,有效的AI编程提示词并非简单描述需求,而是通过“角色、任务、约束、参考、验收标准”五段式结构,将模糊意图转化为可验证的契约。例如猜数字游戏明确要求处理非数字输入并给出验收用例,密码检测则用具体输入输出界定强弱规则。这种写法能显著减少AI生成代码的歧义,也便于开发者事后核对功能是否完整实现。

常见失败模式:需求模糊与上下文缺失

文章列举了提示词使用的典型问题:需求不明确(如仅说“实现注册接口”而未指定密码哈希、响应格式)、上下文缺失(如修复N+1查询却不提供函数签名和问题代码)、异常处理不完善(如批量短信任务未考虑并发、幂等、重试)。这些案例提示,AI编程的瓶颈往往不在模型能力,而在人类如何清晰传递业务规则、技术约束和边界条件。

项目说明书与规则文件:让AI“入乡随俗”

AGENTS.md和编码规则文件(如alwaysApply)是让AI理解项目架构、编码规范和技术债的关键手段。文中示例涵盖技术栈、目录结构、架构约定(如禁止API层直接访问数据库)、命名规范、错误处理等。通过这类持久化文档,AI生成的代码能更贴合现有代码风格,避免引入不兼容的设计模式或破坏既有架构决策。

存量项目维护:用文档对抗“遗忘”

针对存量项目,文章提出四大实践:架构决策记录(ADR)解释为何订单模块不用软删除、用户模块为何有双ID;关键模块职责说明防止AI越权操作;技术债清单明确哪些模块禁止新增功能;代码审查要点强调审计日志和敏感字段保护。这些做法本质上是将隐性知识显性化,帮助AI在修改旧代码时理解历史约束,降低回归风险。

Q&A

如何用提示词让AI生成一个健壮的猜数字游戏?

在提示词中明确角色、任务、约束和验收标准。例如,指定AI为Python开发者,任务为编写猜数字游戏,约束包括随机生成1-100整数、使用while循环、必须处理非数字输入且禁止崩溃、猜对打印Bingo并退出。验收标准可列出具体输入输出,如输入'abc'提示无效并继续循环。

AI编程中提示词使用有哪些常见问题?

常见问题包括:需求不明确(如未指定接口细节)、上下文缺失(如未提供现有代码或架构)、异常处理不完善(如未考虑并发、幂等性)、需求描述不完整(如遗漏功能点)。解决方法是提供详细约束、参考代码、验收标准等。

AGENTS.md文件在AI编程中有什么作用?如何编写?

AGENTS.md是写给AI的项目说明书,帮助AI理解项目背景、技术栈、目录结构、架构约定、编码规范等。编写时应包含项目简介、技术栈、目录结构、架构约定(如分层规则)、编码规范(如命名、类型注解)、常用命令等。示例见文中极客书城项目。

在AI编程中,如何限制AI的行为以确保代码质量?

可以通过编写编码规则文件(如.trae/rules/*.md)并设置alwaysApply: true,强制AI遵守。规则可包括命名规范、类型注解要求、错误处理规范(禁止裸except)、安全规范(禁止硬编码密钥)等。例如极客书城项目的规则文件。

AI维护存量项目时有哪些实践方法?

四大实践:1. 架构决策记录(ADR),记录重要决策原因;2. 关键模块职责说明,明确模块边界;3. 技术债说明,标注已知问题;4. 代码审查要点,列出关注点。此外还有保持环境健康、补充代码规范、参考现有代码等实践。

如何利用AI进行故障诊断和防御性编程?

故障诊断方面,可要求AI集成OpenTelemetry实现可观测性,如自动捕获HTTP Span、手动添加自定义Span并导出到Jaeger。防御性编程方面,可在规则中要求:所有外部输入必须校验、禁止捕获通用异常、调用第三方HTTP必须设置timeout、使用上下文管理器、写操作使用数据库约束或行级锁。

如何用AI从零开发一个待办事项应用?

步骤:1. 创建项目并编写AGENTS.md,定义项目简介、技术栈、结构、架构约定;2. 创建编码规则文件(如todo-style.md);3. 在TRAE的Agent模式输入提示词,让AI生成后端main.py和schemas.py;4. 输入前端提示词,让AI生成templates/index.html;5. 安装依赖并启动服务,访问http://localhost:8000/。

🏷️

标签

➡️

继续阅读