Install
openclaw skills install adaptive-tool-filter智能识别用户意图,动态筛选并优先排序相关工具,降低token消耗提升响应效率。
openclaw skills install adaptive-tool-filter智能过滤工具列表,减少 token 消耗,提高响应效率。
参考 LightAgent 的自适应工具机制:
| 意图类型 | 相关工具 | 触发信号 |
|---|---|---|
| 文件操作 | read, write, edit, exec | "读取"、"写入"、"文件"、"保存" |
| 网络搜索 | web_search, web_fetch, browser | "搜索"、"查找"、"网页"、"链接" |
| 消息发送 | message, sessions_send | "发送"、"通知"、"消息"、"飞书" |
| 飞书操作 | feishu_doc, feishu_bitable_* | "飞书"、"文档"、"表格"、"知识库" |
| Agent 管理 | sessions_spawn, subagents | "子Agent"、"协作"、"并行" |
| 节点操作 | nodes | "节点"、"手机"、"设备" |
| 系统命令 | exec, process | "运行"、"执行"、"命令"、"安装" |
INTENT_TOOLS = {
'file': ['read', 'write', 'edit'],
'web': ['web_search', 'web_fetch', 'browser'],
'feishu': ['feishu_doc', 'feishu_bitable_*', 'feishu_wiki'],
'message': ['message', 'sessions_send'],
'agent': ['sessions_spawn', 'subagents', 'sessions_list'],
'system': ['exec', 'process'],
}
def filter_tools(user_input: str, all_tools: list) -> list:
# 检测意图
detected_intents = detect_intent(user_input)
# 筛选相关工具
relevant_tools = []
for intent in detected_intents:
relevant_tools.extend(INTENT_TOOLS.get(intent, []))
# 添加通用工具(始终需要)
core_tools = ['memory_search', 'memory_get', 'read', 'write']
return core_tools + relevant_tools
对话进行中,保留之前使用的工具:
feishu_doc,下一步可能还需要web_search)某些工具需要特别处理:
exec - 需要用户明确允许edit - 检查文件是否在工作区## 工具管理
每次请求前,智能筛选工具:
1. 分析用户输入关键词
2. 识别任务意图类型
3. 筛选相关工具集
4. 排序:核心工具 → 相关工具 → 可选工具
5. 控制工具数量(建议 ≤ 20 个)
意图检测信号:
- 文件相关:"读取"、"写入"、"文件"、"保存"、"创建"
- 网络相关:"搜索"、"查找"、"网页"、"链接"、"在线"
- 飞书相关:"飞书"、"文档"、"表格"、"多维表格"、"知识库"
- 消息相关:"发送"、"通知"、"消息"、"回复"
- Agent相关:"子Agent"、"协作"、"并行"、"启动"
可用工具:50+ 个
Token 消耗:每次请求 ~5000 tokens(工具定义)
响应时间:较长(模型需要评估所有工具)
可用工具:10-20 个
Token 消耗:每次请求 ~1500 tokens
响应时间:更快(模型只评估相关工具)
OpenClaw 可以在以下层面实现:
在 openclaw.json 中配置意图-工具映射:
{
"toolFilter": {
"intents": {
"file": ["read", "write", "edit"],
"web": ["web_search", "web_fetch"],
"feishu": ["feishu_*"]
}
}
}
创建 tool-filter Skill,在请求前自动过滤。
在 Agent 运行时动态调整工具集。
参考 LightAgent 自适应工具机制设计