---
id: sm-search-strategy
name: "search-strategy"
url: https://skills.yangsir.net/skill/sm-search-strategy
author: anthropics
domain: ai-agent-memory-knowledge
tags: ["search-algorithms", "information-retrieval", "data-query-optimization", "knowledge-management", "seo-strategy"]
install_count: 5100
rating: 4.40 (20 reviews)
github: https://github.com/anthropics/knowledge-work-plugins
---

# search-strategy

> 企业搜索的核心智能，将单一查询转化为有效的搜索策略。，AI Agent Skill，提升工作效率和自动化能力

**Stats**: 5,100 installs · 4.4/5 (20 reviews)

## Before / After 对比

### 企业搜索策略优化：从模糊匹配到精准多源检索

| Metric | Before | After | Change |
|---|---|---|---|
| - | - | - | - |
| - | - | - | - |
| - | - | - | - |

## Readme

# search-strategy

# Search Strategy

If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](https://github.com/anthropics/knowledge-work-plugins/blob/HEAD/enterprise-search/skills/search-strategy/../../CONNECTORS.md).

The core intelligence behind enterprise search. Transforms a single natural language question into parallel, source-specific searches and produces ranked, deduplicated results.

## The Goal

Turn this:

```
"What did we decide about the API migration timeline?"

```

Into targeted searches across every connected source:

```
~~chat:  "API migration timeline decision" (semantic) + "API migration" in:#engineering after:2025-01-01
~~knowledge base: semantic search "API migration timeline decision"
~~project tracker:  text search "API migration" in relevant workspace

```

Then synthesize the results into a single coherent answer.

## Query Decomposition

### Step 1: Identify Query Type

Classify the user's question to determine search strategy:

Query Type
Example
Strategy

**Decision**
"What did we decide about X?"
Prioritize conversations (~~chat, email), look for conclusion signals

**Status**
"What's the status of Project Y?"
Prioritize recent activity, task trackers, status updates

**Document**
"Where's the spec for Z?"
Prioritize Drive, wiki, shared docs

**Person**
"Who's working on X?"
Search task assignments, message authors, doc collaborators

**Factual**
"What's our policy on X?"
Prioritize wiki, official docs, then confirmatory conversations

**Temporal**
"When did X happen?"
Search with broad date range, look for timestamps

**Exploratory**
"What do we know about X?"
Broad search across all sources, synthesize

### Step 2: Extract Search Components

From the query, extract:

- **Keywords**: Core terms that must appear in results

- **Entities**: People, projects, teams, tools (use memory system if available)

- **Intent signals**: Decision words, status words, temporal markers

- **Constraints**: Time ranges, source hints, author filters

- **Negations**: Things to exclude

### Step 3: Generate Sub-Queries Per Source

For each available source, create one or more targeted queries:

**Prefer semantic search** for:

- Conceptual questions ("What do we think about...")

- Questions where exact keywords are unknown

- Exploratory queries

**Prefer keyword search** for:

- Known terms, project names, acronyms

- Exact phrases the user quoted

- Filter-heavy queries (from:, in:, after:)

**Generate multiple query variants** when the topic might be referred to differently:

```
User: "Kubernetes setup"
Queries: "Kubernetes", "k8s", "cluster", "container orchestration"

```

## Source-Specific Query Translation

### ~~chat

**Semantic search** (natural language questions):

```
query: "What is the status of project aurora?"

```

**Keyword search:**

```
query: "project aurora status update"
query: "aurora in:#engineering after:2025-01-15"
query: "from:<@UserID> aurora"

```

**Filter mapping:**

Enterprise filter
~~chat syntax

`from:sarah`
`from:sarah` or `from:<@USERID>`

`in:engineering`
`in:engineering`

`after:2025-01-01`
`after:2025-01-01`

`before:2025-02-01`
`before:2025-02-01`

`type:thread`
`is:thread`

`type:file`
`has:file`

### ~~knowledge base (Wiki)

**Semantic search** — Use for conceptual queries:

```
descriptive_query: "API migration timeline and decision rationale"

```

**Keyword search** — Use for exact terms:

```
query: "API migration"
query: "\"API migration timeline\""  (exact phrase)

```

### ~~project tracker

**Task search:**

```
text: "API migration"
workspace: [workspace_id]
completed: false  (for status queries)
assignee_any: "me"  (for "my tasks" queries)

```

**Filter mapping:**

Enterprise filter
~~project tracker parameter

`from:sarah`
`assignee_any` or `created_by_any`

`after:2025-01-01`
`modified_on_after: "2025-01-01"`

`type:milestone`
`resource_subtype: "milestone"`

## Result Ranking

### Relevance Scoring

Score each result on these factors (weighted by query type):

Factor
Weight (Decision)
Weight (Status)
Weight (Document)
Weight (Factual)

Keyword match
0.3
0.2
0.4
0.3

Freshness
0.3
0.4
0.2
0.1

Authority
0.2
0.1
0.3
0.4

Completeness
0.2
0.3
0.1
0.2

### Authority Hierarchy

Depends on query type:

**For factual/policy questions:**

```
Wiki/Official docs > Shared documents > Email announcements > Chat messages

```

**For "what happened" / decision questions:**

```
Meeting notes > Thread conclusions > Email confirmations > Chat messages

```

**For status questions:**

```
Task tracker > Recent chat > Status docs > Email updates

```

## Handling Ambiguity

When a query is ambiguous, prefer asking one focused clarifying question over guessing:

```
Ambiguous: "search for the migration"
→ "I found references to a few migrations. Are you looking for:
   1. The database migration (Project Phoenix)
   2. The cloud migration (AWS → GCP)
   3. The email migration (Exchange → O365)"

```

Only ask for clarification when:

- There are genuinely distinct interpretations that would produce very different results

- The ambiguity would significantly affect which sources to search

Do NOT ask for clarification when:

- The query is clear enough to produce useful results

- Minor ambiguity can be resolved by returning results from multiple interpretations

## Fallback Strategies

When a source is unavailable or returns no results:

- **Source unavailable**: Skip it, search remaining sources, note the gap

- **No results from a source**: Try broader query terms, remove date filters, try alternate keywords

- **All sources return nothing**: Suggest query modifications to the user

- **Rate limited**: Note the limitation, return results from other sources, suggest retrying later

### Query Broadening

If initial queries return too few results:

```
Original: "PostgreSQL migration Q2 timeline decision"
Broader:  "PostgreSQL migration"
Broader:  "database migration"
Broadest: "migration"

```

Remove constraints in this order:

- Date filters (search all time)

- Source/location filters

- Less important keywords

- Keep only core entity/topic terms

## Parallel Execution

Always execute searches across sources in parallel, never sequentially. The total search time should be roughly equal to the slowest single source, not the sum of all sources.

```
[User query]
     ↓ decompose
[~~chat query] [~~email query] [~~cloud storage query] [Wiki query] [~~project tracker query]
     ↓            ↓            ↓              ↓            ↓
  (parallel execution)
     ↓
[Merge + Rank + Deduplicate]
     ↓
[Synthesized answer]

```
Weekly Installs257Repository[anthropics/know…-plugins](https://github.com/anthropics/knowledge-work-plugins)GitHub Stars9.9KFirst SeenJan 31, 2026Security Audits[Gen Agent Trust HubPass](/anthropics/knowledge-work-plugins/search-strategy/security/agent-trust-hub)[SocketPass](/anthropics/knowledge-work-plugins/search-strategy/security/socket)[SnykPass](/anthropics/knowledge-work-plugins/search-strategy/security/snyk)Installed onopencode230codex226gemini-cli221github-copilot214amp207kimi-cli207

---
*Source: https://skills.yangsir.net/skill/sm-search-strategy*
*Markdown mirror: https://skills.yangsir.net/api/skill/sm-search-strategy/markdown*