Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!

AITNT-国内领先的一站式人工智能新闻资讯网站
# 热门搜索 #
Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!
5879点击    2025-07-06 15:28

Atharva博客揭示,AI是工程师能力的放大器。扎实的编程基础搭配精准提示,能让AI助你打造出极致产品。想知道如何用AI加速开发、少踩坑?快来看高手的秘诀!


最近,Karpathy在YC AI创业学校演讲中推荐了一篇博客。


这篇博客中,Atharva表示,AI是放大器,coding功底越扎实,AI给的助力就越猛。


当你能用精准的提示词拆解需求,当对系统设计有敏锐直觉,AI会把你的能力指数级放大;反之,模糊的指令只会让AI输出漏洞百出的代码。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


AI是打造认真、靠谱产品的工程团队的好帮手,这需要对这些工具有着娴熟的驾驭能力。


用AI开发,速度快得飞起!用对了,团队能更快地缩短与用户的反馈闭环,从而打造出更优秀的产品。


然而,用好AI工具也颇具挑战。用得不好,代码可能稀烂,甚至拖慢进度,深陷于垃圾代码和技术债务的泥潭。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


AI编程是个放大器


想让AI发挥出色效果,首先要提升自己的水平。


AI是一个放大器。如果你的能力很差,收益自然微不足道;如果你的能力系数为负,收益甚至可能是负值。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


最优秀、经验最丰富的工程师能从 AI 工具中榨取更多价值,原因如下:


  • 极其擅长沟通技术理念,会把技术想法讲清楚;


  • 对构建优质系统有精准的判断力和敏锐的直觉,能引导AI朝正确方向前进,即「老师傅的手感」;


  • 基础扎实,能在知识(而非技能)构成瓶颈的新工具和系统中能迅速上手;


  • AI对语言和风格很敏感,常常反映出提示者的偏好与审美。顶尖工程师品味高,对什么可行、什么不可行,有着更为敏锐的品味和直觉。


所以,要秉持工匠精神。就算AI帮忙,也要对产出成果感到骄傲,这点在AI系统的最终产出中得到了清晰的印证。


举个例子。下面这个提示词不算差,但显然不够深思熟虑:


写一个Python速率限制器,限制用户每分钟10次请求。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


这个提示词能生成一个勉强可用的结果,但很可能会忽略一些边缘场景、最佳实践和质量标准。


相比之下,高手可能会这样提问:


请使用Python实现一个token桶速率限制器,并满足以下要求:


  • 针对每个用户(通过user_id字符串识别),速率限制为每分钟10次请求。


  • 实现必须是线程安全的,以支持并发访问。


  • 能自动清理过期用户的条目。


  • 函数返回一个元组 (allowed: bool, retry_after_seconds: int),分别表示请求是否被允许,以及需要等待多少秒后才能重试。


需考虑以下问题:


  • token是应该随时间逐渐填充,还是一次性补满?


  • 当系统时钟发生变更时,程序的行为应是怎样的?


  • 如何防止因用户长时间不活跃而导致的内存泄漏?


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


优先考虑简单、可读性强的实现,避免过早优化。请仅用Python标准库(stdlib),不要引入Redis或其他外部依赖。


哪个提示词能更好地实现设计者的意图?一目了然吧!


还有个卓有成效的技巧,叫「元提示」(metaprompting)。


先给模型一个简单任务,让它帮忙挖出需要权衡的因素和潜在的边界情况,整理成技术规格,再让另一个AI智能体去执行。


实际上,上面那个「高手提示」就是AI帮忙优化的,AI现在已经很擅长为自己写提示词了。


AI工具的玩法总在变,但有一条金科玉律:努力提升自己,成为一名优秀的工程师,你的习惯会迅速传递给AI。


这之所以有效,根本原因在于:凡是能帮人类更好地思考和工作的方式,同样也能帮助AI。


能帮人类的,也能帮AI


在AI技术进步带来颠覆性变革的今天,有必要重新审视软件工程的定义。


软件工程的核心不是光写代码,至少,这并非它的决定性特征,正如写作的本质并非只是在纸上挥洒笔墨。


