skills-experimental/deferred-tool-search/SKILL.md
Dynamic tool discovery via ToolSearchTool. Defer loading MCP and heavy tools until needed, reducing upfront context token usage. Use when: - Many MCP tools available but rarely all needed - Context window is tight and tool definitions take too many tokens - Need to discover tools by semantic search at runtime Keywords: tool search, deferred tools, dynamic tools, MCP tools, tool discovery
npx skillsauth add bianhaifeng789-hue/openclaw-config deferred-tool-searchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
基于 Claude Code utils/toolSearch.ts 的动态工具发现机制,减少上下文 token 占用。
当有大量 MCP 工具时,把所有工具定义放入 system prompt 会消耗大量 token。
标准模式: 所有工具定义 → system prompt(token 多)
延迟加载模式:
- 只加载核心工具
- MCP 工具标记为 defer_loading: true
- 提供 ToolSearchTool 让模型按需搜索
- 模型调用 ToolSearchTool("web search") → 返回匹配的工具定义
- 模型再调用实际工具
type ToolSearchMode =
| 'standard' // 所有工具预加载(默认)
| 'tst' // 手动启用延迟加载
| 'tst-auto' // 自动检测(工具数超阈值时启用)
function getAutoToolSearchCharThreshold(model: string): number {
// 当工具定义总 token 超过阈值时自动启用延迟加载
// 不同模型有不同阈值
}
// 构建工具搜索索引
function buildToolIndex(tools) {
return tools.map(tool => ({
name: tool.name,
description: tool.description,
searchHint: tool.searchHint ?? tool.description.slice(0, 100),
}))
}
// 根据查询找到最相关的工具
function searchTools(query, toolIndex, limit = 5) {
const queryLower = query.toLowerCase()
return toolIndex
.map(tool => ({
tool,
score: scoreToolMatch(queryLower, tool)
}))
.filter(({ score }) => score > 0)
.sort((a, b) => b.score - a.score)
.slice(0, limit)
.map(({ tool }) => tool)
}
function scoreToolMatch(query, tool) {
const text = `${tool.name} ${tool.description} ${tool.searchHint}`.toLowerCase()
const words = query.split(/\s+/)
return words.filter(w => text.includes(w)).length
}
工具列表(延迟模式):
- read_file [deferred] — 读取文件内容
- bash [deferred] — 执行 shell 命令
- web_fetch [deferred] — 获取网页内容
...
使用 tool_search("读取文件") 来加载具体工具定义
| 特性 | Claude Code | OpenClaw 适配 | |------|-------------|---------------| | 触发条件 | 工具 token 超阈值自动启用 | 手动配置 | | 搜索方式 | 模型调用 ToolSearchTool | 关键词匹配 | | 工具引用 | tool_reference block | 工具名字符串 | | 模型支持 | 需要模型支持 tool_reference | 无限制 |
business
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings