文档

文档

Nanocoder

Nanocoder 将远程端点视同 Ollama:在 nanocoder.providers 中添加一个条目,其中包含名称、基础 URL、密钥和模型列表。sdkProvider 默认为 openai-compatible,因此无需再声明其他内容。

在 agents.config.json 的 nanocoder.providers 下添加 Custom Provider 条目 — name、baseUrl、apiKey、models — 无需 sdkProvider,因为默认值就是 openai-compatible。

agents.config.json
{
  "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"]
      }
    ]
  }
}
Kunavo 尚未通过此端点运行 Nanocoder。 上述每个字段都根据 Nanocoder 自己的自定义提供商页面转录而来,并非来自任何人在此处完成的实际会话——这是一份配置参考,而非兼容性测试。请先运行一项规模小、范围有限的任务,并在此期间保留另一种可用方式。
Base URL 需要保留 /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 后,则会完全跳过项目级和主目录中的查找。如果你编辑的密钥不是实际发送的密钥,应从此优先顺序中查找原因。
还没有密钥?创建 Kunavo 账户,创建一个密钥(以 sk-kn- 开头),并充值 $10 起——调用费用从该余额中扣除,失败的调用不会收费。随后,控制台会打开 Nanocoder 设置页面。

分步操作

  1. 在 /app/keys 创建密钥并复制——密钥只会显示一次。请将其导出为 KUNAVO_API_KEY,不要直接粘贴到文件中:Nanocoder 会递归替换提供商条目中每个字符串里的 $VAR、${VAR} 和 ${VAR:-default},并从工作目录读取 .env。
  2. 在 Nanocoder 中运行 /settings providers,然后选择 自定义提供商。向导会按自身顺序询问 提供商名称、基础 URL、API 密钥(可选)、模型名称和 请求超时,并提供从端点获取模型列表的选项——Kunavo 会返回 GET /v1/models,因此该操作会自动填充列表。
  3. 或者跳过向导,使用上面的配置块自行编写 agents.config.json。请注意,设置按文件解析:如果项目级文件定义了 nanocoder.providers,就会使用该文件中的整个配置块,因此不会将全局配置中的条目合并进来。
  4. 设置上下文窗口。Nanocoder 按以下顺序解析上下文限制:/context-max、contextWindows[model]、contextWindow、NANOCODER_CONTEXT_LIMIT,然后是 models.dev。Kunavo 不是 models.dev 提供商,因此如果前四项都未设置,Nanocoder 会按一个并非你的模型实际限制的后备值进行预算。相关数值见 /models。
  5. 打开 /model,选择你列出的某个 ID——选择器会将它们显示在你提供的 name 下——然后运行一个需要调用工具的小任务。如果某个模型返回格式错误的工具调用,可使用 disableToolModels 按模型单独关闭,而不是按提供商关闭。

已于 2026年9月21日 对照 Nanocoder 的自定义提供商页面 检查。第三方设置会发生变化;如果这里的字段名称不再与你看到的内容一致,应以该页面为准,而不是本页。

这是简要版本。完整教程——包括模型选择、真实会话成本和失败模式——见 Nanocoder 与 OpenCode——各自会在提供商配置之外产生哪些费用。

调试客户端前先验证

一个请求即可确定故障来自端点、密钥还是配置文件。如果返回 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 的美元,格式为输入 / 输出。

模型 IDKunavo 输入 / 输出它在 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会话中唯一一次复杂重构;规划错误的代价很高
计费方式是从预付余额中按 token 扣费,无月费——参见 计费。对于重复上下文——这正是编辑器或聊天客户端发送内容的大部分——提示缓存对账单的影响大于模型选择。

常见问题

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 数自行计算的——请与提供商自己的账单核对,而不要依据页脚。