软件工程是一门艺术与科学,旨在维护一个庞大且定义明确的心智模型体系,以满足业务需求。核心是打造和维护复杂的社会技术系统,代码只是一种表现形式。


在AI强大到足以吞噬整个社会技术系统,并把培育它的人全踢出去之前,它必须要融入这个系统。


换句话说:在一个同样适合人类发展的环境中,AI也能更好地茁壮成长。这意味着,团队必须具备扎实的软件工程基础。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


AI偏好的高质量团队和代码库有这些特征:


  • 良好的测试覆盖率、有意义的断言;


  • 自动化代码检查、格式化和测试,在代码合并前执行;


  • 持续集成与持续部署 (CI/CD);


  • 完善的变更文档、技术规格(tech specs)、架构决策记录(ADRs),以及清晰的提交信息;


  • 代码风格统一,通过格式化工具强制执行;


  • 简单、简洁、结构清晰的代码;


  • 功能定义清晰,拆分为多个小型的故事卡。


当今的AI能利用所有这些要素,自动搞定任务。


给一个编程智能体分配任务时,它会在其智能体循环中,通过运行测试用例和静态分析工具来不断进行自我修正。


这极大地减少了为完成工作,而需要进行的手把手干预。丰富的环境与上下文,能帮助AI更好地工作。


在此分享一则轶事:Atharva曾参与一个项目,其中包含两项服务。


一项服务具备上文描述的所有优点——良好的测试、完善的文档、一致的代码模式以及大量的检查与防护机制。而另一项服务则混乱不堪,上述优点一概皆无。


结果,AI编程智能体在处理后者一个同等难度的任务时举步维艰,远不如处理前者时那般顺利!


这很可能是因为,那个混乱的代码库对AI造成的困惑,与对人类工程师造成的并无二致。


对于何为正确的行事方式,它传递出了混乱甚至矛盾的信号。


编辑器中的工具与战术


不计成本,使用最好的AI模型


务必使用当前最顶尖的编码模型,不要为了节省额度或开销而选择次级模型。


优质模型带来的优势会产生复利效应。拥有一个强大的编程模型作为基础,接下来介绍的所有战术都将事半功倍。


提供精准的上下文


AI辅助编程的效果,很大程度上取决于为LLM提供上下文的技巧有多娴熟:


  • 智能体式(agentic)编码工具,能自主读取文件、运行shell命令、获取文档、创建并执行计划、几乎无需人工干预(只需最终批准)。推荐的工具有Claude Code、Windsurf、Cursor、Cline。


  • AI容易被杂乱上下文带偏。应该只@相关代码文件,链接对当前任务有帮助的文档,帮助它聚焦。


  • 将编码规范写入RULES.md文件,为不同的智能体工具(如 .cursorrules, .windsurfrules, claude.md, agents.md 等)创建指向此文件的符号链接(Symlink)。


开发新功能或重构


  • 拆解问题。指令越具体,AI的表现就越好。AI还能帮忙把提示写清楚,让指令变得更清晰、更具体。推理能力强的模型尤其擅长此道!


  • 化整为零,逐一击破。在开发大型功能时,应将其拆分为多个小任务,然后逐个交给AI处理,并在完成每个任务后进行一次代码提交(commit)。如果你遵循用户故事(story)的工作流,包含任务清单的故事卡描述对AI就是一份极佳的指南。


  • 提供技术规格与相关文档。不要在缺少产品宏观背景的情况下直接要求AI写代码。应向其提供技术规格,以及所用程序库的官方文档。对于大多数工具而言,直接粘贴文档链接通常是有效的。有些程序库甚至会提供一个llms.txt文件,专供编码智能体使用。


  • 好的模式是把开发分成「计划」和「执行」。一些先进的编程智能体已经内置了类似的流程。


  • 审慎对待AI的建议。不要将其建议视为理所当然,让它解释选择的理由,提出替代方案,分析方案的优劣。


调试


  • 用AI调试自己的bug。当AI生成的代码出错时,务必将最相关的错误上下文完整粘贴给它,以帮助其定位问题。(如使用专门的XML标签,如<error>,将错误日志或输出内容包裹起来)。


  • 提供尝试和观察。向模型说明已经尝试过的调试步骤和额外的观察发现,这能帮它形成正确的假设并排除错误的推断。提供丰富的上下文至关重要。


