assistant-cli
在终端中直接调用 ChatGPT,无需浏览器,支持单次问答和连续对话
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
在终端中直接调用 ChatGPT,无需浏览器,支持单次问答和连续对话
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
凌晨三点,一位后端工程师正面对一段报错信息反复折腾。他不想切换窗口,不想离开终端,不想打断正在运行的进程——他只想在键盘上敲几个字,快速问一句"这个错误怎么解决"。这时,Assistant CLI 登场了:一行命令,终端里直接得到答案,无缝衔接工作流。
这就是 Assistant CLI 解决的核心痛点:让 AI 对话成为命令行原生体验。

Assistant CLI 由意大利开发者 Paolo Di Ciaula 创建,最初发布于 2022 年底——正是 ChatGPT 刚向公众开放、热度急剧攀升的时期。项目定位非常明确:无需浏览器,直接在终端里调用 ChatGPT 服务。
作者在 GitHub 描述中用了 "comfortable"(舒适的)这个词——强调的不是功能强大,而是用起来顺手。与网页版相比,CLI 工具有天然优势:不需要打开浏览器,不需要登录网页,不需要担心页面刷新中断对话。对于习惯在终端工作的开发者,这是一个零认知负担的入口。
项目使用 MIT 许可证开源,主要语言为 TypeScript,主题标签覆盖 AI、Chatbot、ChatGPT、Machine Learning 和 OpenAI。
Assistant CLI 的技术选型颇为独特。它并非单纯的 Node.js CLI 工具,而是引入了 Electron(Chromium 内核)来驱动其核心功能。这个设计选择与项目的实现机制密切相关。
项目采用双层架构:
外壳层(app.ts / core.ts):纯 Node.js,负责 CLI 参数解析、命令路由和用户交互(通过 readline 模块)。接收用户输入,调用沙箱,执行完成后渲染输出。
浏览器层(browser-commands/):Electron 无头浏览器,实际与 ChatGPT 服务器通信。通过 node-html-markdown 将 HTML 渲染结果转为 Markdown,通过 cli-md 在终端中以富文本格式显示。
这种设计的核心逻辑是:ChatGPT 对话是通过浏览器端 WebSocket 实现的,旧版 ChatGPT API 并非完全开放。项目作者发现了一条绕过路径——通过浏览器端获取 accessToken,再用这个 token 调用 chat.openapi.com 的内部 API。
注:这个方案高度依赖 OpenAI 内部 API 的稳定性。types.ts 中定义的 API 端点(如
https://chat.openapi.com/api/auth/session)并非 OpenAI 官方公开 API,而是早期 ChatGPT Web 版本的内部接口。随着 OpenAI 对 API 的持续调整和收费策略的明确化,这类工具的可用性存在不确定性。
src/app.ts:主入口,解析命令行参数,调用 runSandbox 执行消息发送src/core.ts:核心逻辑,包括对话循环(useConversation)、Electron 进程管理、命令注册src/types.ts:完整的 TypeScript 类型定义,涵盖 Session、Models、Moderations 等数据结构browser-commands/send-message.ts:发送消息的实际 HTTP 请求逻辑browser-commands/routes.ts:路由分发,将不同操作映射到对应的命令模块| 依赖 | 用途 |
|---|---|
electron@22.0.0 | 浏览器引擎,驱动 ChatGPT 通信 |
axios | HTTP 请求 |
uuid | 生成唯一标识 |
cli-spinner | 终端加载动画 |
cli-md | Markdown 富文本渲染 |
node-html-markdown | HTML 转 Markdown |
expiry-map | 缓存过期管理 |
typescript | 类型安全开发 |
Assistant CLI 的安装极为简单:
npm install -g assistant-cli
要求 Node.js 版本 ≥ 16,安装后全局可用 assistant 命令。
单次问答:
assistant Provide me a React snippet
连续对话(开启聊天模式):
assistant chat
清理认证缓存:
assistant clean
查看版本:
assistant version
从部署角度来看,项目无容器化支持(无 Dockerfile、docker-compose),因此 quick_deploy = unsupported。这意味着它天然适合作为本地开发工具使用,而非服务器端部署场景。Electron 的引入也决定了它无法在纯服务器环境(无图形界面)中运行。

从源码分析来看:
require 而非 ES Module import这是 Assistant CLI 最核心的风险点。项目使用的 chat.openapi.com API 并非 OpenAI 官方 API,而是 ChatGPT Web 版本的后端接口。这意味着:
为执行简单的 HTTP 请求,项目嵌入了完整的 Chromium 内核(Electron),这对于一个 CLI 工具而言颇为重量级。启动 Electron 进程需要数秒,冷启动体验不佳。
当前实现中,用户需要等待完整回复,无法看到逐字输出的流式体验,交互感弱于网页版 ChatGPT。
代码库没有任何测试文件,任何依赖内部 API 的变更都可能导致工具失效,风险完全转嫁给用户。
Assistant CLI 诞生于 2022 年末——AI 工具 CLI 原生化浪潮的早期阶段。它代表了一种典型的开发者心态:不想离开我熟悉的终端,就想把 AI 用起来。
同一时期诞生的类似工具还有很多,如 shell-gpt(ShellGPT)、aichat 等。Assistant CLI 的差异化在于它选择了 Electron 路径,而非直接调用 OpenAI 官方 API。这既是它的创新,也是它的软肋。
从 Stars 增长曲线看(190 ★),该项目属于小众工具范畴,主要服务于愿意折腾、对技术原理有好奇心、且偏好终端操作的开发者群体。
| 维度 | 评分 |
|---|---|
| 功能完整性 | ★★★☆☆ |
| 部署便捷性 | ★★★★☆(npm 安装简单,但无容器化) |
| 技术创新性 | ★★★☆☆(Electron 方案独特但非独创) |
| 稳定性风险 | ★★☆☆☆(依赖非公开 API) |
| 开发者体验 | ★★★★☆(上手极简,终端原生) |
如果你是一个深度终端用户,习惯在 CLI 环境中工作,Assistant CLI 是一个值得一试的探索性工具——尤其适合快速查资料、写代码片段、翻译文本等轻量任务。但若你有稳定的生产需求,更推荐使用 OpenAI 官方 API 或 Azure OpenAI Service,以获得可预期的 SLA 和稳定性保障。
本报告基于 GitHub 源码分析生成,数据来源:diciaup/assistant-cli(190★, MIT License, TypeScript)