快速结论
gptel 是一个活跃维护、以 Emacs 工作方式为核心的 LLM 客户端,而不是笼统的“Emacs AI 生态”或某家模型的套壳。当前稳定版为 v0.9.9.5,采用 GPL-3.0 许可。它能在普通 buffer、shell、minibuffer 或专用聊天 buffer 中发起请求,把对话保存成 Org、Markdown 或文本文件,并支持多后端、多模态、工具调用、MCP、请求检查和脚本化扩展。长期使用 Emacs、希望自己控制模型与上下文的人,gptel 是很强的原生选择;不使用 Emacs,或期待厂商托管账号、统一账单和企业支持的人,则不必为它学习一整套编辑器工作流。
要分清两笔成本:gptel 包本身免费,云端模型 API、ChatGPT/Copilot 订阅或本地推理硬件不免费。还要分清“可读取本地文件”和“自动拥有安全边界”:一旦把文件加入上下文,内容就会发送给所选后端;一旦启用工具或 MCP,模型还可能请求执行函数。v0.9.9.5 增加工具调用检查与钩子,并将通过 Curl 提交的认证密钥改为标准输入,但用户仍需自己做密钥、文件范围和工具权限治理。
核心功能
- 任意 buffer 交互:在代码、Org、Markdown、终端输出或临时文本旁直接提问,也可打开独立聊天;流式响应不会把工作流锁进浏览器标签页。
- 多后端选择:支持 OpenAI、Anthropic、Gemini、Azure、Bedrock、GitHub Copilot、OpenRouter、DeepSeek 等服务,也能连接 Ollama、llama.cpp、GPT4All 或 Open WebUI 等本地端点。
- 本地文件式会话:聊天就是可编辑的普通文件,可保存、版本管理和稍后恢复;历史提示与回答也能修改后继续发送。文件留在本地不代表请求留在本地,实际数据去向由后端决定。
- 上下文与重写:可附加选区、buffer、文件、图片和文档,或在原位置重写、重构和补全文本。发送前可检查实际请求,避免无意带入整个 buffer。
- 工具与 MCP:可定义 Elisp 工具,让模型提出工具调用,并通过 mcp.el 接入 MCP。v0.9.9.5 支持查看和交互修改待执行的工具调用,以及调用前后钩子,便于阻断、改写或记录动作。
- 可组合 API:
gptel-request、preset 和 hooks 适合编写自定义命令。v0.9.9.5 还加入 OpenAI Responses API、token 用量显示和默认 preset,但不会自动计算跨供应商货币成本。
适合人群
- 已把 Emacs 用作代码、笔记、邮件或终端入口,希望 AI 也遵循 buffer 与 Elisp 组合方式的用户。
- 需要在云 API、订阅后端与本地模型之间切换,不想绑定单一模型厂商的开发者。
- 愿意检查发送上下文、管理 API Key,并为文件工具或 MCP 建立确认规则的高级用户。
- 希望把 LLM 请求嵌入自定义 Emacs 命令、Org 流程或可复现文本工作流的人。
- 不适合需要零配置 IDE Agent、集中席位管理、厂商 SLA,或不愿维护 Emacs 配置的人。
使用场景
日常编码中,可以选中函数让 gptel 解释或重构,把测试失败日志与相关文件作为受控上下文,而不是上传整个仓库。写作与研究时,对话可直接保存在 Org 文件,手工修订事实后继续追问。多模型评估时,可用相同提示切换后端,比较质量、延迟与 token 用量。启用工具后,可让模型检索本地项目或调用只读函数;涉及写文件、运行命令、网络发布和删除操作时,应要求逐次确认,并把工具参数、结果与失败路径留在可审计记录中。
价格与版本
| 项目 | 成本 | 边界 |
|---|---|---|
| gptel v0.9.9.5 | 免费 | GPL-3.0 Emacs 包,可从 GNU/NonGNU ELPA 或兼容包源安装 |
| 云端 API 后端 | 按供应商定价 | 通常按输入、输出、缓存或工具使用计费,gptel 不代收费用 |
| 订阅型后端 | 按供应商订阅 | GitHub Copilot 或支持的 ChatGPT 登录能力受各自套餐和条款约束 |
| 本地后端 | 软件可免费 | 仍需内存、显存、电力、模型存储和维护时间 |
v0.9.9.5 默认不再预注册固定 backend 与 model;首次发送时仍可按需创建默认 ChatGPT 后端,但长期配置应显式选择。升级用户还要检查工具结果默认包含、reasoning 内容处理和自定义 backend 函数签名等 breaking changes。
国内访问与使用体验
gptel 源码与 Emacs 包本身可独立安装,needsVPN: false 只描述工具入口,不保证每个海外模型 API 都可用。实际体验取决于所选后端、账户地区、网络、限额和模型延迟;也可以配置国内可用 API 或完全本地的 Ollama。密钥不要硬编码进公开的 init.el、dotfiles 仓库或聊天文件,优先使用 Emacs auth-source、加密的 authinfo、密码管理器或返回环境变量的函数,并限制配置文件权限。发送前检查本地文件、日志、客户数据和代码许可证,必要时关闭媒体跟踪、工具与 MCP。
优点
- 与 Emacs buffer、Org、Elisp 和文本文件天然融合,透明度高。
- 后端选择广,云端订阅、API 和本地模型可按任务切换。
- 会话可保存、编辑和版本管理,不依赖封闭聊天记录格式。
- 工具检查、前后钩子、请求内省与逐次确认提供了可配置的安全抓手。
- GPL 开源且社区活跃,软件层没有席位费。
不足
- 价值高度依赖 Emacs 熟练度,对非 Emacs 用户学习成本过高。
- 它是客户端而非模型服务,质量、可用性、隐私与费用最终由后端决定。
- 本地文件上下文、Elisp 工具和 MCP 权限配置不当,仍可能泄露数据或执行错误动作。
- 多供应商 token 能显示,但统一货币成本、预算告警和企业账单需要另建流程。
- 社区项目不等于商业 SLA,升级前需阅读 release breaking changes。
替代品对比
| 工具 | 更适合 | 主要差异 |
|---|---|---|
| Claude Code | 终端 Agent 与仓库级任务 | 更偏自主编码流程,模型与服务绑定更强 |
| GitHub Copilot | 主流 IDE、企业席位和代码补全 | 管理与 IDE 覆盖广,Emacs 可组合性较弱 |
| Cursor | 希望开箱即用的 AI 原生 IDE | 多文件编辑更直观,但需切换编辑器 |
| Ollama | 本地模型运行与 API 服务 | 是推理后端,不提供 gptel 的 Emacs 交互层 |
常见问题 FAQ
gptel 本身收费吗?
不收费。gptel 是 GPL-3.0 开源包,但云 API、订阅后端和本地硬件由用户另行承担成本。
gptel 只能用于编程吗?
不是。它可在任意 buffer 中用于写作、摘要、翻译、研究和聊天;本站归入编程类,是因为 Emacs 集成和工具调用对开发工作尤其有价值。
把文件加入 gptel 后仍然完全本地吗?
只有使用本地后端时,请求才可能完全留在本机。连接云端后端时,所选文本、文件或媒体会发送给该供应商,应遵守组织的数据政策。
gptel 的 MCP 和工具调用安全吗?
它提供检查、确认与 hooks,但不会替你定义最小权限。对写入、命令执行、外部发送和删除操作,应使用白名单、人工确认、沙箱和日志。
API Key 应该放在哪里?
优先用 auth-source、权限受控的加密凭据或从环境读取的函数,不要把明文密钥写进会提交到 Git 的 Emacs 配置。v0.9.9.5 已避免 Curl 命令行暴露密钥,但静态配置泄漏仍需用户防范。
v0.9.9.5 升级时要注意什么?
检查默认 backend/model 为空、reasoning 默认处理、工具结果包含行为、自定义 backend API 与工具参数格式变化,并在生产配置上先做小范围回归。
总结
gptel 的优势不是替 Emacs 加一个聊天侧栏,而是把多模型请求、上下文、工具和会话变成可检查、可保存、可编程的 Emacs 对象。对现有 Emacs 用户,它比泛称“Emacs AI”更准确,也更容易评估。先选择一个低风险后端,用非敏感文件验证请求内省、重写和会话恢复;再启用只读工具,确认日志与成本后才开放写入或 MCP 动作。模型提供方负责推理服务,gptel 维护者负责客户端代码,而密钥、文件范围、工具权限和最终修改始终由使用者负责。