> 自媒体 > (AI)人工智能 > 基于聊天的 AI 编程高效实践
基于聊天的 AI 编程高效实践
来源:InfoQ
2025-09-03 11:50:11
230
管理

作者 | Enrico Piccinin

译者 | 马可薇

开发者新工作流

自 2021 年夏季 github Copilot 以预览版问世 以来,编程助手产品呈现爆发式增长。这类工具最初被用作增强型代码补全工具,而 Cursor、Windsurf 等产品则迅速转向了 Agent 交互模式:通过自然语言指令触发,助手能自主执行修改代码文件、运行终端命令等操作。

近期,GitHub Copilot 在集成聊天功能中新增了“Agent 模式”,用户可以让 Agent 代为执行各类任务。这一功能的推出再次印证了 Agent 领域的迅猛发展。不过这个“Agent 模式”与 GitHub 平台(如 github.com 网站或 GitHub CLI)上可调用的“编程 Agent”不同,后者能自主处理 GitHub issues 等任务。

本文中我们将探讨 Agent 将如何改变软件开发以及开发者工作流将会怎样演变。为直观展示这种新型工作流,我们将使用 GitHub Copilot 中的“Agent 模式”构建一个能搜索维基百科文章并列表展示结果的简易 Angular 应用(参见 VSCode 中启用 GitHub Copilot Agent 的方法),暂称其为“维基页面搜索应用”。

与 Agent 的工作流程

这种开发方式能够打造出高质量的应用程序,因为由我们的“指令”文件控制的 Agent 通常会遵循最佳实践。根据我们的实际经验发现:

Agent 编写了很全面的测试套件,覆盖了大量边界场景。

Agent 在每个 HTML 模板中都考虑了无障碍访问支持,这类工作我们往往要耗费大量时间才能完成。

Agent 使用 JSDoc 标准为代码中最关键的部分添加了清晰的注释。

总结来说,我们仅用四个步骤就构建出可运行的应用程序,全程只使用了四个提示词,而且每次调用“Claude Sonnet 4”作为 LLM 时都能在一次尝试内就取得了预期的结果。

VSCode 中的 GitHub Copilot Agent

通过聊天界面,我们可以让 Agent 替我们完成任务,比如构建我们前文中提到的那个“维基搜索应用”。

方案设计和实施

在这个基于 Agent 的工作流中,我们首先要设计解决方案,然后列出实现所需的任务(也就是确定实施方案),这是任何一个优秀的架构师在开始写代码之前都会做的事。

“维基搜索应用”的设计方案

在实施方案中,我们采用自底向上的开发方式:首先构建连接外部系统的服务层,然后在此基础上开发视图层。为简化实现,此应用将直接处理状态管理。

以下就是我们构建“维基搜索应用”的计划:

创建 WikiService 服务类,添加搜索方法作为 API 接口,用于获取维基百科文章数据

开发 WikiCard 展示组件,以卡片形式呈现单篇维基百科文章。该组件将被 WikiList 组件调用,用于构建文章网格布局

实现 WikiListComponent 主组件来管理全部文章列表,直接集成搜索框和搜索按钮,将搜索按钮的 click 事件与 WikiService 搜索 API 绑定,以 WikiCardComponents 网格形式展示搜索结果

应用初始化配置,设置 WikiList 作为应用启动时的默认加载页面

实现方案的步骤和相关 prompt

以下是分步骤实现方案(包含各阶段代码库状态链接及对应 prompt):

1. 创建 WikiService 服务

创建 WikiService 并为其添加一个方法,作为根据给定搜索词获取维基百科文章的 API。使用维基百科提供的最新 API。同时为此 API 添加测试,测试中不要使用 mock,而要使用真实 API。

第一步 prompt 执行后的代码状态

2. 开发 WikiCard 组件

创建 WikiCard 组件,这是一个在列表中以卡片形式显示单篇维基百科文章的组件。维基百科文章是由 WikipediaSearchResult 接口描述的对象,其将被 WikiList 组件用来构建检索到的文章网格。

第二步 prompt 执行后的代码状态

3. 创建 WikiListComponent

创建 WikiList 组件,这是一个以卡片形式显示维基百科文章列表的组件。其将使用 WikiCard 组件来显示列表中的每篇文章。该组件有一个搜索字段,允许用户通过搜索词搜索文章。组件还有一个按钮,允许用户从维基百科 API 获取文章。按钮的点击事件应该调用 WikiService 来获取文章。

第三步 prompt 执行后的代码状态

4. 将 WikiList 配置为起始页

将 WikiList 添加为应用启动时加载的页面

第四步 prompt 执行后的代码状态

指令,最佳实践,以及上下文

以下是我们定义并在整个实验中要求 Agent 使用的指令:

你是一位拥有丰富 Angular v19 经验的专家级 Angular 开发者。在生成代码时,请遵循以下编码标准和最佳实践:

