前言
去年下半年,Cursor 成为了开发者社区的热门话题,甚至让许多不懂编程的用户也能轻松搭建网站和应用,掀起了一股独立开发的热潮。然而,每月 20 美元的费用对不少人来说并不便宜。此时,你可以通过 Cline、Aider Composer 等插件搭配其他大模型后端,实现类似的效果,同时节省成本。
关于 AI 编程
AI 编程目前主要有两种模式:
- 全自动模式(如 Cline、Aider):用户只需描述需求,AI 自动生成代码。这种方式适合小型项目,如单页网页或命令行工具的开发。但当前技术尚未成熟,复杂项目容易出问题。
- 半自动模式(如 Copilot):用户与 AI 协作编写代码。AI 提供代码补全和建议,相当于一个智能助手。
需要注意的是,无论哪种模式,生成的代码都不应直接照单全收。建议搭配 Git 等版本控制工具,多次提交代码并对比修改内容,以确保代码质量和可维护性。
Cline 的问题
Cline 虽然功能强大,但其对 Token 的消耗非常快。测试中发现,仅编写一个页面,就消耗了价值 20 元的某模型 Token。这种高成本让许多开发者望而却步。
使用本地部署的 DeepSeek 模型
为了解决 Token 消耗问题,我尝试使用本地部署的 DeepSeek 模型作为 Cline 的后端。DeepSeek 的蒸馏模型(原版 671B)效果不错,且成本更低。
遇到的问题
在默认配置下,DeepSeek 模型无法直接与 Cline 兼容,系统会提示:
Cline is having trouble…
Cline uses complex prompts and iterative task execution that may be challenging for less capable models. For best results, it’s recommended to use Claude 3.5 Sonnet for its advanced agentic coding capabilities.
这一问题的根本原因在于 Cline 的工作模式需要模型具备较强的代理式推理、分步骤思考以及对复杂指令的理解能力。而 DeepSeek-R1 14B 等开源模型在链式推理和复杂上下文推断上可能表现不足,导致与 Cline 的交互出现问题。
调整上下文长度
上下文长度(Context Length)指的是模型一次推理过程中能处理的 Token 数量上限。如果上下文长度不足,模型在处理多轮对话或长提示时,会截断或遗忘部分信息,导致任务无法完整执行。
许多开源模型的初始上下文窗口为 2K 或 4K,而 Cline 的复杂提示和多轮对话容易超出这一范围。因此,我们需要调整上下文长度以解决问题。
在 Ollama 中创建大上下文长度模型镜像
通过 Ollama,我们可以创建一个支持 32K 上下文长度的 DeepSeek 模型副本。具体步骤如下:
-
创建一个名为
deepseek-r1-14b-32k.ollama
的文件,内容如下:
plaintext
FROM deepseek-r1:14b
PARAMETER num_ctx 32768 -
使用以下命令创建新模型:
bash
ollama create deepseek-r1-14b-32k -f deepseek-r1-14b-32k.ollama -
完成后,执行
ollama list
验证模型是否创建成功。
在 Cline 中,将模型切换为 deepseek-r1-14b-32k
,即可使用 32K 的上下文窗口,避免因上下文不足导致的报错。
映射 Ollama 服务到本地
如果模型部署在远程服务器上,可以通过 SSH 隧道将其映射到本地:
bash
ssh -L 11434:localhost:11434 用户名@服务器地址 -p 端口
配置 Cline 插件
- 点击右上角的齿轮按钮。
- 在 API Provider 中选择 Ollama,模型选择
deepseek-r1-14b-32k
。 - 点击「Done」保存设置。
代码生成实战
以开发一个「新年祝福生成器」为例,我使用了详细的提示词来指导 AI 生成代码。虽然生成过程中出现了一些警告,但 AI 能够根据提示自动修正问题。
最终的代码虽然存在一些小问题(如未定义的扩展方法),但经过手动修复后,页面成功运行。
部署 LocalAI(可选)
LocalAI 是一个兼容 OpenAI API 协议的网关,支持在本地加载模型进行推理。如果你有兴趣,可以尝试部署 LocalAI,进一步优化开发流程。
小结
DeepSeek 模型与 Cline 插件的结合,为开发者提供了一种低成本、高效率的智能编程方案。虽然仍有一些问题需要解决,但整体效果令人满意。未来,我将继续探索其他插件,进一步提升开发体验。