获取 AX Code · 免费文档

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

内存用量

状态:当前

范围:当前状态

最近审阅:2026-09-13

负责人:ax-code 运行时

AX Code 与语言服务器、仓库构建、浏览器以及任何本地模型运行时共享机器。TypeScript 服务器或 Rust 分析器所用的内存可能超过 AX Code 后端本身。这些进程提供代码分析;它们不是语音服务。把进程 RSS 相加可能把共享页计算多次。

配置档

AX_CODE_MEMORY_PROFILE 接受 auto(默认)、low 或 normal。在 auto 下,报告物理 RAM 至多 8 GiB 的主机会选择 low;其他主机选择 normal。无效值使用自动检测。检测使用物理主机 RAM,而不是空闲 RAM 或容器内存限制;必要时在受限的虚拟机/容器中显式选择 low。在启动 AX Code 之前设置该变量;它不会重新配置已经在运行的后端。

AX_CODE_MEMORY_PROFILE=low ax-code

PowerShell:

$env:AX_CODE_MEMORY_PROFILE = "low"
ax-code
行为 正常 低
推测性语言服务器启动和读取预热 用 AX_CODE_LSP_PREWARM=1 选择加入 跳过,包括预热变量已设置的情况
每个 LSP 客户端的先前源文本缓存 16 MiB 保留内容记账 4 MiB 保留内容记账
并发 LSP 初始化 现有服务器调度 每个后端进程一次只初始化一个
并发语义操作 现有服务器预算 每个后端进程两个被等待的语义操作,外加现有服务器预算
健康的空闲语言服务器 现有生命周期 空闲五分钟后有资格关闭,大约每分钟检查一次

两种配置档下,语言服务器默认按需启动。启动和普通文件读取不会触发推测性语义预热。显式的语义导航、诊断和索引仍会启动必要的分析,因此第一次语义请求可能更久。要在余量充足的主机上恢复推测性启动/读取预热,请在启动前设置两个变量:

AX_CODE_MEMORY_PROFILE=normal AX_CODE_LSP_PREWARM=1 ax-code

只有确切的值 1 才会启用推测性预热;low 始终抑制它。此设置不会终止现有服务器,它也不是对 LSP 启动的全局禁止:需要诊断的编辑以及显式的语义/索引操作仍会使用语言服务器。低模式的空闲回收仍然分开。

源缓存还有 1,000 个条目的上限。其记账包含保守的字符串/键余量;它不是 V8 堆或 RSS 上限。放不下的文件仍会把完整的当前内容与语言服务器同步。缓存驱逐不会在请求可能需要文档时关闭该文档。

低模式是排队工作,而不是跳过分析。首次使用或空闲关闭之后的使用可能更久。已选择/已排队的客户端、待处理的底层 RPC 和诊断等待受到保护,不会被空闲关闭。超时的请求可能让服务端工作继续运行:两个被等待的操作并不保证语言服务器内部只有两次计算。空闲回收之后,诊断清单被标记为降级,因为重启一个文件不能证明对先前工作区的完整覆盖。

这些限制适用于每个 AX Code 进程内部。它们不限制总 RAM,不协调分开的 AX Code 实例,不给语言服务器堆封顶,也不控制编译器、浏览器或本地模型。模型选择、所需的提示上下文和验证命令保持不变。

会话与证据保留

TUI 为正在查看的会话保留较重的记录事件。非活动会话保留摘要、状态和待处理的批准/问题;打开它们会从 SQLite 重新加载已保存的历史。正常显示窗口是 100 条消息,序列化载荷预算为 16 MiB。先释放较旧的完整消息。最新的不可分割消息以及恢复的撤销/还原历史可以超过软预算;TUI 会显示指示器。这些是投影限制,不是对持久会话历史或模型上下文的限制。

当 V8 堆接近其硬限制时,记录预算会自动收窄(在堆使用 90% 时低至 2 MiB 下限),以便保留集合在进程到达 FatalProcessOutOfMemory 之前卸下;超过 80% 时,TUI 还会显示警告,建议 /compact 或重启。完整 GC 之后压力会恢复,但已经驱逐的历史在重新加载之前仍然消失。

在父消息之前到达的部分使用有界的待处理区域(128 个消息 ID / 1 MiB)。如果必须释放待处理内容,TUI 会提供从已保存历史重新加载。针对已驱逐消息的迟到事件不能永久重建孤儿部分。

证据缓存默认为有界内存(每个实例 128 个条目 / 4 MiB 序列化值)。RocksDB 仍为可选加入;仅改变缓存后端并不会减少模型工具调用。见 证据缓存。

后台命令输出

未读的后台输出使用私有的临时文件,而不是为每个已完成的 shell 保留数兆字节的 JavaScript 字符串。每个文件是 2 MiB 的 UTF-8 环;超出该限制的最旧未读输出会被丢弃并标记。最多 32 个环文件,每个进程最多预留 64 MiB。磁盘槽位已满时,最旧的已完成假脱机可以过期;活动 shell 的所有权不会被驱逐。读取会增量返回保留的未读输出,并释放其磁盘槽位。

登记允许每个会话 16 个活动 shell、每个进程 32 个,并最多保留每个会话 16 条已完成记录、每个进程 64 条。已完成输出在 30 分钟后过期(在访问时以及大约每分钟检查)。命令/描述列表是预览,上限为 8 KiB / 1 KiB;被执行的命令不变。观察者回放有单独的限制:每个 shell 64 KiB 和 128 条记录,以及进程范围 2 MiB 字节预算;不完整的回放会被标记。

bash_output 把输出完整性与真实进程退出状态分开报告。被丢弃、过期或不可读的输出是不完整的验证证据,即使命令以代码零退出。使用输出过滤器时这些通知仍然可见。记录缺失可能意味着它已被消费或驱逐;输出不可用并不能证明检查通过。

文件使用私有的、进程拥有的临时目录(0700),在 POSIX 上文件为 0600。读取、会话移除、保留清理和正常进程退出会释放拥有的文件。该假脱机不是可在崩溃后保留的会话存储。强制终止或崩溃可能留下私有临时目录;没有实现自动的跨进程清理,因此 64 MiB 限制描述的是当前进程,而不是累积的崩溃残留。文件系统清理错误会被报告,并且不会释放失败文件的配额预留。同步的有界文件 I/O 避免无界写队列,但在缓慢的临时文件系统上可能增加延迟。

选择工作负载

对受限主机,先使用云提供方、一个活动编码会话和一个小仓库。仅当机器有余量时才运行大型构建和额外的智能体会话。本地推理需要为权重、KV 缓存/上下文和运行时开销单独预算;云提供方的硬件指引不适用于它。

日常使用请用打包的 CLI;pnpm run dev 是贡献者源码工作流,启动和模块加载成本不同。在活动监视器或平台进程监视器中,把 AX Code 与其语言服务器和构建子进程一起查看。降低的缓存上限并不能确立物理内存的固定减少。

这些内存变更有确定性的保留和语义等价测试。它们尚未在物理 8 GB Mac 上通过负载测试资格确认。低模式并不保证任意项目都能放进 8 GB 机器。