关于 Gemini Rust Suite 🦀
Gemini Rust Suite 是一组用于 Google Gemini 的 Rust 组件,包含 CLI、持久语义记忆和工具集成,面向需要命令行交互与 MCP 工具调用的用户。它还可管理外部 MCP 服务,并提供文件系统、命令执行和记忆存储等内置服务。
主要功能
- 01Google Gemini API 异步访问
- 02交互式 CLI 与任务循环
- 03LanceDB 持久语义记忆
- 04自动检索和保存记忆
- 05内置文件系统、命令和记忆服务
适用场景
- 01在命令行中进行 Gemini 对话
- 02跨会话检索相关记忆
- 03经确认后调用 MCP 工具
- 04运行内置文件系统或命令服务
MCP 相关
MCP Host 可发现、启动并管理外部 MCP 服务,支持 stdio、SSE 和 WebSocket,并将工具调用与资源获取接入 Gemini。项目也包含文件系统、命令执行和记忆存储等内置 MCP 服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Gemini Rust Suite 🦀
本项目提供了一套用于与 Google Gemini 模型交互的 Rust crate,支持通过模型上下文协议(MCP)使用工具、持久化语义记忆,以及适用于 Linux 终端的强大命令行界面(CLI)等高级功能。
✨ 目录
🏗️ 架构
Gemini Rust Suite 是一个模块化项目,由 Cargo 工作区中的多个 crate 组成:
-
gemini-core:提供基础组件:- 用于与 Google Gemini API(
generateContent端点)交互的异步GeminiClient。 - 与 Gemini API 请求/响应格式相对应的类型安全 Rust 结构体(内容部分、函数调用、生成配置)。
- 核心配置加载(从 TOML 加载
GeminiConfig)和错误处理(GeminiError)。 - MCP 使用的共享 JSON-RPC 类型(
Request、Response、ServerCapabilities、Tool)。
- 用于与 Google Gemini API(
-
gemini-ipc:集中定义进程间通信:- 为不同守护进程/客户端之间传递的消息定义标准化 Rust 结构体/枚举(例如
gemini-cli、mcp-hostd、HAPPE、IDA)。 - 确保通信协议一致(依靠
serde进行序列化)。
- 为不同守护进程/客户端之间传递的消息定义标准化 Rust 结构体/枚举(例如
-
gemini-mcp:实现模型上下文协议(MCP)的主机端:McpHost负责发现、启动(通过 stdio、SSE、WebSocket)并与 MCP 服务(外部工具/服务)通信。- 处理用于工具执行(
mcp/tool/execute)和资源检索的 JSON-RPC 通信。 - 在 Gemini 函数调用与 MCP 工具执行之间进行转换。
- 包含
mcp-hostd二进制文件,这是一个独立的 MCP 主机守护进程(使用gemini-ipc与客户端通信)。 - 提供内置 MCP 服务(
filesystem、command、memory_store)的源代码。
-
gemini-memory:实现持久化语义记忆库:- 使用 LanceDB 作为向量数据库。
- 存储记忆(带元数据的键值对)及其向量嵌入。
- 根据查询含义执行语义搜索,以查找相关记忆。
- 依靠
McpHostInterface(通常由gemini-mcp提供)调用外部embedding/embed工具来生成向量。 - 提供
enhance_prompt功能,为大模型提示词添加相关记忆上下文。
-
gemini-cli:面向用户的主要应用程序:- 使用其他 crate 构建的命令行界面(
gemini-cli-bin)。 - 支持单次提示词、交互式聊天和任务循环。
- 集成 MCP 以使用工具,并集成 Memory 以感知上下文和历史记录。
- 管理用户配置、聊天历史记录和会话状态。
- 可以连接到
mcp-hostd守护进程(通过gemini-ipc),或运行内嵌的McpHost。 - 还可以通过标志(
--filesystem-mcp等)直接运行内置 MCP 服务。
- 使用其他 crate 构建的命令行界面(
-
(新增)
HAPPE:主机应用环境守护进程:- 旨在作为主要执行环境,在更复杂的场景中取代直接使用 CLI。
- 管理用户/客户端、主大模型、
IDA和 MCP 服务之间的交互。 - 使用
gemini-ipc与IDA通信。 - 处理大模型调用和由大模型发起的 MCP 工具执行。
-
(新增)
IDA:内部对话应用守护进程:- 管理持久化记忆及其他后台认知任务。
- 通过
gemini-ipc与HAPPE通信。 - 通过 Memory MCP 服务(使用
gemini-mcp客户端逻辑)进行检索和存储。
🚀 功能
本套件通过其组件提供一套全面的功能:
- 核心 API 访问:与 Gemini API 进行可靠的异步通信。
- 工具使用(MCP):通过 Model Context Protocol 将 Gemini 连接到外部工具和服务,扩展其能力。
- 持久化记忆:使用语义向量数据库(LanceDB)为 Gemini 配备长期记忆,支持跨会话检索上下文。
- 自动增强提示词:自动将相关记忆注入提示词。
- 自动存储记忆:自动将对话中的关键信息保存到记忆库。
- 交互式 CLI:提供易于使用的命令行界面(
gemini),支持多种交互模式。 - 聊天历史记录:在不同 CLI 命令之间保留对话历史记录(需要 shell 包装函数)。
- 配置:通过配置文件和环境变量管理 API 密钥、系统提示词、模型和功能开关。
- 格式化输出:CLI 支持 Markdown 渲染和语法高亮。
- 内置工具:提供可直接使用的 MCP 服务,支持文件系统操作、命令执行以及记忆存储和嵌入。
✅ 前置条件
- Rust 工具链: 从 https://rustup.rs/ 安装 🛠️
- Gemini API 密钥: 从 Google AI Studio 获取 🔑
- 支持的 Shell(用于 CLI 包装器): 建议使用 Bash 或 Zsh,以便流畅地使用
gemini命令 🐚 - (可选)外部 MCP 服务: 如果你想连接内置工具以外的工具。
📦 安装(CLI)
使用本套件的主要方式是通过 gemini-cli 应用。最简单的安装方式是使用提供的脚本:
# Clone the repository (if you haven't already)
# git clone https://github.com/your-username/gemini-rust-suite
# cd gemini-rust-suite
# Run the installation script from the project root
./install.sh
该脚本将:
- 检查是否已安装 Rust。
- 检查安装目录(
~/.local/bin)是否存在;如不存在,则创建该目录。 - 构建发布版二进制文件(
gemini-cli-bin和mcp-hostd)。 - 将二进制文件安装到
~/.local/bin/。 - 如果找到
install_mcp_servers.sh,则尝试使用它安装 MCP 服务包装脚本(例如,内置服务的包装脚本)。 - 在你的
~/.bashrc或~/.zshrc(如果检测到)中添加名为gemini的包装函数。此包装函数对于在不同命令之间管理会话历史记录至关重要。 - (仅限 Zsh) 添加名为
mcpd的辅助函数,用于管理mcp-hostd守护进程(mcpd start、mcpd stop、mcpd status、mcpd logs)。 - 提示你重新加载 shell 配置(例如,
source ~/.zshrc)。
重要: 安装后,必须重新加载 shell 配置,gemini 命令(Zsh 用户还包括 mcpd)才能使用。🔄
手动安装(不使用 Bash/Zsh 或偏好手动设置时)🔧
- 构建所需的二进制文件:
cargo build --release --bin gemini-cli-bin --bin mcp-hostd - 将二进制文件复制到 PATH 中的某个位置:
cp target/release/gemini-cli-bin ~/.local/bin/ cp target/release/mcp-hostd ~/.local/bin/ - 确保所选位置(例如,
~/.local/bin)已加入 PATH。 - 至关重要的是,请将
gemini包装函数(可在install.sh脚本或下文中找到)手动添加到 shell 配置文件(.bashrc、.zshrc等),以便在不同命令之间保留会话历史记录。没有该包装函数,历史记录只会在单个交互式(-i)会话中保留。# Gemini CLI Wrapper Function Start # This function wraps the gemini-cli-bin to manage session environment variables gemini() { # Path to the actual binary local gemini_bin="$HOME/.local/bin/gemini-cli-bin" # Check if binary exists if [ ! -x "$gemini_bin" ]; then echo "Error: gemini-cli-bin not found or not executable at $gemini_bin" >&2 return 1 fi # Run the actual binary, capturing output local output # Use eval to handle potential quotes in arguments correctly output=$(eval "$gemini_bin \"\$@\"") local exit_code=$? # Extract export commands from the output if the command was successful if [ $exit_code -eq 0 ]; then # Filter lines starting with # export local exports exports=$(echo "$output" | grep '^# export') # Execute the export commands if any were found if [ -n "$exports" ]; then # Remove the comment and execute eval "$(echo "$exports" | sed 's/^# export //')" fi # Print the output, excluding the export lines echo "$output" | grep -v '^# export' else # If the command failed, just print the output (likely error messages) echo "$output" fi return $exit_code } # Gemini CLI Wrapper Function End - 重新加载 shell 配置。
⚙️ 配置
本套件使用若干配置文件,主要通过 CLI 进行管理:
CLI 配置(config.toml)
- 位置:
~/.config/gemini-suite/config.toml - 用途: 为 CLI 和守护进程(HAPPE、IDA、mcp-hostd)提供统一配置。
- 管理方式: 使用
gemini config或gemini daemon-manager config子命令。 - 详情: 请参阅
cli/README.md和daemon-manager/README.md。
MCP 服务配置(mcp_servers.json)
- 位置:
~/.config/gemini-suite/mcp_servers.json - 用途: 定义 MCP Host 如何连接到外部工具服务。
- 管理方式: 使用
gemini mcp或gemini daemon-manager mcp子命令。
API 密钥优先级 🔑
~/.config/gemini-suite/config.toml中的值。GEMINI_API_KEY环境变量。- 当前工作目录中的
.env文件(或开发期间的项目根目录)中的值。
系统提示词优先级 🗣️
~/.config/gemini-suite/config.toml中的值。- CLI 中嵌入的默认提示词。
💡 CLI 用法
安装并重新加载 shell 后,使用 gemini 包装命令。
# Basic prompt
gemini "Explain Rust's ownership model."
# Interactive chat mode (maintains history within the session)
gemini -i
# Type '/exit' or press Ctrl+C to quit
# Using the wrapper for history across commands:
# First command (creates a session ID):
gemini "What is the capital of France?"
# Subsequent command uses the history (if shell reloaded/wrapper sourced):
gemini "What language do they speak there?"
# Start a new conversation thread (gets a new session ID)
gemini --new-chat "Tell me about Tokio."
# Ask Gemini for command help (requires 'command' MCP server)
gemini -c "list files sorted by modification time"
# Ask Gemini to use a tool (requires relevant MCP server)
gemini "Read the contents of my main.rs file."
# Task loop mode
gemini -t "Refactor the Rust code in src/utils.rs to improve error handling."
# Show configuration
gemini --show-config
# Get help on all flags
gemini --help
# Manage the MCP Host Daemon (Zsh only, via install.sh helper function)
mcpd start
mcpd status
mcpd stop
mcpd logs
交互模式
- 单次模式(默认): 发送一条提示词,获取一条回复。
- 交互式聊天(
-i): 在单次 CLI 执行中进行 REPL 风格的对话。历史记录会在此模式下保留。 - 任务循环(
-t): 分配一项复杂任务,由 Gemini 自主处理,可使用工具,并仅在必要时请求澄清。
聊天历史记录
- 历史记录会保存到
~/.local/share/gemini-suite/history/中的文件。 - 要在不同 shell 会话间正常使用,必须使用安装程序安装的包装函数。
记忆功能
由 gemini-memory 和 LanceDB(~/.local/share/gemini-suite/memory.db)提供支持。
- 记忆代理(
--enable-memory-broker/--disable-memory-broker): 自动检索相关的历史记忆,并将其作为上下文添加到提示词中。 - 自动记忆(
--enable-auto-memory/--disable-auto-memory): 自动从对话中提取并保存关键信息。 - 需要嵌入服务,通常由内置的
memory-store-mcp服务提供,或使用通过mcp_servers.json配置的外部同类服务。
MCP 集成与函数调用
由 gemini-mcp 提供支持。
- CLI 会连接
mcp_servers.json中定义的 MCP 服务(通过mcp-hostd守护进程或内部主机)。 - 发现的工具会提供给 Gemini。
- 当 Gemini 决定使用工具时:
- CLI 会显示拟议的工具调用(例如,
filesystem.readFile(path="./README.md"))。 - 执行前会请求你确认(y/n)。
- 确认后,通过 MCP 主机/服务执行该工具。
- 将结果发送回 Gemini。
- CLI 会显示拟议的工具调用(例如,
- 安全: 确认前务必检查工具调用,尤其是执行
command或修改文件系统的操作。 - 内置服务: CLI 二进制文件本身可以运行随附的服务:
gemini --filesystem-mcpgemini --command-mcpgemini --memory-store-mcp(为记忆功能提供嵌入和存储) (这些标志仅运行服务;不接受提示词。)
- 守护进程管理:
mcp-hostd二进制文件是独立的守护进程。你可以直接管理它(例如,mcp-hostd &),也可以使用install.sh为 Zsh 用户添加的mcpd辅助函数(mcpd start、mcpd stop、mcpd status、mcpd logs)。
💻 开发
此项目是一个 Cargo 工作区。
# Clone the repository
# git clone https://github.com/your-username/gemini-rust-suite
# cd gemini-rust-suite
# Build all crates
cargo build
# Build the CLI specifically (release mode)
cargo build --release --package gemini-cli
# Run the CLI directly from the workspace root
# (Ensure API key is set via .env in workspace root or exported env var)
cargo run --package gemini-cli -- "Your prompt"
cargo run --package gemini-cli -- -i # Interactive mode
cargo run --package gemini-cli -- -c "find text in files" # Command help
# Run tests for all crates
cargo test
# Run tests for a specific crate
cargo test --package gemini-core
# Run the MCP Host Daemon directly
cargo run --package gemini-mcp --bin mcp-hostd
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。