获取 AX Code · 免费文档

本页译自英文文档。命令、标识符和示例保持原样。运行时 7.24.4 · SDK 2.6.7。 英文原文

执行模式(本地、云端、混合、Council、Arena)

状态:生效 范围:当前状态 最近审阅:2026-09-12 负责人:ax-code 运行时

AX Code 可以把工作放在本地推理、托管/CLI 提供商,或两者之上(混合),也可以把高风险工作扇出到多个已连接的提供商(council 审阅和 arena 择优 N)。本页记录这些模式 已发布 的行为。

权威来源

行为变化时,请对照以下内容核验:

  • packages/ax-code/src/mode/ — 纯策略、混合、council 聚合、arena 排名、辩论、预算、记忆、工作树策略、实现 arena 评分
  • packages/ax-code/src/tool/council.ts — 多提供商 council 工具
  • packages/ax-code/src/tool/arena.ts 与 arena-implement.ts — 计划与实现 arena
  • packages/ax-code/src/session/prompt/prompt-routing.ts — 当 modes.default 为 hybrid 时的混合放置
  • packages/ax-code/src/config/schema-impl.ts — modes 配置模式
  • packages/ax-code/src/command/template/{council,arena}.txt — /council 和 /arena 位于默认斜杠菜单中

工作模式选择器(Agent | Council | Arena)

TUI 和桌面为多模型路由提供 工作模式 控件。默认是 Agent。

界面选择 自由文本发送会变成
Agent(默认) 普通的单代理提示
Council /council {your message} 多提供商审阅
Arena /arena {your message} 多模型择优 N
  • TUI 默认装饰: 页脚 不会 显示 Agent 芯片。运行模式和沙盒仍然保留。/work-mode(面板 选择工作模式)打开一个显式选择器:Agent、Council 和 Arena,每一行都有成本/语义。不可用的集成行会连同原因一起禁用。
  • 已武装的集成装饰: 你选择 Council 或 Arena 之后,会出现一个芯片(Council · 2,或者如果它后来变得不可用,则是空心的 Arena (off))。点击该芯片可回到 Agent。新对话会重置为 Agent。
  • 可用性: 当模式在配置中启用、至少两个已连接提供商有可选模型,且配置的成员上限不是 1 时,该模式可用。提供商连接或断开时,芯片和选择器行会实时更新。
  • 提交前提示(TUI): 当 council/arena 被阻止或仍在检查时,以及首次使用某个可用模式时(例如 Council mode · up to 2 reviewers · advisory · approval on first use),提示上方会出现一行提示。在该模式下成功提交之后,芯片仍然是状态,提示会被隐藏。所选模式不可用时提交会被 阻止 并给出原因 — 草稿被保留,提示绝不会被静默降级为单模型运行。
  • 桌面: 输入区工具栏芯片(在手动/自主旁边)。
  • 显式的 /council 和 /arena 从不被改写,并仍然是一次性入口。
  • 专家代理(架构 architect、安全 security 等)留在单独的代理选择器上。

放置模式一览

模式 它做什么 会改变工作区吗? 默认
local 优先使用 AX Engine(或已配置的本地提供商) 会(单代理) 当你钉住本地,或混合把工作放在本地时
cloud 优先使用托管或 CLI 前沿提供商 会(单代理) 当本地不可用时
hybrid 策略根据可用性、复杂度和隐私在本地与云端之间选择 会(单路径) 设置 modes.default: "hybrid"
council 扇出结构化审阅/设计;分类为共识 / 多数 / 少数 / 单例 不会(仅供参考) 工具 + /council,或工作模式 = Council
arena 多模型计划比较,或工作树实现的择优 N 计划:不会。实现:只在 工作树 中 选择加入(modes.arena.enabled)+ 工作模式 = Arena

关键词专家路由和复杂度分档(见 自动路由)与混合放置和集成模式是 正交 的。

模型 努力程度 / 思考级别(快速、均衡、深入、最大)也是正交的 — 它是每个模型的推理预算,不是工作模式。见 模型努力程度。

配置

在 ax-code.json 中:

