Cline+DeepSeek-v3-软件工程的海潮:从切图仔到AI辅助编程 ...

打印 上一主题 下一主题

主题 985|帖子 985|积分 2955

Cline+DeepSeek-v3-软件工程的海潮:从切图仔到AI辅助编程

软件工程自诞生以来,始终处于技术厘革的海潮之中。二十年前,前端工程师还被称为“切图仔”,现在他们必要管理复杂的 Vue/React 项目;十五年前,团队围在一台电脑前研究 SQL 调优,现在 Spark、Clickhouse、Postgres 等技术选型琳琅满目;十年前,程序员花一个下战书编写优雅的 shell 脚本,现在只需 5 分钟与 AI 沟通需求即可完成。
大语言模型的推广与应用,将软件工程的厘革推向了新的高度。身处其中的程序员们既感到焦急,担心被 AI 取代,又感到荣幸,由于他们能够开始接触、理解和应用这些前沿技术。
   摘要: 本文首先介绍了如何在 VS Code 中使用 Roo Cline 插件实现类似 Cursor 的功能。接着,探究了如何使用 Repo Prompt 在网页版 Claude Pro 中体验类 Cursor 的功能(相比调用 API,网页版费用更可控)。最后,通过一个 AI 辅助编程的实例,讨论了这类工具的局限性,并得出三点结论:(一)小型项目使用 AI 事半功倍,但每个 prompt 不应包含过多需求,复杂需求应分多轮对话提出;(二)对于复杂项目,市面上的 AI 临时难以处置惩罚;(三)在现实操作中,人类能够精准指出问题地点至关重要。
  
Cursor:AI 结对编程的新标杆

2023 年初,四名麻省理工的学生 Michael Truell、Andrew Brown、Aman Sanger 和 Alex Gu 创立了 Cursor。这款编辑器一经推出便引发了开发者的广泛关注。
Cursor 本质上是在 VS Code 基础上深度定制的代码编辑器。它继承了 VS Code 的全部优点,包罗丰富的插件生态和认识的界面,同时通过集成 Claude 等大语言模型,提供了更智能的编程体验。

与 GitHub Copilot 等代码补全工具差别,Cursor 开创了“对话式编程”的概念。开发者不仅能得到智能代码提示,还能与 AI 进行多轮对话,使其理解完备的业务上下文。这种革新让 Cursor 逾越了 GitHub Copilot、豆包 MarsCode 等竞品,成为真正的“AI 结对编程”工具。
   不过,Copilot 和 MarsCode 等产品也在渐渐向 Cursor 的功能靠拢。
  
Cline 与 Roo Cline:开源替代方案

然而,Cursor 的高昂订阅费用让很多开发者望而却步。在社区的不停探索下,一个名为 Cline 的开源项目应运而生。
Roo Cline 是 Cline 的改进版本,它巧妙地将多个大语言模型(如 DeepSeek、Claude、Gemini)整合到 VS Code 中。用户只需安装这个插件,就能在认识的编辑器中得到类似 Cursor 的 AI 辅助体验。
虽然 Roo Cline 在集成度上可能略逊于 Cursor,但它的开源灵活性和免费使用特性使其成为个人开发者的抱负选择。此外,无需额外维护一个 IDE 也是 Roo Cline 相比 Cursor 的一大优势。

如何“免费”使用 AI 辅助编程?

Google Gemini 2.0

Google 为开发者提供了 Gemini 的免费调用方式,只要调用频率不凌驾每分钟 15 次即可。对于 AI 辅助编程来说,这已经充足使用。
在 https://ai.google.dev/gemini-api/ 中可以获取免费的 API 密钥。

DeepSeek-v3

DeepSeek 是国内知名的大语言模型,提供了丰富的免费额度。进入 https://www.deepseek.com/ 注册并登录,即可得到 500 万 tokens 的免费额度,足以支持数天的“重度”编程需求。

实测表明,DeepSeek-v3 在 Roo Cline 中的表现优于 Gemini。

在 Roo Cline 中使用 AI 辅助编程

在 VS Code 中安装 Roo Cline 后,只需在设置中选择相应的模型并输入 API Key 即可开始使用。

接下来,只需像使用 Cursor 一样,在 VS Code 中输入需求并指定文件或路径即可。

Roo Cline 的玩法多样,设置符合的 Rule 可以大大增强其本领。由于每个人的使用场景差别,这里不做具体讨论。

RepoPrompt:在网页版 Claude Pro 中使用 AI

