获取 AX Code · 免费文档

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

框架控制与已验证评估

状态:生效

范围:当前状态

最近审阅:2026-09-14

负责人:ax-code 运行时

特定于模型的努力程度、思考开关和推理回放,见 当前模型推理控制。

可选的上下文与工具控制

在你的 AX Code 配置中独立启用每个实验:

{
  "experimental": {
    "context_recovery": true,
    "mcp_tool_discovery": true,
    "tail_reminders": true,
    "read_only_recipes": true
  }
}

四个选项默认都关闭。在一起采用之前,用你的模型测量任务成功率和耗时。它们保留现有的工具权限和隔离设置。见 性能诊断。

context_recovery 暴露 context_recover,并给成功的压缩摘要添加源指针。该工具接受关键词、消息 ID、可选的部分 ID 和结果上限。它只读取当前会话,包括压缩前的历史,并排除已还原的材料、隐藏的推理,以及被忽略或合成的文本。它返回原始消息/部分 ID 和有界摘录。搜索每页最多扫描 100 个部分,以及每个部分的前 16,000 个字符;before 继续进入更旧的部分。缺少匹配并不能证明整段历史没有该文本。分叉使用其复制的历史和新 ID。凭据赋值会从摘录中脱敏。

mcp_tool_discovery 保持内置工具可用,并为已连接的 MCP 工具引入 tool_search。一次搜索最多返回五个匹配的模式,并在下一次模型请求中使这些工具可用。它不执行它们。选择的作用域是会话,上限为 32 个工具,并在每次请求时与当前准入求交。大模式可能从搜索结果中省略,并在下一次请求时加载。如果 tool_search 被拒绝,普通的已准入 MCP 目录仍然可用。名为 tool_search 的冲突现有工具会产生错误。

tail_reminders 只把 AX Code 生成的动态回合提醒移到提供方请求的末尾。已存储的用户消息、助手推理、工具历史和静态说明保持不变。这可以改变模型行为和缓存使用;它本身并不确立速度改进。

read_only_recipes 暴露 read_recipe。它通过正常的工具分发器运行最多八个相互依赖的 read、glob 或 grep 调用。每个子项有自己的权限检查、钩子、取消和会话证据。配方不能求值代码、运行 shell 命令、写文件、调用 MCP 工具或嵌套另一个配方。

{
  "steps": [
    { "id": "files", "tool": "glob", "parameters": { "pattern": "src/**/*.ts" } },
    {
      "id": "source",
      "tool": "read",
      "parameters": { "filePath": { "$ref": { "step": "files", "path": ["paths", 0] } } }
    }
  ],
  "select": [{ "step": "source", "path": ["text"] }]
}

规范的 glob 结果包含 paths 和 truncated;grep 结果包含 matches,并带 path、line、text;read 结果包含 kind、已渲染的 text 和 truncated。按步骤和自有属性路径选择先前的结果。数组选择支持字面的 contains 过滤器和 limit。检查返回的状态和截断。配方有 60 秒取消截止时间、32KB 参数预算、192KB 中间预算和有界的最终输出。取消会等待所拥有的工具安定。新的仓库说明或媒体会暂停执行并保留正常的子输出,以便模型在继续之前看到它们。成功的选择只在模型请求中替换中间输出;原始子记录仍留在历史中。被中断的父项保留子输出。

纠正正在进行的生成

GET /session/{sessionID}/steering 返回活动生成的 UUID 和最近的回执。通过 HTTP 服务器选择项目时,包含现有的 directory 查询参数。

发送 POST /session/{sessionID}/steering,并带:

{
  "expectedGeneration": "00000000-0000-4000-8000-000000000001",
  "clientID": "correction_1",
  "text": "Preserve the existing public function signature."
}

