Google免费AI大模型掀桌子啦,免费2.5 Pro+开源Gemini CLI,就是要卷死所有AI编程工具..
Gemini CLI 是 Google 昨天推出的国外版真免费开源 AI 工具,直接集成在开发者的终端(命令行)中,目前没有针对医学研究以及R代码的测评,我又来做第一个吃螃蟹的人了。这次还好,虽然螃蟹不大但是还挺香。
我查阅cli官网,https://github.com/google-gemini/gemini-cli,介绍功能的时候写了:使用 Gemini CLI,您可以: 在 Gemini 的 1M 令牌上下文窗口内及之外查询和编辑大型代码库。
使用 Gemini 的多模式功能,从 PDF 或草图生成新的应用程序。 自动执行操作任务,例如查询拉取请求或处理复杂的变基。 使用工具和 MCP 服务器连接新功能,包括使用 Imagen、Veo 或 Lyria 生成媒体 使用 Google 搜索来查询 工具,内置于 Gemini。
主要特点如下: 免费且开源:个人开发者可用 Google 账号免费登录,获得 Gemini Code Assist 许可,享受 1 万 token 上下文窗口和极高的免费调用额度(每分钟 60 次、每天 1000 次)。与 Claude Code 不同,Gemini CLI 和 OpenAI Codex CLI 一样是开源的(使用 Apache 2.0 许可),并且 Gemini CLI 在不到一天的时间里,获得了 15.1k 星。Gemini CLI 提供的功能包括代码编写、问题调试、项目管理、文档查询以及代码解释。它还连接了 MCP(模型上下文协议)服务器,具备 Agentic AI 能力。
Gemini 2.5 Pro 这个模型是文本编程与 Claude 3.7 不相上下,一定程度替换掉 20 美元每月的 Cusor 或 10 美元每月的 Windsurf 了(白P学生党福音)。
强大功能:支持代码理解、文件操作、命令执行、问题排查等多种任务,还能通过 Google 搜索为 AI 提供实时外部信息。 高度可扩展:支持 Model Context Protocol (MCP) 和扩展插件,允许自定义提示词和工作流,适合个人和团队配置。 与Gemini Code Assist集成:与 Google 的 AI 编码助手共用技术,支持 VS Code 和终端双端协作,具备多步推理和自动恢复能力。
我测试了3小时,遇到一些安装的坑,也有点自己的心得分享给大家。先说结论:
“Gemini cli终端或vscode运行可以一直免费用gemini pro2.5,真的不要钱!
一、如何安装gemini cli
1.1 首先要保持18.0以上版本的node.js。
1.2 powershell终端安装
运行红色代码。有时候会遇到bug,比如我。根据图片代码修复bug,其实就是获取权限。
1.3 google账号
Google邮箱很香,大家一定要注册个,很多老外的产品都要google激活。上面登录google账号后可以选择颜色主题。
1.4 激活失败
账号激活失败,可能是网络问题。看图片解决。其实就是fq问题,用我提供的代码搞定。
二、gemini cli界面
有2种界面,一种是powershell终端更强大,一种是vscode更方便。
2.1 终端界面可读取本地文件
如下,可以支持本地PDF读取,例如我常用的生成PICOS。问题是,我不能忍,太丑了啊。还是爱我的GPT。官网介绍Gemini CLI 终端版,不仅仅局限于文本处理它可以直接调用谷歌的视频生成模型 Veo 和图像生成模型 Imagen,让用户可以在命令行中完成创建短视频、生成图片等多媒体任务。
2.2 vscode
Vscode提供了 gemini code assist插件。也是免费的,安装后整体拖到最右边,就可以玩你的小飞机了。
发散思维
1学生党尤其没有用过GPT、claude的小伙伴可以试一试gemini 编码还是可以的。但是deepseek不也免费吗?
2 总感觉cli 刚出来,未来应该能更多的载入mcp服务变成一个小型智能体中枢。由于刚刚发布,难免bug多。见下图,300多个bug提交。
3 mcp没时间测,后续更新再看
玫瑰图R代码实战
#-----原始版------
#加载plotly包,用于生成交互式图表
library(plotly)
#创建x和t的序列。x用于表示径向分量,t用于角度。
x<-seq(0,24)/24
t<-seq(0,575,by=0.5)/575*20*pi+4*pi
#生成x和t的组合网格
grid<-expand.grid(x=x,t=t)
#转换grid数据为矩阵形式,方便进行后续计算
x<-matrix(grid$x,ncol=25,byrow=TRUE)
t<-matrix(grid$t,ncol=25,byrow=TRUE)
#计算p值,p控制花瓣的开合状态
p<-(pi/2)*exp(-t/(8*pi))
#change用于增加花瓣形状的多样性
change<-sin(15*t)/150
#u是花瓣的径向调制,通过周期性函数增加图形的复杂性
u<-1-(1-(3.6*t)%%(2*pi)/pi)^4/2+change
#y是基于x的二次函数,用于调制花瓣的高度
y<-2*(x^2-x)^2*sin(p)
#r是最终的径向距离,结合u和y进行调整
r<-u*(x*sin(p)+y*cos(p))
#计算x,y,z坐标
xx=r*cos(t)
yy=r*sin(t)
zz=u*(x*cos(p)-y*sin(p))
#使用plotly生成三维曲面图,颜色为红色系,透明度为0.5
plot<-plot_ly(x=~xx,y=~yy,z=~zz,colors='Reds',opacity=0.5)%>%add_surface()
#向图中添加绿色线条,这些线条可以代表花茎或其它装饰线
add_trace(plot,x=rep(0),y=rep(0),z=seq(-0.5,0,length=4),
mode='lines',line=list(color='green',width=8))
#--------gemini cli版本-----
# --- 1. 定义玫瑰的数学参数 (与原版基本一致) ---
# 创建x和t的序列。x用于表示径向分量,t用于角度。
x_seq <- seq(0, 24) / 24
t_seq <- seq(0, 575, by = 0.5) / 575 * 20 * pi + 4 * pi
# 生成x和t的组合网格
grid <- expand.grid(x = x_seq, t = t_seq)
# 转换grid数据为矩阵形式,方便进行后续计算
x <- matrix(grid$x, ncol = length(x_seq), byrow = TRUE)
t <- matrix(grid$t, ncol = length(x_seq), byrow = TRUE)
# 计算p值,p控制花瓣的开合状态
p <- (pi / 2) * exp(-t / (8 * pi))
# change用于增加花瓣形状的多样性
change <- sin(15 * t) / 150
# u是花瓣的径向调制,通过周期性函数增加图形的复杂性
u <- 1 - (1 - (3.6 * t) %% (2 * pi) / pi) ^ 4 / 2 + change
# y是基于x的二次函数,用于调制花瓣的高度
y <- 2 * (x ^ 2 - x) ^ 2 * sin(p)
# r是最终的径向距离,结合u和y进行调整
r <- u * (x * sin(p) + y * cos(p))
# 计算x,y,z坐标
xx <- r * cos(t)
yy <- r * sin(t)
zz <- u * (x * cos(p) - y * sin(p))
# --- 2. 使用更丰富的绘图选项进行美化 ---
# 定义一个更丰富的颜色梯度 (从花心的淡黄色到花瓣边缘的深红色)
color_scale <- list(c(0, 'rgb(255, 240, 150)'), c(0.6, 'rgb(220, 50, 50)'), c(1, 'rgb(139, 0, 0)'))
# 使用管道符(%>%)连接所有绘图步骤,代码更清晰
plot_ly() %>%
# 添加玫瑰花瓣表面
add_surface(
x = ~xx, y = ~yy, z = ~zz,
surfacecolor = ~zz, # 根据z轴高度赋予颜色,增加层次感
colorscale = color_scale, # 应用自定义的颜色梯度
showscale = FALSE, # 隐藏颜色图例,使画面更纯粹
lighting = list( # 添加光照效果,增强立体感
ambient = 0.8, # 环境光
diffuse = 0.7, # 漫反射
specular = 0.3 # 镜面高光
)
) %>%
# 添加花茎
add_trace(
x = c(0, 0), y = c(0, 0), z = c(-0.4, 0), # 简化了茎的定义
type = 'scatter3d', mode = 'lines',
line = list(color = 'darkgreen', width = 15), # 使用更粗、颜色更深的茎
showlegend = FALSE
) %>%
# 优化整体布局和场景
# 优化整体布局和场景
layout(
title = list(text = "优化的3D玫瑰图", y = 0.95),
# 将图纸和绘图区域的背景都设置为透明
paper_bgcolor = 'rgba(0,0,0,0)',
plot_bgcolor = 'rgba(0,0,0,0)',
scene = list(
xaxis = list(visible = FALSE), # 隐藏坐标轴
yaxis = list(visible = FALSE),
zaxis = list(visible = FALSE),
##bgcolor = 'rgb(10, 10, 20)', # 设置深色背景,突出主体
# 将3D场景的背景设置为透明
bgcolor = 'rgba(0,0,0,0)',
camera = list(eye = list(x = 1.5, y = 1.5, z = 0.8)), # 调整默认视角
aspectmode = 'data' # 保持图形的原始长宽比
)
)
#----- gemini cli修改版-----
# 加载plotly包,用于生成交互式图表
library(plotly)
# --- 1. 定义玫瑰的数学参数 ---
# 增加分辨率,使花瓣更平滑、细节更丰富
x_seq <- seq(0, 50) / 50 # 增加x的采样点,从25点增加到51点
t_seq <- seq(0, 575, by = 0.2) / 575 * 20 * pi + 4 * pi # 增加t的采样点,从1151点增加到2876点
# 生成x和t的组合网格
# 调整expand.grid顺序和matrix填充方式,确保x和t正确映射到矩阵维度
# 使得t作为行参数,x作为列参数,这对于plotly的surface图是常见的正确映射方式
grid <- expand.grid(t = t_seq, x = x_seq)
# 转换grid数据为矩阵形式
# x作为列参数,t作为行参数
x <- matrix(grid$x, nrow = length(t_seq), byrow = TRUE)
t <- matrix(grid$t, nrow = length(t_seq), byrow = TRUE)
# 计算p值,p控制花瓣的开合状态
p <- (pi / 2) * exp(-t / (8 * pi))
# change用于增加花瓣形状的多样性
change <- sin(15 * t) / 150
# u是花瓣的径向调制,通过周期性函数增加图形的复杂性
u <- 1 - (1 - (3.6 * t) %% (2 * pi) / pi) ^ 4 / 2 + change
# y是基于x的二次函数,用于调制花瓣的高度
y <- 2 * (x ^ 2 - x) ^ 2 * sin(p)
# r是最终的径向距离,结合u和y进行调整
r <- u * (x * sin(p) + y * cos(p))
# 计算x,y,z坐标
xx <- r * cos(t)
yy <- r * sin(t)
zz <- u * (x * cos(p) - y * sin(p))
# --- 2. 定义叶子的数学参数和坐标 ---
# 叶子参数
leaf_u_res <- 30 # 叶子长度方向分辨率
leaf_v_res <- 20 # 叶子宽度方向分辨率
leaf_length_factor <- 0.3 # 叶子长度比例
leaf_width_factor <- 0.1 # 叶子宽度比例
leaf_curvature_factor <- 0.02 # 叶子弯曲度
leaf_tilt_angle <- pi/6 # 叶子向上倾斜角度 (30度)
leaf_z_offset <- -0.25 # 叶子在Z轴上的位置
# 生成叶子基础网格 (u为行参数,v为列参数)
leaf_u <- seq(0, 1, length.out = leaf_u_res)
leaf_v <- seq(-1, 1, length.out = leaf_v_res)
leaf_grid <- expand.grid(u = leaf_u, v = leaf_v)
# 计算叶子基础形状 (在局部坐标系中)
lx_base <- leaf_grid$u * leaf_length_factor
ly_base <- leaf_grid$v * leaf_width_factor * (1 - leaf_grid$u^0.5) # 宽度随长度递减,模拟叶子尖端
lz_base <- leaf_curvature_factor * sin(pi * leaf_grid$u) # 沿长度方向的轻微弯曲
# 旋转叶子使其向上倾斜 (绕Y轴旋转)
lx_tilt <- lx_base * cos(leaf_tilt_angle) + lz_base * sin(leaf_tilt_angle)
ly_tilt <- ly_base
lz_tilt <- -lx_base * sin(leaf_tilt_angle) + lz_base * cos(leaf_tilt_angle)
# 定义两片叶子的Z轴旋转角度
stem_angle1 <- pi/4 # 第一片叶子 (45度)
stem_angle2 <- 3*pi/4 # 第二片叶子 (135度)
# 计算第一片叶子的最终坐标
leaf1_x <- lx_tilt * cos(stem_angle1) - ly_tilt * sin(stem_angle1)
leaf1_y <- lx_tilt * sin(stem_angle1) + ly_tilt * cos(stem_angle1)
leaf1_z <- lz_tilt + leaf_z_offset
# 计算第二片叶子的最终坐标
leaf2_x <- lx_tilt * cos(stem_angle2) - ly_tilt * sin(stem_angle2)
leaf2_y <- lx_tilt * sin(stem_angle2) + ly_tilt * cos(stem_angle2)
leaf2_z <- lz_tilt + leaf_z_offset
# 将叶子坐标转换为矩阵形式 (u为行,v为列)
leaf1_x_mat <- matrix(leaf1_x, nrow = leaf_u_res, byrow = TRUE)
leaf1_y_mat <- matrix(leaf1_y, nrow = leaf_u_res, byrow = TRUE)
leaf1_z_mat <- matrix(leaf1_z, nrow = leaf_u_res, byrow = TRUE)
leaf2_x_mat <- matrix(leaf2_x, nrow = leaf_u_res, byrow = TRUE)
leaf2_y_mat <- matrix(leaf2_y, nrow = leaf_u_res, byrow = TRUE)
leaf2_z_mat <- matrix(leaf2_z, nrow = leaf_u_res, byrow = TRUE)
# --- 3. 使用更丰富的绘图选项进行美化 ---
# 定义玫瑰花瓣的颜色梯度 (从花心的淡黄色到花瓣边缘的深红色)
rose_color_scale <- list(c(0, 'rgb(255, 240, 150)'), c(0.6, 'rgb(220, 50, 50)'), c(1, 'rgb(139, 0, 0)'))
# 定义叶子的颜色梯度 (绿色系)
leaf_color_scale <- list(c(0, 'rgb(100, 200, 100)'), c(0.5, 'rgb(50, 150, 50)'), c(1, 'rgb(0, 100, 0)'))
# 使用管道符(%>%)连接所有绘图步骤
plot_ly() %>%
# 添加玫瑰花瓣表面
add_surface(
x = ~xx, y = ~yy, z = ~zz,
surfacecolor = ~zz, # 根据z轴高度赋予颜色,增加层次感
colorscale = rose_color_scale, # 应用自定义的颜色梯度
showscale = FALSE, # 隐藏颜色图例
lighting = list( # 添加光照效果,增强立体感
ambient = 0.8, # 环境光
diffuse = 0.7, # 漫反射
specular = 0.3, # 镜面高光
fresnel = 0.1 # 菲涅尔效应,增加边缘光泽
)
) %>%
# 添加第一片叶子
add_surface(
x = ~leaf1_x_mat, y = ~leaf1_y_mat, z = ~leaf1_z_mat,
surfacecolor = ~leaf1_z_mat, # 叶子颜色也根据Z轴高度变化
colorscale = leaf_color_scale,
showscale = FALSE,
lighting = list(
ambient = 0.8,
diffuse = 0.7,
specular = 0.3,
fresnel = 0.1
)
) %>%
# 添加第二片叶子
add_surface(
x = ~leaf2_x_mat, y = ~leaf2_y_mat, z = ~leaf2_z_mat,
surfacecolor = ~leaf2_z_mat,
colorscale = leaf_color_scale,
showscale = FALSE,
lighting = list(
ambient = 0.8,
diffuse = 0.7,
specular = 0.3,
fresnel = 0.1
)
) %>%
# 添加花茎
add_trace(
x = c(0, 0), y = c(0, 0), z = c(-0.4, 0),
type = 'scatter3d', mode = 'lines',
line = list(color = 'darkgreen', width = 15),
showlegend = FALSE
) %>%
# 优化整体布局和场景
layout(
title = list(text = "更具细节的3D玫瑰图", y = 0.95),
paper_bgcolor = 'rgba(0,0,0,0)', # 透明背景
plot_bgcolor = 'rgba(0,0,0,0)', # 透明背景
scene = list(
xaxis = list(visible = FALSE), # 隐藏坐标轴
yaxis = list(visible = FALSE),
zaxis = list(visible = FALSE),
bgcolor = 'rgba(0,0,0,0)', # 透明背景
camera = list(eye = list(x = 1.5, y = 1.5, z = 0.8)), # 调整默认视角
aspectmode = 'data' # 保持图形的原始长宽比
)
)
#---------chatGPT4o-----
# 加载必要的包
library(plotly)
# 创建x和t的序列。x用于表示径向分量,t用于角度。
x <- seq(0, 24) / 24
t <- seq(0, 575, by = 0.5) / 575 * 20 * pi + 4 * pi
# 生成x和t的组合网格
grid <- expand.grid(x = x, t = t)
# 转换grid数据为矩阵形式,方便进行后续计算
x <- matrix(grid$x, ncol = 25, byrow = TRUE)
t <- matrix(grid$t, ncol = 25, byrow = TRUE)
# 计算p值,p控制花瓣的开合状态
p <- (pi / 2) * exp(-t / (8 * pi))
# change用于增加花瓣形状的多样性
change <- sin(15 * t) / 150
# u是花瓣的径向调制,通过周期性函数增加图形的复杂性
u <- 1 - (1 - (3.6 * t) %% (2 * pi) / pi)^4 / 2 + change
# y是基于x的二次函数,用于调制花瓣的高度
y <- 2 * (x^2 - x)^2 * sin(p)
# r是最终的径向距离,结合u和y进行调整
r <- u * (x * sin(p) + y * cos(p))
# 计算x,y,z坐标
xx <- r * cos(t)
yy <- r * sin(t)
zz <- u * (x * cos(p) - y * sin(p))
# 使用plotly生成三维曲面图,使用Viridis渐变色,透明度为0.7
plot <- plot_ly(x = ~xx, y = ~yy, z = ~zz, colorscale = 'Viridis', opacity = 0.7) %>%
add_surface()
# 添加绿色线条,代表花茎,并调整线条效果,使其更细且自然
add_trace(plot, x = rep(0), y = rep(0), z = seq(-0.5, 0, length = 4),
mode = 'lines', line = list(color = 'green', width = 4))
# 设置图形布局,使其更加美观
layout(plot,
title = "美丽的玫瑰花",
scene = list(
xaxis = list(title = 'X'),
yaxis = list(title = 'Y'),
zaxis = list(title = 'Z'),
camera = list(
eye = list(x = 1.5, y = 1.5, z = 1)
)
))
小结
“Gemini免费+未来mcp嵌入,也许可以开发个人智能体。 缺点谷歌账号+fq,不过按我说的轻松搞定。 总体能力不如 Cusor/Trae方便更不如多模态的chatGPT。
but,巨量免费知足了!
转自:https://mp.weixin.qq.com/s/S1l0YpZBDPhblZGddYhBCA


共有 0 条评论