文档

文档

twinny

twinny 不需要基础 URL。它要求填写协议、主机名、端口和 API 路径;对于聊天,该路径就是 API 基础路径。因此填写 https、api.kunavo.com 和 /v1,并将端口留空。

twinny 没有基础 URL 字段 — Add provider → OpenAI-compatible server,然后填写 Protocol https、Hostname api.kunavo.com、Port 留空、API path /v1,其聊天面板即可使用你的密钥。

Providers 标签页 → Add provider → OpenAI-compatible server
Label          Kunavo
Type           Chat
Provider       OpenAI-compatible server
Hostname       api.kunavo.com
Port           (leave blank — "Blank means the protocol's default")
Protocol       https
API path       /v1
Model name     claude-sonnet-5
FIM template   (Autocomplete only — not part of a Chat provider)
API key        sk-kn-...
API path 应填写 /v1,而不是 /v1/chat/completions。twinny 的提供商表格用一句话说明了这一点——“对于聊天,路径就是 API 基础路径;twinny 会附加 /chat/completions”——因此路径若已包含路由,就会生成 /v1/chat/completions/chat/completions 并返回 404。这里没有一个容易填错的统一基础 URL 字段,不过同一张表格还提供了一个快捷方式:将 https://api.kunavo.com/v1 粘贴到 Hostname,系统就会“拆分为协议、主机、端口和路径”。
选择通用的 OpenAI-compatible server 预设,不要选 OpenAI 或 Anthropic 预设。twinny 的 托管 API 页面 说明,聊天请求会“通过厂商 SDK 发送到其固定端点,因此主机名、端口和路径字段会被隐藏”——密钥会发送给该厂商,而不是你的端点。上方的字段标签按顺序摘自 提供商表单表格。
Kunavo 没有使用该端点运行过 twinny。本页内容依据 twinny 自己的文档和 Kunavo 的路由表整理;发布配置页面不等同于测试。真正能验证配置的是 twinny 的 Test provider 按钮,它会“发送一个用于该提供商用途的小型请求,并显示成功结果或服务器返回的错误,以及它调用的 URL”。
还没有密钥?创建 Kunavo 账户,创建一个密钥(以 sk-kn- 开头),并充值 $10 起——调用费用从该余额中扣除,失败的调用不会收费。随后,控制台会打开 twinny 设置页面。

分步操作

  1. 在 /app/keys 创建密钥并复制——它只会显示一次。
  2. 点击侧边栏顶部的机器人图标,打开 Providers 选项卡;也可以从命令面板运行 Manage twinny providers。
  3. Add provider → 在 On your machine 下选择 OpenAI-compatible server,即通用预设。该预设默认指向 localhost:8080。
  4. 将 Protocol 设为 https,将 Hostname 设为 api.kunavo.com,清空 Port,并将 API path 设为 /v1。Type 保持为 Chat。
  5. 将密钥粘贴到 API key 字段中——twinny 会将其作为 Authorization: Bearer 发送。然后设置 Model name,可以手动输入,也可以使用 Choose from the server's models,因为 Kunavo 支持 GET /v1/models。
  6. 点击 Test provider,然后点击 Use this provider 将其设为当前聊天提供商。若要添加第二个模型,请使用 Copy 复制该行,而不必重新输入四个端点字段。

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

这是简要版本。完整教程——包括模型选择、真实会话成本和失败模式——见 twinny 与 Continue 的比较。

调试客户端前先验证

一个请求即可确定故障来自端点、密钥还是配置文件。如果返回 JSON,则相同的基础 URL 和密钥可以在 twinny 中使用。

# 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 输入 / 输出它在 twinny 中的位置
claude-sonnet-5$1.40 / $7.00聊天面板、行内编辑和代码审查——适合作为日常默认模型
claude-haiku-4-5$0.70 / $3.50提交消息、终端助手和代码操作;在这些场景中,调用量影响更大
gpt-5-6-terra$0.70 / $4.20粘贴到聊天中的长文件,以及评审内容显得单薄时来自另一模型系列的第二意见
计费方式是从预付余额中按 token 扣费,无月费——参见 计费。对于重复上下文——这正是编辑器或聊天客户端发送内容的大部分——提示缓存对账单的影响大于模型选择。

聊天可用,自动补全和索引则不行。

twinny 将工作拆分给三种提供商类型,且每种都需要单独配置——因此“twinny 支持 Kunavo”只对其中一种成立。其他两种并不是你尚未找到的配置选项;它们所需的路由并非 Kunavo 支持的路由。

提供商类型twinny 发送的内容与 api.kunavo.com 配合时
聊天向 <API path>/chat/completions 发送 OpenAI 格式的 POST 请求可用——上文介绍的就是这种方式。
自动补全(FIM)向 /v1/completions 发送原始的中间填充(fill-in-the-middle)提示不可用。Kunavo 没有 /v1/completions 路由,也没有用于驱动此功能的基础模型或代码模型。
嵌入向 /v1/embeddings 发送请求不可用。Kunavo 不提供嵌入模型,因此无法在此构建工作区索引。

