AI 提供商与模型
AiCode 自己不提供模型,你需要接入至少一个模型服务才能开始对话。这一页讲怎么配好它。
入口在「设置 → AI 提供商」。
添加一个提供商
点右上角 + 新建,填三样东西就能用:类型、API Key、Base URL。
- 类型:
OpenAI/Anthropic/Gemini三选一,决定用哪种协议发请求。用第三方中转站的话,基本都选OpenAI。 - API Key:你的密钥,形如
sk-xxx。粘贴时不用担心多带了空格或换行,保存时会自动清理。 - Base URL:只填 API 根地址,不要带
/v1或后面的具体路径。留空会按类型自动填官方地址。 - API 地址:紧跟在 Base URL 后面的请求路径,默认
/chat/completions,一般不用改。 - 名称:给这个配置起个好认的名字,比如"我的中转"。列表里会按名字自动匹配品牌图标(填 DeepSeek 就显示 DeepSeek 的图标)。
配完切到「模型」标签页拉取模型,就可以回主页开始对话了。
管理提供商列表
列表里每行显示名称、协议类型、模型数量和启用状态。
- 点一行进入编辑页。
- 左滑一行露出红色删除按钮。
- 长按行尾的拖拽手柄上下拖动可以调整顺序,重启后顺序保持。
多 Key 模式
如果你手上有同一个服务的多个密钥,可以在编辑页的「选项」里打开多 Key 模式,遇到限流或额度用尽时会自动切换到下一个。打开后原来的单 Key 输入框会隐藏,密钥统一在「多 Key 管理」页里维护(原本填的那个会自动成为列表第一项,不会丢)。
管理页里有三部分:
Key 列表:逐行增删,顺序就是优先级。右上角的眼睛图标可以整页切换明文/掩码显示。
取用策略:
顺序:始终用靠前的 Key,只有失败到阈值才换下一个。轮询:新会话轮流从不同的 Key 起步,用来摊平多个 Key 的额度消耗。
两种策略在同一个会话内都不会换 Key。这是故意的:服务端的 prompt 缓存是按 Key 隔离的,会话中途换 Key 会让缓存全部失效,费用和首字延迟都会变差。
失败切换:
切换阈值:同一个 Key 连续失败多少次后切换,默认 2 次。冷却时长:被切走的 Key 隔多久重新参与候选,默认 5 分钟,也可以设成不冷却。
只有密钥本身有问题的错误才算失败——鉴权失败、权限不足、触发限流、余额或额度用尽。服务器 5xx、请求超时、连不上网这些换 Key 也没用,不会消耗失败计数,也不会把好 Key 误打进冷却。真的触发切换时,报错信息末尾会告诉你"已切换到第 N/M 个 Key,可重试"。
App 重启后会回到第一个 Key,冷却记录清空。
Response API(仅 OpenAI 类型)
默认关闭。打开后这个提供商的对话会改走 OpenAI 的 Responses 协议,文本流、思考过程、工具调用、图片输入、用量统计和超长自动续写都支持。
只在服务端确实支持时才开。OpenAI 官方和 DeepSeek 官方地址可以,多数中转站不支持,开了会直接报 400。如果你同时开了「完整 URL」,那么填的地址必须指向 responses 端点,不能还指着 /chat/completions。
其它选项
- User-Agent:自定义这个提供商所有请求的 UA 头,留空用默认。少数中转网关会校验 UA,需要时才填。
- 自定义面板脚本:让提供商在输入框上方显示一个余额或用量卡片。脚本放在
~/.aicode/scripts/下,支持 Python、Bash、Node,配好后可以在编辑页点「运行测试」看输出。
模型管理
切到编辑页的「模型」标签页。
拉取模型:点「拉取模型」向服务端同步可用列表,结果按品牌分组、可折叠、可搜索。每个模型旁边有能力标签:Image 支持图片、Tools 支持工具调用、↑ 后面是上下文长度、↓ 后面是最大输出。
手动添加:中转站的模型名有时拉不全,可以点 + 手动输入模型名添加。编辑弹窗里还能自定义这个模型的:
- 上下文窗口:影响什么时候触发上下文自动压缩。
- 输出窗口:单次回复的最大长度。
- 价格:输入 / 输出 / 缓存命中三档,单位是美元每百万 token,用于费用统计。
- 能力开关:图片输入、图片输出、工具调用、推理能力。
你填的值优先级最高;没填的会回退到自动识别的结果。自动识别匹配不到模型名时,会尝试去掉 -thinking、-preview、-high 这类常见后缀再匹配一次,所以中转站改过名的模型多数也能识别出来。
思考强度:输入框上的闪电图标按钮始终可用。如果能识别出当前模型支持的档位,就只列出它支持的那几档;识别不出来(模型没有档位信息,或者中转站改了模型名)则列出全部档位——关闭 / 极低 / 低 / 中 / 高 / 极高 / 最高,由你自己判断。有些中转模型强制开启推理但名称不标准,这样你仍然能手动调。选择会记住,下次新会话用这个模型时自动沿用。
测试:每个模型行都有「测试」按钮,发一次真实请求验证连通性,结果显示在行下方。
删除:模型行左滑删除。如果删掉的模型正在被使用(当前提供商的选中模型、新会话默认模型、识图 / 压缩 / 标题模型,或者某个历史会话绑定的模型),相关选择会自动回退到默认模型,不会再拿已删除的模型发请求。
回复是空白的?
用 Anthropic 协议时,如果服务端因为内容安全策略拒答,或者本次输入超过了模型的上下文窗口,回复可能是空的。这种情况 AiCode 会显示明确的失败提示而不是空气泡,比如"模型基于内容安全策略拒绝了本次回答"或"本次输入超出模型上下文窗口,请先压缩上下文或新建会话",服务端给了具体理由时也会一并显示。