fw-ai/fireconnect

GitHub: fw-ai/fireconnect

FireConnect 是一个 CLI 工具,用于一键将多种 AI 编程代理和 IDE 连接到 Fireworks AI 模型推理服务。

Stars: 31 | Forks: 7

# FireConnect [![许可证:Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/fw-ai/fireconnect/blob/main/LICENSE) **一行命令安装:** ``` sh -c "$(curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh)" ``` 或者直接使用 `bash`: ``` curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh | bash ``` **Windows:** 在 Git Bash 中运行安装。在 PowerShell 中,使用管道 `curl | bash` 会破坏脚本的换行符(你会看到 `set: pipefail\r: invalid option name`);请保持管道在 bash 内部执行: ``` bash -c "curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh | bash" ``` 安装一次 `fireconnect` CLI,然后用它来管理 Claude Code、OpenCode、Codex、Pi、Cursor、VS Code 和 Deep Agents 的 Fireworks 路由。运行 `fireconnect help` 查看它的功能。 ## 快速设置 在终端中运行以下命令: ``` curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh | bash ``` 安装程序会安装 `fireconnect` CLI;它不会提示输入密钥。完成后,登录并启用某个 harness: ``` fireconnect login # guided sign-in (browser or paste a key) fireconnect claude on # route Claude Code through Fireworks ``` Fire Pass 用户可以直接使用 `fpk_...` 密钥 —— FireConnect 会检测密钥类型并为 Fire Pass 使用正确的默认值(所有别名使用 `glm-fast-latest`)。 如果你更喜欢从 SSH 检出安装: ``` mkdir -p ~/.fireconnect && git clone git@github.com:fw-ai/fireconnect.git ~/.fireconnect && bash ~/.fireconnect/install.sh ``` 安装程序会: - 要求 Node.js 18+。如果缺失或版本过旧,在 macOS 上会使用 Homebrew 进行安装,在其他平台上会打印升级说明(nvm / nodejs.org / NodeSource)。 - 将 FireConnect CLI 源码克隆到 `~/.fireconnect/cli`,并为其唯一的一个运行时依赖(`cross-keychain`,用于安全的 API 密钥存储)运行 `npm install --omit=dev`。 - 将 `fireconnect` CLI 启动器安装到 `~/.local/bin` 并将其添加到你的 shell `PATH` 中。 它**不会**让你登录或写入任何 harness 设置 —— 完成后,请运行 `fireconnect login`,然后运行 `fireconnect on`(例如 `claude`、`opencode`、`codex`、`pi`、`cursor`、`vscode`、`deepagents`),然后完全重启该工具。 ## 升级 要更新 FireConnect,请重新运行安装程序(不要使用 `fireconnect upgrade`): ``` sh -c "$(curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh)" ``` 如果 Claude Code 正通过 FireConnect 连接,安装程序会检测到它,在临时恢复你的原始设置之前会询问你,安装最新的 CLI,并提示你使用 `fireconnect claude on` 重新连接。你的其他 harness 设置和存储的 API 密钥将被保留。 默认模型(Claude Code): ``` main -> glm-fast-latest opus -> glm-fast-latest fable -> glm-fast-latest sonnet -> kimi-fast-latest haiku -> deepseek-v4-flash subagent -> deepseek-v4-flash ``` ## 手动设置 在此处创建 Fireworks API 密钥: ``` https://app.fireworks.ai/settings/users/api-keys ``` 然后在终端启用 Fireworks 路由: ``` fireconnect login # sign in (browser or paste); stores the key in the OS keychain fireconnect claude on # writes an owner-only X-Fireworks-Api-Key header ``` 完成后重启 Claude Code。 ## 写入的内容 设置会写入这些 Claude Code 设置。Claude Code 通过 `X-Fireworks-Api-Key` 自定义标头(在 `ANTHROPIC_CUSTOM_HEADERS` 中)进行身份验证,而**不是** `apiKeyHelper`: ``` { "env": { "ANTHROPIC_BASE_URL": "https://api.fireworks.ai/inference", "ANTHROPIC_MODEL": "glm-fast-latest[1m]", "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-fast-latest[1m]", "ANTHROPIC_DEFAULT_SONNET_MODEL": "kimi-fast-latest", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash", "ANTHROPIC_DEFAULT_FABLE_MODEL": "glm-fast-latest[1m]", "CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash", "ANTHROPIC_CUSTOM_HEADERS": "X-Fireworks-Api-Key: fw_..." } } ``` **为什么使用自定义标头(而不是 `apiKeyHelper`)?** 网关通过 `X-Fireworks-Api-Key` 进行身份验证,它会优先于用户的 `ANTHROPIC_API_KEY` / `ANTHROPIC_AUTH_TOKEN`(在 shell 环境或 `settings.json` 中)原本会发送的任何 `x-api-key` / `Authorization` —— 这样,一个多余的 Anthropic 密钥就不会破坏路由。代价是 Fireworks 密钥会以明文形式写入 `settings.json`(作为 `key export` 和其他 harness 的可信来源,它仍然存储在 OS 钥匙串中)。FireConnect 会逐字节备份你之前的设置,以便 `fireconnect claude off` 可以准确恢复它们,并预先批准 `~/.claude.json` 中多余的 `ANTHROPIC_API_KEY`,这样 Claude Code 在首次启动时就不会提示它。 在 harness 支持自定义标头的地方,FireConnect 还会添加注重隐私的请求归因: ``` X-Title: HTTP-Referer: fireconnect/v ``` FireConnect 绝不会覆盖 `User-Agent`;harness 会发送其自身的原生名称和版本。`X-Title` 标识该 harness,而 `HTTP-Referer` 仅携带 FireConnect 规范化的版本标签。这些值不包含任何用户、账户、本地路径、仓库、prompt、会话或凭证数据。重新运行 `on` 仅刷新 FireConnect 管理的标头并保留不相关的自定义标头;`off` 会逐字节恢复连接前的配置。Cursor 和 Deep Agents 目前未暴露自定义请求标头接口,因此 FireConnect 在这些工具中省略了遥测。 当 Claude Code 通过 Fireworks 路由时,`fireconnect claude on` 还会将 `WebSearch` 和 `WebFetch` 添加到 `settings.json` 中的 `permissions.deny`。这些是网关无法运行的 Anthropic **服务器端**工具,否则它们会出错;你自己的 `permissions` 规则将被保留,并且在 `fireconnect claude off` 时会移除拒绝条目。如果你的账户有权使用 Fireworks 网络搜索,系统会安装一个 `fireworks-websearch` MCP 服务器作为可用的替代方案。 到处都接受短模型 ID。例如,`glm-fast-latest` 作为 `accounts/fireworks/routers/glm-fast-latest[1m]` 写入 Claude Code 设置中。 ### Cursor IDE Cursor 将其 AI 设置存储在 SQLite 数据库(`state.vscdb`)中,而不是 JSON 文件中,因此 Cursor harness 直接在其中写入: - API 密钥 -> `cursorAuth/openAIKey` - Base URL -> `openAIBaseUrl`(设置为 `https://api.fireworks.ai/inference/v1`,即 Cursor 兼容 OpenAI 的 endpoint) - 自定义模型 -> `aiSettings.userAddedModels` + `aiSettings.modelOverrideEnabled` - 每个模式的模型 -> `aiSettings.modelConfig[mode]`(例如 `composer`、`cmd-k`) `cursor on --model ` 会注册该模型,并将 `modelConfig` 中**已存在**的所有模式设置为该模型(非破坏性操作 —— 它不会创建原本不存在的模式条目)。`status` 会报告当前活跃/默认的模型。 Cursor 会注册首选的最新/最新目录。Cursor 不支持 FireRouter。直接的 Fireworks 模型 ID 在选择器、所有权跟踪器和每个受管理的模式选择中均以短 slug 形式存储。旧版的规范 `accounts/fireworks/...` 条目仍然可读,并在下次执行 `on` 时进行迁移。 ``` fireconnect cursor on --api-key fw_... # quit Cursor first; sets all existing modes fireconnect cursor status # read-only; works while Cursor is open fireconnect model list --search glm fireconnect cursor on --model glm-fast-latest fireconnect cursor off # restores your previous settings ``` **在执行 `on` 或 `off` 之前退出 Cursor(`Cmd-Q` / File > Quit)** —— 否则 Cursor 的内存状态会在下次刷新时覆盖写入的内容。在交互式 终端中,如果 Cursor 仍在运行,fireconnect 会要求你退出它并 **按 Enter 继续**;如果之后 Cursor 仍在运行,则会报错。`status` 和 `model list` 是只读的,随时可以使用。传递 `--force` 即可无需等待直接写入。`off` 仅移除 FireConnect 注册的模型;你自己的自定义模型会被保留。 **当 FireConnect 开启时,只有你的选择器中的 Fireworks 模型能正常工作** —— Cursor 订阅模型、Opus 模式和其他内置模型将无法响应。如需 模型访问或设置帮助,请联系 Fireworks 团队。运行 `fireconnect cursor off` 以恢复内置的 Cursor 模型。 ### VS Code Chat VS Code Chat 的自定义语言模型在 `chatLanguageModels.json`(一个由提供商组成的 JSON 数组)中进行配置。fireconnect 会添加一个 `Fireworks` 提供商(vendor 为 `customendpoint`,`apiType: responses` —— 即 OpenAI Responses API),其模型指向 `https://api.fireworks.ai/inference`(VS Code 会自动追加 `/v1/responses`)。Microsoft Foundry (Azure) 模式使用 `apiType: chat-completions`。FireRouter 只是同一提供商上的 `firerouter` 模型(`apiType: responses`)。 VS Code 会注册首选的最新/最新目录。Workspace-BYOK 账户也会自动接收 `firerouter`;否则运行 `vscode on --model firerouter`。直接的 Fireworks `models[].id` 值是简短的 slug;旧版的规范 ID 仍然可读,并在下次执行 `on` 时进行迁移。 API 密钥**不会**存储在 JSON 中 —— VS Code 通过其密钥存储解析 `${input:chat.lm.secret.}` 引用,将密钥作为 VS Code 应用作用域内的 `state.vscdb`(SQLite `ItemTable`,键为 `secret://`)中的 Electron `safeStorage` 加密 blob 保留。`fireconnect vscode on` 会同时写入两者:将提供商条目写入 `chatLanguageModels.json`,并将加密的密钥写入 `chat.lm.secret.fw-*` id 下的 `state.vscdb`。 ``` fireconnect vscode on --api-key fw_... # quit VS Code first fireconnect vscode status # read-only; works while VS Code is open fireconnect model list --search glm fireconnect vscode on --model deepseek-v4-flash fireconnect vscode off # restores chatLanguageModels.json + removes the key ``` **在执行 `on` 或 `off` 之前退出 VS Code(`Cmd-Q` / File > Quit)** —— 如果 VS Code 仍在运行,fireconnect 会提示你退出并按 Enter(与 Cursor 相同)。传递 `--force` 即可无需等待直接写入。`status` 和 `model list` 是只读的,随时可以使用。 每个模型的 `toolCalling`/`vision`/`maxInputTokens`/`maxOutputTokens` 与 serverless 定价一起定义在 `packages/setup-cli/lib/fireworks/model-specs.mjs` 中(数据来源于 Fireworks 模型库和 API)。未映射的模型默认为 `toolCalling: true` 和 `vision: false`;在将模型添加到 specs 注册表之前,会省略 token 限制。VS Code 会将 `maxOutputTokens` 作为 `max_output_tokens` 发送,因此映射的值不得超过模型限制。 在 macOS 上,`safeStorage` 使用 VS Code 存储在登录钥匙串中的“ Safe Storage”(例如 `Visual Studio Code Safe Storage`)下的主密钥进行加密;打开一次 VS Code 就会创建它,因此第一次执行 `on` 时可能需要此操作。Insiders 版本会被自动检测(它会读取 `Code - Insiders Safe Storage` 并以 Insiders 的 `state.vscdb` 为目标);也可以推断出指向 Insiders 用户数据目录内部的 `--vscode-path`。在 Windows 上,`safeStorage` 使用 AES-256-GCM,密钥由 DPAPI 保护并存储在 VS Code 的 `Local State` 文件中 —— 打开一次 VS Code 就会创建密钥。在 Linux 上,`safeStorage` 需要 `libsecret`(`secret-tool`)才能进行真正的加密 —— 如果没有它,Chromium 会回退到硬编码的密码(仅经过混淆,未加密),fireconnect 仍然会写入但会发出警告。`off` 会逐字节恢复你原来的 `chatLanguageModels.json`,并从 `state.vscdb` 中删除 `chat.lm.secret.fw-*` 密钥行;你手动配置的任何提供商都将被保留。 ### FireRouter 模式 `fireconnect vscode on --model firerouter` 会在 Fireworks 提供商中注册 **`firerouter` 模型** —— 与其他所有模型一样,通过 **OpenAI Responses API** 在常规网关上提供服务。在 VS Code Chat 模型选择器中选择它即可。 ``` fireconnect vscode on --model firerouter --api-key fw_... --anthropic-api-key sk-ant-... fireconnect vscode status fireconnect vscode off ``` Fireworks 密钥在 `state.vscdb`(提供商 `apiKey`)中保持**加密**状态 —— 没有明文。Anthropic BYOK 密钥是可选的;提供时,它会作为 `anthropic_api_key` 和 `requestHeaders["x-anthropic-api-key"]` 写入 `firerouter` 模型中。配置了 Workspace-BYOK 的账户以及具有有效 `ANTHROPIC_API_KEY` 的会话,会随首选别名一起接收 `firerouter`;否则请使用 `on --model firerouter`。 `fireconnect vscode off` 会逐字节恢复你的 `chatLanguageModels.json` 并移除该密钥。 ## FireRouter(`firerouter` 模型) FireRouter 是一个判别式模型路由器,它会对每个请求进行评分,并将简单的任务分配给更便宜的模型,同时将困难的任务直接传递下去 —— 它在常规的 Fireworks 网关(`https://api.fireworks.ai/inference`)上作为一个顶级的 **`firerouter` 模型**呈现。像选择任何其他模型一样选择它: ``` fireconnect claude on --model firerouter fireconnect claude on --opus firerouter fireconnect opencode on --model firerouter fireconnect codex on --model firerouter ``` 每个标准的 Fireworks 密钥(非 Fire Pass)均可使用 FireRouter,但只有在服务器端配置了工作区 BYOK(`enable-workspace-byok`),或者对于可以转发密钥的 harness 存在有效的 `sk-ant-...` `ANTHROPIC_API_KEY` 时,它才会自动包含在受支持的模型列表/选择器中。否则,请使用 `on --model firerouter` 显式选择它;Claude 使用诸如 `on --opus firerouter` 之类的位标志。Cursor 不支持 FireRouter。它绝不是默认模型。 **前沿模型的 BYOK。** FireRouter 使用你的 Anthropic 密钥将困难的请求路由到 Anthropic 前沿模型。如果你的工作区在服务器端配置了 BYOK(`enable-workspace-byok`),FireRouter 会自动使用它,因此选择 FireRouter 模型/槽位**无需额外的密钥**。否则,请在支持的地方传递 `--anthropic-api-key sk-ant-...`;如果没有它,FireRouter 仍会在 Fireworks 模型之间进行路由。在填充模型目录时,FireConnect 会首先检查本地是否存在有效的 Anthropic 密钥,然后再检查工作区标志。(不支持 OpenAI BYOK。) **Claude Code。** `--model` 设置主要的 `ANTHROPIC_MODEL`;别名标志独立设置其对应的槽位。例如,`--opus firerouter` 仅更改 Opus,并将主要模型保留为推荐的 `glm-fast-latest`,而 `--model firerouter` 则显式将 FireRouter 设为主要模型。当多个别名都应使用它时,可以组合使用标志。Claude 通过 `X-Fireworks-Api-Key` 自定义标头使用 Fireworks 密钥进行身份验证。该标头会优先于用户的 `ANTHROPIC_API_KEY` / `ANTHROPIC_AUTH_TOKEN`(来自环境变量或 `~/.claude/settings.json`)原本会发送的任何 `x-api-key`/`Authorization`,因此即使存在 Anthropic 密钥,FireRouter 模式也能正常工作。解析出的 Anthropic 密钥将作为 `x-anthropic-api-key` BYOK 标头转发,以便 FireRouter 可以将困难的请求传递给 Anthropic 模型;它是可选的(仅 Fireworks 路由只需要 Fireworks 密钥)。Claude Code 在直接和 FireRouter 设置中都需要静态 Fireworks 标头,因此 FireConnect 会以 `0600` 模式将密钥写入 `settings.json`,并在执行 `off` 时恢复之前的文件。 **纯文本模型与图像。** Claude Code 无法将某个模型标记为非视觉模型。 如果你在纯文本槽位(例如 `glm-fast-latest` 或 `deepseek-v4-flash`)处于活跃状态时粘贴或附加图像,会话可能会中断,你可能需要使用 `/rewind` 来恢复。 当你的配置映射包含纯文本模型时,`fireconnect claude on` 会发出警告,并且 `fireconnect claude status` 会用 `vision` 或 `text-only` 标记每个槽位。 ## 浏览和配置模型 浏览 Fireworks 目录,然后通过 `on` 配置 harness: ``` fireconnect model list --search glm fireconnect claude on --sonnet kimi-latest fireconnect opencode on --model glm-fast-latest fireconnect codex on --model glm-fast-latest fireconnect cursor on --model glm-fast-latest ``` ### `fireconnect model list` 使用全局 Fireworks 密钥列出共享的 Fireworks serverless 目录。 从 Fireworks serverless 模型 API 获取带有 coding 标签的 serverless 模型(`GET /v1/serverless/models?use_cases=coding`),并合并已知的公共平台路由器(`glm-latest`、`glm-fast-latest`、`glm-5p2-fast`、`kimi-fast-latest`、`kimi-latest` 和 `kimi-k2p7-code-fast`)。每一行都被标记为 `serverless`(稍后将添加按需 endpoint)。 ``` fireconnect model list fireconnect model list --search glm fireconnect model list --json ``` 按照文档说明的顺序解析密钥:首先是 `--api-key`,然后是 `FIREWORKS_API_KEY`,最后是全局存储的凭证。标准密钥包含 `firerouter`;Fire Pass 密钥会省略它,仅显示 Fire Pass 支持的路由器。 Fire Pass 密钥(`fpk_...`)显示 Fire Pass 支持的路由器:`glm-latest`、`glm-fast-latest`、`glm-5p2-fast`、`kimi-fast-latest` 和 `kimi-k2p7-code-fast`。 ### `fireconnect claude status` 与 `fireconnect model list` 对比 | 命令 | 显示内容 | |---------|--------| | `fireconnect claude status` | 你当前的提供商、身份验证、已配置的别名映射,以及每个槽位的 **Fireworks serverless 费率** | | `fireconnect model list` | Fireworks API 中可用的 serverless endpoint,以及已知的 **IN / OUT 定价** | ### Claude Code 定价估算(重要) Claude Code 的 `/model` 选择器和会话成本估算使用 **Anthropic 目录价格**(对应模型层级),而 **Fireworks 按 serverless 模型费率计费**。因此,UI 上的估算值可能远高于你的实际账单。 FireConnect 无法覆盖 Claude Code 的价格列。请使用 `fireconnect claude status` 和 `fireconnect model list` 获取 Fireworks 费率,查看[当前 serverless 定价](https://docs.fireworks.ai/serverless/pricing),并使用 [Fireworks 账单仪表板](https://app.fireworks.ai/account/billing) 了解实际支出。 执行 `fireconnect claude on` 后,`settings.json` 会立即更新。要使用新模型,请退出 Claude Code,然后使用 `claude --resume ` 恢复对话,或者开始一个新的会话。 ### 推荐的模型 slug 任何地方都接受短 ID 和规范的 `accounts/fireworks/...` ID。 OpenCode、Codex、Pi、Cursor、VS Code 和 Deep Agents 将直接的 Fireworks 选择存储为短 slug;现有的规范配置仍然兼容,并在下次运行 `on` 时进行迁移。Microsoft Foundry (Azure) 部署名称保持不变。 | 短 ID | 最适合 | 说明 | |----------|----------|-------| | `glm-latest` | 通用用途,agentic 任务 | 版本跟踪路由器;强大的推理能力,1M 上下文。 | | `glm-fast-latest` | 对延迟敏感的 agentic 用途 | `main`、`opus` 和 `fable` 槽位的默认设置。在高速 Fast 服务路径(100+ tok/s)上的版本跟踪路由器,单 token 价格较高。1M 上下文。 | | `glm-5p2-fast` | 对延迟敏感的 agentic 用途 | 与 `glm-fast-latest` 相同,但固定为 GLM 5.2 而不是版本跟踪。1M 上下文。 | | `kimi-fast-latest` | 通用用途(较轻量) | 默认的 `sonnet` 槽位。高速 Fast 服务路径上的版本跟踪 Kimi 路由器。 | | `glm-5p1` | 通用用途(较轻量) | 速度和质量的良好平衡。 | | `deepseek-v4-flash` | 后台 / 快速任务 | 默认的 `haiku` 和 `subagent` 槽位。最低延迟。 | **Fire Pass 密钥**(`fpk_...`):所有槽位默认为 `glm-fast-latest`。 **切换单个槽位**(仅限 Claude Code): ``` fireconnect model list --search glm fireconnect claude on --opus glm-fast-latest --sonnet glm-5p1 fireconnect claude on --haiku deepseek-v4-flash --subagent deepseek-v4-flash ``` **OpenCode 和 Pi** 使用单一默认模型;在执行 `on` 时传递 `--model `。 ## FireConnect CLI 该 CLI 是 harness 优先的:`fireconnect `。少数命令是全局的(不需要 harness)。以下命令的顺序与 `fireconnect help` 中一致。 **全局** ``` fireconnect login Sign in — browser (creates a key) or paste a key you have. fireconnect logout Clear the stored key (keychain entry + config ref). fireconnect status Show sign-in state, machine environment, and where the key is stored. fireconnect configure Set the provider (Azure/Foundry) and the Anthropic key. fireconnect demo Race your provider vs Fireworks GLM 5.2 Fast on the same prompt. fireconnect uninstall Disable + restore all harnesses, then remove FireConnect. fireconnect --version Print the installed CLI version (-V; --json for machine-readable). fireconnect help Show help. ``` `login` 只询问一个重要问题:为这台机器创建 API 密钥,还是粘贴你已有的密钥。创建操作会打开浏览器(登录或注册),生成 `fireconnect-{hostname}`,并将其存储在 OS 钥匙串中 —— 同时确认它所属的账户以及密钥的具体去向。粘贴操作会引导你进入密钥页面,屏蔽粘贴的密钥,实时验证它,并且仅在成功时才进行存储。`--paste` 会跳过选择器直接进入粘贴步骤;`--with-token` 从 stdin 读取密钥(用于 CI)。一切操作都是可逆的,并且会明确告知:`logout` 会移除本地密钥,并提议在服务器端撤销机器密钥(`--revoke`/`--keep-key` 可跳过该询问);` off` 会恢复已备份的设置。你不必从 `login` 开始 —— 像 `fireconnect claude on` 这样需要密钥的命令会以 inline 方式执行相同的登录,然后完成工作。 推荐流程: ``` fireconnect login # guided sign-in (browser or paste) fireconnect claude on # Claude: static Fireworks header + optional websearch MCP fireconnect codex on # Codex/OpenCode/Pi/Deep Agents: bake literal into harness config ``` `~/.fireconnect/config.json` 存储 `{keychain:fireworks-api-key}`(正常情况)。旧版安装可能仍有 `{env:FIREWORKS_API_KEY}` —— 配置中绝不会有明文的 Fireworks 密钥。 Fireworks 密钥本身存在于 OS 钥匙串中(或加密文件/明文回退层级中)。Harness 配置为 Codex、OpenCode、Pi、Deep Agents 和 Claude 的自定义标头保留了**内置的文字常量**;Cursor 和 VS Code 使用 IDE 的 safeStorage。 对于 **login 和其他显式存储路径**,`FIREWORKS_API_KEY` 和 FireConnect 管理的存储是互斥的。当设置了环境变量时,`fireconnect login` 会验证并使用它,而不会将其复制到 FireConnect 的密钥存储中。将登录与存储密钥的选项(`--api-key`、`--with-token`、浏览器登录或粘贴)结合使用,会在进行任何更改之前失败。当希望 FireConnect 将密钥存储在 OS 钥匙串/密钥环中时,请先取消设置 `FIREWORKS_API_KEY`。 对于 `fireconnect on`,可能仍会读取 `FIREWORKS_API_KEY`,将其持久化到钥匙串中(针对文件配置型 harness),并将其内置到该 harness 的配置中。 托管的 shell hook(`export FIREWORKS_API_KEY="$(fireconnect key export)"`)仅为 Claude websearch MCP(在 `~/.claude.json` 中的 `${FIREWORKS_API_KEY}`)安装。重新运行 `install.sh` 会将已启用的 harness 配置重新生成为文字常量,包括磁盘上留下的任何旧版环境变量引用身份验证。 **每个 harness**(`claude`、`opencode`、`codex`、`pi`、`cursor`、`vscode`、`deepagents`) ``` fireconnect on Route the harness through Fireworks (default if no command). fireconnect off Restore your previous provider/config. fireconnect status Show the provider, auth, and model mapping. fireconnect help Show help for that harness. ``` 全局目录发现:`fireconnect model list`。 所有的模型更改都通过 ` on` 进行;`--model ` 设置主要/默认模型,Claude 的别名标志则用于设置各个语义槽位。 Claude 还具有 `fireconnect claude usage`(根据会话日志估算使用成本)。 运行 `fireconnect help` 获取概述,或运行 `fireconnect help`(例如 `fireconnect claude help`、`fireconnect cursor help`、`fireconnect vscode help`、`fireconnect deepagents help`)了解 harness 级别可用的所有功能。 ## Codex Harness FireConnect 通过 Responses API 将 [OpenAI Codex CLI](https://developers.openai.com/codex) 通过 Fireworks 进行路由: ``` fireconnect login fireconnect codex on # route Codex through Fireworks (~/.codex/config.toml) fireconnect codex status # check current provider and model fireconnect codex on --model glm-5p1 # switch model (non-interactive) fireconnect codex on --model firerouter # route requests through FireRouter fireconnect codex off # restore your original config ``` 它的作用是: - 为 Codex 0.134+ 设置根 `model_provider` / `model`(将 `model` 存储为短 slug),并添加一个 `[model_providers.fireworks-ai]` 块,其中包含 `wire_api = "responses"` 和一个**内置的** `experimental_bearer_token` 文字常量(文件模式 `0600`)。Codex 从配置中读取密钥 —— 正常的 Fireworks 路由不需要 shell hook。 - 将**首选的 serverless 目录**(`*-latest`、`*-fast-latest` 或最新的具体系列版本)写入 `~/.codex/fireworks-model-catalog.json`,并通过 `model_catalog_json` 指向 Codex(短 slug;首选 latest 别名;过滤掉 embeddings/no-tools/deprecated 模型)。来自 Fireworks API 和旧目录的规范模型 ID 仍然被接受。配置了 Workspace-BYOK 的账户和具有有效 `ANTHROPIC_API_KEY` 的会话也会接收 `firerouter`;否则使用 `on --model firerouter` 选择它。`codex off` 会移除目录文件和引用。 - 在首次更改之前,对你的原始 `~/.codex/config.toml` 进行快照。`fireconnect codex off` 会逐字节恢复它,并在没有其他地方需要 `FIREWORKS_API_KEY` 时协调 shell hook。 - 通过精准的 TOML 编辑,保留不相关的 Codex 设置(例如 `[[mcp_servers]]`)。 **Codex 不支持 MiniMax 模型。** Codex 使用 Fireworks Responses API,可能会在 `tool_calls` 和 `tool_results` 之间插入 assistant 消息。MiniMax chat 模板要求 `tool_results` 紧跟在 `tool_calls` 之后,因此 Codex 会话会因模板错误而失败。MiniMax 仍可通过 Chat Completions harness(例如 Claude 或 OpenCode)使用。如果你运行 `fireconnect codex on --model minimax-m3`,FireConnect 会拒绝该请求并给出解释。 ### FireRouter 模式 `fireconnect codex on --model firerouter 会在常规的 Fireworks 网关提供商(`https://api.fireworks.ai/inference/v1`,Responses API)上注册 `firerouter` 模型。像任何其他 Fireworks 模型一样,Fireworks 密钥被内置到 `config.toml` 中。可选的 Anthropic BYOK 密钥会作为 `env_http_headers` 的 `x-anthropic-api-key` 引用附带发送,以便 FireRouter 可以将困难的请求传递给 Anthropic;请 export `ANTHROPIC_API_KEY` 或依赖工作区 BYOK。(FireRouter 不支持 OpenAI BYOK。) ``` export ANTHROPIC_API_KEY=sk-ant-... fireconnect codex on --model firerouter ``` `fireconnect codex off` 会逐字节恢复原始的 `config.toml`。 在执行 `fireconnect codex on` 或 `off` 之后,`config.toml` 会立即更新。要使用更新后的路由,请退出 Codex,然后使用 `codex resume ` 恢复,或者开始一个新的会话。 ## OpenCode Harness FireConnect 使用 harness 优先的命令将 [OpenCode](https://opencode.ai) 通过 Fireworks 进行路由: ``` fireconnect login fireconnect opencode on # route OpenCode through Fireworks fireconnect opencode status # check current provider fireconnect opencode on --model glm-5p1 # switch model (non-interactive) fireconnect opencode off # restore your original config ``` 它的作用是: - 将 `provider.fireworks-ai` 块合并到 `~/.config/opencode/opencode.json` 中,将默认 `model` 设置为 `fireworks-ai/`,并通过短 slug 为提供商模型添加键值。`options.apiKey` 是一个**内置的明文文字常量**(文件模式 `0600`)。现有的规范模型引用仍然兼容。 - 在 OpenCode 的 `/model` 选择器中的提供商 `models`(`*-latest` / `*-fast-latest`,否则为最新的具体系列版本)中注册**首选的 serverless 目录** —— 对于 workspace BYOK 或有效的 `ANTHROPIC_API_KEY`,还会加上 `firerouter`。当无法获取目录时(离线状态),回退到当前活跃的模型。`on --model firerouter` 仅注册 `firerouter` 模型(它在服务器端进行路由)。 - 在首次更改之前,对你的原始 `opencode.json` 进行快照。`fireconnect opencode off` 会**逐字节**恢复它。快照位于 `~/.fireconnect/opencode/` 中。 使用 `--config-path ` 指向非默认的配置文件(也方便在不动你真实配置的情况下进行测试)。运行 `fireconnect help` 获取完整的 CLI 参考。 OpenCode 还支持在 Microsoft Foundry (Azure) 上通过 Fireworks 模型进行路由 —— 请参阅 [Azure (Microsoft Foundry) endpoint](#azure-microsoft-foundry-endpoints)。 ## Pi Harness FireConnect 使用 harness 优先的命令将 [Pi](https://pi.dev) 通过 Fireworks 进行路由: ``` fireconnect login fireconnect pi on # route Pi through Fireworks fireconnect pi status # check current provider fireconnect pi on --model glm-5p1 # switch model (non-interactive) fireconnect pi on --model firerouter # route Anthropic models through FireRouter fireconnect pi off # restore your original settings and auth ``` 它的作用是: - 在 `~/.pi/agent/settings.json` 中设置 `defaultProvider` / `defaultModel`,并在 `fireworks.key`(`auth.json`,模式 `0600`)中存储一个**内置的明文文字常量**。除非你传递 `--model`,否则 `on` 会应用默认模型(`glm-fast-latest`)。 - 在 `~/.pi/agent/models.json`(`*-latest` / `*-fast-latest`,否则为最新的具体系列版本)中为 Pi 的 `/model` 选择器注册**首选的 serverless 目录**,对于 workspace BYOK 或有效的 `ANTHROPIC_API_KEY`,还会加上 `firerouter`。`settings.defaultModel`、托管状态 ID 和提供商模型 ID 均为短 slug。每个受管理的短 ID 模型都会获得一个完整的 `models` 条目,因此尽管 Pi 的内置目录是以规范 ID 为键的,Pi 仍能保留上下文、定价、推理和视觉元数据。在离线状态下回退到捆绑的路由器集合;`on --model firerouter` 仅注册 `firerouter` 模型。 - 在首次更改之前,在 `~/.fireconnect/pi/` 下对这两个文件进行快照。`fireconnect pi off` 会**逐字节**恢复它们。`auth.json` 以模式 `0600` 写入。 - 如果 Pi 已经在运行,请在执行 `on` 或 `off` 之后重启 Pi。 ### FireRouter 模式 `fireconnect pi on --model firerouter` 会在 Pi 常规的 Fireworks 提供商上选择 `firerouter`。Fireworks 密钥的解析方式与所有其他 Fireworks 模型完全相同。Anthropic BYOK 密钥是可选的,在提供时,它会作为 `x-anthropic-api-key` 模型标头附加: ``` fireconnect pi on --model firerouter --anthropic-api-key sk-ant-... fireconnect pi on --model firerouter ``` FireConnect 会备份 `settings.json`、`auth.json` 和 `models.json`,`fireconnect pi off` 会逐字节恢复这三个文件。重新运行 `on --model ` 或使用 Pi 的模型选择器切换到另一个 Fireworks 模型。 使用 `--settings-path ` 指向非默认的设置文件。 Pi 还支持在 Microsoft Foundry (Azure) 上通过 Fireworks 模型进行路由 —— 请参阅 [Azure (Microsoft Foundry) endpoint](#azure-microsoft-foundry-endpoints)。 ## Azure (Microsoft Foundry) endpoint Fireworks AI 模型还可以在 [Microsoft Foundry](https://docs.fireworks.ai/ecosystem/integrations/azure-foundry)(前身为 Azure AI Foundry)中作为第一方模型使用,其使用量通过 Azure 计费并计入你的 MACC。Foundry 暴露了一个 **OpenAI 兼容**的 endpoint,因此 **OpenCode、Codex、Pi、Deep Agents、Cursor 和 VS Code** 可以通过你的 Foundry 资源而不是 Fireworks 网关进行路由。 **只需配置一次 endpoint**,然后 ` on` 就会利用它 —— 无需每个命令都加标志: ``` fireconnect configure --provider azure \ --base-url https://.services.ai.azure.com \ --api-key fireconnect opencode on # routes through the configured Foundry endpoint fireconnect codex on fireconnect pi on fireconnect deepagents on fireconnect cursor on fireconnect vscode on ``` `configure` 将顶层的 `provider` 和 `azure` endpoint 存储在 `~/.fireconnect/config.json` 中;这种设计可扩展到未来的提供商,而无需触及 harness。要切回去,请运行 `fireconnect configure --provider fireworks ...`。 你也可以通过 `--azure` 为每个命令选择启用(或覆盖已配置的 endpoint): ``` fireconnect opencode on --azure --base-url https://.services.ai.azure.com \ --api-key --model FW-GLM-5.2 ``` 各个 harness 的共同行为: - **Endpoint。** 将你的 Foundry endpoint 传递给 `--base-url`。无论你粘贴的是什么 —— 裸资源根目录、门户的 **project endpoint**(`.../api/projects/`)还是 `/models` 路由 —— FireConnect 都会将其规范化为正确的资源根目录 base `https://.services.ai.azure.com/openai/v1`。在 Microsoft Foundry 门户的 **Project settings** 下找到该 endpoint。 - **身份验证。** 使用你的 **Azure** API 密钥(不是 `fw_`/`fpk_` 密钥)进行身份验证。传递 `--api-key` 以将其字面写入,或者 export `AZURE_API_KEY` 使其作为环境变量引用写入。 - **模型。** 模型 ID 是你的 Foundry **部署**名称 —— 即不带 `fireworks-ai/` 发布者前缀的目录模型名称(例如 `FW-GLM-5.2`、`FW-MiniMax-M2.5`)。默认为 `FW-GLM-5.2`;传递 `--model ` 选择另一个。 - **提供商隔离与恢复。** 每个 harness 都会写入一个与 Fireworks 网关截然不同的专用 `fireworks-azure` 提供商,并且 `off` 会**逐字节**恢复你的原始配置。在 Fireworks 和 Azure 模式之间切换可以干净地替换受管理的提供商。 各个 harness 的具体情况: | Harness | 写入位置 | 提供商 | |---------|--------|----------| | OpenCode | `opencode.json` 中的 `provider.fireworks-azure`(`@ai-sdk/openai-compatible`,`options.baseURL` + `options.apiKey`) | `fireworks-azure/` | | Codex | `config.toml` 中的 `[model_providers.fireworks-azure]`(`wire_api = "chat"`,bearer 或 `env_key = "AZURE_API_KEY"`) | `fireworks-azure` | | Pi | `models.json` 中的自定义 `openai-completions` 提供商(`baseUrl`、`authHeader`、字面量 `apiKey` 或 `$AZURE_API_KEY`) + `settings.json` 中的 `defaultProvider` | `fireworks-azure` | | Deep Agents | `config.toml` 中的 `[models.providers.fireworks-azure]` | `fireworks-azure:` | | Cursor | Cursor 的 `state.vscdb` 中兼容 OpenAI 的 URL、部署和密钥 | `` | | VS Code | `chatLanguageModels.json` 中的自定义 endpoint 模型;VS Code `safeStorage` 中的密钥 | `` | `fireconnect status` 会报告 `azure` 作为提供商,以及 endpoint 和模型。 ## Deep Agents Harness FireConnect 将 [LangChain Deep Agents Code](https://docs.langchain.com/oss/python/deepagents/cli)(`dcode`)通过 Fireworks 进行路由: ``` fireconnect login fireconnect deepagents on # route Deep Agents through Fireworks fireconnect deepagents status # check current provider fireconnect deepagents on --model glm-5p1 # switch model (non-interactive) fireconnect deepagents off # restore your original config ``` 它的作用是: - 将 `[models].default` 设置为 `fireworks:`,并在 `~/.deepagents/config.toml` 中配置 `[models.providers.fireworks]`,使用 Fireworks 兼容 OpenAI 的 base URL(`https://api.fireworks.ai/inference`)和一个**内置的** `api_key` 文字常量(文件模式 `0600`)。现有的规范 `fireworks:accounts/fireworks/...` 模型引用仍然兼容。 - 通过 `fireconnect login` 或 `deepagents on --api-key` 将你的 Fireworks API 密钥存储在 FireConnect 钥匙串中,然后将其内置到 `config.toml` 中。FireConnect 不会写入 `~/.deepagents/.state/auth.json` —— 请使用 dcode 的 `/auth` 来管理存储在该文件中的凭证。 - 在首次更改之前,在 `~/.fireconnect/deepagents/` 下对 `config.toml` 进行快照。`fireconnect deepagents off` 会逐字节恢复它。 - 在执行 `on` 或 `off` 之后重启 `dcode`。 使用 `--config-path ` 指向非默认的配置文件。
标签:AI模型接入, Cutter, GNU通用公共许可证, MITM代理, Node.js, 开发辅助, 文档结构分析, 暗色界面, 自定义脚本