OpenCode
通过 @ai-sdk/openai-compatible 将 Inferway 添加为 OpenCode 自定义服务商。
将 Inferway 添加为 OpenCode 的自定义服务商。接入前,请确认账户已开通模型访问。
当前 Inferway 模型配置参数
已在 2026-09-25 于 macOS 26.6.2 arm64(版本 1.18.25)验证:基础对话,以及读取文件、编辑文件、执行 Shell 命令三类工具往返(模型 inferway/mimo-v2.6-flash)。
开始之前
先按官方说明安装客户端。本文的 Pi 指 pi-mono coding agent;Hermes 指 Nous Research 的 Hermes Agent。
账户开通后,在控制台的「API 密钥」页创建密钥。建议给这个客户端单独建一把;花费上限可以用项目的月度预算来控制。live 和 test 两种前缀走的是同一套推理和计费流程,test 只是环境标签,不代表免费,也不是模拟推理。
Inferway 地址需要 Inferway Key;OpenRouter Key 用于 OpenRouter,不能直接用于此地址。
将 Key 保存在客户端凭证存储或本机环境中,不要粘贴到提示词、截图或提交到仓库的配置文件。终端示例适用于 macOS / Linux 的 bash、zsh。
在当前终端设置 Key
下面的交互输入会隐藏 Key,并避免将其写入命令历史。请从同一个终端启动客户端;另外打开的应用可能无法继承该变量。
printf 'Inferway API key: ' IFS= read -r -s INFERWAY_API_KEY printf '\n' export INFERWAY_API_KEY
确认地址和模型
使用完整模型 ID xiaomi/mimo-v2.6-flash。Base URL 只包含一次 /v1,不要在 Base URL 设置中添加 /chat/completions。确认下方响应中包含该模型 ID。
curl --fail-with-body --silent --show-error --max-time 30 \ 'https://api.inferway.ai/v1/models' \ -H "Authorization: Bearer $INFERWAY_API_KEY"
创建临时文件夹
OpenCode 可以从项目根目录加载项目配置(项目配置与自定义路径见 OpenCode 配置文档)。请在一个临时文件夹中操作,避免测试影响你的日常设置或全局服务商列表。
已接受的实测在 macOS 26.6.2 arm64 上运行 OpenCode CLI;所选模型是否经过测试,见本指南顶部的验证说明。操作前请核对自己安装的版本。git init 只为让 OpenCode 有一个干净的项目根目录;检查本身不需要提交。
# Scratch folder with a small read fixture mkdir inferway-opencode-verify && cd inferway-opencode-verify && git init -q printf 'nonce-7f3a9c\n' > read-tool-fixture.txt
保存项目配置
将以下内容保存为临时文件夹根目录的 opencode.json。服务商部分以公开模型 ID 作为模型键,组合模型选择器为 provider/model。{env:INFERWAY_API_KEY} 引用之前设置的变量,Key 本身不写入文件。
{
"$schema": "https://opencode.ai/config.json",
"model": "inferway/xiaomi/mimo-v2.6-flash",
"provider": {
"inferway": {
"npm": "@ai-sdk/openai-compatible",
"name": "Inferway",
"options": {
"baseURL": "https://api.inferway.ai/v1",
"apiKey": "{env:INFERWAY_API_KEY}"
},
"models": {
"xiaomi/mimo-v2.6-flash": {
"name": "Inferway",
"limit": {
"context": 393216,
"output": 131072
}
}
}
}
}
}运行基础检查
从已设置 INFERWAY_API_KEY 的终端、在临时文件夹内运行。opencode run 需要位置消息。退出码 0 本身不代表成功——请检查最终文本。
opencode run --pure --format json --title 'Inferway basic check' --model 'inferway/xiaomi/mimo-v2.6-flash' --agent build --dir . 'Reply with exactly: connected'
确认接入成功
- 确认基础检查的回复文本恰为 connected 且无 API 错误。
- 运行下方读取检查。提示词中不包含 nonce;确认最终文本恰为夹具中的 nonce。此检查只覆盖读取回路;该模型已验证的全部范围见「验证状态」。
- 打开控制台的「请求」页,确认推理请求和 Token 用量。实际扣费以控制台为准,不看客户端的估算。
opencode run --pure --format json --title 'Inferway read fixture' --model 'inferway/xiaomi/mimo-v2.6-flash' --agent build --dir . 'Read the file read-tool-fixture.txt and reply with exactly the nonce it contains, nothing else.'
验证状态
已在 2026-09-25 于 macOS 26.6.2 arm64(版本 1.18.25)验证:基础对话,以及读取文件、编辑文件、执行 Shell 命令三类工具往返(模型 inferway/mimo-v2.6-flash)。
该验证未在一次性(one-shot)模式下进行流式测试;客户端可能支持流式,但此处不作为已验证结论。
该验证不覆盖图片、会话恢复、推理控制。客户端自己估算的费用不是实际扣费;实际用量以控制台的「请求」和「用量」页为准。
可选:在日常配置中使用 Inferway
检查通过后,把 provider 块(及其下的模型项)复制到你现有的 OpenCode 配置中,保留你自己的设置。日常使用不需要临时文件夹或测试夹具。
常见问题
如何在 OpenCode 中配置 Inferway 服务商?在 opencode.json 中添加 @ai-sdk/openai-compatible 的 provider 配置,并在选择模型时使用 inferway/<model_id> 组合选择器。
OpenCode 的工具调用与流式验证情况如何?在已记录的实测中,仅验证了模型读取本地文件(read-tool-fixture.txt)。其他工具能力或未单独记录验收的模型显示为「未验证」。
如何切回默认服务商或移除配置?从项目目录的 opencode.json 中移除 inferway provider 块,或在 CLI 中通过 --model 参数改选其他已配置的服务商即可。
为什么 OpenCode 提示找不到模型?请注意区分目录中的真实模型 ID(如 <model-id>)与 OpenCode 的服务商组合选择器(如 inferway/<model-id>),并确认 provider 的 models 映射中包含了该模型键名。
费用与用量
实际用量由 Inferway 记录:控制台的「请求」页能看到每次请求的状态和 Token 用量,「用量」页是汇总。客户端本地显示的数字只是它自己的估算,不是实际扣费,一切以控制台为准。
请求失败时
认证失败:检查 Key 是否存在、有效且获准使用该模型,并从设置变量的终端重新打开客户端。排错时不要输出完整 Key。
地址或模型错误:检查是否重复添加 /v1,使用公布的完整模型 ID,并确认客户端选择 Chat Completions。请求发往 /responses 或 /completions 时,换 Key 无法解决。
额度或超时:检查钱包余额和 Key 限额,按 Retry-After 等待,并缩短输入或降低输出上限。长输出保持流式传输,排错期间避免 Agent 连续重试。
联系支持时提供客户端版本、模型 ID、请求时间和可用的 request ID;请遮盖凭证和源码。
文件编辑练习:创建样例目录
撰稿与来源校对日期:2026-10-03。本练习演示使用 xiaomi/mimo-v2.6-flash 读取并修改文件:把 edit-fixture.txt 中的 status: pending 改成 status: done-demo-1003,保留标题和换行。引用的接入验收发生在 2026-09-25,本文没有重新运行推理。
需要已安装的 OpenCode CLI、Git,以及 macOS/Linux 的 bash 或 zsh。先执行 opencode --version,记下自己的版本;版本不同,应先核对官方配置与 CLI 文档。2026-09-25 的接入记录覆盖 OpenCode CLI 1.18.25、macOS 26.6.2 arm64 上的基础对话、文件读取、文件编辑和 Shell 工具往返;它不是对所有版本和平台的保证。
调用 Inferway 必须使用 Inferway Key 与配置的 endpoint。原厂 MiMo 的 Key、endpoint 和模型命名属于另一套服务,不能混用,也不能把原厂上下文参数直接当成 Inferway 的参数。本例走自定义 provider 配置,不依赖内置服务商上架。
在你选择的练习父目录运行以下命令。目录名已存在时先换一个新名字;不要在真实项目中创建这些样例,也不要覆写已有文件。五步以连续 && 连接,前一步失败不会继续执行。
最后一行仅把原始样例放入 Git 暂存区,作为后续 diff 基线,不需要提交。以下静态内容是教学样例,不是历史运行的原始文件(title: capability fixture,status: pending)。
mkdir inferway-opencode-edit-demo &&
cd inferway-opencode-edit-demo &&
git init -q &&
printf 'title: capability fixture\nstatus: pending\n' > edit-fixture.txt &&
git add -- edit-fixture.txt文件编辑练习:项目配置与权限
在新目录中保存 opencode.json。provider 部分复用 2026-10-03 校对的 Inferway 公开教程;全局 permission 与本例所选 build agent 都设为读写需审批、禁止 Shell,因为 agent 专属权限优先于全局权限。这是教学设置,不代表历史验收使用过同一审批配置。项目配置会与其他配置合并,须核对所选 agent 的有效权限;新目录不是操作系统沙箱。
注意两个名字的区别:API 模型 ID 是 xiaomi/mimo-v2.6-flash;OpenCode 的选择器是 provider/model,因此这里是 inferway/xiaomi/mimo-v2.6-flash。@ai-sdk/openai-compatible 对应 Chat Completions 接入。Base URL 只保留一次 /v1,不要添加 /chat/completions。上下文与输出上限为目录上限样例,不是永久承诺或本任务输出量。保留用户全局配置,不要用这份文件覆盖日常配置。
{
"$schema": "https://opencode.ai/config.json",
"model": "inferway/xiaomi/mimo-v2.6-flash",
"provider": {
"inferway": {
"npm": "@ai-sdk/openai-compatible",
"name": "Inferway",
"options": {
"baseURL": "https://api.inferway.ai/v1",
"apiKey": "{env:INFERWAY_API_KEY}"
},
"models": {
"xiaomi/mimo-v2.6-flash": {
"name": "Inferway",
"limit": {
"context": 393216,
"output": 131072
}
}
}
}
},
"permission": {
"read": "ask",
"edit": "ask",
"bash": "deny"
},
"agent": {
"build": {
"permission": {
"read": "ask",
"edit": "ask",
"bash": "deny"
}
}
}
}文件编辑练习:发出明确的文件任务
仍在这个目录和设置 Key 的终端,交互启动:
- 官方 CLI 文档支持交互界面、--model 和 --agent;本例不启用 --auto。确认所选模型与 build agent;若界面显示自动审批,先通过命令面板关闭,再输入任务。若读写未要求审批或仍允许 Shell,停止并核对有效权限,再继续练习。
- 输入任务要求:「读取当前目录的 edit-fixture.txt。使用文件编辑工具,把唯一一行 status: pending 改成 status: done-demo-1003。保留其他内容和末尾换行。只修改这个文件,不运行 Shell,不修改配置。完成后告诉我修改了哪一行;不要只在回复里给出修改后的文件。」
- 审阅读取与编辑请求:目标应是当前练习目录内的 edit-fixture.txt,编辑内容应只有这次状态替换。只批准这些请求,不选择会扩大后续权限的批准选项。若目标路径、工具请求或修改范围超出样例,拒绝并停止。界面显示的工具事件应能对应读取和修改;历史记录在 OpenCode 1.18.25 中记录过 read 和 edit,这不表示你当前这次已经成功。
opencode --model 'inferway/xiaomi/mimo-v2.6-flash' --agent build文件编辑练习:回到磁盘核对
结束交互后,在同一目录自己运行下面的本地检查;不要让模型代替你确认结果:
- 期望文件恰为两行,且保留末尾换行:title: capability fixture 与 status: done-demo-1003。
- 预期 diff 的教学示意(省略 Git 头部;不是 2026-09-25 的实际日志):-status: pending / +status: done-demo-1003。
- 验收条件是实际磁盘内容和你本机的 diff 一致:仅状态行变化、标题不变、没有新增行或换行变化,且没有其他意外改动。git status 中样例可能显示 AM(原版已暂存、工作区已修改),新建的 opencode.json 为未跟踪文件。若文件没变、diff 为空,或模型只贴出代码块,本次文件修改未通过。仅有完成回复或成功退出码不能证明落盘。
- 再打开 Inferway 控制台「请求」页,按操作时间和模型核对状态与 Token 用量,在「用量」页看汇总。一次文件任务可能涉及多次模型请求;实际扣费以控制台记录为准,客户端估算不能代替它。
cat edit-fixture.txt git diff -- edit-fixture.txt git status --short
这份历史验证能说明什么
2026-09-25 的记录使用 OpenCode CLI 1.18.25、macOS 26.6.2 arm64 和 Inferway MiMo:基础回复为 connected;读取检查返回提示词中没有给出的随机 nonce;编辑检查在磁盘回读两行预期内容;Shell 检查读取脚本打印的未知随机 marker,并检查 marker 文件。公开教程总结这四类往返已通过。本文引用的是公开说明与验收摘要,没有展示原始 nonce、完整 transcript 或原始 diff,也没有在 2026-10-03 新实测。
该回执不覆盖图片、会话恢复、推理控制或一次性模式下的流式测试。本文的交互教学方式也不应被当成新的验收回执。你完成练习后的磁盘 diff、工具事件和控制台请求记录,才是你自己这一次结果的依据。
可选:带权限的日常配置
若要在日常使用中保留读写审批,把 permission 块合并到你的全局或项目配置中,而不是用整份练习配置覆盖现有设置。若你的客户端版本不支持 permission 字段,先查阅对应版本的文档,确认保留审批机制后再继续。
文件编辑练习:常见问题排查
认证失败:检查 Key 有效性和模型权限,从设置变量的同一终端重启 OpenCode;不要打印完整 Key。
找不到模型:区分 API ID 与 OpenCode 组合选择器,核对 provider 的模型键;按公开教程确认账户可见的模型。
地址或协议错误:检查是否重复添加 /v1,去掉 Base URL 中的 /chat/completions,并确认使用本例的 Chat Completions 配置。请求发往 /responses 或 /completions 时,换 Key 无法解决。
一直等待工具:看交互界面是否等待审批;只批准指定文件的操作,不用自动批准开关排错。
说改好了但文件没变:检查工作目录、工具事件和实际 diff;不要把回复里的文件内容当落盘证据。
额度、限流或超时:检查余额与 Key 限额,遵守 Retry-After,缩短输入或降低输出预算;排错期间避免连续重试。
这些地址、认证和用量分支来自现有公开教程;本地审批与磁盘检查对应本练习。需要支持时提供版本、模型、请求时间和可用 request ID,遮盖凭证与私人源码。
可用文本模型与价格对照
以下模型均可通过配置对应的模型 ID 直接在客户端中调用。单价取自当前市场已发布的价格;数据留存方式因模型而异,见「数据留存」一列。
价格加载中
| 模型名称 | 模型 ID | 上下文窗口 | 数据留存 | 输入单价 | 输出单价 | 典型会话花费预估 |
|---|---|---|---|---|---|---|
| DeepSeek V4.1 Flash 1017 | deepseek/deepseek-v4.1-flash-1017 | 1,048,576 | 第三方服务商处理,适用其留存条款 | — | — | — |
| DeepSeek V4.1 Flash 1017 ZDR | deepseek/deepseek-v4.1-flash-1017-zdr | 1,000,000 | 服务商声明零数据留存 | — | — | — |
| DeepSeek V4.1 Flash Uncensored | deepseek/deepseek-v4.1-uncensored | 1,048,576 | 第三方服务商处理,适用其留存条款 | — | — | — |
| MiniMax M3.1 Flash | minimax/minimax-m3.1-flash | 1,048,576 | 第三方服务商处理,适用其留存条款 | — | — | — |
| Kimi K3.1 Pro | moonshotai/kimi-k3.1-pro | 1,048,576 | 第三方服务商处理,适用其留存条款 | — | — | — |
| MiMo-V2.6 Flash | xiaomi/mimo-v2.6-flash | 393,216 | 服务商声明零数据留存 | — | — | — |
| GLM-5.3 | z-ai/glm-5.3 | 1,000,000 | 第三方服务商处理,适用其留存条款 | — | — | — |
| GLM-5.3 Flash Uncensored | z-ai/glm-5.3-flash-uncensored | 1,048,576 | 第三方服务商处理,适用其留存条款 | — | — | — |
| GLM-5.3 Uncensored | z-ai/glm-5.3-uncensored | 1,048,576 | 第三方服务商处理,适用其留存条款 | — | — | — |
一次典型编码会话的花费示例
注:本示例假设一次典型多轮编码会话消耗 50,000 输入 Token 与 2,000 输出 Token(输入包含读取的代码库文件与上下文,输出包含生成的代码补丁与解释)。输入/输出 Token 数为教学示例常量;单价取自当前市场已发布的价格(人民币或美元以你所在市场为准),总金额在页面渲染时按公式实时计算。实际扣费以控制台记录的真实用量为准。