news 2026/9/7 18:33:03

Open Interpreter 认证配置全解:ChatGPT 登录、API 密钥、本地模型与兼容 Provider 实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open Interpreter 认证配置全解:ChatGPT 登录、API 密钥、本地模型与兼容 Provider 实战指南

Open Interpreter 认证配置全解:ChatGPT 登录、API 密钥、本地模型与兼容 Provider 实战指南

【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter

本篇技术指南基于 docs/authentication.md 展开,系统讲解 Open Interpreter 的四种认证路径:ChatGPT 账号登录、API 密钥、本地模型(Ollama / LM Studio)以及 OpenAI 兼容 Provider 的配置方法。读完本文,你将能够针对不同部署场景(交互终端、CI 流水线、无头服务器、纯本地推理)选择合适的认证方式,并深入理解凭据存储(keyring / 文件 / 内存)的底层实现与回退机制。

认证概览:Provider 无关设计

Open Interpreter 的认证体系是provider-agnostic(供应商无关)的:首次启动interpreter时会询问你希望如何认证,之后随时可以通过 TUI 中的/model命令切换认证方式与模型来源。

四类认证方式的适用场景:

认证方式适用场景凭据载体
ChatGPT 登录个人交互式使用,享受账号订阅可刷新的 OAuth 凭据(存入凭据存储)
API 密钥CI、无头机器、显式按量计费环境变量
本地 Provider模型流量完全留在本机无需密钥(本地服务)
OpenAI 兼容 Provider自建网关、第三方推理服务配置项 + 环境变量

ChatGPT 登录

启动 TUI 并选择 ChatGPT sign-in:

interpreter

这会打开一个浏览器登录流程,并将**可刷新的凭据(refreshable credentials)**保存到已配置的凭据存储中。整个过程包含 PKCE 等安全机制,相关实现位于 codex-rs/login 模块(见 pkce.rs、server.rs 以及登录回调页面 success_page.rs)。

源码视角:登录后到底存了什么

从源码结构看,认证状态的完整结构定义在 codex-rs/login/src/auth/storage.rs 的AuthDotJson中,包含以下字段:

pub struct AuthDotJson { pub auth_mode: Option<AuthMode>, #[serde(rename = "OPENAI_API_KEY")] pub openai_api_key: Option<String>, pub tokens: Option<TokenData>, // OAuth token 数据 pub last_refresh: Option<DateTime<Utc>>, // 上次刷新时间 pub agent_identity: Option<AgentIdentityStorage>, pub personal_access_token: Option<String>, pub bedrock_api_key: Option<BedrockApiKeyAuth>, }

这解释了"refreshable credentials"的含义:除 access token 外还持久化了tokenslast_refresh,客户端可在过期时主动换取新凭据;token 刷新流程有专门测试覆盖,见 auth_refresh.rs。

API 密钥

API 密钥最适合CI、无头机器和显式 Provider 计费的场景。以 OpenAI 为例:

export OPENAI_API_KEY=sk-... interpreter

其他 Provider 使用各自的环境变量,例如ANTHROPIC_API_KEY,或由其 Provider 条目配置的变量。

内置 Provider 目录

仓库中内置了一份 Provider 目录 provider_catalog.json,其中为每个内置 Provider 声明了env_keybase_urlwire_api。例如 Anthropic 条目:

{ "id": "anthropic", "name": "Anthropic", "env_key": "ANTHROPIC_API_KEY", "base_url": "https://api.anthropic.com", "wire_api": "messages" }

从这份目录可以看出两点实现事实:

