性能与上下文优化
配置上下文压缩、Claude 子代理模型与可选 RTK 输出优化,按实际运行环境检查版本、PATH 和排除规则。
为什么要关心上下文占用
每次模型调用都会重新读取整段对话,因此会话越长,单次调用的成本越高,可用的推理空间也越少。冗长的命令输出是最容易吃掉上下文的地方。
常见的输出大户包括:代码差异、目录列表、搜索结果、测试日志、包管理器安装过程和构建日志。它们本身信息量有限,重复的部分却会被反复读进上下文。
- 减少无意义的重复输出,把上下文留给代码和推理本身。
- 让长会话的调用成本保持稳定,而不是逐轮累积。
- 减少噪声:同样的信息不用在大段日志里反复翻找。
如何压缩长会话
会话接近模型的上下文上限时,工作台会自动把前面的对话整理成一段摘要,再带着摘要继续。你也可以把触发阈值调低,让压缩更早发生。
阈值设置在“设置 → AI → 压缩上下文时机”里,同时会记录在配置目录下的配置文件中。新会话和重启后的会话会读取这个设置。
- 打开“设置 → AI”,找到压缩上下文时机。
- 选择一个预设值,或填写自定义大小并保存。
- 新建或重启会话,让设置生效,然后继续观察上下文占用。
| 取值 | 效果 |
|---|---|
| 200K | 单次调用最便宜,但压缩最频繁 |
| 400K | 推荐的平衡点 |
| 600K | 压缩较少发生 |
| 自定义 | 可填写 100K 到 1M 之间的任意大小 |
{ "autoCompactWindow": 400000 }
让子代理走更便宜的模型
Claude 内置子代理可能重复读取自己的上下文。“设置 → AI → 子代理模型”可指定更便宜的模型,适合查找与简单检索。
静态设置只作用于原本继承会话模型的内置子代理;不会把它提升到比会话模型更高的档位,显式指定模型或自定义 Agent 不受影响。这个设置不代表 Pi 连接也提供同样的 Claude 子代理功能。
按任务自动选模还需要 decisionLayer.enabled 与 features.subagentModels 同时开启。只打开决策总开关不够;未启用或无法判断时,继续使用原有静态设置。
- 最便宜的档位适合搜索和简单查找。
- 中等档位适合阅读代码、调研和大部分委派工作。
- 保持与会话相同,适合需要同样推理能力的复杂任务。
提前精简历史
与其等会话自然变长,不如主动控制体积。下面的做法都在会话早期就可以用。
- 把冗长输出写进文件,对话里只保留摘要和文件路径,需要时再读回来。
- 一件事做完就新开一个会话,不要让多个主题挤在同一条历史里。
- 需要比较不同方案时用分叉会话,而不是在原会话里反复回滚。
- 定期查看对话区的上下文用量提示,在接近阈值前主动处理。
请把这段测试输出保存为文件,只在对话里给出结论和文件路径,不要粘贴完整日志。
安装并启用 RTK
RTK 是独立的命令输出压缩工具。ZeroWorks 按需把支持的 Bash 命令交给 rtk rewrite,例如把 git status 改写为 rtk git status,减少返回给模型的重复文本。
rtkEnabled 默认 false。RTK 需安装在实际运行 Agent 的主机,并能被该进程的 PATH 找到;本机安装不会自动提供给另一台远程服务器。当前运行时只使用 0.44.0 及以上版本,更旧版本不会用于改写。
安装方式见 RTK 官方仓库。以下是该项目的安装命令;本页不代替平台安装或真实命令结果验收。
- 在 Agent 主机按对应平台安装 RTK,运行 rtk --version,确认版本 >= 0.44.0;运行 rtk gain 确认装的是带输出优化统计的 RTK。
- 在“设置 → AI”找到 RTK / Token 优化。未检测到时点 Recheck;旧版本按 Update 提示升级,再重新检查。
- 检测通过后打开优化开关。若终端能找到而应用仍找不到,核对应用启动环境的 PATH;安装或修改 PATH 后重启 ZeroWorks。
- 在会话里运行一条简单的受支持命令,核对结果,再查看设置里的节省统计。并非每条命令都会被改写,也不保证固定节省比例。
| 环境 | 安装命令 | PATH 检查 |
|---|---|---|
| macOS / Linux,已安装 Homebrew | brew install rtk | which rtk |
| Windows | winget install rtk-ai.rtk | where.exe rtk |
rtk --version rtk gain
获取原始输出
需要逐行核对日志、匹配行或数值时,可以绕过 RTK。提示模型“不要摘要”不会自动关闭运行时改写;使用配置排除或明确的命令前缀。
- 主配置的 rtkEnabled 控制总开关;rtkExcludeCommands 是命令首词的精确匹配列表,例如 ["grep", "cat"],不是正则或完整命令片段。
- 排除只检查命令开头的首词;复杂管道或前置环境变量不要当作整条命令都已排除。
- 单次绕过可运行 command grep -n TODO README.md;首词 command 或 builtin 会跳过 RTK,绝对路径也可用于指定真实程序。
- 需要保留完整输出时写入文件,再按需查看。绕过 RTK 不代表其他工具预览、输出上限或模型上下文限制也被取消。
{ "rtkEnabled": true, "rtkExcludeCommands": [ "grep", "cat" ] }
排障
- 上下文占用增长过快:先看是不是有超长命令输出,让 Agent 改成写文件并只回摘要。
- 压缩之后细节丢失:这是预期行为,压缩只保留摘要;重要结论请写进项目文档。
- 子代理没有换到更便宜的模型:该设置只影响未指定模型的内置子代理,显式指定模型的任务不受影响。
- RTK 开关不可用:确认主机已安装 >= 0.44.0 版本,应用 PATH 能找到该程序,点击 Recheck;修改 PATH 后重启应用。
- 会话卡在很长的状态:确认当前是否有正在执行的命令,需要时先停止再压缩。
- 检测到旧 RTK:低于 0.44.0 不会用于改写。Windows 用 where.exe rtk 核对是否仍先找到旧版本。
- 某条命令没有压缩:可能无 RTK 等价命令、首词被排除、主动绕过或改写失败;原命令仍按正常权限流程执行。
使用建议
- 先在探索模式下探索,输出更短,也更安全。
- 每轮只要求必要的输出,例如只统计失败用例而不是贴出全部测试日志。
- 大数据集先落成文件再引用,避免整张表进入对话。
- 需要精确结果时明确说明“原样输出”,不要指望默认的整理行为。
- 保持项目文档是最省事的长期记忆:上下文会被压缩,文档不会。