第八节 模型与参数

8.1 模型选择

设置 → 模型 分三页:服务提供方(接入与 API Key)、参数配置(模型列表与参数)、路由策略(各场景用哪个模型,见 §8.2.1)。参数配置 页列出所有可用模型:

  • 套餐额度下可见的模型(由服务端决定)
  • 你自己接入的模型(OpenAI / Anthropic / 阿里云通义 / 火山方舟 / 自建大模型服务等)

每个工作区可以指定默认模型;每个会话也可以临时切换。

「支持图片输入」标记:模型条目上有一个「支持图片输入」勾选项 —— 勾上后输入框才允许粘贴 / 拖入图片随消息发送(见 §5.3.3)。内置模型表里已标注的包括 qwen-3.8-27b 与澜砥 N2.7 系列;自己接入的服务提供方可以手动勾。

选到不可用的模型不会再"静默降级整个会话":此前给会话选了一个实际不可用的模型时,整条会话可能被悄悄换成别的模型接着跑、且没有明确提示,后续所有消息都受影响。现在这种情况会当场报出来,不会因为一次选择把整个会话带偏。

8.1.1 Provider 协议

设置 → 模型 → 服务提供方 编辑面板「类型」下拉支持三种协议:

类型 适用场景
AVL Delta 兼容 内置 AVL-Zero 默认就用它;每轮只把"本轮新增内容"发给服务端,稳定历史不重复回传,配合前缀缓存治理进一步省流量、省 token、提速
OpenAI(兼容) OpenAI 官方接口、阿里云通义、火山方舟、Kimi、Moonshot、DeepSeek、自建 OpenAI 兼容代理等
Anthropic Claude 官方接口、Anthropic 兼容代理 — 用 x-api-key + anthropic-version 头,支持工具调用、流式、思考链(extended thinking)、重试

「从 API 刷新模型」按钮会按所选协议自动派发,正常拉取对应模型列表。

Delta 端点自动安全降级:如果服务端暂未提供 Delta 接口(返回 404/405/501),本次会话会自动一次性回退到标准的 chat/completions 协议,对话不中断;真正的鉴权类错误(401/403)则照常报错,不会被降级掩盖。

统计面板会显示每次调用走的是哪种协议(OpenAI Chat / Anthropic Messages / AVL Delta)以及当时的客户端版本号;发生 Delta 自动降级时,元信息里也能看出来。所有发往模型服务的请求都带上了客户端版本、协议标识与一个类浏览器 User-Agent,便于网关侧日志与统计对账。

未知模型名返回 404 是正常的:Delta 端点对不认识的模型名返回 404,这表示"没有这个模型",不等于"路由缺失",不会被当成端点不可用而整体降级。

按服务端节流提示自动收速:模型服务在响应头里给出速率限制信息(剩余额度 / 重置时间)时,客户端会自适应放慢出站请求,把撞上 429 的概率压下去,而不是硬撞之后再退避重试。

8.1.2 自定义请求头(仅限自己添加的服务提供方)

设置 → 模型 → 服务提供方 编辑面板底部的「高级选项」可展开,对于你自己添加的(非内置)服务提供方,新增了「自定义请求头」编辑区:可增删多组 key / value,随每次发往该服务提供方的请求逐条带上,方便对接需要额外鉴权头、网关标识或特殊版本头的服务。

  • 生效范围:OpenAI、Anthropic、AVL Delta(流式 + 非流式)四类请求路径全部生效。
  • 顺序与覆盖:自定义头在内置头(鉴权 / User-Agent / anthropic-version 等)之后应用,可覆盖 Authorization / User-Agent 等默认头;如果你不希望覆盖,请避开同名 key。
  • 防注入:自动跳过空 key,并拒绝 key / value 中含换行(CR/LF)的条目,防止请求头注入。
  • 已知限制:自定义 Host 头不生效(Go HTTP 栈要求改 req.Host 而非头本身),如需改 Host 请通过反向代理实现。

内置服务提供方(AVL-Zero 等套餐额度)不暴露此入口,仅自定义服务提供方可编辑。

8.2 参数

每个模型可调参数:

  • Temperature:温度,0–1,控制随机性。
  • Top-P:核采样上限,0–1。
  • 最大输出 Token:单次回复长度上限;无硬性上限,可超出模型标称值,以上游实际限制为准。
  • 流式:是否流式渲染(推荐开启)。

参数同样按工作区与模式分别保存。

澜砥 N2.6 / N2.7 的推荐采样参数:内置 AVL-Zero 的澜砥 N2.6 / N2.7 系列已一次性重置为 Temperature 1.0、Top-P 0.95(每个模型只重置一次,之后新拉取的同系列模型直接带上这组值);你之后手动改过的值不会再被覆盖。注意参数对话框里的「重置为默认」对所有模型统一给 0.7 / 0.95。

