前面将了OpenClaw使用qmd的坑,使用了QMD后,发现每次请求Token也有20K左右,然后让OpenClaw自检了一下,得到了一下数据
一、Token 使用分析 (当前 ~20k)
根据 session_status 和工作区文件分析,当前 token 组成如下:
1. 系统提示 (System Prompt) — 约 3-4k tokens
- OpenClaw 核心指令集
- 工具定义和使用规范
- 安全协议和行为准则
- 技能系统说明
2. 工作区文件 (Workspace Files) — 约 8-10k tokens
已加载的核心文件:
| 文件 | 大小估算 |
|---|---|
| SOUL.md | ~800 tokens |
| USER.md | ~600 tokens |
| IDENTITY.md | ~200 tokens |
| TOOLS.md | ~400 tokens |
| MEMORY.md | ~300 tokens |
| AGENTS.md | ~2.5k tokens |
| WORKFLOW_AUTO.md | ~100 tokens |
| 运行时元数据 | ~200 tokens |
3. 会话历史 (Session History) — 约 6-7k tokens
- 当前对话的往来消息
- 之前的工具调用记录
- 系统通知和审计信息
4. 工具定义 (Tool Schemas) — 约 1-2k tokens
- 可用工具的参数说明
- Feishu、browser、message 等集成的详细定义
5. QMD 记忆上下文 — 约 500-800 tokens
- 本次会话召回的记忆片段
总计: ~20k / 33k (60% 使用率)
二、优化
1. 卸载/禁用不用的工具
卸载/禁用可以直接对话让OpenClaw自己搞定,也可以修改openclaw.json
tools.deny列表:添加禁用的内置工具。plugins加载的工具:plugins.allow列表中删除不用的工具。
2. 优化工作区文件
- 结构化:使用 Key-Value 或简短列表,减少 Markdown 层级带来的 Token 浪费。
- 像soul.md、user.md、agents.md等文件,将重复的定义合并到一个文件中。
- 删除冗余内容。移除冗余的“废话”和“防御性指令”,如:“你必须严格遵守...”、“作为一个负责任的AI...”、“不要输出无关内容...”等长篇大轮,现代大模型(Qwen/Claude/GPT-4)对简短指令的理解力很强,不需要“哄”。
3. 定期清理会话历史
如果与上下文没多大关联的会话时,可以使用 /reset清空,虽然清空的是当前会话的往来消息,偶尔关联到了之前会话,QMD记忆召回也会把记忆添加进来。
4. 工具/技能定义优化
如果技能太多,占用的Token太多,可以精简优化一下工具/技能描述。
一般工具描述文件在/root/.openclaw/tools/工具.json
一般技能描述文件在/root/.openclaw/skills/技能名/SKILL.md
一个标准的定义包含 name, description, parameters (含 type, description, enum, examples),大部分描述是为了让人类开发者看懂的,对模型来说全是冗余噪音,所以,可以手动精简,原则是纯功能定义、结构清晰、参数明确及仅保留必要配置提示,如:
- 删除所有“建议性”话语:如 "You should use...", "It is useful when..."。模型通过工具名和参数就能推断用途
- 删除示例 (Examples) :除非参数极其复杂,否则不要放
examples字段。 - 参数描述也精简:把
"The query string to search for, e.g., 'latest AI news'"改为"Search query."。
注:如果工具/技能更新了,会把描述语言件更新回去。
测试结果
这一套折腾下来,输入Token又少了2~3k左右,因为我用的skill和tools少,如果用的多可以省的再多一点。

评论区