- 使用 Angular v19 特性和语法- 尽可能使用独立组件和函数提供者- 使用 TypeScript 严格模式并启用 Angular 严格模板- 按功能组织代码,使用`src/app/components`、`src/app/pages`和`src/app/services`文件夹- 使用 Angular CLI 生成组件、服务和模块- 遵循 RxJS 最佳实践:尽可能避免手动管理订阅;在模板中使用`async`管道- 使用 Angular Forms(响应式或模板驱动)处理用户输入- 如果需要设计系统,使用 Angular Material 作为 UI 组件- 使用 Jasmine 和 TestBed 为所有组件、服务和管道编写单元测试- 为文件、类和选择器使用清晰、描述性的名称- 遵循 Angular 和 TypeScript 风格指南进行格式化和命名- 使用 JSDoc 注释记录公共 API 和复杂逻辑- 避免在模板中包含逻辑;保持模板声明式且简单- 不要使用内联模板或样式;使用外部文件- 对服务和配置使用依赖注入- 对于异步操作,优先使用 Observables 而非 Promises- 保持组件专注且小巧;在适当时将逻辑提取到服务中- 使用 environment 文件进行配置- 使用 Angular 内置路由和守卫进行导航和访问控制- 确保所有 UI 组件都具备可访问性 (a11y)- 使用 ESLint 和 Prettier 保证代码质量和格式化- 使用"npx ng .."运行 Angular CLI 命令以确保使用正确的版本- 在代码文件末尾写上"code generated by AI"- 运行测试时始终使用命令"npx ng test --browsers=ChromeHeadless --watch=false --code-coverage=false"

遵循 Anthropic 等机构近期发布 的提示工程最佳实践,指令应以角色定义为起点,而这些指令本质上类似于多数 LLM API 中的“系统提示”。通过观察下列指令,我们发现多项规范已切实转化为 Agent 生成的代码:

当指令中要求“为所有组件、服务和管道编写单元测试”时,Agent 严格执行了该要求。

“确保所有 UI 组件都具备可访问性(a11y)”的指令有被遵循(至少在 Claude Sonnet 4 为 LLM 的情况下如此)。

“使用 JSDoc 注释记录公共 API 和复杂逻辑”的指令也如实体现在了代码中。

甚至针对 bash 命令的指令(如“测试时始终使用 npx ng test...”)也被 Agent 精准执行。

这些事实表明:Agent 会严格遵循我们给出的指令,因此精确定义规范对实施质量管控至关重要。我们应当将此类指令视为核心的项目交付物,确保全体开发者共用同一套标准,从而维持质量体系的一致性。

最后再说一下元提示技术(meta-prompting)。由于指令内容高度依赖项目类型,我们可采用比较务实的方案:先要求 LLM 根据项目类型(如 React 前端应用或 Go 应用)生成初始指令模板,再基于具体需求进行个性化定制。这种“通过 prompt 生成 prompt”的元提示策略,能高效构建出符合项目特性的基础框架。

原文链接:

https://www.infoq.com/articles/effective-practices-ai-chat-based-coding/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

0
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 凡本网注明 “来源:XXX(非本站)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。 如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。 QQ:617470285 邮箱:617470285@qq.com
相关文章
三菱退出中国?官方回应:将与现有伙伴继续合作
6月23日,有媒体报道称,三菱汽车将逐步取消包括欧洲、中国在内的市场业..
2026款三菱帕杰罗曝光,第二代超选四驱+2.4T/2.0T双动力..
硬派越野圈的“老将”居然换小排量了?2026款三菱帕杰罗刚露出消息,就把..
恩智浦计划退出5G功率放大器业务;三星或将退出SATA SSD市场;三菱化学出售..
五分钟了解产业大事每日头条芯闻 恩智浦计划退出5G功率放大器业务我国首..
实拍三菱全新欧蓝德!搭1.5T四缸,内饰配大屏,不比奇骏香?..
在重庆车展上,全新一代三菱欧蓝德终于在国内亮相了,相比其国外的发布时..
试驾广汽三菱奕歌:小巧灵动
■ 阅车试驾车型:广汽三菱奕歌长/宽/高(mm):4405/1805/1685轴距(mm..
新车 | 四驱越野MPV/配侧滑门/2.2T柴油机,新款三菱Delica D:5亮相..
文:懂车帝原创 高帅鹏[懂车帝原创 产品] 日前,2025东京车展开幕,新款..
三菱集团的传奇发家史
“三菱”两个字,在日本就像一把瑞士军刀:银行、飞机、汽车、火箭、寿司..
2026款三菱Montero曝光,S-AWC四驱+差速锁全配,普拉多见了..
当 “普拉多见了都得慌” 的话题在越野圈炸锅,2026 款三菱 Montero 的曝..
日韩巨擘数据,三星2.1万亿三菱21万亿,中国第一谁?..
图片来源于网络2025年,让人火大的资本较量又来一波。韩国三星手里握着2...
关于作者
轻随风之舞..(普通会员)
文章
1696
关注
0
粉丝
1
点击领取今天的签到奖励!
签到排行

成员 网址收录40418 企业收录2986 印章生成263572 电子证书1157 电子名片68 自媒体91237

@2022 All Rights Reserved 浙ICP备19035174号-7
0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索