Skip to content
FunCoding

Search

Search docs, Skills and MCP

常驻上下文成本

测量首轮输入开销,调整工具声明、条件规则与 Skills,并核对整个任务成本。

This page has not been translated into English yet. The original Chinese version is shown below.

每轮请求都携带系统提示、已声明工具 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 命中、调用成功率和实际费用,一次只改一个因素,再用相同任务验证能力仍在。