以上参数统一在「参数配置」抽屉里编辑 — 从「参数配置」页和「服务提供方」对话框进入的是同一个面板。收敛到唯一编辑面是有原因的:此前两处编辑面各存一份、互相覆盖,改好的参数会被静默抹掉;现在两处同时修改按乐观锁校验,冲突就近提示而不是无声覆盖。

8.2.1 模型路由策略:按场景选模型

设置 → 模型 → 路由策略 按场景决定用哪个模型,改动下一次调用即生效:

场景 可选策略 默认 说明
主会话 全局一致 / 跟随会话 全局一致 「全局一致」所有会话共用一个「当前模型」;「跟随会话」每个会话各自记住自己的模型,新建会话时快照当前全局选择作为起点。会话自动改名跟主会话用同一个模型
子任务 跟随主会话 / 跟随人设 / 优先指定模型 跟随主会话 「跟随人设」用子代理定义(或委派时指定)的模型,没有再用主会话模型;选「优先指定模型」时还要选不可用时回退到跟随主会话还是跟随人设
例行程序 跟随主会话 / 自由选择 / 优先指定模型 跟随主会话 「自由选择」用每个任务自己选的模型,只有这个策略下任务对话框里才显示模型选择;任务没选模型或指定模型不可用时跟随主会话
Hook 跟随主会话 / 优先指定模型 跟随主会话 Hook 条目里写了 model 时以条目为准;指定模型不可用时跟随主会话
sec.decompile / code.ask / 记忆自动提炼 随机选择 / 成本优先 / 效果优先 效果优先 只在已启用且有 API Key 的澜砥系列模型中选;没有可用的澜砥模型时改用当前会话的模型
自动修复 关闭 / 询问后切换 / 自动切换 询问后切换 选中的模型不可用或上游故障时,是否改用另一个启用了同名模型的服务提供方;另有「切换后保持」开关(默认关),见 §8.2.4
  • 「优先指定模型」的候选:只列出已启用、未下线、且服务提供方有可用 API Key 的模型。之前选中的模型后来被停用、下线或失去 Key 时,按钮描黄并标「(不可用)」,调用时按回退方式选模型。
  • 成本 / 效果怎么排:AVL-Zero 不提供定价,按型号命名推断 —— Flash 最省、Mid 其次、标准档最贵;版本越新效果越好;Preview 等预览版排在同版本正式版之后。所有候选都配了价格时,成本优先按价格排。
  • 委派时指定的模型:主代理委派子任务时传的 model 参数只在「跟随人设」下生效,其余策略下由设置决定。
  • 跟随会话的回落:会话记的模型已失效(被删 / 下线)时自动回落到全局选择,不会卡住。
  • 「这一轮用哪个模型」由一处统一判定:界面、后台调用与终端界面(TUI)得出的结果一致。「跟随会话」下,会话若沿用的是建会话时替你挑的默认模型,会跟随当前的默认模型设置变化;你明确选过的模型则原样使用,即使它不可用也不会被悄悄换掉,而是交给「自动修复」处理。本地模式的会话只用你给它选的模型,不跟随默认模型或全局选择。
  • 应用自动发起的回合同样按这套规则选模型:自动压缩后的续跑、「继续」补推、待办核对、目标续转、自愈、测试门禁与恢复中断任务,都使用你为该会话选择的模型,不会误用其他服务提供方的模型。「全局一致」下的当前选择也会保存到配置中。

[!warning] 数据去向:code.ask 检索到的代码片段、sec.decompile 的样本字节、记忆提炼的会话内容,会发给路由选中的澜砥模型(通常是内置 AVL-Zero 云端),不一定是当前会话的模型;工具结果里的 provider / model 标明实际去向。要求数据不出当前会话所用的服务提供方时,开启本地模式(见 §13.2.2)。

复制会话 / .zsession 导入导出都自动带上模型字段,跨设备 / 跨人交接不丢。导出 .zsession 时一并打包子 Agent 工作记录 — 主会话里派出去的每个子任务当时怎么做的、调了什么也都会还原出来,跨机或发同事打开后排查 / 复盘更完整。

导入 / 重建更稳:修了「把会话导入到新建工作区后不显示、空白工作区却误报『已存在』」的问题(根因是写入目标错位 + 沿用原会话 ID 造成同 ID 跨工作区冲突),现在导入 / 重建都能正常完成。

8.2.2 未开启模型默认折叠

设置 → 模型 → 参数配置 每个服务提供方分组默认只显示已开启的模型,不再被一长串没开的型号淹没;组底部有「展开 N 个未开启的模型」按钮,点开看全部、可再收起。

  • 展开状态按服务提供方各自记忆(仅本次打开期间)。
  • 搜索时自动绕过折叠:搜索命中的未开启模型照常显示,不会被藏住。
  • 开关切换过程中行不闪跳。