编辑器之外的实用招数


用AI提升个人技能与知识


AI是一位拥有海量知识、具有高效研究能力,超级有耐心的老师。


应积极用AI学习新知,揭开陌生代码或技术栈的神秘面纱。坚持不懈地深入挖掘,探寻最佳实践。同时,务必让AI引用高质量的信源,确保学到的知识准确无误。


创建海量详尽文档


把代码库信息提供给AI,就能轻松地创建大量细致的文档。比如:


  • 阐释功能,创建项目知识库;


  • 汇总当前所有的监控指标;


  • 智能识别缺失的测试用例。


这样做的好处显而易见——如今,生成文档的成本已极其低廉,而这些文档又能反过来极大地提升AI以及人类成员的工作效率。


解决日常协作小摩擦


AI能极大降低团队日常工作中遇到的各种小阻力:


  • 利用AI创建模拟服务器(mockserver),用于协调前后端团队的工作,消除开发过程中的阻塞。前后端对好接口契约就能开工;


  • 通过向AI提供shell历史会话记录,为基础设施部署、常见故障排查等场景创建运行手册(runbook)和指南;


  • 将现有的运行手册和指南提供给AI,让它将其转化为能自动执行常见任务的脚本。


代码评审 (Code Review)


  • 为合并请求(Pull Request)创建一个模板,将每个功能的代码变更提交给AI,让它解释变更和部署步骤;


  • 为了缩短首次代码评审的响应时间,可以引入代码评审机器人来完成初步检查。但切勿完全取代人工评审!


  • 作为评审者,当你遇到不理解的代码变更时,可以先让AI解释。向它寻求澄清,在获得了必要的背景信息后,再向开发者提问。


调试和监控线上应用


  • 用AI的深度研究能力,寻找罕见错误的解决方案。调试线上问题时,可遵循与在编辑器中调试时相同的建议:提供尽可能丰富的上下文;


  • AI非常擅长为可观测性工具编写查询语句和告警规则,还能写Python代码分析和处理数据。


性能优化


  • 用AI优化数据库和调校配置。此时,务必向其提供有关基础设施和硬件的上下文信息,并分享查询计划(query plan)。


数据库优化故事


下面是近期一次互动实例:优化PostgreSQL中的一整套查询。


每天要执行大约十次查询,每天一次,用于生成一组用于分析的报表,基于事务表的非规范化视图。这些查询庞大且缓慢。


作为一名训练有素的工程师,他挑出最慢的查询,然后:


EXPLAIN ANALYZE <my slow query>


等待了13分钟后,得到了一份相当友好的输出。


感谢像Hubert depesz Lubaczewski这样的好人,提供了一个很棒的工具来处理这些相当友好的输出。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


通过这个工具,输出变得更加友好,一个大大的红框跳出来,清楚地告诉他哪里出了问题。


但他训练有素的工程师大脑却在想:现在该怎么办?!


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的建议,重新运行了查询。然后数据库崩溃了。


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


Sir Sonnet回答:


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


(想象一下,这里还有几次迭代,以及对Sir Sonnet过于自信的胡言乱语的一些抱怨。)


最终,查询速度显著提升。他尝试调整了许多PostgreSQL参数,并整理了一个矩阵:


Karpathy力荐必读博客:代码功底,决定AI「开挂」倍数!


他和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


文章来自于微信公众号“新智元”。


AITNT-国内领先的一站式人工智能新闻资讯网站
AITNT资源拓展
根据文章内容,系统为您匹配了更有价值的资源信息。内容由AI生成,仅供参考
1
cursor

【免费】cursor-auto-free是一个能够让你无限免费使用cursor的项目。该项目通过cloudflare进行托管实现,请参考教程进行配置。

视频教程:https://www.bilibili.com/video/BV1WTKge6E7u/

项目地址:https://github.com/chengazhen/cursor-auto-free?tab=readme-ov-file


2
AI代理

【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。

项目地址:https://github.com/browser-use/browser-use


3
AI工作流

【开源免费】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/(付费)

4
智能体

【开源免费】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

5
知识库

【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。

项目地址:https://github.com/labring/FastGPT

6
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0