这两项能力缺失都不会阻止配置,因为 twinny 对每种类型分别保留一个当前提供商,彼此独立。twinny 自己的托管 API 页面称这种拆分是“一种常见配置”:使用小型本地基础模型进行补全,同时使用托管模型进行聊天、评审和编辑。工作区索引也是类似情况——这里不提供嵌入步骤,而 twinny 的文档建议通过 Ollama 使用本地模型,例如 nomic-embed-text。不同模型生成的向量不能混用,因此更换该模型后需要重建索引,而不是更新索引。

常见问题

如何将 twinny 指向自定义 API 端点?

点击 twinny 侧边栏中的机器人图标,打开 Providers 选项卡,选择 Add provider,然后在“On your machine”下选择名为“OpenAI-compatible server”的通用预设。twinny 文档说明,提供商表单接受任意主机名、端口、协议和路径,因此将 Protocol 设为 https,将 Hostname 设为端点的主机名,Port 留空以使用协议默认端口,并将 API path 设为 API 基础路径。将密钥粘贴到 API key 字段中;twinny 会将其作为 Authorization: Bearer 标头发送。然后点击 Test provider——它会发送一个用于该提供商用途的小型请求,并报告请求成功或服务器返回的错误,以及它调用的 URL。

twinny 的 API path 需要填写 /v1 还是 /v1/chat/completions?

对于聊天提供商,应填写 /v1。twinny 的提供商表格说明:“对于聊天,路径就是 API 基础路径;twinny 会附加 /chat/completions”,因此扩展会自行构建完整路由。如果路径中已经包含该部分,最终路径会变成 /v1/chat/completions/chat/completions,返回的将是 404,而不是身份验证错误。同一表单中的自动补全和嵌入使用相反的约定:API path 应填写完整路由,通用预设的默认值分别是 /v1/completions 和 /v1/embeddings。

twinny API 密钥应填在哪里?是否有基础 URL 字段?

密钥应填入提供商的 API key 字段,并作为 Authorization: Bearer 发送;twinny 文档说明,密钥会与提供商一起存储在 VS Code 的存储中,并会在 twinny 日志中脱敏。没有统一的基础 URL 字段——端点由 Protocol、Hostname、Port 和 API path 这几个字段组成。可以使用一个快捷方式:将完整 URL 粘贴到 Hostname 中。文档说明,粘贴 https://my-box:8080/v1 这样的 URL 后,系统会将其拆分为协议、主机、端口和路径。因此,粘贴 https://api.kunavo.com/v1 就能一次填好三个字段。

twinny 的自动补全能否通过 Kunavo 这样的托管网关运行?

不能,原因是缺少路由,而不是设置问题。twinny 的通用 OpenAI 兼容预设会向 /v1/completions 这类路由发送原始的中间填充提示,而 api.kunavo.com 不提供 /v1/completions;模型目录中也没有经过中间填充训练的基础模型或代码模型。请让自动补全继续使用本地服务器——twinny 的常见问题解答建议在 Ollama 上使用 qwen2.5-coder:1.5b-base——并使用托管提供商进行聊天。twinny 将这种组合称为常见配置;由于按类型选择当前提供商,因此无需切换。

Kunavo 能否为 twinny 提供工作区索引功能?

不能。工作区索引会通过 Embeddings 提供商生成文件的嵌入,而 Kunavo 不提供嵌入模型——其模型目录中没有任何模型支持该端点,因此请求会被拒绝,而不会得到响应。twinny 自己的文档建议使用 Ollama 上的 nomic-embed-text 执行此任务;它在你的机器上运行,且独立于聊天提供商。如果以后更换嵌入模型,需要重建索引,因为不同模型生成的向量不能混用。

为什么不能在使用 Kunavo 密钥时选择 twinny 的 OpenAI 或 Anthropic 预设?

因为这些预设发送请求的位置与你设想的不同。twinny 的托管 API 页面说明,聊天请求会通过厂商 SDK 发送到厂商的固定端点,因此主机名、端口和路径字段会被隐藏——你粘贴的密钥会发送到厂商自己的端点,而不是你的网关。通用的“OpenAI-compatible server”预设会保留可编辑的端点字段,因此应使用上文所述的预设。模型 ID 会原样传递给你配置的端点,因此在 OpenAI 兼容提供商中使用 Claude ID 是预期的组合,并不存在不匹配。

Kunavo 测试过 twinny 吗?

没有。Kunavo 没有对该客户端进行过运行时测试;上方配置依据 twinny 自己的文档(于 2026 年 9 月 21 日核查)和 Kunavo 的路由表整理而成。发布配置页面不等同于测试。你可以使用 twinny 的 Test provider 按钮进行免费检查;它会连同服务器的响应一起报告所调用的 URL。再对 /v1/models 执行一次 curl,即可确定故障来自端点、密钥还是表单。