  • 只需导出ANTHROPIC_API_KEY环境变量即可使用 Anthropic,无需在配置中重复声明base_url
  • wire_api决定底层协议风格——OpenAI 兼容服务使用"responses"/"chat",而 Anthropic 使用"messages",这与下文兼容 Provider 配置中的wire_api字段一致。

此外,密钥并非只能来自环境变量:AuthDotJson还支持personal_access_tokenbedrock_api_key等字段(见 storage.rs),说明不同认证形态最终会汇聚到同一份持久化结构中。

本地 Provider

如果你希望模型流量完全留在本机,可以使用本地 Runner:

Provider说明
Ollama启动 Ollama 后从/model中选择它,或直接使用--oss参数
LM Studio启动本地服务器后,从/model中选择 LM Studio
interpreter --oss "summarize this repo with my local model"

--oss的底层行为

--oss不只是切换 Provider,它还会触发一次"本地环境准备"流程。以 Ollama 为例,codex-rs/ollama/src/lib.rs 中定义了:

/// 未显式指定 -m 时,--oss 使用的默认模型 pub const DEFAULT_OSS_MODEL: &str = "gpt-oss:20b"; /// 当选择 --oss 时准备本地 OSS 环境: /// - 确保本地 Ollama 服务器可达 /// - 检查模型是否存在,缺失则自动拉取 pub async fn ensure_oss_ready(config: &Config, client: &OllamaClient) -> std::io::Result<()> { ... }

也就是说,--oss的实际执行链是:连接本地 Ollama → 若本地没有gpt-oss:20b(或-m指定的模型)则自动pull→ 再进入会话。LM Studio 侧有对应的对称实现 codex-rs/lmstudio/src/lib.rs。

另一个值得注意的约束来自 ensure_responses_supported:使用 Responses 协议时要求Ollama 版本不低于 0.13.4,否则会报Ollama {version} is too old错误(0.0.0开发版本视为放行)。如果你的本地 Ollama 版本较旧且--oss失败,可优先升级 Ollama。相关测试(ollama/src/lib.rs)精确验证了0.13.3不通过、0.13.4及以上通过的边界行为。

兼容 Provider(OpenAI-Compatible)

对于任意 OpenAI 兼容的服务(自建网关、第三方推理平台),在配置文件中声明一个 Provider 条目即可:

model_provider = "acme" model = "acme-coder" [model_providers.acme] name = "Acme" base_url = "https://api.acme.example/v1" env_key = "ACME_API_KEY" wire_api = "responses"

然后设置对应密钥并启动:

export ACME_API_KEY=... interpreter

更多可用字段

对照 docs/config-reference.md 的 Provider 表说明,[model_providers.*]还支持重试与超时调优:

[model_providers.example] name = "Example" base_url = "https://api.example.com/v1" env_key = "EXAMPLE_API_KEY" wire_api = "responses" request_max_retries = 4 stream_max_retries = 5 stream_idle_timeout_ms = 300000

对于需要动态 token 的网关,认证还可以由命令提供,而非静态环境变量:

[model_providers.example.auth] command = "example-token" args = ["print"] refresh_interval_ms = 300000 timeout_ms = 5000

该命令按refresh_interval_ms周期刷新 token,适合企业内部 IAM 网关等短期凭据场景。

凭据存储(Credential Storage)

cli_auth_credentials_store = "auto" # "auto" | "keyring" | "file"

Open Interpreter 将用户状态保存在~/.openinterpreter/目录下;如果启用文件存储,请把auth.json当作密码一样对待

源码级实现:四种存储后端与回退逻辑

存储模式的枚举定义在 codex-rs/config/src/types.rs:

/// Determine where Codex should store CLI auth credentials. pub enum AuthCredentialsStoreMode { /// Persist credentials in CODEX_HOME/auth.json. File, /// Persist credentials in the keyring. Fail if unavailable. Keyring, /// Use keyring when available; otherwise, fall back to a file in CODEX_HOME. Auto, /// Store credentials in memory only for the current process. Ephemeral, }

对应的后端实现在 codex-rs/login/src/auth/storage.rs 的create_auth_storage_with_store工厂函数(L507-L525)中按模式分派:

  • File(FileAuthStorage):将AuthDotJson序列化写入auth.json。注意其保存逻辑在 Unix 上会以0o600权限创建文件(仅属主可读写),这是"把 auth.json 当密码对待"的代码级落地:

