Atharva博客揭示,AI是工程师能力的放大器。扎实的编程基础搭配精准提示,能让AI助你打造出极致产品。想知道如何用AI加速开发、少踩坑?快来看高手的秘诀!
最近,Karpathy在YC AI创业学校演讲中推荐了一篇博客。
这篇博客中,Atharva表示,AI是放大器,coding功底越扎实,AI给的助力就越猛。
当你能用精准的提示词拆解需求,当对系统设计有敏锐直觉,AI会把你的能力指数级放大;反之,模糊的指令只会让AI输出漏洞百出的代码。
AI是打造认真、靠谱产品的工程团队的好帮手,这需要对这些工具有着娴熟的驾驭能力。
用AI开发,速度快得飞起!用对了,团队能更快地缩短与用户的反馈闭环,从而打造出更优秀的产品。
然而,用好AI工具也颇具挑战。用得不好,代码可能稀烂,甚至拖慢进度,深陷于垃圾代码和技术债务的泥潭。
想让AI发挥出色效果,首先要提升自己的水平。
AI是一个放大器。如果你的能力很差,收益自然微不足道;如果你的能力系数为负,收益甚至可能是负值。
最优秀、经验最丰富的工程师能从 AI 工具中榨取更多价值,原因如下:
所以,要秉持工匠精神。就算AI帮忙,也要对产出成果感到骄傲,这点在AI系统的最终产出中得到了清晰的印证。
举个例子。下面这个提示词不算差,但显然不够深思熟虑:
写一个Python速率限制器,限制用户每分钟10次请求。
这个提示词能生成一个勉强可用的结果,但很可能会忽略一些边缘场景、最佳实践和质量标准。
相比之下,高手可能会这样提问:
请使用Python实现一个token桶速率限制器,并满足以下要求:
需考虑以下问题:
优先考虑简单、可读性强的实现,避免过早优化。请仅用Python标准库(stdlib),不要引入Redis或其他外部依赖。
哪个提示词能更好地实现设计者的意图?一目了然吧!
还有个卓有成效的技巧,叫「元提示」(metaprompting)。
先给模型一个简单任务,让它帮忙挖出需要权衡的因素和潜在的边界情况,整理成技术规格,再让另一个AI智能体去执行。
实际上,上面那个「高手提示」就是AI帮忙优化的,AI现在已经很擅长为自己写提示词了。
AI工具的玩法总在变,但有一条金科玉律:努力提升自己,成为一名优秀的工程师,你的习惯会迅速传递给AI。
这之所以有效,根本原因在于:凡是能帮人类更好地思考和工作的方式,同样也能帮助AI。
能帮人类的,也能帮AI
在AI技术进步带来颠覆性变革的今天,有必要重新审视软件工程的定义。
软件工程的核心不是光写代码,至少,这并非它的决定性特征,正如写作的本质并非只是在纸上挥洒笔墨。
软件工程是一门艺术与科学,旨在维护一个庞大且定义明确的心智模型体系,以满足业务需求。核心是打造和维护复杂的社会技术系统,代码只是一种表现形式。
在AI强大到足以吞噬整个社会技术系统,并把培育它的人全踢出去之前,它必须要融入这个系统。
换句话说:在一个同样适合人类发展的环境中,AI也能更好地茁壮成长。这意味着,团队必须具备扎实的软件工程基础。
AI偏好的高质量团队和代码库有这些特征:
当今的AI能利用所有这些要素,自动搞定任务。
给一个编程智能体分配任务时,它会在其智能体循环中,通过运行测试用例和静态分析工具来不断进行自我修正。
这极大地减少了为完成工作,而需要进行的手把手干预。丰富的环境与上下文,能帮助AI更好地工作。
在此分享一则轶事:Atharva曾参与一个项目,其中包含两项服务。
一项服务具备上文描述的所有优点——良好的测试、完善的文档、一致的代码模式以及大量的检查与防护机制。而另一项服务则混乱不堪,上述优点一概皆无。
结果,AI编程智能体在处理后者一个同等难度的任务时举步维艰,远不如处理前者时那般顺利!
这很可能是因为,那个混乱的代码库对AI造成的困惑,与对人类工程师造成的并无二致。
对于何为正确的行事方式,它传递出了混乱甚至矛盾的信号。
不计成本,使用最好的AI模型
务必使用当前最顶尖的编码模型,不要为了节省额度或开销而选择次级模型。
优质模型带来的优势会产生复利效应。拥有一个强大的编程模型作为基础,接下来介绍的所有战术都将事半功倍。
提供精准的上下文
AI辅助编程的效果,很大程度上取决于为LLM提供上下文的技巧有多娴熟:
开发新功能或重构
调试
编辑器之外的实用招数
用AI提升个人技能与知识
AI是一位拥有海量知识、具有高效研究能力,超级有耐心的老师。
应积极用AI学习新知,揭开陌生代码或技术栈的神秘面纱。坚持不懈地深入挖掘,探寻最佳实践。同时,务必让AI引用高质量的信源,确保学到的知识准确无误。
创建海量详尽文档
把代码库信息提供给AI,就能轻松地创建大量细致的文档。比如:
这样做的好处显而易见——如今,生成文档的成本已极其低廉,而这些文档又能反过来极大地提升AI以及人类成员的工作效率。
解决日常协作小摩擦
AI能极大降低团队日常工作中遇到的各种小阻力:
代码评审 (Code Review)
调试和监控线上应用
性能优化
下面是近期一次互动实例:优化PostgreSQL中的一整套查询。
每天要执行大约十次查询,每天一次,用于生成一组用于分析的报表,基于事务表的非规范化视图。这些查询庞大且缓慢。
作为一名训练有素的工程师,他挑出最慢的查询,然后:
EXPLAIN ANALYZE <my slow query>
等待了13分钟后,得到了一份相当友好的输出。
感谢像Hubert depesz Lubaczewski这样的好人,提供了一个很棒的工具来处理这些相当友好的输出。
通过这个工具,输出变得更加友好,一个大大的红框跳出来,清楚地告诉他哪里出了问题。
但他训练有素的工程师大脑却在想:现在该怎么办?!
Sir depesz的工具暗示了一个work_mem问题,这是一个可以在夜间运行这些查询时调整的旋钮。这比重写一个200行的、关联了整个世界的SQL查询要实用得多。
但该如何思考和推理这个问题?硬件能支持什么?他对PostgreSQL的旋钮调整几乎没有经验。
在上述故事发生前一个月,也就是2024年10月,人们对一个当时被称为Sonnet 3.5(新版)、如今被称为Sonnet 3.6的模型赞不绝口。当时它无疑是最好的AI模型。
他把查询计划和硬件规格塞给了Sir Sonnet 3.5(新版),以下是提示:
This is a PostgreSQL EXPLAIN ANALYZE output
Tell me what configuration parameters I can tune to make this go faster.
<system_info>
RAM = 32 GB
Current parameters:
synchronous_commit: "on"
max_connections: "200"
shared_buffers: "8GB"
effective_cache_size: "24GB"
maintenance_work_mem: "2GB"
checkpoint_completion_target: "0.9"
wal_buffers: "16MB"
default_statistics_target: "100"
random_page_cost: "1.1"
effective_io_concurrency: "200"
work_mem: "20971kB" # NOTE: but for just this query, we temporarily have set it to 1.5GB, which is the most we can push it safely
min_wal_size: "1GB"
max_wal_size: "4GB"
max_worker_processes: "4"
max_parallel_workers_per_gather: "2"
max_parallel_workers: "4"
max_parallel_maintenance_workers: "2"
</system_info>
Sir Sonnet回应道:
# PostgreSQL Performance Analysis
## Key Performance Metrics
- Total Execution Time: 813.4 seconds (13.5 minutes)
- Planning Time: 26.5ms
- Total Rows: 30,302,109
- Buffer Usage:
- Shared Hit: 1,741,739
- Shared Read: 6,483,035
- Temp Read: 8,284,857
- Temp Written: 8,284,920
## Major Performance Issues Identified
1. **Heavy Disk I/O for Sorting** - Multiple large external sorts occurring - Largest sort using 8018MB of disk space - Many temp buffers being read and written
2. **Parallel Query Execution Limitations** - Only using 2 parallel workers - Several large sequential scans that could benefit from more parallelism
3. **Memory Pressure** - Multiple operations spilling to disk despite high work_mem - Large hash joins and sorts requiring temporary files
## Recommended Parameter Adjustments
### Critical Changes
1. `max_parallel_workers_per_gather`: 4 (currently 2) - Justification: Query shows heavy parallel operations with large sequential scans - This change alone could significantly improve the performance of the parallel operations
2. `work_mem`: 2GB (currently 1.5GB) - Justification: Multiple sorts spilling to disk - With 32GB RAM and considering the parallel workers, we can safely increase this - Note: Effective memory per sort will be work_mem × number of parallel workers
3. `max_parallel_workers`: 8 (currently 4) - Justification: System has enough RAM to support more parallel workers - Will allow better utilization of parallel operations
### Secondary Adjustments
4. `maintenance_work_mem`: 4GB (currently 2GB) - Justification: Large sorts occurring in maintenance operations - System has enough RAM to support this increase
5. `effective_io_concurrency`: 300 (currently 200) - Justification: Heavy I/O operations occurring - If using SSDs, this can be increased further
6. `random_page_cost`: 1.0 (currently 1.1) - Justification: If using SSDs, this should be lowered to better reflect actual I/O costs
## Monitoring Recommendations
After implementing these changes:
1. Monitor temp file usage (`pg_stat_database`)
2. Watch for memory pressure using `pg_stat_activity`
3. Track parallel execution effectiveness with `pg_stat_statements`
并非所有建议都完全合理,但关键建议看起来不错。于是他听从了AI的建议,重新运行了查询。然后数据库崩溃了。
Sir Sonnet回答:
(想象一下,这里还有几次迭代,以及对Sir Sonnet过于自信的胡言乱语的一些抱怨。)
最终,查询速度显著提升。他尝试调整了许多PostgreSQL参数,并整理了一个矩阵:
他和Srihari交流了经验,像Srihari这样经验丰富的人可能一个下午就能搞定。
Sir Sonnet帮忙的地方在于,作为一个从未调整过PostgreSQL参数的人,他能像Srihari一样高效产出。而且,与 Sir Sonnet的对抗式互动让他以前所未有的速度学习了PostgreSQL的内部机制。
如今,大模型比过去聪明得多。它们能更智能地推理,工具使用也更出色。
人们编写软件的方式正发生着巨变,因此有必要重新审视一些曾被奉为金科玉律的传统智慧。
别急着搞复杂抽象:首先,花费过多时间去寻找和构建精巧的抽象,其价值正在降低。
DRY(不要重复自己)原则对确保代码模式的一致性固然有用,但为了应对需求变更而维护,本身就需要付出成本。
返工的成本极低。小范围的代码编写不如整体代码结构和组织重要。可以快速构建多个原型测试想法。
氛围编程很适合原型开发,但事后要将原型抛弃并重新进行规范的开发。
验证并修正一个既有方案,通常比从零开始创造它要容易得多。这极大地降低了人们尝试新事物的阻力。
测试是绝对不容妥协的。AI能够快速、批量地生成测试用例,这让任何不写测试的借口都荡然无存。
但请记住,必须时刻严格审查其生成的内容!
参考资料:
https://blog.nilenso.com/blog/2025/05/29/ai-assisted-coding/
https://simonwillison.net/2025/Jun/10/ai-assisted-coding/
https://x.com/deedydas/status/1936090859319259321
文章来自于微信公众号“新智元”。
【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。
视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/
项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0