尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

AI编程技能集实战:从追问技巧到高效工作流

AI编程技能集实战:从追问技巧到高效工作流 如果你是一名开发者最近一定在各种技术社区和社交媒体上看到过“AI编程技能集”AI Programming Skill Set这个概念。它由知名TypeScript专家Matt Pocock提出并经由Theot3.gg等科技内容创作者的实测和讨论迅速成为了一个热门话题。但铺天盖地的讨论背后一个核心问题却常常被忽略对于大多数普通开发者而言这套听起来很酷的“技能集”里到底哪些是真正能落地、能立刻提升效率的“硬通货”很多人可能以为所谓的AI编程技能就是学会用Copilot自动补全代码或者用ChatGPT解答技术问题。如果停留在这个层面你很可能错过了AI辅助开发最核心的杠杆点。Matt Pocock和Theo的讨论揭示了一个更深层的转变未来的编程正在从“记忆语法和API”转向“精确描述问题、验证AI输出和高效迭代”的能力。本文将基于Matt Pocock提出的框架和Theo的实测视角为你彻底拆解这套“AI编程技能集”。我不会只复述概念而是会结合真实的开发场景告诉你为什么“Grill Skill”追问技能被公认为最实用、最核心的第一技能。如何一步步实践其他关键技能如“模糊匹配”、“上下文管理”和“提示工程”。在具体开发任务如修复Bug、编写组件、重构代码中如何组合运用这些技能。有哪些常见的“坑”和最佳实践能让你避免被AI带偏。无论你是前端、后端还是全栈开发者这篇文章都将为你提供一套可立即上手的“AI编程工作流”让你不只是AI工具的被动使用者而是成为驾驭它的高效协作者。1. 重新定义“AI编程技能”从工具使用到思维转变在深入具体技能之前我们必须先统一认知AI编程技能集的本质不是学习某个工具如Cursor、Claude的按钮在哪里而是一套与AI高效协作的思维模式和工作方法。传统编程能力金字塔是语法 - 算法/数据结构 - 系统设计 - 架构。而在AI深度介入的编程流程中这个金字塔的底层正在被重构。Matt Pocock等人提出的技能集可以看作是在新旧能力之间搭建的桥梁旧能力仍需掌握但重心转移对问题域的深刻理解、架构设计能力、代码审查与调试能力。AI无法替代你对业务逻辑的判断。新能力AI编程核心技能将模糊需求转化为精确指令的能力、快速验证与批判性评估AI输出的能力、引导AI迭代至满意结果的能力。Theo在t3.gg的实测视频中反复强调了一个观点最大的效率提升不是来自AI写代码的速度而是来自你与AI交互的质量。一个能清晰描述问题、精准追问细节的开发者其产出效率和质量远超一个只会问“如何实现XXX功能”的开发者。因此这套技能集的目标是让你成为AI的“导演”和“质检员”而不是它的“打字员”。接下来我们就从被公认为最实用的“Grill Skill”开始拆解。2. 核心技能深度解析为什么“Grill Skill”是效率倍增器“Grill Skill”直译为“拷问技能”我更倾向于称之为“结构化追问与验证技能”。它是整个技能集的基石其重要性在于直接应对了当前大语言模型LLM的核心弱点可能产生看似合理但实则错误、不完整或偏离需求的输出。2.1 Grill Skill 是什么不只是“多问几句”很多人把Grill Skill理解为“多问几个问题”这低估了它的价值。它是一种系统性的验证方法包含以下关键动作要求分步思考Chain-of-Thought在提出复杂问题时要求AI“一步步思考”或“展示推理过程”。这能让AI暴露其逻辑链条便于你发现潜在漏洞。低效提问“为我的Next.js应用实现一个用户认证系统。”高效提问运用Grill“请为我的Next.js 14应用使用App Router设计一个用户认证系统。请分步思考a) 首先列出我们需要考虑的核心安全模块如会话管理、密码哈希。b) 然后对比NextAuth.js与Clerk的优缺点。c) 最后基于简单易集成的原则给出一个包含关键代码片段如API路由、中间件的实施方案。”挑战假设与边界条件AI的答案往往基于默认或常见假设。你需要主动挑战这些假设。示例AI给出了一段数据库查询代码。你应该追问“这个查询在数据量达到100万条时性能如何是否需要添加索引如果查询结果为空这段代码会如何处理”请求提供替代方案与解释迫使AI不仅给出答案还要给出选择背后的原因。示例“你建议使用useSWR来做数据获取。请对比一下useSWR和React Query在缓存策略、错误处理和离线支持方面的差异并解释为什么在这个场景下useSWR更合适”验证与测试驱动要求AI为它生成的代码提供测试用例或者你自己基于它的解释设计简单的验证步骤。示例“请为你上面生成的这个formatCurrency函数再提供3个Jest测试用例分别覆盖负数、超大数字和非法输入的情况。”2.2 实战案例用Grill Skill修复一个隐蔽的Bug假设你遇到一个Bug用户上传图片后偶尔会出现服务器处理失败但错误信息不明确。初始提问效果有限“我的Node.js图片上传接口有时会失败怎么修复”运用Grill Skill的提问流程描述与上下文“我在一个Express.js应用中使用multer处理图片上传。接口大部分时间正常但大约10%的情况下特别是并发上传时会返回500错误日志只显示‘处理失败’。这是我的核心路由代码片段附上代码。请分步分析可能的原因。”AI初步回应AI可能会提到内存不足、磁盘空间、文件锁冲突、异步处理未完成等。结构化追问Grill“针对你提到的‘内存不足’可能性multer的内存存储默认限制是多少如何验证当前请求是否超出了这个限制”“关于‘文件锁冲突’在Linux系统下有什么命令或方法可以监控当前进程对临时上传文件的锁定状态”“请检查我提供的代码在流式处理文件到最终存储如S3的过程中错误处理是否完整是否存在未捕获的Promise拒绝”请求验证方案“基于我们的分析请给出一个具体的诊断步骤列表1. 添加什么中间件来监控内存使用2. 如何模拟并发上传进行压力测试3. 请提供一段改进后的错误处理代码确保能捕获并记录底层错误如S3连接失败。”通过这样一个“拷问”流程你不仅更有可能找到Bug根源还获得了一套可执行的诊断和修复方案同时加深了对系统脆弱点的理解。这就是Grill Skill将AI从“参考答案生成器”变为“协作调试伙伴”的关键。3. 环境准备构建你的AI编程工作站工欲善其事必先利其器。实践AI编程技能需要合适的工具链。以下是一个推荐配置兼顾了主流选择和效率。3.1 核心AI工具选择你不必全部安装但应了解其定位工具类型核心优势适用场景Cursor基于AI的IDE深度集成项目级上下文代码库感知快捷编辑Cmd/CtrlK日常全栈开发、重构、阅读陌生代码库Claude DesktopAI助手客户端超长上下文200K文件上传分析能力强思维链清晰分析长文档、评审代码、复杂逻辑设计GitHub Copilot代码补全插件轻量级无缝集成单行/块补全速度快所有主流IDE内的日常编码补全ChatGPT (Plus)通用聊天界面生态丰富插件多适合探索性、跨领域问题学习新概念、生成非代码内容如SQL、配置起步建议前端/全栈开发者可从Cursor GitHub Copilot组合开始。Cursor用于复杂任务和对话Copilot用于无感补全。需要深度分析文档时打开Claude。3.2 基础配置与上下文管理1. Cursor的配置要点启用代码库索引在项目中确保Cursor已索引你的代码。这能让AI在回答时引用项目内的具体文件。学习.cursorrules文件这是一个强大的功能。你可以在项目根目录创建.cursorrules文件定义项目特定的规则AI会优先遵守。# .cursorrules 示例 - 本项目使用 TypeScript 严格模式。 - 使用 axios 作为 HTTP 客户端基础URL配置在 src/config/api.ts 中。 - 组件命名采用 PascalCase工具函数采用 camelCase。 - 禁止使用 any 类型除非在极特殊情况下并需添加 // ts-ignore 注释说明。 - 所有API调用必须包含错误处理。善用快捷指令Cmd/CtrlK打开指令面板可以快速进行“解释代码”、“生成测试”、“重构”等操作。2. 通用提示词工程准备在笔记软件如Obsidian、Notion中建立一个“提示词库”分类存放针对不同场景优化过的提示词模板。例如代码解释模板Bug诊断模板代码重构模板单元测试生成模板4. 核心技能实战从模糊需求到可交付代码让我们通过一个完整的实战案例串联运用多个AI编程技能。假设我们需要为一个任务管理应用添加一个“批量归档过期任务”的功能。4.1 技能1模糊匹配与需求澄清初始需求可能是模糊的“做个功能把旧任务清理一下。”你的操作运用技能不要直接把这个需求扔给AI。先自己进行“模糊匹配”将模糊需求转化为具体的技术问题。转化后的问题“在我的Next.js Prisma PostgreSQL任务应用中需要实现一个后台端点或脚本用于将状态为‘已完成’且完成时间超过30天的任务自动更新状态为‘已归档’。请考虑1) 是定时任务还是手动触发2) 归档是软删除标记字段还是物理删除3) 是否需要记录归档日志”向AI提问“基于上述澄清请为这个‘批量归档过期任务’功能设计一个技术方案。方案需包含技术选型如使用Cron Job、Next.js API Route setTimeout等、数据库变更是否需要新增archivedAt字段、以及核心处理函数的伪代码逻辑。”这一步的价值你通过自我追问输出了一个结构清晰、边界明确的“需求规格”极大提高了与AI协作的起点质量。4.2 技能2上下文管理 - 提供精准“燃料”AI的表现严重依赖于你提供的上下文。你需要成为信息的“策展人”。糟糕的上下文直接问“怎么写归档函数”然后附上整个package.json和一堆无关文件。高效的上下文管理提供精准代码片段只提供与任务相关的模型定义和现有API。// 提供此文件prisma/schema.prisma 相关部分 model Task { id Int id default(autoincrement()) title String status String // 可能的值: pending, in_progress, completed, archived completedAt DateTime? archivedAt DateTime? createdAt DateTime default(now()) updatedAt DateTime updatedAt }// 提供此文件lib/prisma.ts import { PrismaClient } from prisma/client; const globalForPrisma globalThis as unknown as { prisma: PrismaClient }; export const prisma globalForPrisma.prisma || new PrismaClient(); if (process.env.NODE_ENV ! production) globalForPrisma.prisma prisma;说明技术栈和约束“项目使用Next.js 14 App Router, Prisma ORM, PostgreSQL。希望方案尽量简单优先考虑在现有的Next.js API Route中实现。”指定输出格式“请给出完整的代码实现包括a) 必要的Prisma迁移命令。b) 归档任务的API路由文件app/api/archive/route.ts。c) 一个安全的调用方式如带认证的手动触发端点。”4.3 技能3实施与Grill验证AI会给出初步代码。现在运用Grill Skill进行审查和深化。// AI 可能生成的初步代码 (app/api/archive/route.ts) import { prisma } from /lib/prisma; import { NextResponse } from next/server; export async function POST(request: Request) { try { const thirtyDaysAgo new Date(); thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); const result await prisma.task.updateMany({ where: { status: completed, completedAt: { lt: thirtyDaysAgo, }, archivedAt: null, // 只归档尚未归档的 }, data: { status: archived, archivedAt: new Date(), }, }); return NextResponse.json({ message: Successfully archived ${result.count} tasks. }); } catch (error) { console.error(Archive failed:, error); return NextResponse.json({ error: Archive failed }, { status: 500 }); } }你的Grill追问性能与安全“这个updateMany操作如果一次匹配到数十万条记录会不会导致数据库锁表或性能问题如何分批次处理”幂等性与日志“如果客户端因网络问题重复调用这个API是否会导致数据混乱如archivedAt时间被重复更新是否需要考虑为操作添加幂等性另外是否需要将归档记录存入一个单独的ArchiveLog表以供审计”错误处理细化“当前的错误处理只返回了500。在实际运维中我们可能需要区分是数据库连接错误还是业务逻辑错误。如何改进”请求验证“这个端点目前是公开的POST。如何为其添加API Key认证或管理员权限校验”基于AI对上述问题的回答你可以引导它迭代出更健壮的代码。例如增加分页批处理逻辑// 迭代后的分批处理逻辑片段 async function archiveTasksInBatches(batchSize: number 1000) { let totalArchived 0; let hasMore true; while (hasMore) { const tasksToArchive await prisma.task.findMany({ where: { /* ... 条件 ... */ }, take: batchSize, select: { id: true }, // 只取ID减少数据传输 }); if (tasksToArchive.length 0) { hasMore false; break; } const ids tasksToArchive.map(task task.id); const result await prisma.task.updateMany({ where: { id: { in: ids } }, data: { status: archived, archivedAt: new Date() }, }); totalArchived result.count; console.log(Archived batch of ${result.count} tasks. Total: ${totalArchived}); // 小延迟减轻数据库压力 if (tasksToArchive.length batchSize) { await new Promise(resolve setTimeout(resolve, 100)); } } return totalArchived; }5. 技能融合高效工作流示例将上述技能融合形成一个日常高效工作流接收任务“在用户仪表盘添加一个图表。”需求澄清模糊匹配自问什么图表折线图还是柱状图显示什么数据时间范围用什么图表库现有数据接口是什么构建提示上下文管理“项目使用Next.js和Recharts库。现有API端点/api/user/stats返回{ dailyActiveUsers: [...], revenue: [...] }。需要在/app/dashboard/page.tsx中添加一个折线图展示最近7天的dailyActiveUsers数据。请生成必要的代码并确保样式与现有的Tailwind CSS设计一致。”生成与审查Grill SkillAI生成代码后追问“这段代码没有处理API加载状态和错误状态。请添加useSWR来获取数据并包含加载中和错误时的UI占位符。”、“Recharts的响应式容器宽度设置成100%是否在移动端适配请检查。”迭代与集成将满意的代码集成到项目中并运行测试。6. 常见问题与避坑指南问题现象可能原因排查与解决思路AI生成的代码无法运行或类型错误1. 上下文过时如库版本不对。2. AI“幻觉”生成了不存在的API。1.提供精确版本号在提问时说明“本项目使用React 18.2.0和TypeScript 5.0”。2.要求AI引用官方文档“请根据React Router v6.22的官方API生成路由配置。”3.立即验证复制代码到IDE中利用类型检查和Linter快速发现明显错误。AI的理解与需求出现偏差初始提示词过于模糊或存在歧义。1.采用“角色-任务-格式”模板“你是一个资深前端工程师。任务是创建一个登录表单组件。输出格式首先解释关键决策然后提供完整的React/TSX代码。”2.进行增量式澄清不要期望一次成功。将大任务拆解先让AI实现核心逻辑再逐步添加细节验证、样式、国际化。生成的代码风格与项目不符AI缺乏项目特定的编码规范知识。1.利用项目级上下文在Cursor中确保索引打开AI会学习现有代码风格。2.提供代码示例“请参考项目中Button.tsx组件的样式使用clsx合并className导出为命名导出以相同风格创建Badge.tsx。”3.使用.cursorrules文件如前所述。处理复杂逻辑时AI陷入循环或质量下降任务的复杂性超出了单次对话的上下文处理能力。1.分而治之将复杂功能拆分成多个独立子任务分别对话解决然后自行组装。2.使用“总结-继续”模式在长对话中定期让AI总结当前已达成共识的设计和代码再基于此继续避免上下文遗忘或混淆。过度依赖导致自身能力退化用AI生成所有代码不再思考底层原理。设立“学习区”任务对于你正在学习的新技术如一个新的状态管理库先尝试自己实现一小部分再用AI生成的代码进行对比和学习分析其优劣。将AI作为“高级陪练”而非“代练”。7. 最佳实践与高阶心法保持批判性思维你仍是总工程师AI是强大的副驾驶但方向盘和目的地必须由你掌控。永远要对AI的输出进行逻辑审查和测试特别是涉及安全、资金和数据一致性的代码。投资提示词但避免过度优化花时间构建清晰的提示词是值得的但不必追求“魔法咒语”。清晰、具体、包含上下文的提示词其效果远好于模糊的“完美”提示词。建立自己的模板库持续迭代。组合使用工具发挥各自优势用Copilot加速日常编码用Cursor处理文件级重构和复杂对话用Claude分析长文档和技术设计。让合适的工具做合适的事。强化你的“领域知识”和“架构能力”AI可以帮你写代码但不能替你理解业务、做出架构权衡。你越了解你的领域如电商交易流、实时通信协议就越能指挥AI生成更贴合需求的解决方案。建立验证闭环对于AI生成的关键代码尤其是算法、数据转换和配置必须建立验证机制编写单元测试、进行集成测试、在测试环境充分验证。不要直接将未经审查的AI代码部署到生产环境。8. 总结掌握思维而不仅是工具实测Matt Pocock的AI编程技能集最实用的核心确实是“Grill Skill”——那种不断追问、验证、挑战的思维习惯。它强迫你从被动的代码接收者转变为主动的问题定义者和解决方案设计师。这套技能集的价值不在于记住几个快捷键或提示词模板而在于它重塑了你与计算机协作的方式。未来的高效开发者必然是那些能精准描述问题、善于利用强大工具验证想法、并快速迭代至正确解决方案的人。你的下一步行动清单选择一个当前项目中的小任务如优化一个函数、编写一个工具函数。有意识地运用“模糊匹配”将需求书面化、具体化。打开你的AI工具带着清晰的需求和上下文去提问。在得到回复后强制自己进行至少三轮“Grill”追问从性能、边界、错误处理等角度挑战AI的方案。对比最终代码与你平时直接写出的代码体会思维过程的差异。真正的提升始于思维的转变。现在就去实践你的第一次“结构化追问”吧。
返回列表