{
  "modes": {
    "default": "hybrid",
    "hybrid": {
      "preferLocalWhenAvailable": true,
      "escalateOnHighComplexity": true,
      "localProviderID": "ax-engine"
    },
    "council": {
      "enabled": true,
      "maxMembers": 3,
      "timeoutMs": 180000,
      "debateRounds": 0
    },
    "arena": {
      "enabled": true,
      "maxContestants": 3,
      "strategy": "verify_first"
    },
    "budget": {
      "maxEstimatedUsd": 0.5,
      "estimatedUsdPerMember": 0.05
    }
  }
}
字段 含义
modes.default local | cloud | hybrid | arena | council。未设置时:本地符合策略信号则用混合,否则单路径默认使用云端。
modes.hybrid.* 本地偏好、高复杂度升级到云端、本地提供商 id
modes.council.* 启用、成员上限、超时、推理模型超时倍率、按成员的超时覆盖、辩论轮次、选择加入的主席 / 自适应扇出(两者默认关闭)
modes.arena.enabled 必须为 true,才能用于 arena 工具(默认关闭)。会话中途的编辑会在下一次工具调用时被拾取(Config.getFresh)。或者在 arena 工具上传入 enableIfDisabled: true。
modes.arena.strategy verify_first(推荐用于实现)、diversity 或 hybrid_score
modes.arena.reasoningTimeoutScale 对声明了推理能力的参赛者的超时乘数(回退到 modes.council.reasoningTimeoutScale,然后是 3)
modes.arena.memberTimeoutMs 按 "providerID" 或 "providerID/modelID" 键入的、每个参赛者的绝对超时覆盖(回退到 modes.council.memberTimeoutMs)
modes.arena.judge 计划模式的盲评量规评判者(默认:true)
modes.ensembleLedger 集成生成的本地 JSONL 调用账本(默认:true;只有 SHA-256 提示哈希,没有正文,没有外传)
modes.budget.* 对集成扇出估计美元金额的失败即关闭上限

混合放置

当 modes.default 为 hybrid,且用户/代理没有钉住模型时:

  1. 如果本地提供商(默认 ax-engine)有可选模型 → 对低/中复杂度优先 本地。
  2. 如果复杂度为 高 且 escalateOnHighComplexity 为真 → 云端。
  3. 如果隐私要求本地且本地可用 → 本地。
  4. 如果本地不可用 → 云端。

当自动路由的复杂度路由启用时,复杂度仍然对 low 消息使用现有的小型/快速模型路径(自动路由)。混合不会替换关键词专家路由。

本地模型与内存指引:AX Engine 模型选择。提供商列表:支持的提供商。

Council(共识模式)

工具: council 斜杠: /council <question>

  1. 选择多样化的已连接提供商(家族多样性 — 在无法识别的多模型网关下,家族回退到模型 id;结果记忆提供软偏向)。
  2. 并行扇出结构化的审阅或设计提示。
  3. 把问题聚合为 共识(在法定人数下的成功成员中全体一致 — 至少 max(2, ⌈2/3 × attempted⌉) 次成功)、严格 多数(超过已尝试成员的一半)、少数(至少两个)和 单例 档。发现会披露相对于已尝试成员的支持(2/6),低覆盖报告会说明共识标签需要法定人数。
  4. 可选的 辩论轮次:轮次之间共享匿名(查塔姆宫 Chatham House)综合;没有品牌归属。辩论最多三轮,并在收敛时提前停止。
  5. 返回一份 仅供参考 的 markdown 报告。不会编辑文件。

至少需要两个已解析成员才能运行 — 更少时会在任何批准提示或模型调用之前,以“成员不足”的预检短路(显式的同一网关模型对算作两个)。有意义的共识档仍然至少需要两个成功成员;否则报告会被标记为不完整。

证据准入。 成员只收到所提供的问题和上下文。他们不会继承调用 会话,也不会从简报中的路径读取文件。请纳入要求、相关差异、所需的原始片段, 以及所述审阅范围需要的验证证据。

可选的 context 会被原样接受,最多 24,000 个 UTF-16 码元。更大的上下文会在成员推理之前返回 context_rejected;AX Code 从不会静默缩短它。把审阅拆成明确 限定范围的请求,或在保留必需证据的同时去掉可选背景。

每一轮之前,AX Code 会对照 128,000 字节的本地上限,以及每个已解析成员 已知的输入/上下文限制来检查整个提示,并为请求的输出和回退指令再加上 2,048 个 token,用于模式 和框架。输入大小使用有意保守的 UTF-8 字节估计。它可能拒绝其实放得下的提示; 它既不是精确的分词器计数,也不是对提供商序列化的保证。未知的模型限制会被 披露,并且仍然受本地上限约束。如果某一辩论轮放不下,结果就是不完整的,并保留 上一轮已完成报告。

contextAdmission 记录本地上下文长度门、所提供的大小和内容摘要;promptBudget 会 单独检查完整请求。两者都必须在推理之前通过。这些字段独立于 successfulMembers, 并不能确立语义完整性、源新鲜度或有保证的审阅质量。

超时。 每个成员在 modes.council.timeoutMs 下运行(默认 180000 毫秒);声明了 推理能力的模型获得该预算的 modes.council.reasoningTimeoutScale 倍(默认 3,因此是 540000 毫秒)。 要给一个已知较慢的成员更多时间,而不拉长其他人的等待,请设置绝对的 modes.council.memberTimeoutMs 覆盖,键为 "providerID" 或 "providerID/modelID" — 确切的 模型键优先于提供商范围的键,而这两者都优先于基础/倍率计算:

{
  "modes": {
    "council": {
      "memberTimeoutMs": { "deepseek/deepseek-v4-pro": 900000 }
    }
  }
}

