常驻上下文成本
测量首轮输入开销,调整工具声明、条件规则与 Skills,并核对整个任务成本。
每轮请求都携带系统提示、已声明工具 schema、上下文文件和 Skill 目录。Token cache 降低重复内容的计价;减少常驻内容则缩小请求本身,两者可配合。
先测量
/context detail在新会话首轮观察,避免把对话历史混入初始基线。detail 按工具、MCP、上下文文件、Skill 列项,并包含 startupContext 与未归属残差,使分项能对上总数。
更适合比较的是“新会话问一个问题、不用工具时的输入 token”,而不是窗口百分比;换更大窗口会降低比例,却不必减少发送文本。不同模型计量仍应看实际返回用量。
先关不用的功能
关闭不需要的功能可移除其工具,并影响 subagent 可用集合。仅隐藏初始 schema 不等于禁用,permissions.allow 和审批模式也不会缩小工具目录。
tools.eager 只对原本 eager 的非豁免工具降级,已默认延迟的工具没有额外节省。Agent/Goal 的 agent、list_agents、get_goal、update_goal、propose_goal 当前本就延迟,无需为了它们再配列表。
保持发现与调用都可用
延迟工具靠 tool_search → tool_call 桥接,发现通常不改写已声明列表,避免首次发现就破坏缓存前缀。tools.visible 可为确需初始可见的工具开例外。
桥接缺半时,普通延迟工具会回退到 eager,反而增加请求;被 tools.eager 主动降级的工具却仍隐藏且无法经桥接找回,只剩直接按名称调用仍过审批。详细区别见工具设置。
toolSearch.threshold 默认 0。预加载对整个候选池是全有或全无,新增大工具可能使以前能装入的全部集合不再装入。MCP 通常在初始化后连接,首次启动可能赶不上预加载,要下一次会话(CLI /clear)或旧 blocking 模式才参加。
改善内容放置
始终有效的术语和约束放 QWEN.md;场景流程放 Skill;代码区域约束放 paths 规则。Skill 初始只占名称/描述,paths 还可延迟目录项。不要只是把 schema 的内容搬到常驻 QWEN.md,那不会真正减少总前缀。
最后才考虑替换 system prompt;它还承载身份、权限和工具指导,升级时需与上游差异核对。
容易漏掉的成本
未声明专门工具列表的 subagent 会收到所有注册工具 schema(包括延迟工具),不走主会话的 ToolSearch;不能把主界面的首轮节省直接套给 subagent。
项目 Dream 需要 read_file、grep_search、glob、run_shell_command、write_file、edit;自动提取少 shell。全局 deny 为了省 token 可能悄悄破坏后台记忆维护。
拿掉搜索工具后,模型可能换 shell 产生更多结果文本;恢复历史中的直接调用还可能恢复 schema。应同时比较整任务输入、cache 命中、调用成功率和实际费用,一次只改一个因素,再用相同任务验证能力仍在。