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

作者 | 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
相关文章
《飞驰人生》片尾为何谢王思聪?不止借车库,千万跑车全是真家伙..
提起《飞驰人生》,不少人都记得片尾字幕里王思聪的名字,却鲜少有人知道..
中国古代的顶级“超跑”,如今全球仅剩六千匹!汗血宝马是啥样?..
在历史的长河中,骏马总是与英雄、战争和传奇紧密相连,而对于我们中国人..
法拉利296 Challenge Stradale路试曝光:赛道版公路跑车即将到来..
【网通社快报】法拉利被拍到正在测试一款重度伪装的原型车,外观酷似赛道..
10款你应该现在就入手的跑车,趁它们还没成为经典款!..
整备质量马力扭矩布局2195磅138马力126磅英尺中置引擎,后轮驱动MR-S 是..
消息称保时捷下月推911 GT3 Cabriolet敞篷跑车:折叠软顶..
IT之家 2 月 24 日消息,汽车媒体 thesupercarblog 于 2 月 22 日发布博..
新能源汽车出海2.0:从“卖车”到“建生态”
文 | 惊蛰研究所,作者|芒种2007年,华语女子团体S.H.E的一首《中国话》..
汽车能“乘火车”返乡了!订单火爆→
今年春运,“12306托运汽车订单火爆”的话题冲上热搜。汽车“坐”着火车..
湖北造飞行汽车来了!单价或50万元以内,市民可以像开汽车一样开“飞车”..
极目新闻记者 黄忠 陈倩 杨绍杭 王俐燃 刘中灿像车,又像飞机,能垂直起..
紧急召回!近30万辆汽车,吉林车主快自查!
国家市场监督管理总局网站2月9日发布上海蔚来汽车有限公司的汽车召回信息..
关于作者
轻随风之舞..(普通会员)
文章
1928
关注
0
粉丝
1
点击领取今天的签到奖励!
签到排行

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

0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索