ax-code.json 是受保护的配置文件 — 代理必须请用户来更改它。

可选通道(默认关闭)。 modes.council.chairman: true 在聚合之后(以及任何辩论轮之后)追加一次盲评主席综合调用:主席只收到匿名发现(档位和支持计数,从不是成员身份),并返回裁决、建议行动和异议说明。确定性分档仍然是主要输出;主席失败会被披露,并且不是致命的。modes.council.adaptive: true 以两个成员开始扇出,并在第一轮覆盖低于法定人数或异议重大时,一次扩展一个,直到 maxMembers;扩展触发器是控制框架可调的常量。

何时使用

  • 架构 / 安全 / 设计权衡
  • 高风险代码审阅,多模型一致可以提高信心
  • 用户要求多模型或“第二意见”审阅

代理工作流(重要)

一旦相关证据可用,就尽早调用 council,并提供明确限定范围的 context 简报。 避免与该审阅无关的宽泛多路探索;在要求成员给出代码发现之前,先收集所需的原始证据。 如果用户要求了 council/arena,在集成工具成为预期的主要动作之前,task_parallel 会被拒绝。

何时不要使用

  • 琐碎问题(延迟/成本)
  • 不得离开本地推理的隐私敏感代码
  • 只连接了一个提供商

Arena(择优 N)

工具: arena 斜杠: /arena <task> 要求: modes.arena.enabled: true,以及已连接提供商上至少 2 个不同的可选模型(包括共享网关)

证据准入(与 council 共享)。 可选的 context 会被原样接受,最多 24,000 个 UTF-16 码元。更大的上下文会在任何批准提示、工作树创建或模型调用之前返回 context_rejected — AX Code 从不会静默缩短它。把任务拆成明确限定范围的请求,或在保留必需证据的同时减少可选背景。批准提示本身只在每一项无操作预检都通过之后才触发(已禁用、上下文准入、实现的 git 预检、预算、成员解析)。

mode: "plan"(默认)

  • 每个参赛者提出一种方法、步骤、风险,以及一份校准过的自评风险分数(不写入工作区)。
  • 有不少于 2 份成功提案时,一次 盲评量规评判 调用(第一个已解析成员;身份被去掉,顺序被随机化)按需求覆盖、可行性、验证计划和风险证据给每份提案打分(每项 0–10,允许并列)。量规总分(0–40)是主要排名信号;自评风险只用于展示。评判失败或 modes.arena.judge: false 时,回退到自评打分,并附上披露说明。
  • 排名首先看验证档,然后是评判/风险分数,然后是补丁指纹多样性(从不仅仅是人气)。计划排名仅供参考,并不是执行验证。
  • 仅供参考。

mode: "implement"

  • 需要一个至少有一次提交、且没有未提交变更的主 git 工作树,记录其确切的基线提交,并从该提交为 每个参赛者创建一个 git 工作树。
  • 在每个工作树中运行实现代理。
  • 把每个参赛者已跟踪和未跟踪的变更快照到一个持久的分支提交中,包括代理自己创建的提交。
  • 只在捕获到非空补丁之后,才运行检测到的项目验证命令(类型检查 / 测试 / 代码检查)。
  • 默认按 验证优先 排名:只有已完成、非空且通过验证的补丁才能胜出;在通过者中偏好更低风险和多样化的补丁。
  • 不会自动合并。 报告包含工作树路径、分支和提交范围,供你检查、合并或拣选。

实现 arena 需要一个 git 项目。

排名规则(与研究对齐)

对于代码候选:验证第一,多样性第二,人气从不单独决定。 对相似的错误补丁做朴素多数投票是一种反模式(人气陷阱)。

斜杠命令

命令 用途
/council … 驱动多提供商的参考性审阅
/arena … 驱动计划或实现的择优 N

安全与成本

  • 沙盒 / 自主 仍然适用于单代理工作(沙盒、自主)。
  • Council 和计划 arena 不会写文件。
  • 实现 arena 的写入者被隔离在工作树中;脏的主工作树会被拒绝,以免未提交的输入被静默省略。
  • 集成扇出会成倍增加提供商外传和成本;使用 modes.budget,并保持 maxMembers / maxContestants 较小。预算估计按最坏情况计价:council 每个成员 2 × (debateRounds + 1) 次调用(模式回退 + 重试),计划 arena 每个参赛者 2 次再加上一次固定的评判调用,实现 arena 是记录在案的每条轨迹 12 次调用估计。
  • 仅本地的集成调用账本(全局状态目录中的 ensemble-calls.jsonl,2 MB 上限)记录每次生成的结果,并带有 SHA-256 提示哈希 — 从不是提示正文,从不是凭据,没有外传。用 modes.ensembleLedger: false 禁用。
  • 多模型一致是 证据,不是证明 — 发布前请运行测试。