aichat
Rust 编写的多模型聚合 CLI 工具,一站式调用 OpenAI/Claude/Gemini/Ol
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Rust 编写的多模型聚合 CLI 工具,一站式调用 OpenAI/Claude/Gemini/Ol
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
清晨九点,你打开终端准备处理一个棘手的 Git 问题——需要批量重命名 300 个文件,又不想写复杂的 bash 脚本。以前你得打开浏览器问 ChatGPT,再把答案复制回来。而现在,只需在终端敲一行 aichat "帮我把 src/ 下的 .js 文件重命名为 .ts",AI 直接帮你执行,命令、确认、一步到位。
AIChat(sigoden/aichat)正是这样一款工具:它把主流 LLM 的能力封装进命令行,让你在任意终端环境里随时调用 AI,同时支持 Shell 助手、交互式对话(RAG)、AI Agent 和内置 Web 界面。就像给程序员打造了一个随叫随到的 AI 副驾驶,覆盖从日常问答到复杂任务自动化的全场景。## 从 REPL 到全功能 Agent:AIChat 的演进之路
AIChat 由独立开发者 sigoden 于 2023 年初创建,GitHub 页面显示 Apache-2.0/MIT 双许可证。项目的起点很简单:作者想在自己的终端里用一个命令和 LLM 对话,不需要打开浏览器,不需要切换窗口。这个朴素的需求催生了最早的 Chat-REPL(Read-Eval-Print Loop)模式——用户可以在交互式会话中持续对话,每次回车发送当前输入,AI 回复实时流式输出。
随着 OpenAI Function Calling 功能的开放,sigoden 为 AIChat 加入了对函数调用的支持,并逐步扩展为 Agent 模式。Agent = Instructions(提示词)+ Tools(工具调用)+ Documents(RAG),三者的结合让 AI 不再只是"聊天",而是能真正执行任务的助手。项目仓库目前已有超过 10,000 颗星,收获了大量开发者的认可。## 核心功能详解:每个模式都解决一类实际问题
在 CMD 模式下,用户每次输入一行命令,AI 处理后直接返回结果。这种方式非常适合快速问答、代码片段生成、文本翻译等一次性任务:
aichat 解释这段正则表达式: ^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$
aichat 将以下 JSON 美化: {"name":"test","value":123}
图1:CMD 模式界面,终端内直接获取 AI 回答
Chat-REPL 是 AIChat 最具特色的交互模式。它提供类 shell 的交互界面,支持多行输入、Tab 自动补全、历史命令搜索、可配置快捷键(Emacs/Vi),让对话体验接近专业的终端编辑器。对于需要多轮推理、上下文关联、反复调试的场景,REPL 模式比单次 CMD 效率高出数倍。
图2:REPL 模式,支持多行编辑和代码高亮
这是 AIChat 最实用的功能之一。用户用自然语言描述想要的 Shell 操作,AI 会理解当前操作系统和 Shell 环境,生成对应的命令并直接执行或请求用户确认。例如:
aichat 找到所有超过 100MB 的日志文件并删除三天前的
aichat 统计 src/ 下每个 TypeScript 文件的行数
aichat 将所有 .csv 文件的第三列按数字排序
与传统 AI 问答不同,Shell 助手会感知你当前的 shell 环境(bash/zsh/fish/Windows PowerShell),输出与环境匹配的语法,还能智能检测危险操作(如 rm -rf)并主动提示。
图3:Shell 助手直接执行命令
AIChat 内置了检索增强生成(RAG)能力。用户可以上传本地文件、目录甚至远程 URL,AI 会自动对文档进行分块、向量化,并在回答时检索相关内容。这解决了大模型"不知道你本地项目细节"的问题。
应用场景包括:分析代码库架构、查询项目文档、基于私有知识库问答。对于需要 AI 深入了解特定上下文的开发者,这个功能直接省去了手动复制粘贴文档内容的繁琐步骤。
图4:RAG 模式,让 AI 读取本地文档
AI Agent 模式将 Function Calling 发挥到极致。通过 MCP(Model Context Protocol)协议或内置工具集,Agent 可以调用 文件系统操作、Web 搜索、代码执行、API 请求 等外部能力,自主规划步骤并完成任务。
简单来说,Agent 就是"你描述目标,AI 自己想办法完成"的工作流。你可以定义一个 Agent(设定角色 + 工具 + 知识库),然后让它自动完成复杂任务,比如"分析这个代码仓库,生成一份架构文档",Agent 会自主决定调用哪些工具、读取哪些文件、输出什么结果。
图5:AI Agent 自主规划并执行任务
aichat --serve 可以启动一个本地 HTTP 服务,提供三个 Web 界面:
这个功能对于临时测试 API 调用、在团队内部分享 AI 接口非常实用。
图6:LLM Playground Web 界面
图7:LLM Arena 对比不同模型回答
AIChat 支持超过 20 家 LLM 提供商,包括 OpenAI、Claude、Gemini、Ollama(本地)、Groq、Azure-OpenAI、VertexAI、Bedrock、Deepseek、Mistral、XAI Grok、Cohere、Qianwen(阿里通义)、Ernie(百度文心)等。用户只需在配置文件中指定模型,即可随时切换,无需修改代码。
对于需要同时使用多个模型做对比测试的开发者,或在团队内部署需要灵活切换模型的场景,这个特性省去了大量的配置工作。
图8:Function Calling 与 AI 工具集成## 技术架构:Rust 实现的高性能 CLI 工具
AIChat 由 Rust 语言编写,这是一个关键的技术选择。Rust 以内存安全、高性能、零成本抽象著称,使得 AIChat 在二进制分发和运行时性能上都有显著优势——最终产出的可执行文件体积小、启动快、不依赖 Node.js 或 Python 运行时。
从源码结构看,src/ 目录下包含:CLI 入口(cli.rs)、多 Provider 客户端(client/)、配置管理(config/)、RAG 模块(rag/)、REPL 核心(repl/)、渲染层(render/)、函数调用(function.rs)、HTTP 服务(serve.rs)和工具函数(utils/)。模块化设计让各功能之间解耦清晰,便于维护和扩展。
配置通过 YAML 文件管理,支持模型选择、温度参数、函数调用开关、工具集映射、会话压缩阈值等细粒度控制。对于高级用户,AIChat 还支持自定义 Role(角色)——为不同场景预设系统提示词和行为配置,比如"代码审查助手"、"翻译官"或"架构分析师",一键切换。## 上手体验:安装简单,学习曲线平缓
AIChat 的安装方式极为灵活:支持 Rust 官方包管理器 cargo install、Homebrew、Scoop(Windows)、Pacman(Arch)等主流包管理渠道,同时也提供预编译二进制文件,下载后直接添加到 PATH 即可使用,Windows/macOS/Linux 全平台覆盖。对于没有 Rust 环境的用户,预编译二进制是最快上手方式。
上手门槛方面,CMD 模式和 Shell 助手几乎零学习成本,直接输入自然语言即可。但要发挥 REPL、Role、RAG 和 Agent 的全部能力,用户需要花约 30 分钟阅读文档,理解配置文件的结构和各个功能模块的配合方式。总体而言,初级用户用完即走,高级用户可以深度定制,这是一个设计得很健康的 CLI 工具。## 局限与挑战:不回避的问题
在 LLM 应用爆发的大背景下,围绕 AI 的工具生态正在快速分化:一端是以 ChatGPT、Claude Web 为代表的浏览器对话界面,另一端是以 LangChain、LlamaIndex 为代表的编程框架。AIChat 恰好填补了中间地带——面向命令行重度用户的 AI 瑞士军刀。
它的意义不仅在于功能丰富,更在于它证明了 Rust 语言在 CLI 工具开发上的可行性:无需牺牲开发效率,就能产出高性能、单文件、分发简单的最终产物。对于国内众多在 Windows/macOS/Linux 多平台环境下工作的开发者,AIChat 提供了一个真正可以"安装一次、全平台通用"的 AI 入口。随着 Agent 模式的成熟,它甚至有潜力成为本地 AI Agent 工作流的标准基础设施。