文档
Nanocoder
Nanocoder 将远程端点视同 Ollama:在 nanocoder.providers 中添加一个条目,其中包含名称、基础 URL、密钥和模型列表。sdkProvider 默认为 openai-compatible,因此无需再声明其他内容。
在 agents.config.json 的 nanocoder.providers 下添加 Custom Provider 条目 — name、baseUrl、apiKey、models — 无需 sdkProvider,因为默认值就是 openai-compatible。
{
"nanocoder": {
"providers": [
{
"name": "Kunavo",
"baseUrl": "https://api.kunavo.com/v1",
"apiKey": "${KUNAVO_API_KEY}",
"models": ["claude-sonnet-5", "claude-haiku-4-5", "gpt-5-6-sol"]
}
]
}
}/v1 后缀。Nanocoder 的文档通过示例而非规则说明了这一点:字段表仅将 baseUrl 描述为“API 端点 URL”,但 Custom Provider 页面自己的示例是 "baseUrl": "https://my-api.example.com/v1",网站上每个 OpenAI 兼容提供商页面也都如此——https://openrouter.ai/api/v1、http://localhost:11434/v1。省略后缀会导致路由返回 404,而不是密钥返回 401。sdkProvider——字段表称其“默认值为 openai-compatible”,这正是 Kunavo 在此处响应所用的线路格式。其他文档列出的值(google、anthropic、github-copilot)会切换到不同的 SDK,而访问聊天补全端点不需要其中任何一个。NANOCODER_PROVIDERS(或 NANOCODER_PROVIDERS_FILE),再查工作目录中的 agents.config.json,最后查用户级配置——macOS 上为 ~/Library/Preferences/nanocoder/,Linux 上为 ~/.config/nanocoder/,Windows 上为 %APPDATA%\nanocoder\。采用首先找到的配置;设置 NANOCODER_CONFIG_DIR 后,则会完全跳过项目级和主目录中的查找。如果你编辑的密钥不是实际发送的密钥,应从此优先顺序中查找原因。sk-kn- 开头),并充值 $10 起——调用费用从该余额中扣除,失败的调用不会收费。随后,控制台会打开 Nanocoder 设置页面。分步操作
- 在
/app/keys创建密钥并复制——密钥只会显示一次。请将其导出为KUNAVO_API_KEY,不要直接粘贴到文件中:Nanocoder 会递归替换提供商条目中每个字符串里的$VAR、${VAR}和${VAR:-default},并从工作目录读取.env。 - 在 Nanocoder 中运行
/settings providers,然后选择 自定义提供商。向导会按自身顺序询问 提供商名称、基础 URL、API 密钥(可选)、模型名称和 请求超时,并提供从端点获取模型列表的选项——Kunavo 会返回GET /v1/models,因此该操作会自动填充列表。 - 或者跳过向导,使用上面的配置块自行编写
agents.config.json。请注意,设置按文件解析:如果项目级文件定义了nanocoder.providers,就会使用该文件中的整个配置块,因此不会将全局配置中的条目合并进来。 - 设置上下文窗口。Nanocoder 按以下顺序解析上下文限制:
/context-max、contextWindows[model]、contextWindow、NANOCODER_CONTEXT_LIMIT,然后是 models.dev。Kunavo 不是 models.dev 提供商,因此如果前四项都未设置,Nanocoder 会按一个并非你的模型实际限制的后备值进行预算。相关数值见/models。 - 打开
/model,选择你列出的某个 ID——选择器会将它们显示在你提供的name下——然后运行一个需要调用工具的小任务。如果某个模型返回格式错误的工具调用,可使用disableToolModels按模型单独关闭,而不是按提供商关闭。
已于 2026年9月21日 对照 Nanocoder 的自定义提供商页面 检查。第三方设置会发生变化;如果这里的字段名称不再与你看到的内容一致,应以该页面为准,而不是本页。
调试客户端前先验证
一个请求即可确定故障来自端点、密钥还是配置文件。如果返回 JSON,则相同的基础 URL 和密钥可以在 Nanocoder 中使用。
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."字段中应填写哪个模型 ID
每个文本模型都可通过模型 ID 访问——实时列表见 GET /v1/models,包含价格的目录见模型页面。费率单位为每 1M token 的美元,格式为输入 / 输出。
| 模型 ID | Kunavo 输入 / 输出 | 它在 Nanocoder 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 终端代理在编辑和运行循环中的默认工作模型 |
claude-haiku-4-5 | $0.70 / $3.50 | 工具调用频繁的长会话和快速文件分类;账单主要取决于轮次数 |
gpt-5-6-sol | $2.00 / $12.00 | 使用同一密钥调用另一个系列,获得第二种意见 |
claude-opus-5 | $3.50 / $17.50 | 会话中唯一一次复杂重构;规划错误的代价很高 |
常见问题
Nanocoder 支持自定义 API 端点吗?
支持。这是 Nanocoder 官方文档明确记载的功能,并非未公开的字段。Nanocoder 自己的“自定义提供商”页面说明,任何提供兼容 OpenAI API 的服务都可以添加为自定义提供商,并给出了需要编写的对象字段:name、baseUrl、apiKey 和 models。你可以通过 /settings providers 向导交互式添加,也可以手动编辑 agents.config.json。这是截至 2026 年 9 月 21 日的文档内容。
Nanocoder API 密钥应该放在哪里?
放在 agents.config.json 中提供商条目的 apiKey 字段里。Nanocoder 会递归地对提供商配置中的字符串字段执行环境变量替换,因此更安全的写法是 "apiKey": "${KUNAVO_API_KEY}",并在 shell 或工作目录中的 .env 文件里导出该变量。环境变量覆盖 NANOCODER_PROVIDERS 的优先级最高,其次是项目级 agents.config.json,最后是用户级配置。因此,编辑后看似没有生效时,通常是被优先级更高的配置覆盖了。
Nanocoder 的 baseUrl 末尾需要加 /v1 吗?
对于兼容 OpenAI 的端点,需要——例如 https://api.kunavo.com/v1。Nanocoder 的文档没有在正文中说明后缀规则;其字段表只将 baseUrl 描述为 API 端点 URL。不过文档通过示例给出了答案:自定义提供商页面中的示例使用 https://my-api.example.com/v1,网站上每个兼容 OpenAI 的提供商页面也都带有相同后缀。缺少 /v1 时,路由会返回 404,而不是身份验证错误。
为什么 Nanocoder 不显示这些模型的费用,或者显示的上下文大小不正确?
因为 Nanocoder 从 models.dev 读取模型元数据,而它未收录的第三方网关在该站点上没有对应条目。文档规定的上下文限制解析顺序是:先查 /context-max 或 --context-max,然后是 contextWindows[model],再然后是 contextWindow、NANOCODER_CONTEXT_LIMIT,最后是 models.dev。因此,请在提供商条目中设置前四项之一,计量器就会显示正确的数值。无论如何,每次响应的费用都是客户端根据报告的 token 数自行计算的——请与提供商自己的账单核对,而不要依据页脚。