8.2.3 模型 ID 中的斜杠原样保留

像 openrouter/free、openai/gpt-4o、anthropic/claude-3.5-sonnet 这类 OpenRouter / Cloudflare 等使用的 vendor/model 命名方式,斜杠是上游官方分隔符。AVL Code 现在原样保留 — 手动添加与刷新两条路径都不会把斜杠改成连字符。

此前若你添加这类模型遇到「模型不存在」的报错,刷新一次模型列表即可恢复(旧的坏条目会被换成正确的 ID)。

8.2.4 选中的模型不可用时「自动修复」

选中的模型可能因为服务提供方被删除 / 停用、该提供方里没有这个模型、模型被禁用或下线而不可用。设置 → 模型 → 路由策略 最后一行「自动修复」决定这时怎么办(上游故障时的备用切换同样由它决定,见 §8.6):

策略 行为
关闭 直接报错,不切换
询问后切换(默认) 输入框上方弹出确认条「切换备用模型?」,说明哪个服务提供方上的哪个模型不可用、可改用哪个提供方(同一模型),并提示备用通道可能走你自己的 key 或把内容发往不同上游;点「切换并发送」用备选发出,点「不用」则消息保留、暂不作答,改选模型后可以继续生成
自动切换 不再询问,直接改用备选,并提示「已自动改用 …」
  • 备选怎么挑:只换到启用了同名模型、未下线且配有可用 API Key 的其他服务提供方(按提供方顺序取第一个),绝不换成别的模型。
  • 切换后保持(默认关,策略不为「关闭」时出现):开启后,切换到的提供方会成为该会话(跟随会话)或全局(全局一致)的模型选择,直到你改选;关闭则只管当次运行,下一轮仍用原来的选择。
  • 弹不了确认条的场景:随行通讯、例行程序、Hook、子任务、自动续跑、上下文压缩、记忆提炼、终端界面(TUI)、恢复中断任务等,在「询问后切换」下不切换、直接报错,并以提示说明场景、模型、原因与所用策略(同一场景同一模型 5 分钟内只提示一次);若会话这一轮已经切换过,这些调用跟着用备选。恢复中断任务会先预检,起不来就不往会话里写消息。
  • 本地模式:「自动切换」按「询问后切换」处理 —— 不会自动切到外部服务,能弹确认条时仍由你决定。
  • 默认模型本身不可用时不走这里,而是自动退到第一个启用的模型。

8.2.5 思考强度(澜砥 N2.7)

使用内置 AVL-Zero 的澜砥 N2.7 系列(含 澜砥 N2.7-Flash 这类带后缀的变体)时,输入区模型名右侧会多出一个电池图标按钮,点开即可调节模型的思考强度:

档位 说明
不思考 不思考,直接作答,最快
低 少量思考,适合简单明确的任务
高(默认) 充分思考,适合大多数编码任务
更高 更深入的思考,适合难题
全力以赴 思考预算拉满,最慢、最耗用量
  • 滑轨两端标「更快 / 更努力」;拖动时只预览、松手才保存;键盘可用 {{kbd:←}} / {{kbd:→}}、{{kbd:Home}} / {{kbd:End}} 切换,{{kbd:Enter}} 或空格选中,{{kbd:Esc}} 收起;只有键盘操作时才出现焦点高亮环。
  • 按模型保存:设定对使用该模型的所有会话生效,从下一条消息起。没设置过时显示「高(默认)」,请求里同样按「高」发送;「恢复默认」回到未设置状态。
  • 其它模型(包括自己添加的服务提供方里的同名模型)不显示这个按钮。
  • 辅助调用恒不思考:上下文压缩、会话自动改名、记忆提炼、Hook、sec.decompile / code.ask 等后台调用固定按「不思考」发送,不跟随你的选择。
  • 核对实际发了什么:统计面板的协议行显示本次调用实际发送的「思考强度 …」;上游拒收该参数时会自动去掉后重试,此时显示「默认」。状态栏显示的是你选的档位,二者对不上时以统计面板为准。
  • 思考不再混进正文:个别请求没带上思考强度、模型把思考连同结束标记 </think> 写进正文时,会自动把思考与正文拆开 —— 流式输出期间可能先显示在正文里,结束后保存的记录与带入下一轮的历史都是拆好的。部分服务在不流式输出时返回的思考内容,也不再整段丢失。

8.3 多服务提供方兜底

如果你接入了多个服务提供方,AVL Code 支持设置优先级与兜底:第一服务提供方失败 / 限流时自动切到第二服务提供方,避免单点。