使用 GET 得到的 UUID,而不是示例 UUID。accepted 表示校正待处理。applied 表示它已在循环边界写成用户消息,并包含其消息 ID;它不保证提供方完成。rejected 表示它未被应用。生命周期钩子可以否决准入。已接受的校正会把即将完成的生成延长一次迭代,因此在终点发出的校正会被应用而不是拒绝;取消和错误仍会拒绝待处理校正,旧的生成不能把文本准入给其后继。相同的重试返回同一保留回执;现有客户端 ID 下的不同内容返回 HTTP 409。TUI 的 ctrl+s 立即发送手势使用此端点。

一步中的并行工具调用

当模型在一条助手消息中发出多次工具调用时,运行时通过会话范围的读/写门并发执行它们。只读工具共享通道并重叠;文件编辑、bash、bash_input、笔记本编辑、ops_apply、MCP 工具,以及任何包含非并发安全子项的 batch,占用独占通道并按到达顺序单独运行。等待时被中止的调用从不运行。批处理为其分发的调用保持自己的顺序屏障,子会话有自己的门。

回执是进程本地的,每个会话最多 256 个,待处理请求 32 个。终局回执和非活动会话条目可以被驱逐。重启之后,取得新的生成并对账已保存的消息;此 API 不承诺跨重启的持久回执查找。生成的 SDK 暴露 session.steering 和 session.steer。

把已保存的后续引导进正在运行的回合

POST /task-queue/{taskID}/steer 在会话正在运行的生成的下一步边界,把排队后续的文本准入进去——与 POST /session/{sessionID}/steering 相同的交付点——并在同一请求中取消队列行,在行载荷上记录 steeredInto(生成 UUID)和 steeredAt 以供审计。最多 16,000 字符的纯文本后续可以引导;被引导的文本应用正在运行的回合的智能体、模型和工具。附件、非后续种类、已安定的行和过大的文本以 HTTP 400 拒绝,请求中途竞态到另一状态的行返回 HTTP 409。

响应携带最新的队列项和可空的回执。没有活动生成时,该行保持不动,响应报告 generation_not_active 且回执为空;调用方随后可以回退到 POST /task-queue/{taskID}/send-now,它只把该行移到队列前面,并且仍然等待回合结束。被引导的行不可撤销,但它仍显示为 cancelled,位于 /queue 历史中,并带其审计字段。

在 TUI 中,input_submit_steer 按键绑定(默认 ctrl+s)在存在已输入草稿时引导该草稿;在忙碌会话上作曲器为空时,它改为按 FIFO 顺序提升已保存队列中可引导的前缀,停在第一个不可引导的行,以免后面的后续跳到它前面。侧边栏的后续部分和 /queue 对话框提供相同的按行立即引导动作,排队后续附近的提示显示已绑定的键。生成的 SDK 暴露 taskQueue.steer。

从已验证的工作提议技能

技能候选是 AX Code 现有本地存储中的显式记录。在你提升它们之前,它们不会进入技能发现,也从不会触发自动的模型调用或说明改写。

用 name、description、applicability、procedure 和 evidence 创建提议 JSON 文件,其中包含 sessionID、messageID 和 partID。证据必须标识一次原始成功的 verify_project 结果,其中包含针对当前干净 Git 修订执行的测试或类型检查信封。一句成功的话或任意 shell 退出是不够的。校验必须引用另一会话在同一修订上的成功验证。

ax-code skill candidate propose --proposal proposal.json
ax-code skill candidate show verified-procedure
ax-code skill candidate validate verified-procedure --proposal independent-evidence.json
ax-code skill candidate promote verified-procedure
ax-code skill candidate retire verified-procedure

把输入 JSON 放在工作树之外或被忽略的本地目录中,以便干净修订检查仍然有意义。提升会创建 .ax-code/skill/{name}/SKILL.md,而不覆盖现有技能。提升之前会重新检查源证据。符号链接目录会被拒绝。退役只移除候选自己未改变的文件;手工编辑会造成冲突。重启现有运行时实例以刷新其缓存的技能发现。通过的检查为那些检查确立证据;提升之前请审阅该过程的适用性。

