Gemini CLI 使用指南:将 AI 助手集成到你的终端(含网络问题与常见错误解决)对于开发者而言,命令行终端是我们最常打交道的工具之一。如果在终端中能直接调用强大的 AI 模型,无疑会极大地提升工作效率。Google 推出的 Gemini CLI 就是这样一款工具,它能将 Gemini 的能力无缝集成到你的命令行工作流中。本文将详细介绍 Gemini CLI 的安装、配置过程,并分享我在使用中遇到的关键问题及其解决方案。一、准备工作:Node.js 环境在安装 Gemini CLI 之前,请确保你的系统中已经安装了 Node.js。这是其运行的基础环境。你可以通过在终端执行以下命令来检查:node -v如果未安装,请前往 Node.js 官网 下载并安装 LTS (长期支持) 版本。二、安装 Gemini CLI安装 Gemini CLI 有两种方式:临时使用 (npx):这种方式无需全局安装,适合快速体验。每次使用时都会从网络获取最新版本。npx @google/gemini-cli全局安装 (npm):(推荐) 对于长期使用者,建议采用全局安装。这样,你就可以在系统的任何路径
向量数据库迁移实录:从 FAISS 到 Weaviate 的那些坑最近因为需要支持多用户知识库检索,我开始琢磨向量数据库的替换方案。原来系统里用的是本地的 FAISS,搭配 LangChain 用起来还挺顺,但随着需求复杂起来,比如想加 hit\_count 记录、分页、精确查某个文件的所有块,FAISS 显然就有点捉襟见肘了。🥊 为什么考虑换掉 FAISS?简单说两点:FAISS 不支持原生 filter 查询,像我要查某个 kb_id 的内容,或模糊查某个 filename 的所有内容,只能自己手动过滤;没有内置分页。每次都得查全量,再手动分页,这在数据量大时非常不友好。于是我决定换掉 FAISS,试试 Weaviate。🔁 切换 Weaviate 的过程✅ 基本查询Weaviate 的向量检索写法和 FAISS 有点类似,只是接口风格更“声明式”一点。最开始试了下这样一段代码:results = collection.query.near_vector( near_vector=query_vector, limit=5, filters=Filter.b
从 Selenium 到 Playwright:我的浏览器控制切换之旅最近在折腾一个远程浏览器自动化的项目,最开始是用 Selenium 控制浏览器执行一系列开锁流程,后来因为种种问题,最终还是换成了 Playwright。这里简单记录一下整个过程中遇到的一些坑、思考和切换过程。初始方案:Selenium 控制浏览器一开始整个系统的架构是:多线程管理浏览器池(初始化多个浏览器放进浏览器池)每个浏览器执行任务:打开页面 → 登录 → 操作页面 DOM控制流程主要使用 find_element, click, send_keys 等操作Selenium 用着也没啥大问题,配合 Chrome + chromedriver(chromedriver版本很重要),流程基本能跑通。但随着任务量增加、并发变多、页面交互越来越复杂,问题也逐渐暴露出来:有时候页面切换 iframe 很慢,Selenium 报错找不到元素弹窗不稳定,处理逻辑需要各种 try/except多线程下的浏览器状态管理很混乱,有时线程没结束浏览器还开着于是我开始思考,有没有更现代、更轻量的替代方案?Playwright 更香?P
Ubuntu 上使用 Docker 安装 Weaviate 教程在搭建自己的 RAG 知识库系统时,最初我是用 FAISS 来做向量检索的。虽然运行起来很快,但数据是存在本地磁盘文件中,维护和迁移都不太方便。特别是当系统稍微复杂一些,比如要做远程调用、版本升级或者支持多端访问时,这种方式就显得有些力不从心了。后来我了解到了 Weaviate,一个功能比较完善的开源向量数据库,支持 REST 和 gRPC 接口,数据结构更像真正的数据库,有 schema 管理,也适合做多类数据的组织,于是就决定切换过来。这篇文章就是记录一下我在 Ubuntu 上用 Docker 安装 Weaviate 的过程,并用 Python 客户端初始化 schema、插入数据做了基本验证。希望对你有帮助。一、安装 Docker首先确保你的系统中安装了最新版本的 Docker。1. 清理旧的 Docker 源(如有)sudo rm /etc/apt/sources.list.d/docker.list添加新的 GPG 密钥和阿里云源curl -fsSL https://mirrors.aliyun.com/dock
最近一直在研究如何将大模型(LLM)与 MCP 协议结合,用于业务处理自动化。 在查阅了大量资料后发现,大多数实现方案主要依赖于已有工具,比如 client 或 cherrystudio 来实现 MCP 客户端功能,而 MCP Server 通常则通过 JSON 配置文件来进行配置。因为我这段时间一直在开发基于大模型的 RAG 知识库系统(目前已基本完成),刚好客户提出业务需求,希望通过大模型调用数据库进行数据处理。这种需求本质上与之前使用的 function call 十分类似。虽然网上已有一些可以跑通的示例代码,但多数都是基于命令行交互的形式进行大模型对话。我结合项目的实际需求,对部分代码进行了优化,最终实现了通过 API 接口 的方式调用 MCP Server,大幅提升了与大模型集成的灵活性。核心架构拆解整个实现主要分为两个部分:1. MCP Server 工具创建(server.py)这一部分负责定义工具的注册与具体实现逻辑。from mcp.server.fastmcp import FastMCP import pymysql # 初始化 FastMCP mcp =
在公司中,我负责管理前后端代码的部署。随着项目数量的增加,我发现手动部署过程不仅耗时,而且容易出错。为了解决这个问题,我决定寻找一个自动化部署工具。经过一番搜索,我发现了 deploy-cli-service,但它主要支持Linux服务器。由于我们公司使用的是Windows服务器,我决定自行修改源码以适应Windows环境。以下是我修改和部署的详细步骤:步骤1:评估现有工具我发现 deploy-cli-service 工具不支持Windows服务器,因此决定对其进行修改。步骤2:修改源码主要问题集中在SFTP操作和文件路径处理上,因为Windows和Linux在这些方面存在差异。步骤3:编写备份和部署脚本我编写了一个函数 backupRemoteFile 来处理备份、删除和解压的过程。const backupRemoteFile = async (config, index) => { try { const { windowsPath, bakDir } = config; const dirName = 'dist'; cons
最近,客户要求将项目部署在Docker上,因此我开始学习并了解Docker的部署流程。下面是我整理的部署步骤:1. 安装Docker首先,在Ubuntu系统上安装Docker:sudo snap install docker2. 创建Dockerfile新建一个Dockerfile文件,并添加以下内容:# 使用官方Ubuntu镜像作为基础镜像 FROM ubuntu # 设置时区 RUN echo "Asia/Shanghai" > /etc/timezone ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8 # 更新软件包列表并安装所需软件包 RUN apt-get update \ && apt-get install -y --no-install-recommends \ openjdk-8-jdk \ python3 \ python3-pip \ && rm -rf /var/lib/apt/lists/* RUN apt-g
本文将指导您如何为PostgreSQL数据库开启归档模式,确保数据的安全性和可恢复性。检查归档模式状态首先,我们需要确认当前数据库的归档模式是否已经开启。在PostgreSQL中,可以通过以下命令查询:show archive_mode; archive_mode -------------- off (1 row)如果返回结果为off,意味着我们需要进行进一步的配置。开启归档模式开启归档模式需要修改postgresql.conf配置文件。以下是具体步骤:创建归档日志目录在服务器上创建一个新的目录,用于存放归档日志文件:mkdir /data/archivelog/编辑配置文件使用文本编辑器打开postgresql.conf文件,并进行以下修改:vi postgresql.conf在文件中添加或修改以下行archive_mode = on # 开启归档 archive_command = 'cp %p /data/archivelog/%f'重启数据库服务配置完成后,需要重启PostgreSQL服务以使更改生效:[postgres@test bin]$ ./p
摘要今天在巡检服务器时,意外发现模型预测占用了惊人的16GB内存!赶紧检查代码,发现每次模型推理都会悄悄增加约200MB的内存占用。经过一番排查,终于找到了问题的根源,并给出了解决方案。发现问题早上的服务器巡检真是让人心惊胆战,竟然发现模型推理的内存占用飙升至16GB!我立刻着手检查代码,发现每次推理时内存都会稳定增长约200MB。经过仔细分析,问题似乎出在这段代码上:// 加载ONNX运行环境和模型 OrtEnvironment environment = OrtEnvironment.getEnvironment(); // 创建会话选项 OrtSession.SessionOptions sessionOptions = new OrtSession.SessionOptions(); // 根据模型路径创建会话 OrtSession session = CommonService.getSession(environment, CommonConstant.YOLO_MODEL_PATH, sessionOptions);每次推理,session都会重新加载,而模型文件的大小恰
摘要最近,我们对一个使用React Native开发的Android应用进行了功能更新,以满足客户在低光环境下使用摄像头扫码的需求。通过增加手电筒控制功能,我们提升了应用的实用性和用户体验。背景该应用已经长时间未进行维护,但客户提出了一个新的需求:在夜间或光线不足的环境中使用摄像头扫码时,能够自动或手动开启手电筒以提高扫码成功率。解决方案在检查了现有的代码后,我们发现已经包含了开启手电筒的权限。然而,flashMode={RNCamera.Constants.FlashMode.auto} 的设置并没有如预期那样在光线不足时自动开启手电筒。因此,我们决定修改配置,以确保手电筒在需要时始终处于开启状态。代码实现以下是我们对RNCamera组件的配置修改:<RNCamera style={styles.preview} type={RNCamera.Constants.Type.back} flashMode={this.state.torchMode ? RNCamera.Constants.FlashMode.torch : RNCamera.Constants.Fl
执迷
日常记录开发中遇到的问题...
执迷欢迎你!
上线了新的网站,欢迎去参观啦! https://zhangmingrui.top
建议使用 Ctrl + D 收藏本站,让你不再错过任何篇优秀文章哟!
愿你有诗有梦,有坦荡的远方;愿你历遍山河,仍觉得人间值得!