8.4 上下文长度与折叠

不同模型上下文长度不同。AVL Code 会在接近上限时自动触发历史折叠(见第十七节),把早期消息压缩为摘要,确保对话可以无限延续。

8.5 自修复循环:出错自动换思路

AI 遇到错误时会按错误类型自动换策略接着自愈,而不是一条道走到黑。这套机制始终开启、无需配置;自愈过程往对话里注入的结果型内部消息(auto_self_heal)不会显示在对话中,你看到的仍是干净的正常输出。上游报错会先分流来源(请求侧 / 网关 / 上游服务提供方)与类别(认证 / 限流 / 配额 / 余额 / 无可用通道 / 过载 / 服务端错 / 上下文超限 / 内容被安全过滤等),再对症选择修复策略:

修复策略 适用情形 处理方式
压缩重试(transient_compact) 上下文超限 先折叠压缩上下文再续跑(默认最多 2 次)
切换服务提供方(transient_fallback) 无可用通道 / 上游过载 / 上游认证失败 挂起并提示切到备用服务提供方,确认后接着跑(默认最多 3 次,见 §8.6)
退避重试(backoff) 限流 / 超时 / 网络抖动 按退避节奏自动重试(默认最多 3 次)
交还你决定(terminal) 余额不足 / 需重新登录 / 模型不存在 直接给出明确提示并停下,不盲目重试

即使服务端 5xx / 4xx 没有错误详情,也能凭状态码兜底走对应的自愈路径。除了上游报错,AI 自身产出的问题也会自愈:

  • 回复被长度截断会自动从截断处续写(不重头来),默认最多 3 次。
  • 思考绕圈(反复重复同一段推理)会被打断,提示直接给结论或采取下一步动作。
  • 回复停在半句(话没说完就收尾、也没继续执行)或说了下一步却没动手(句末宣告「接下来我来……」却没有调用工具)时,自动推一次续跑,不必你再追问「怎么停了」。判定看回复的最后一句:正常以句号收尾、向你提问、交还给你决定、客套收尾或列表收尾都不受影响。
  • 以上产出型自愈共用一个连续尝试上限(默认 3 次,随历史成功率下调,见 §8.5.1),干净收尾后计数清零;撞到上限时提示「自动修复已放弃:… 连续几轮没能纠正 —— 需要人工介入」。
  • 回复被内容安全过滤会换个表述自愈。
  • 工具名不合规被上游拒绝时,会自动修正工具名后重试(几种上游措辞——包括散文式报错——都能识别)。
  • 同一处检查 / 测试反复失败或待办长时间无进展时,会升级提示让 AI 换思路(如考虑回退本次改动重来),而不是反复撞墙;到达上限后停下交还给你。

网络抖动专门优化:网络瞬断 / 临时掉线时会自动等网络恢复再接着重试,而且这种「等网络回来」的等待不消耗重试次数——出门进电梯、Wi-Fi 抖一下这类情况不会平白把重试预算烧光。连接被重置、域名一时解析不了、握手中断等连接级瞬断也能被正确识别为网络问题,不再被笼统报成「模型出错」,省得你白去查上游配置。

自愈也会从历史里学习(见 §8.5.1):每类自愈的成败会被记录,下次据此动态调整允许尝试的次数——历史上几乎没救回来的,少试两次就尽早交还给你;还能救的也不轻易放弃。

8.5.1 自愈次数随历史动态调整

自修复会参考过去的自愈成败记录(落盘在配置目录的 self-heal-stats.json),对每一类自愈动态调整本次允许的尝试次数:样本不足(< 5 次)时用默认上限;历史平滑成功率 < 20% 压到 1 次、20–50% 减 1 次、≥ 50% 用满默认。每类至少保留 1 次尝试,历史只会调低、不会调高于默认上限。

8.6 服务提供方自动备选

当某个服务提供方持续不可用(无可用通道 / 上游过载 / 上游侧认证失败)时,怎么处理由 设置 → 模型 → 路由策略 的「自动修复」决定(见 §8.2.4):「关闭」直接报错;「自动切换」不再询问,直接换到备选并提示「已自动改用 …重试」;默认的「询问后切换」则挂起本轮并在输入框上方弹出一条切换确认条:

  • 只会切到同一个模型的另一个已启用服务提供方(按配置顺序选第一个真正包含该模型的,绝不降级到别的模型)。
  • 确认条文案形如「切换备用模型? 首选 {A} 暂时不可用,可改用 {B}(模型 {M})重试本轮」,并提示「⚠ 备用通道可能走你自己的 key(产生你的费用),或把内容发往不同上游」。
  • 点「切换并重试」即用新服务提供方无缝接着跑;点「不用」则放弃本次切换。