捕获匹配的实验

从源码检出使用:

pnpm --dir packages/ax-code exec tsx script/harness-eval.ts run /path/to/manifest.json > /path/to/runs.ndjson
pnpm --dir packages/ax-code exec tsx script/harness-eval.ts compare /path/to/runs.ndjson baseline candidate

受信任的操作者清单包含显式的 provider/model、runtimeRevision、可选的 CLI command argv、repetitions、timeoutMs、恰好两个命名的 arms,以及 tasks。每个臂有可选的 features(上面的实验标志)和 toolProfile。每个任务提供 id、prompt、内联的 files(path/content)和一个 oracle。预言机是编码进程退出后由 Node 执行的受信任 JavaScript;process.argv[1] 标识临时夹具。其代码留在智能体工作区之外,并且从不会来自模型的响应。

每次尝试得到新的 Git 夹具。预言机必须在初始夹具上以退出码 1 失败。运行器使用固定的无头 CLI 调用,在重复之间交替臂的顺序,施加超时,并在完成的尝试之后再次运行预言机。elapsedMs 包括编码进程和运行后验证;verificationMs 单独标识后者。夹具设置和初始失败检查被排除。流在每次完成、失败、超时或取消的尝试结束时记录它。评估记录中不发出原始提示、子进程输出和凭据。被中断的队列仍然不完整,不能产生匹配比较。

比较拒绝重复以及缺失或不匹配的任务/模型/队列/重复对。失败和未验证的尝试留在成功率的分母中。延迟中位数和成对比率明确以已验证成功为条件。P95 需要任务/模型/队列/臂单元格内 20 次成功观察;混合单元格汇总省略它。队列对清单做哈希,但运行时修订以及外部提供方/配置/缓存条件仍需要操作者控制。一次小的冒烟运行不能确立普遍的速度优势,也不能证明改变默认值是合理的。

能力选择与恢复诊断

当模型至少有 64,000 token 上下文、推理支持和工具支持时,自主请求可以包含长智能体上下文包。对于没有登记条目的模型,三者都必须在已解析的模型元数据中声明。补充包有 2,048 token 的字符估算上限;它不是对话窗口。显式的否定声明和已登记的限制会阻止准入。这种提示文本优化并不确立缓存或保留思考的兼容,也不改变自动的 Super-Long 截止时间和节奏。那些保留其现有资格和覆盖规则。

最新用户消息之后连续两次结构化工具失败(在合成尾部提醒之前计数)会在存在可用努力变体时,于下一次模型调用请求更深的推理。成功的工具结果重置计数。显式的用户努力和已配置的推理选项保持优先。这改变的是努力选择,不是重试限制或工具权限。

本地 llm.request 回放事件包括 capabilityResolution:协议、上下文窗口、是否选择了上下文包或 Super-Long 模式、连续工具失败,以及推理选择或未应用的原因。boundary: "policy-selection" 描述 AX Code 的决定;插件和提供方 SDK 仍可以改变最终请求。显式的 GPT-6 努力值予以保留;API 要求 low 或更高,而不是 none 或 minimal。该事件保留请求哈希,而不是提示或凭据正文。缺少努力变体并不意味着提供方默认思考被禁用。

成对的框架捕获读取 CLI 的 JSON step_finish 和 tool_use 事件,以获得输入、输出、推理和缓存读取 token、已完成的工具调用和工具错误。重复的部分 ID 只计一次。metricsStatus 为 observed、partial 或 unavailable;截断或格式错误的流以及被中断的尝试不给出总计。比较报告每个指标的已观察和缺失运行次数以及中位数,包括存在观察的失败尝试。缺失值保持缺失。这些计数器描述发出的运行时事件,而不是提供方计费、子会话用量或原生 CLI 内部工具。没有终局工具事件的完整已观察流报告零次工具调用。预言机验证仍然是任务成功的来源;仅用量并不能确立成功恢复或更好的质量。