    #[cfg(unix)] { options.mode(0o600); }
  • Keyring:写入系统密钥环(keyring)。实现上将codex_home路径做 SHA-256 哈希取前 16 位十六进制作为稳定短键(compute_store_key),服务名为"Codex Auth";写入 keyring 成功后还会主动删除磁盘上的auth.json残留,避免明文落盘。

  • Auto(AutoAuthStorage):加载时先查 keyring,查不到或失败则回退读auth.json;保存时 keyring 失败则回退写文件并记录 warn 日志。这正是文档推荐"auto"的原因——桌面环境用 keyring,无 keyring 的服务器环境自动降级为文件,无需人工干预。

  • Ephemeral(EphemeralAuthStorage):凭据仅存于进程内内存 map,进程结束即消失,适合一次性容器、评测沙箱等不希望任何凭据持久化的场景(文档注释中提到的三种取值之外,源码还支持这一模式)。

从源码结构看,keyring后端本身还有 Direct / Secrets 两种子形态(AuthKeyringBackendKind,见 types.rs):Direct 直接把序列化后的凭据放进系统 keyring;Secrets 则把凭据写进本地加密 secrets 文件、仅把文件密钥放进 keyring,且 Windows 平台默认采用 Secrets 形态。

登出(Sign Out)

在 TUI 内执行:

/logout

或者在支持登出的登录入口中执行其 logout 命令。登出会同时清理 keyring 条目与auth.json文件——AuthStorageBackend::delete接口(storage.rs)要求后端同时处理两类残留,端到端行为由 logout.rs 测试保证。

实践建议小结

  • 个人 TUI 使用:ChatGPT 登录 + 默认"auto"存储最省心;
  • CI / 无头机器API 密钥 + 环境变量,避免任何凭据落盘;如需更强隔离可评估ephemeral模式;
  • 数据不出本机:Ollama / LM Studio +--oss,注意 Ollama 的 Responses API 版本下限 0.13.4;
  • 自建/第三方 OpenAI 兼容网关[model_providers.*]配置 + 按需开启命令式 token 刷新;
  • 安全红线:文件存储模式下~/.openinterpreter/中的auth.json与 API 密钥同等敏感,备份与共享前务必加密或删除。

【免费下载链接】openinterpreterA coding agent for open models like Kimi K3 and GLM 5.3项目地址: https://gitcode.com/GitHub_Trending/op/openinterpreter

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 18:28:33

Notepad--实战:从Notepad++无缝迁移的轻量级文本编辑器指南

你压根不用卸载Notepad&#xff0c;但最近我是真的把它从我的主力工具里拿掉了。用了快十年的老牌编辑器&#xff0c;说换就换&#xff0c;原因很简单&#xff1a;我找到了一个在轻量级编辑器赛道上真正让我觉得“更顺手”的选择。这篇文章不打算做那种拉一踩一的引战对比&…

作者头像 李华
网站建设 2026/9/7 18:23:58

Git学习记录:从安装配置到分支管理与免密方案全解析

我真的不是标题党&#xff1a;为什么我会写这样一份Git学习记录&#xff1f; 先交代一下背景。2024年以前我一直是个“能跑就行”的半吊子用户&#xff0c;Git在我手里基本只有三板斧&#xff1a;add、commit、push。直到有一次帮同事排查代码冲突&#xff0c;发现自己连 git…

作者头像 李华
网站建设 2026/9/7 18:20:18

《龙珠Z》经典场景数字修复与AI增强技术解析

1. 项目背景与核心价值"dragonballz_e179-1"这个看似神秘的代码组合&#xff0c;实际上蕴含着丰富的文化和技术内涵。作为一名资深动漫文化研究者和技术实践者&#xff0c;我花了大量时间深入挖掘这个项目背后的意义。从表面看&#xff0c;它明显与经典动漫《龙珠Z》…

作者头像 李华