尽管 Claude API 的费用较高,但我们可以在网页版 Claude Pro 中使用付费额度固定的 Claude 3.5 Sonnet 模型。

在 https://repoprompt.com/ 下载 Repo Prompt 后,打开项目并选择必要附带给 AI 阅读或修改的文件,接着誊写提示语。

如上图所示:


  • 首先在 Repo Prompt 中打开项目;
  • 在 Instructions 中勾选 File Tree、XML Whole 和 Project Manager 三个前置 Prompt;
  • File Tree 将整个项目的目次结构主动整理成文本;
  • XML Whole 是 Repo Prompt 的核心功能,它会要求 Claude 输出一个 XML 格式的内容,方便后续将代码修改应用到项目中;
  • Project Manager 是自定义的提示语;
  • 在下方粘贴 pytest 的报错信息;
  • 在 Selected Files 中勾选必要上传的文件。
完成后,点击 Copy,将内容粘贴到网页版 Claude Pro 中即可。

Claude 生成 XML 代码块后,将其复制到 Repo Prompt 的 Apply > XML Input 中。

Repo Prompt 会主动解析 XML,与本地文件对比,并展示代码差异。开发者考核后即可选择是否应用这些改动。


实例:人类精准反馈提升 AI 表现

最近在编程中遇到一个问题,代码如下:
  1. async def mock_get(*args, **kwargs):
  2.     mock = AsyncMock()
  3.     mock.status = 200
  4.     if "/item/" in args[0]:
  5.         mock.json.return_value = { ... }  # 省略
  6.     else:
  7.         mock.text.return_value = "<html><body>Test content</body></html>"
  8.     return AsyncMock(__aenter__=AsyncMock(return_value=mock))
  9. async def mock_head(*args, **kwargs):
  10.     mock = AsyncMock()
  11.     mock.status = 200
  12.     return AsyncMock(__aenter__=AsyncMock(return_value=mock))
  13. crawler.session.get = AsyncMock(wraps=mock_get)
  14. crawler.session.head = AsyncMock(wraps=mock_head)
复制代码
问题的表现是 pytest 测试无法通过。我将代码和错误信息发送给多个 AI 模型(包罗 Roo Cline + DeepSeek/Gemini、Repo Prompt + Claude Pro),但它们都陷入了修正 A 错误导致 B 错误,修正 B 错误又导致 A 错误的循环中。
于是,我决定手动 Debug,发现问题的根本在于 AsyncMock 没有正确注入到我的 class 中。于是我在 prompt 中加入了一句话:
  1. It seems that the way I mock async result in pytest is not correct. There must be something wrong. Please focus on helping me fix the mock logic: ...
复制代码
效果,AI 没有陷入错误循环,而是专注于办理我提出的问题。在本轮修改后,我只需手动修复一些小问题,全部 pytest 测试便全部通过。
  1. def _create_mock_response(self, status=200, json_data=None, text_data=None):
  2.     """Helper to create consistent mock responses"""
  3.     mock = AsyncMock()
  4.     mock.status = status
  5.     mock.__aenter__.return_value = mock
  6.     if json_data is not None:
  7.         mock.json = AsyncMock(return_value=json_data)
  8.     if text_data is not None:
  9.         mock.text = AsyncMock(return_value=text_data)
  10.     return mock
复制代码
这个经历验证了以下几点:

  • AI 的输出是有限的:若在一次对话中设置过多目标,往往顾此失彼。限定对话目标可以镌汰 AI 的搜索空间;
  • AI 可能陷入死循环:比方 LLM 服务端的缓存机制。因此,如果 AI 给出了错误答案,不要原封不动地重试;
  • 精准反馈至关重要:人类能够精准指出问题地点,是 AI 辅助编程乐成的关键。

总结


  • 小型项目:使用 AI 事半功倍,但每个 prompt 不应包含过多需求,复杂需求应分多轮对话提出;
  • 复杂项目:市面上的 AI 临时难以处置惩罚,但如果项目解耦良好,AI 仍能在部分任务中提供资助;
  • 精准反馈:在现实操作中,人类能够精准指出问题地点至关重要。AI 虽然强大,但在复杂项目中仍需专业人士的指导。
AI 事半功倍,但每个 prompt 不应包含过多需求,复杂需求应分多轮对话提出;
2. 复杂项目:市面上的 AI 临时难以处置惩罚,但如果项目解耦良好,AI 仍能在部分任务中提供资助;
3. 精准反馈:在现实操作中,人类能够精准指出问题地点至关重要。AI 虽然强大,但在复杂项目中仍需专业人士的指导。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

耶耶耶耶耶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表