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
最近,我注意到许多编程大牛都在积极地刷LeetCode上的算法题目。这激发了我的兴趣,于是我也决定加入这场挑战。初探算法题我尝试了两道题目,虽然最终找到了解决方案,但当我对比官方的解答时,发现自己的代码实现方式与官方的思路大相径庭。这让我意识到,还有很大的提升空间。public class Solution { public int lengthOfLongestSubstring(String s) { Integer num = 0; try { byte[] bytes = s.getBytes("UTF-8"); LinkedHashMap<Byte,Byte> map = new LinkedHashMap<>(); List<Integer> intList = new ArrayList<>(); for (byte b:bytes) {
最近,客户要求将项目部署在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
摘要当您的网站遭受DDoS攻击时,CloudFlare提供了一项强大的安全功能——真人验证,以保护您的在线资产免受恶意流量的侵害。DDoS攻击与真人验证DDoS攻击是一种常见的网络攻击手段,目的是通过大量流量使网站服务不可用。CloudFlare的真人验证功能可以在遭受DDoS攻击时,通过验证访问者是否为真人来减轻攻击影响。开启真人验证的步骤要开启CloudFlare的真人验证功能,请按照以下步骤操作:登录CloudFlare账户,选择需要开启真人验证的域名。进入安全性设置页面。在安全级别选项中,选择“I'm Under Attack!”模式。子域名的真人验证启用“I'm Under Attack!”模式后,此域名下的所有子域名都将要求进行真人验证,以确保整个网站受到保护。定制化配置如果您不希望所有子域名都进入“I'm Under Attack!”模式,CloudFlare提供了灵活的配置规则,允许您创建自定义规则来指定特定子域名或路径应用真人验证。结尾通过CloudFlare的真人验证功能,您可以在遭受DDoS攻击时,有效地保护您的网站不受恶意流量的影响。配置完成后,规则将立即生效,
执迷
日常记录开发中遇到的问题...
执迷欢迎你!
上线了新的网站,欢迎去参观啦! https://zhangmingrui.top
建议使用 Ctrl + D 收藏本站,让你不再错过任何篇优秀文章哟!
愿你有诗有梦,有坦荡的远方;愿你历遍山河,仍觉得人间值得!