docs: 添加 ToolSearch 设计指南 + 禁用 turn-zero 工具推荐弹窗

- 新增 docs/design/tool-search-design-guide.md,涵盖架构、搜索算法、执行管道、演进历史
- 禁用 getTurnZeroSearchExtraToolsPrefetch,消除用户输入时的频繁弹窗
- inter-turn 发现机制保持不变

Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
This commit is contained in:
claude-code-best
2026-05-09 16:45:56 +08:00
parent bd2253846f
commit 2cf18c4c49
61 changed files with 753 additions and 423 deletions

View File

@@ -81,7 +81,7 @@ import { AskUserQuestionTool } from '@claude-code-best/builtin-tools/tools/AskUs
import { LSPTool } from '@claude-code-best/builtin-tools/tools/LSPTool/LSPTool.js'
import { ListMcpResourcesTool } from '@claude-code-best/builtin-tools/tools/ListMcpResourcesTool/ListMcpResourcesTool.js'
import { ReadMcpResourceTool } from '@claude-code-best/builtin-tools/tools/ReadMcpResourceTool/ReadMcpResourceTool.js'
import { ToolSearchTool } from '@claude-code-best/builtin-tools/tools/ToolSearchTool/ToolSearchTool.js'
import { SearchExtraToolsTool } from '@claude-code-best/builtin-tools/tools/SearchExtraToolsTool/SearchExtraToolsTool.js'
import { ExecuteTool } from '@claude-code-best/builtin-tools/tools/ExecuteTool/ExecuteTool.js'
import { EnterPlanModeTool } from '@claude-code-best/builtin-tools/tools/EnterPlanModeTool/EnterPlanModeTool.js'
import { EnterWorktreeTool } from '@claude-code-best/builtin-tools/tools/EnterWorktreeTool/EnterWorktreeTool.js'
@@ -92,7 +92,7 @@ import { TaskGetTool } from '@claude-code-best/builtin-tools/tools/TaskGetTool/T
import { TaskUpdateTool } from '@claude-code-best/builtin-tools/tools/TaskUpdateTool/TaskUpdateTool.js'
import { TaskListTool } from '@claude-code-best/builtin-tools/tools/TaskListTool/TaskListTool.js'
import uniqBy from 'lodash-es/uniqBy.js'
import { isToolSearchEnabledOptimistic } from './utils/toolSearch.js'
import { isSearchExtraToolsEnabledOptimistic } from './utils/searchExtraTools.js'
import { isTodoV2Enabled } from './utils/tasks.js'
// Dead code elimination: conditional import for CLAUDE_CODE_VERIFY_PLAN
/* eslint-disable custom-rules/no-process-env-top-level, @typescript-eslint/no-require-imports */
@@ -267,11 +267,11 @@ export function getAllBaseTools(): Tools {
...(process.env.NODE_ENV === 'test' ? [TestingPermissionTool] : []),
ListMcpResourcesTool,
ReadMcpResourceTool,
// Include ToolSearchTool when tool search might be enabled (optimistic check)
// Include SearchExtraToolsTool when tool search might be enabled (optimistic check)
// The actual decision to defer tools happens at request time in claude.ts
...(isToolSearchEnabledOptimistic() ? [ToolSearchTool] : []),
...(isSearchExtraToolsEnabledOptimistic() ? [SearchExtraToolsTool] : []),
// ExecuteExtraTool (ExecuteTool) is a first-class tool — always available, not deferred.
// Models use it to invoke deferred tools discovered via ToolSearch.
// Models use it to invoke deferred tools discovered via SearchExtraTools.
ExecuteTool,
]
}
@@ -396,7 +396,7 @@ export function assembleToolPool(
* Get all tools including both built-in tools and MCP tools.
*
* This is the preferred function when you need the complete tools list for:
* - Tool search threshold calculations (isToolSearchEnabled)
* - Tool search threshold calculations (isSearchExtraToolsEnabled)
* - Token counting that includes MCP tools
* - Any context where MCP tools should be considered
*