1.前言
AI 大模型正引发编程领域的变革,带领开发者步入全新的 coding 时代。对话式编程工具 Cursor 已融入开发者日常,尽管当前它只是代码辅助工具,但基于大模型的快速发展,未来 AI 独立开发软件或许并非遥不可及,因此,投身 AI 编程浪潮刻不容缓。然而,Cursor 价格昂贵,这时 Visual Studio Code(简称 VS Code)就成为了绝佳选择。
VS Code 界面简约却功能强大,堪称全球最受欢迎的代码编辑器之一。它支持 Windows、macOS 和 Linux 等多种操作系统,具备语法高亮、智能代码补全(IntelliSense)、代码重构、内置调试器以及 Git 版本控制集成等丰富功能。并且,用户能够通过安装各类扩展来强化编辑器功能,以满足不同的开发需求。尤其值得一提的是,VS Code 拥有众多免费的 AI 编程插件,性能与 Cursor 相比毫不逊色。
2.关于插件Roo Code
Roo Code是Cline的升级版,大部分基础功能都差不多,只不过Roo Code会更加强大一些。Roo Code 是一款集成在编辑器中的人工智能自主编码助手,功能强大且灵活。它能够用自然语言交流,直接在工作区读写文件,运行终端命令,自动化浏览器操作,并与任何兼容 OpenAI 的 API 或自定义 API / 模型集成。 用户可通过自定义模式塑造其 “个性” 和功能,比如创建 QA 工程师、产品经理等不同角色的模式。它有多种交互模式,如默认的代码模式、架构师模式、询问模式,用户还能根据需求切换。其功能还包括:支持手动审批、自主执行或混合模式;可跟踪每个会话的令牌和成本使用情况;能根据特定文件类型或自定义规则限制模式的使用范围;自动响应代码错误;集成命令行,可运行多种命令并监控输出。
3.安装插件Roo Code
打开VS Code 的扩展页面 搜索"Roo Code" 然后看到如下界面,就是Roo Code了。
点击"安装"就可以完成安装了
4 申请英智DeepSeek 免费API KEY
进入英智API服务网站 注册登录并获取以下参数备用
- 服务地址: https://api.baystoneai.cn
- API-KEY: 打开获取API-KEY
- 模型: deepseek-r1-distill-qwen-32b
详细步骤可以参考 英智API快速上手
5.配置Roo Code的AI服务
Roo Code配置会更加简单些。
打开设置界面
输入API-KEY, Base URL以及模型即可。
可以根据需求设置模型相关的参数,以及系统权限配置。
其他主要设置还包括对话语言设置-选择中文,系统prompt设置,给它一个默认身份,比如Python专家。
6.使用DeepSeek-R1模型
配置好后,就可以直接和DeepSeek对话来编程了
验证服务是否可以使用, 输入"你好" 然后回车,看到如下图有信息回复说明服务是好的。
咱们让DeepSeek写一个简单的计算器,使用Python来实现。
在对话框中输入"使用python来写一个简单的计算器,使用tkinter来实现,保证界面简洁美观,代码可执行。"
ROO CODE生成的代码可以直接执行,并且没有报错,计算器界面如下:
这个时候界面有部分按钮被遮挡了,继续对话修改。
输入"计算器运行的结果看 右边部分的按钮被遮挡了 说明计算器的宽度没有控制好, 需要修改一下"
正在自动修改代码
修改后的界面
最终完成的代码
import tkinter as tk
def main():
root = tk.Tk()
root.title("简单计算器")
root.geometry("420x400") # 增加窗口宽度
root.configure(bg="#f0f8ff")
# 显示结果
result = tk.Entry(root, font=('Arial', 20), width=15, bd=5, state='readonly')
result.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
# 操作函数
def click(num):
current = result.get()
result.configure(state='normal')
result.delete(0, tk.END)
result.insert(0, current + str(num))
result.configure(state='readonly')
def clear():
result.configure(state='normal')
result.delete(0, tk.END)
result.insert(0, '0')
result.configure(state='readonly')
def calculate():
try:
current = result.get()
result.configure(state='normal')
result.delete(0, tk.END)
result.insert(0, eval(current))
result.configure(state='readonly')
except:
result.configure(state='normal')
result.delete(0, tk.END)
result.insert(0, '错误')
result.configure(state='readonly')
# 创建按钮
buttons = [
('7', 1, 0), ('8', 1, 1), ('9', 1, 2), ('/', 1, 3),
('4', 2, 0), ('5', 2, 1), ('6', 2, 2), ('*', 2, 3),
('1', 3, 0), ('2', 3, 1), ('3', 3, 2), ('-', 3, 3),
('0', 4, 0), ('.', 4, 1), ('=', 4, 2), ('+', 4, 3)
]
for (text, row, col) in buttons:
if text == '=':
btn = tk.Button(root, text=text, font=('Arial', 18), bg='lightblue',
command=calculate, width=6, height=2) # 增加按钮宽度
else:
btn = tk.Button(root, text=text, font=('Arial', 18), bg='white',
command=lambda t=text: click(t), width=6, height=2) # 增加按钮宽度
btn.grid(row=row, column=col, padx=5, pady=5)
# 清除按钮
clear_btn = tk.Button(root, text='C', font=('Arial', 18), bg='lightblue',
command=clear, width=6, height=2)
clear_btn.grid(row=4, column=3, padx=5, pady=5)
root.mainloop()
if __name__ == "__main__":
main()