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

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 TreeXML WholeProject 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 表现

最近在编程中遇到一个问题,代码如下:

python 复制代码
async def mock_get(*args, **kwargs):
    mock = AsyncMock()
    mock.status = 200
    if "/item/" in args[0]:
        mock.json.return_value = { ... }  # 省略
    else:
        mock.text.return_value = "<html><body>Test content</body></html>"
    return AsyncMock(__aenter__=AsyncMock(return_value=mock))

async def mock_head(*args, **kwargs):
    mock = AsyncMock()
    mock.status = 200
    return AsyncMock(__aenter__=AsyncMock(return_value=mock))

crawler.session.get = AsyncMock(wraps=mock_get)
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 中加入了一句话:

txt 复制代码
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 测试便全部通过。

python 复制代码
def _create_mock_response(self, status=200, json_data=None, text_data=None):
    """Helper to create consistent mock responses"""
    mock = AsyncMock()
    mock.status = status
    mock.__aenter__.return_value = mock
    if json_data is not None:
        mock.json = AsyncMock(return_value=json_data)
    if text_data is not None:
        mock.text = AsyncMock(return_value=text_data)
    return mock

这个经历验证了以下几点:

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

总结

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

AI 事半功倍,但每个 prompt 不应包含过多需求,复杂需求应分多轮对话提出;

  1. 复杂项目 :市面上的 AI 暂时难以处理,但如果项目解耦良好,AI 仍能在部分任务中提供帮助;

  2. 精准反馈:在实际操作中,人类能够精准指出问题所在至关重要。AI 虽然强大,但在复杂项目中仍需专业人士的指导。

相关推荐
Niuguangshuo13 分钟前
音频数据增强:提升音频信号质量的多种技术
人工智能·音视频·语音识别
AI云极21 分钟前
Ollama VS LocalAI:本地大语言模型的深度对比与选择指南
人工智能·语言模型·自然语言处理
图王大胜22 分钟前
模型 断裂点理论(风险控制)
人工智能·项目管理·工程管理·风险管理·战略规划·企业发展
啊波次得饿佛哥30 分钟前
3. ML机器学习
人工智能·机器学习
说私域35 分钟前
京东“无界零售”战略下的开源AI智能名片2+1链动模式S2B2C商城小程序应用探索
人工智能·开源·零售
梦想的初衷~43 分钟前
AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表
开发语言·人工智能·r语言
Kai HVZ1 小时前
《机器学习》——贝叶斯算法
人工智能·机器学习
大力财经1 小时前
激发本地生意,抖音生活服务连锁商家生意同比增长超80%
大数据·人工智能
新加坡内哥谈技术1 小时前
CES 2025年度AI科技亮点:五大创新产品引领未来生活
人工智能·科技·生活
gs801401 小时前
K-Means 聚类算法:用生活场景讲解机器学习的“分组”方法
人工智能·机器学习·无监督学习·用户行为分析·k-means 聚类·精准推荐系统