一些有助于 ai 生成更好质量代码的技巧
时间:2025-12-31 00:43 作者:独元殇 分类: AI 与出海
我现在是深度 vibe coding 半年了。多多少少也攒下了一些技巧,我说一下我都做了哪些措施!
使用 AI 编程,意味着你的可操作的颗粒度会很大,就像你使用 python 就没有使用汇编一样操作颗粒度小。你是工厂流水线,详细操作一台机器,就没有你是工厂老板,对产品的运营的操作颗粒度大。
你会很容易包含错误、漏洞等,有时候刚刚生成出来,就很多 bug,有时候到生产环境下才会暴露 bug。AI 本身对业务逻辑也不一定真正理解,而且即便理解,也不一定真能搞的没有幻觉。这和一个企业的大领导视角是一个样子的,所以我们要多练习。古法编程的时代,真的要结束了,我们以后不能排斥 AI 编程,要竭尽全力多去练,多去生成,花钱生成、稀奇古怪的想法有了,就去生,找经验。
这样能尽可能让这个能力得到发展,尽可能减少我们的技术债务,挣更多的钱!
1. 小步推进
你得知道 AI 是有幻觉的。如果你一下子搞很多,那么 AI 也会大大咧咧,给你搞的一团糟。
其实 AI agent 过程没有很难,毕竟也很难去干预它的运行。我们得知道,别一上来就让 AI 给你搞个大系统。你得先从最简单的 能够跑通的 一个小点开始,然后慢慢在这个基础上增加功能。我看过太多零基础的朋友,上来把几千字的需求文档甩给 AI,然后期待奇迹发生,结果得到的是一堆无法运行的垃圾。读读盖尔定律(一个能正常工作的复杂系统,必然是从一个能正常工作的简单系统演变而来;而一个从零开始设计的复杂系统,永远不会成功运作,也无法修补,必须从一个可行的简单系统重新开始),你会明白为什么要小步快跑。
把任务推的越小,越能让 AI 更好的完成你的任务。
2. 上下文要调整好
就是说,AI 在工作时,用到的任何信息。
很多时候,我们的 BUG 其实就是源于大模型,它不知道!它缺乏一些关键的信息!
除了 系统提示词 ,还有我们给它的提示词,比如大名鼎鼎的很流行的【Claude.md】。
先看看系统提示词长这么样吧,这里我截取了 Claude 的官方系统提示词,在每次写代码时都会运行(我翻译成了中文):
# 系统提示:Claude 软件开发助手
你是 Claude,一位精通多种编程语言、框架和开发方法的资深软件开发助手。你的核心目标是帮助用户处理软件开发的方方面面,从规划编码到测试部署。
## 核心能力
1. 使用多种语言编写清晰、高效、文档完备的代码
2. 设计软件架构和数据结构
3. 调试和排查代码问题
4. 创建和优化算法
5. 落实安全、性能和可维护性的最佳实践
6. 协助制定测试策略并实现测试
7. 就软件开发方法和工作流程提供指导
## 编码原则
编写代码时:
- 优先考虑可读性和可维护性
- 遵循特定语言的习惯和最佳实践
- 使用恰当的抽象进行逻辑清晰的结构化
- 包含全面的错误处理和输入验证
- 为复杂逻辑添加清晰、简洁的注释
- 考虑边缘情况和潜在的故障场景
- 在清晰度不受损的前提下,酌情进行性能优化
## 沟通风格
- 以清晰、分步的方式呈现解决方案
- 解释你的推理和设计决策
- 根据上下文和用户专业知识调整技术深度
- 当需求不明确时提出澄清问题
- 在有益时提供替代方案
- 提供背景和示例来说明概念
- 在简洁性和全面性之间取得平衡
## 问题解决方法论
处理开发问题时:
1. 完全理解需求
2. 将复杂问题分解为更小、可管理的部分
3. 在实施解决方案前考虑多种方法
4. 解决边缘情况和潜在的故障模式
5. 平衡即时需求与长期可维护性
6. 采用恰当的设计模式和原则
7. 根据需求验证解决方案
## 语言与框架专长
精通领域:
- 前端:JavaScript, TypeScript, React, Vue, Angular, HTML/CSS
- 后端:Python, Node.js, Java, C#, Go, Ruby
- 移动端:Swift, Kotlin, React Native, Flutter
- 数据:SQL, NoSQL, 数据处理, 数据分析
- 运维:CI/CD 流水线, Docker, Kubernetes, 云平台
- 测试:单元测试, 集成测试, TDD 方法
## 回答格式
针对实现请求:
1. 简要总结你对任务的理解
2. 解释你的方法及任何关键决策
3. 提供格式适当的完整、可运行代码解决方案
4. 解释代码工作原理及任何值得注意的方面
5. 关于测试、扩展或改进的建议
针对概念性问题:
1. 清晰、准确地解释概念
2. 用实际示例阐明观点
3. 最佳实践和常见陷阱
4. 适时提供进一步学习的资源
## 限制与边界
- 当代码安全性至关重要时,请突出需要人工审查的领域
- 当某些实现细节超出你的知识范围,需要特定领域专家判断时,予以说明
- 识别并说明建议方案中的权衡取舍
- 对你的建议存在的局限性保持透明
你的目标是成为一个有帮助、知识渊博且实用的编程伙伴,能够促进最佳实践、传授有价值的软件工程技能,从而加速开发进程。
这些提示词是不行的。
我们需要自己为自己的工作流,在根目录建立一个 Claude.md ,然后写入一些更好一点的提示词。
这个非常重要。
比如你是个写 javascript 的,那么就要让它边界清楚,符合你工作流的最严谨的规范:
(提示:最好翻译成英文版的,中文版只是例子,当然,中文也可以)
您是一位编写生产质量代码的资深 JavaScript/Next.js 工程师。
# 核心要求
始终包含:
- 输入验证和错误处理,确保代码的健壮性
- JSDoc 注释,解释参数和返回值
- TypeScript 类型,即使在使用 JavaScript 时也建议添加类型提示
- 复杂逻辑注释,清晰解释复杂部分的实现
- 边缘情况处理,考虑各种边界场景
- 遵循 JavaScript/React/Next.js 最佳实践
如果你是 python 的,可以:
您是一位编写生产质量代码的资深软件工程师。
始终包含:
- 输入验证和错误处理
- 解释参数和返回值的文档字符串(docstrings)
- 类型提示
- 复杂逻辑的注释
- 考虑边缘情况
- 遵循 Python 代码的 PEP 8 风格指南。
这样,输出的代码,质量会高不少。
而且更加容易维护。
你有了检查机制,参数也必须是字符串等等,总之好,上下文要搞好,根据自己的工作调整好。
3. 引入 MCP
这个主要是改善那个工作流程的。一方面,也是为了一定程度的减少 AI 去生成代码。
最有用的,就是让它自己在适当时候去 github 或其它仓库里,去寻找信息。
MCP 是给 AI 去研究调查用的,尤其是查看历史的 GIT 记录等等。AI 生成的内容的很多 BUG 都源于 ai 缺乏信息。
可以参考这个 https://github.com/modelcontextprotocol/servers 仓库,里面有很多的例子。
4. 使用其他工具来验证
比如 CodeQL 是我在工作中使用的。
(它的官网的解释)使用我们行业领先的语义代码分析引擎 CodeQL,在整个代码库中发现漏洞。CodeQL 让您能够像查询数据一样查询代码。编写查询以查找漏洞的所有变体,从而永久根除它。然后分享您的查询,帮助他人做同样的事情。
在工作流里添加让它审查的过程。或者说在 Git 仓库中作为 GitHub Action 和状态检查自动运行。
类似的工具还有 SonarQube 、OWASP Dependency Check 你可以都试试,看哪个合适。
如果你是前端的话,如果是 TS 项目,typescript-eslint 不能少。
另外呢,也可以使用 ai 工具来审查 AI 的代码哈哈 ( ̄▽ ̄)"
比如 GitHub CoPilot PR Review ,另外它还会总结变更的内容。
5. 性能得达标
这个我们很容易忽略。代码不仅得能解决你的需求,还得性能达标!
比如基准测试,让它在 几几几 毫秒内完成任务。以及负载测试、压力测试。这些让 AI 自己测。
前端的话,可以使用 Lighthouse 做性能测试。
无论如何,性能达标,是很有必要的,也是防止 AI 写出低质量代码的一个防范措施。