本页译自英文文档。命令、标识符和示例保持原样。运行时 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— 计划与实现 arenapackages/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,且用户/代理没有钉住模型时:
- 如果本地提供商(默认
ax-engine)有可选模型 → 对低/中复杂度优先 本地。 - 如果复杂度为 高 且
escalateOnHighComplexity为真 → 云端。 - 如果隐私要求本地且本地可用 → 本地。
- 如果本地不可用 → 云端。
当自动路由的复杂度路由启用时,复杂度仍然对 low 消息使用现有的小型/快速模型路径(自动路由)。混合不会替换关键词专家路由。
本地模型与内存指引:AX Engine 模型选择。提供商列表:支持的提供商。
Council(共识模式)
工具: council
斜杠: /council <question>
- 选择多样化的已连接提供商(家族多样性 — 在无法识别的多模型网关下,家族回退到模型 id;结果记忆提供软偏向)。
- 并行扇出结构化的审阅或设计提示。
- 把问题聚合为 共识(在法定人数下的成功成员中全体一致 — 至少
max(2, ⌈2/3 × attempted⌉)次成功)、严格 多数(超过已尝试成员的一半)、少数(至少两个)和 单例 档。发现会披露相对于已尝试成员的支持(2/6),低覆盖报告会说明共识标签需要法定人数。 - 可选的 辩论轮次:轮次之间共享匿名(查塔姆宫 Chatham House)综合;没有品牌归属。辩论最多三轮,并在收敛时提前停止。
- 返回一份 仅供参考 的 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禁用。 - 多模型一致是 证据,不是证明 — 发布前请运行测试。
相关
- 自动路由 — 专家关键词 + 复杂度档
- 支持的提供商 — 云端、CLI、AX Engine
- AX Engine 模型选择 — 本地模型选择