模型 / 数据集
ggozad/oterm avatar
ggozad/oterm

oterm:把 Ollama 和 pydantic-ai 装进终端的客户端

the terminal client for LLMs

2,435 个 Star138 个 ForkPythonMIT
GitHub

秒懂

它是什么?
oterm 是一个用 Python 写的终端 LLM 客户端,通过 pydantic-ai 接入 Ollama、OpenAI、Anthropic 等多家提供商。它值得装的前提是你大部分时间待在终端里,并且接受 0.23 之后配置格式的破坏性变更。
适合谁用?
如果你的日常是在 SSH 会话或 tmux 里工作,又需要同时访问本地 Ollama 模型和云端 API,oterm 值得用 uvx oterm 试一次;如果你的机器只有 Python 3.10,或者你依赖 0.22 时代的 mcpServers 配置格式且不打算改,先不要升级。动手前先确认三件事:你的 Python 版本是否满足 speak 额外依赖要求的 3.11 或更新;你打算用的提供商对应的 API key 环境变量名;以及你现有的 MCP 配置是否需要按 pydantic-ai 的标准 schema 重写。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 14 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它到底替谁省掉了哪一步

Ollama 自带命令行,OpenAI 和 Anthropic 也各有 SDK,但把这些东西拼成一个能连续对话、能切换模型、能挂工具的界面,是要自己写代码的。oterm 解决的就是这一段:它把会话历史、模型选择、流式输出和工具调用收进一个终端界面,你不需要写前端,也不需要开浏览器。目标读者很明确,是那些已经在终端里完成大部分工作、并且愿意用键盘而不是鼠标操作 LLM 的人。README 把它定位为 the terminal client for LLMs,这个说法在 0.23 之后才真正成立,因为在此之前它只驱动 Ollama。

pydantic-ai 是接入层,不是附属功能

oterm 的多提供商能力来自 pydantic-ai,而不是自己为每家厂商写适配器。README 列出的范围包括 OpenAI、Anthropic、Google 的 AI 与 Vertex、Groq、Mistral、Cohere、AWS Bedrock、DeepSeek、Cerebras、Grok、Hugging Face,以及 OpenAI 兼容端点如 vLLM、LM Studio、llama.cpp、OpenRouter、LiteLLM。触发方式写得很直白:设置对应的 API key,提供商就会出现在新建聊天的下拉框里。这个设计把新增提供商的成本转嫁给了上游库,oterm 只需要跟随 pydantic-ai 的版本,代价是它的提供商覆盖面受制于 pydantic-ai 的发布节奏,而不是自己的。

流式渲染改的是增量,不是重绘

长回复在终端里变慢,通常不是因为模型慢,而是因为每来一个 token 就把整段 Markdown 重新渲染一遍。README 的更新说明指出,0.23 之后 Markdown 改为在增量到达时更新,而不是每个 token 重渲染。这是客户端侧的性能问题,与模型无关,改动的收益随回复长度增长。同一版还换了聊天界面:无边框的强调色布局、自动增长的输入框、内联的 [Image #N] 附件标记、可折叠的 thinking 区块,以及用实时 token 用量页脚替代原来的转圈提示。这些是界面细节,但对长时间盯屏的人有实际影响。

安装只需要一条命令,speak 是例外

基础安装是 uvx oterm,不需要先建虚拟环境。语音朗读是可选能力,命令变成 uvx "oterm[speak]",它依赖 piper 把回复读出来,README 说用的是 GLaDOS 音色。这里有一个硬约束:speak 额外依赖要求 Python 3.11 或更新,而基础安装不受影响。README 同时说明,这项能力只有在额外依赖存在时才会出现,也就是说它不会在缺少依赖时静默降级成别的东西。完整的安装方式、配置和用法在项目文档站点 ggozad.github.io/oterm 上,README 本身没有展开配置键的细节,这一点需要提前知道。

MCP 配置跟着 pydantic-ai 改了,这是破坏性的

0.23 的更新说明把 mcpServers 配置块的变更标为 breaking,并说明它现在采用 pydantic-ai 的标准 schema,与 Claude Desktop 和 Cursor 兼容。迁移说明放在 docs/mcp 页面。这条对已有用户的影响比多提供商更大:如果你之前写好的 MCP 服务器配置没有按新 schema 调整,升级后这部分不会按原样工作。README 只给了迁移文档的入口,没有在正文里列出字段对照,所以升级前需要自己去读那一页,不能靠猜。

什么时候它不是你该选的东西

最直接的一种情况是你只需要跟本地 Ollama 对话。Ollama 自带的命令行已经能做这件事,引入 oterm 换来的是会话管理和界面,如果你不需要这些,多的那一层就是负担。第二种情况是你的环境停留在 Python 3.10,那么 speak 这条路径直接不可用,而多提供商和 MCP 的迁移成本依然要付。第三种情况是你需要把 LLM 调用嵌进自己的程序里做批处理或流水线,oterm 是一个交互式终端应用,不是给你 import 的库,这种场景应该直接用 pydantic-ai 或各家 SDK。README 没有提到任何非交互式的批处理入口,所以不要指望它承担这部分。

和直接调 pydantic-ai 的差别在哪

真正的替代方案是绕过 oterm,自己用 pydantic-ai 写脚本。两者的接入层是同一个,差别在交互形态:pydantic-ai 给你的是 Python API,你要自己处理会话状态、流式输出的显示、模型切换和工具配置;oterm 把这些预先做好,代价是你被限制在它提供的界面和配置方式里。反过来说,如果你需要自定义的提示词流水线、需要把结果写进数据库、需要在 CI 里跑,pydantic-ai 直接调用更合适,因为 oterm 的配置面向的是人而不是脚本。选择的关键不是哪个更强,而是你的使用场景是坐在终端前对话,还是让程序去调用。

维护成本与许可证

从发布记录看,0.23.0 在 2026 年 7 月底,0.23.1 在 8 月初,0.24.0 在 9 月初,节奏大致是每月一次带功能或修复的发布。这个频率本身不说明质量,但意味着升级不是一次性动作:破坏性变更已经出现过两次,一次是多提供商改造,一次是 MCP 配置 schema,两次都要求用户改自己的配置。项目采用 MIT 许可证,允许商用和修改,具体条款以仓库里的 LICENSE 文件为准,这里不做法律判断。实际要留意的成本是跟随 pydantic-ai 的版本,因为提供商支持依赖上游,上游的破坏性变更最终会传导到 oterm 的配置上。

编辑结论

如果你的日常是在 SSH 会话或 tmux 里工作,又需要同时访问本地 Ollama 模型和云端 API,oterm 值得用 uvx oterm 试一次;如果你的机器只有 Python 3.10,或者你依赖 0.22 时代的 mcpServers 配置格式且不打算改,先不要升级。动手前先确认三件事:你的 Python 版本是否满足 speak 额外依赖要求的 3.11 或更新;你打算用的提供商对应的 API key 环境变量名;以及你现有的 MCP 配置是否需要按 pydantic-ai 的标准 schema 重写。这三项里任何一项没确认,第一次启动都可能直接卡住。

官方来源

  1. ggozad/oterm on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
社区笔记

社区笔记